|
|
|
@ -92,17 +92,17 @@ int MultiTimerStop(MultiTimer* timer)
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
void MultiTimerYield(void)
|
|
|
|
void MultiTimerYield(void)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
MultiTimer* target = timerList;
|
|
|
|
MultiTimer* target;
|
|
|
|
for (; target; target = target->next) {
|
|
|
|
for (target = timerList; target; target = target->next) {
|
|
|
|
if (platformTicksFunction() >= target->deadline) {
|
|
|
|
if (target->deadline > platformTicksFunction()) {
|
|
|
|
if (target->period == 0) {
|
|
|
|
return;
|
|
|
|
MultiTimerStop(target);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
target->deadline = platformTicksFunction() + target->period;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
MultiTimerStop(target);
|
|
|
|
|
|
|
|
if (target->callback) {
|
|
|
|
target->callback(target, target->userData);
|
|
|
|
target->callback(target, target->userData);
|
|
|
|
} else {
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
if (target->period) {
|
|
|
|
|
|
|
|
MultiTimerStart(target, target->period);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|