AT-Command/Demo/framework/module.c

99 lines
2.5 KiB
C
Raw Normal View History

2021-01-20 14:18:32 +00:00
/******************************************************************************
* @brief (,)
*
* Copyright (c) 2017~2020, <morro_luo@163.com>
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2016-06-24 Morro
* 2020-05-23 Morro ,
* 2020-06-28 Morro is_timeout超时判断接口
* 2020-09-28 Morro timer
*
******************************************************************************/
#include "module.h"
static volatile unsigned int tick; //系统滴答计时
/*
* @brief (,1ms 1)
*/
void systick_increase(unsigned int ms)
{
tick += ms;
}
/*
* @brief (1ms)
*/
unsigned int get_tick(void)
{
return tick;
}
/*
* @brief
* @param[in] start -
* @param[in] timeout - (ms)
*/
bool is_timeout(unsigned int start, unsigned int timeout)
{
return get_tick() - start > timeout;
}
/*
* @brief ,
*/
static void nop_process(void) {}
//第一个初始化项
const init_item_t init_tbl_start SECTION("init.item.0") = {
"", nop_process
};
//最后个初始化项
const init_item_t init_tbl_end SECTION("init.item.4") = {
"", nop_process
};
//第一个任务项
const task_item_t task_tbl_start SECTION("task.item.0") = {
"", nop_process
};
//最后个任务项
const task_item_t task_tbl_end SECTION("task.item.2") = {
"", nop_process
};
/*
* @brief
* system_init > driver_init > module_init
* @param[in] none
* @return none
*/
void module_task_init(void)
{
const init_item_t *it = &init_tbl_start;
while (it < &init_tbl_end) {
it++->init();
}
}
/*
* @brief
* @param[in] none
* @return none
*/
void module_task_process(void)
{
const task_item_t *t;
for (t = &task_tbl_start + 1; t < &task_tbl_end; t++) {
if ((get_tick() - *t->timer) >= t->interval) {
*t->timer = get_tick();
t->handle();
}
}
}