File tree Expand file tree Collapse file tree 2 files changed +37
-1
lines changed Expand file tree Collapse file tree 2 files changed +37
-1
lines changed Original file line number Diff line number Diff line change 1919extern "C" {
2020#endif
2121
22+ void millis_autoOn ();
23+ void millis_autoOff ();
2224void set_millis (unsigned long const val );
2325
2426#ifdef __cplusplus
Original file line number Diff line number Diff line change 88
99#include < MillisFake.h>
1010
11+ #include < chrono>
12+
13+ /* *************************************************************************************
14+ * TYPEDEF
15+ **************************************************************************************/
16+
17+ enum class MillisFakeMode
18+ {
19+ Auto, Manual
20+ };
21+
1122/* *************************************************************************************
1223 * GLOBAL VARIABLES
1324 **************************************************************************************/
1425
1526static unsigned long millis_val = 0 ;
27+ static MillisFakeMode millis_fake_mode = MillisFakeMode::Auto;
28+ static std::chrono::steady_clock::time_point const millis_begin = std::chrono::steady_clock::now();
1629
1730/* *************************************************************************************
1831 * FUNCTION DEFINITION
1932 **************************************************************************************/
2033
34+ void millis_autoOn ()
35+ {
36+ millis_fake_mode = MillisFakeMode::Auto;
37+ }
38+
39+ void millis_autoOff ()
40+ {
41+ millis_fake_mode = MillisFakeMode::Manual;
42+ }
43+
2144void set_millis (unsigned long const val)
2245{
46+ millis_autoOff ();
2347 millis_val = val;
2448}
2549
2650unsigned long millis ()
2751{
28- return millis_val;
52+ if (millis_fake_mode == MillisFakeMode::Manual)
53+ return millis_val;
54+
55+ if (millis_fake_mode == MillisFakeMode::Auto)
56+ {
57+ std::chrono::steady_clock::time_point millis_now = std::chrono::steady_clock::now ();
58+ auto millis = std::chrono::duration_cast<std::chrono::microseconds>(millis_now - millis_begin).count ();
59+ return static_cast <unsigned long >(millis);
60+ }
61+
62+ return 0 ;
2963}
You can’t perform that action at this time.
0 commit comments