File tree 2 files changed +37
-1
lines changed
2 files changed +37
-1
lines changed Original file line number Diff line number Diff line change 19
19
extern "C" {
20
20
#endif
21
21
22
+ void millis_autoOn ();
23
+ void millis_autoOff ();
22
24
void set_millis (unsigned long const val );
23
25
24
26
#ifdef __cplusplus
Original file line number Diff line number Diff line change 8
8
9
9
#include < MillisFake.h>
10
10
11
+ #include < chrono>
12
+
13
+ /* *************************************************************************************
14
+ * TYPEDEF
15
+ **************************************************************************************/
16
+
17
+ enum class MillisFakeMode
18
+ {
19
+ Auto, Manual
20
+ };
21
+
11
22
/* *************************************************************************************
12
23
* GLOBAL VARIABLES
13
24
**************************************************************************************/
14
25
15
26
static 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();
16
29
17
30
/* *************************************************************************************
18
31
* FUNCTION DEFINITION
19
32
**************************************************************************************/
20
33
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
+
21
44
void set_millis (unsigned long const val)
22
45
{
46
+ millis_autoOff ();
23
47
millis_val = val;
24
48
}
25
49
26
50
unsigned long millis ()
27
51
{
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 ;
29
63
}
You can’t perform that action at this time.
0 commit comments