/**
 * @file hal_timer.h
 * @brief 软件定时器 HAL 接口
 */

#ifndef HAL_TIMER_H
#define HAL_TIMER_H

#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>

#ifdef __cplusplus
extern "C" {
#endif

/** 定时器句柄 */
typedef void *hal_timer_t;

/** 定时器回调（执行上下文取决于平台）*/
typedef void (*hal_timer_cb_t)(void *user_ctx);

/**
 * @brief 创建定时器
 * @param callback 超时回调
 * @param user_ctx 回调上下文
 */
hal_timer_t hal_timer_create(hal_timer_cb_t callback, void *user_ctx);

/**
 * @brief 启动/重启定时器
 * @param interval_ms 间隔毫秒
 * @param repeat      true 周期，false 单次
 */
int hal_timer_start(hal_timer_t timer, uint32_t interval_ms, bool repeat);

/** @brief 停止定时器 */
int hal_timer_stop(hal_timer_t timer);

/** @brief 销毁定时器 */
void hal_timer_destroy(hal_timer_t timer);

#ifdef __cplusplus
}
#endif

#endif /* HAL_TIMER_H */
