fix timer stop

pull/12/head
CloudSir 4 years ago
parent 4ea0d39162
commit 3a26279f23

@ -53,6 +53,7 @@ int MultiTimerStart(MultiTimer* timer, uint64_t timing, MultiTimerCallback_t cal
int MultiTimerStop(MultiTimer* timer) int MultiTimerStop(MultiTimer* timer)
{ {
MultiTimer** nextTimer = &timerList; MultiTimer** nextTimer = &timerList;
timer->is_repeated = 0;
/* Find and remove timer. */ /* Find and remove timer. */
for (; *nextTimer; nextTimer = &(*nextTimer)->next) { for (; *nextTimer; nextTimer = &(*nextTimer)->next) {
MultiTimer* entry = *nextTimer; MultiTimer* entry = *nextTimer;

@ -6,6 +6,7 @@
MultiTimer timer1; MultiTimer timer1;
MultiTimer timer2; MultiTimer timer2;
MultiTimer timer3; MultiTimer timer3;
MultiTimer timer4;
uint64_t PlatformTicksGetFunc(void) uint64_t PlatformTicksGetFunc(void)
{ {
@ -30,6 +31,17 @@ void exampleTimer3Callback(MultiTimer* timer, void *userData)
MultiTimerStart(timer, 4567, exampleTimer3Callback, userData, 0); MultiTimerStart(timer, 4567, exampleTimer3Callback, userData, 0);
} }
int count = 0;
void exampleTimer4Callback(MultiTimer* timer, void *userData)
{
count++;
printf("[%012ld] Timer:%p callback-> %s.\r\n", PlatformTicksGetFunc(), timer, (char*)userData);
if (count >= 3) {
printf("Timer 4 stop.\n");
MultiTimerStop(timer);
}
}
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
MultiTimerInstall(PlatformTicksGetFunc); MultiTimerInstall(PlatformTicksGetFunc);
@ -37,6 +49,7 @@ int main(int argc, char *argv[])
MultiTimerStart(&timer1, 1000, exampleTimer1Callback, "1000ms CYCLE timer", 1); MultiTimerStart(&timer1, 1000, exampleTimer1Callback, "1000ms CYCLE timer", 1);
MultiTimerStart(&timer2, 5000, exampleTimer2Callback, "5000ms ONCE timer", 0); MultiTimerStart(&timer2, 5000, exampleTimer2Callback, "5000ms ONCE timer", 0);
MultiTimerStart(&timer3, 3456, exampleTimer3Callback, "3456ms delay start, 4567ms CYCLE timer", 0); MultiTimerStart(&timer3, 3456, exampleTimer3Callback, "3456ms delay start, 4567ms CYCLE timer", 0);
MultiTimerStart(&timer4, 2000, exampleTimer4Callback, "2000ms timer - Timer4, loop 3 times", 1);
while (1) { while (1) {
MultiTimerYield(); MultiTimerYield();

Loading…
Cancel
Save