@@ -47,9 +47,9 @@ class SoftwareTimer
47
47
SoftwareTimer () { _handle = NULL ; }
48
48
virtual ~SoftwareTimer () { if (_handle != NULL ) xTimerDelete (_handle, 0 ); }
49
49
50
- void begin (uint32_t ms, TimerCallbackFunction_t callback)
50
+ void begin (uint32_t ms, TimerCallbackFunction_t callback, bool repeating = true )
51
51
{
52
- _handle = xTimerCreate (NULL , ms2tick (ms), true , NULL , callback);
52
+ _handle = xTimerCreate (NULL , ms2tick (ms), repeating , NULL , callback);
53
53
}
54
54
55
55
TimerHandle_t getHandle (void )
@@ -59,6 +59,28 @@ class SoftwareTimer
59
59
60
60
void start (void ) { xTimerStart (_handle, 0 ); }
61
61
void stop (void ) { xTimerStop (_handle, 0 ); }
62
+ void reset (void ) { xTimerReset (_handle, 0 ); }
63
+
64
+ bool startFromISR (void ) {
65
+ BaseType_t ret, xHigherPriorityTaskWoken = pdFALSE;
66
+ ret = xTimerStartFromISR (_handle, &xHigherPriorityTaskWoken);
67
+ portYIELD_FROM_ISR (xHigherPriorityTaskWoken);
68
+ return (ret == pdPASS);
69
+ }
70
+
71
+ bool stopFromISR (void ) {
72
+ BaseType_t ret, xHigherPriorityTaskWoken = pdFALSE;
73
+ ret = xTimerStopFromISR (_handle, &xHigherPriorityTaskWoken);
74
+ portYIELD_FROM_ISR (xHigherPriorityTaskWoken);
75
+ return (ret == pdPASS);
76
+ }
77
+
78
+ bool resetFromISR (void ) {
79
+ BaseType_t ret, xHigherPriorityTaskWoken = pdFALSE;
80
+ ret = xTimerResetFromISR (_handle, &xHigherPriorityTaskWoken);
81
+ portYIELD_FROM_ISR (xHigherPriorityTaskWoken);
82
+ return (ret == pdPASS);
83
+ }
62
84
63
85
void setPeriod (uint32_t ms)
64
86
{
0 commit comments