From b0ce05ab30c7d0e94023b2e04d348048cae8d935 Mon Sep 17 00:00:00 2001 From: xbin Date: Tue, 25 Mar 2025 13:29:46 +0800 Subject: [PATCH 1/2] chore: fix typo error(expried -> expired) --- MultiTimer.h | 166 +++++++++++++++++++++++++-------------------------- 1 file changed, 83 insertions(+), 83 deletions(-) diff --git a/MultiTimer.h b/MultiTimer.h index b7a5de3..d838bf6 100644 --- a/MultiTimer.h +++ b/MultiTimer.h @@ -1,83 +1,83 @@ -/* - * Copyright (c) 2021 0x1abin - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -#ifndef _MULTI_TIMER_H_ -#define _MULTI_TIMER_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef uint64_t (*PlatformTicksFunction_t)(void); - -typedef struct MultiTimerHandle MultiTimer; - -typedef void (*MultiTimerCallback_t)(MultiTimer* timer, void* userData); - -struct MultiTimerHandle { - MultiTimer* next; - uint64_t deadline; - MultiTimerCallback_t callback; - void* userData; -}; - -/** - * @brief Platform ticks function. - * - * @param ticksFunc ticks function. - * @return int 0 on success, -1 on error. - */ -int multiTimerInstall(PlatformTicksFunction_t ticksFunc); - -/** - * @brief Start the timer work, add the handle into work list. - * - * @param timer target handle strcut. - * @param timing Set the start time. - * @param callback deadline callback. - * @param userData user data. - * @return int 0: success, -1: fail. - */ -int multiTimerStart(MultiTimer* timer, uint64_t timing, MultiTimerCallback_t callback, void* userData); - -/** - * @brief Stop the timer work, remove the handle off work list. - * - * @param timer target handle strcut. - * @return int 0: success, -1: fail. - */ -int multiTimerStop(MultiTimer* timer); - -/** - * @brief Check the timer expried and call callback. - * - * @return int The next timer expires. - */ -int multiTimerYield(void); - -#ifdef __cplusplus -} -#endif - -#endif +/* + * Copyright (c) 2021 0x1abin + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#ifndef _MULTI_TIMER_H_ +#define _MULTI_TIMER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef uint64_t (*PlatformTicksFunction_t)(void); + +typedef struct MultiTimerHandle MultiTimer; + +typedef void (*MultiTimerCallback_t)(MultiTimer* timer, void* userData); + +struct MultiTimerHandle { + MultiTimer* next; + uint64_t deadline; + MultiTimerCallback_t callback; + void* userData; +}; + +/** + * @brief Platform ticks function. + * + * @param ticksFunc ticks function. + * @return int 0 on success, -1 on error. + */ +int multiTimerInstall(PlatformTicksFunction_t ticksFunc); + +/** + * @brief Start the timer work, add the handle into work list. + * + * @param timer target handle strcut. + * @param timing Set the start time. + * @param callback deadline callback. + * @param userData user data. + * @return int 0: success, -1: fail. + */ +int multiTimerStart(MultiTimer* timer, uint64_t timing, MultiTimerCallback_t callback, void* userData); + +/** + * @brief Stop the timer work, remove the handle off work list. + * + * @param timer target handle strcut. + * @return int 0: success, -1: fail. + */ +int multiTimerStop(MultiTimer* timer); + +/** + * @brief Check the timer expired and call callback. + * + * @return int The next timer expires. + */ +int multiTimerYield(void); + +#ifdef __cplusplus +} +#endif + +#endif From 5beace8934e6dd19ce08481ed320eede4dc42e64 Mon Sep 17 00:00:00 2001 From: xbin Date: Tue, 25 Mar 2025 13:31:56 +0800 Subject: [PATCH 2/2] feat: update current tick after call calback function --- MultiTimer.c | 1 + 1 file changed, 1 insertion(+) diff --git a/MultiTimer.c b/MultiTimer.c index 46bf7a2..6b8eba4 100644 --- a/MultiTimer.c +++ b/MultiTimer.c @@ -61,6 +61,7 @@ int multiTimerYield(void) { if (timer->callback) { timer->callback(timer, timer->userData); // Execute callback } + currentTicks = platformTicksFunction(); // Update current ticks } return timerList ? (int)(timerList->deadline - currentTicks) : 0; }