| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #include "luat_base.h"
- #include "luat_hwtimer.h"
- #include "luat_msgbus.h"
- #include "wm_timer.h"
- static int l_hwtimer_handler(lua_State *L, void* ptr) {
- lua_getglobal(L, "sys_pub");
- if (lua_isfunction(L, -1)) {
- lua_pushstring(L, "HWTIMER_IRQ");
- lua_call(L, 1, 0);
- }
- return 0;
- }
- static void luat_hwtimer_cb(void *arg) {
- rtos_msg_t msg;
- msg.handler = l_hwtimer_handler;
- luat_msgbus_put(&msg, 0);
- }
- int luat_hwtimer_create(luat_hwtimer_conf_t *conf) {
- struct tls_timer_cfg cfg = {0};
- cfg.unit = conf->unit == 0 ? TLS_TIMER_UNIT_US : TLS_TIMER_UNIT_MS;
- cfg.timeout = conf->timeout;
- cfg.is_repeat = conf->is_repeat;
- cfg.callback = luat_hwtimer_cb;
- cfg.arg = NULL;
- u8 id = tls_timer_create(&cfg);
- if (id <= 5)
- return id;
- return -1;
- }
- int luat_hwtimer_start(int id) {
- if (id < 0 || id > 5) return -1;
- tls_timer_start(id);
- return 0;
- }
- int luat_hwtimer_stop(int id) {
- if (id < 0 || id > 5) return -1;
- tls_timer_stop(id);
- return 0;
- }
- int luat_hwtimer_read(int id) {
- if (id < 0 || id > 5) return -1;
- return tls_timer_read(id);
- }
- int luat_hwtimer_change(int id, uint32_t newtimeout) {
- if (id < 0 || id > 5) return -1;
- tls_timer_change(id, newtimeout);
- return 0;
- }
- int luat_hwtimer_destroy(int id) {
- if (id < 0 || id > 5) return -1;
- tls_timer_destroy(id);
- return 0;
- }
|