| 24 | } |
| 25 | |
| 26 | int multiTimerStart(MultiTimer* timer, uint64_t timing, MultiTimerCallback_t callback, void* userData) { |
| 27 | if (!timer || !callback || platformTicksFunction == NULL) { |
| 28 | return -1; // Return error if any parameter is invalid |
| 29 | } |
| 30 | |
| 31 | removeTimer(timer); // Centralize removal logic |
| 32 | |
| 33 | timer->deadline = platformTicksFunction() + timing; |
| 34 | timer->callback = callback; |
| 35 | timer->userData = userData; |
| 36 | |
| 37 | MultiTimer** current = &timerList; |
| 38 | while (*current && ((*current)->deadline < timer->deadline)) { |
| 39 | current = &(*current)->next; |
| 40 | } |
| 41 | timer->next = *current; |
| 42 | *current = timer; |
| 43 | |
| 44 | return 0; |
| 45 | } |
| 46 | |
| 47 | int multiTimerStop(MultiTimer* timer) { |
| 48 | removeTimer(timer); // Use centralized removal function |