CodeBrick/framework/module.h
2020-07-11 10:18:03 +08:00

67 lines
2.2 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/******************************************************************************
* @brief ϵͳģ<CDB3><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3>ʼ<EFBFBD><CABC><><CAB1>Ƭ<EFBFBD><C6AC>ѯϵͳ)
*
* Copyright (c) 2017~2020, <master_roger@sina.com>
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2016-06-24 Morro <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* 2020-05-23 Morro <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ֹģ<D6B9><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* 2020-06-28 Morro <20><><EFBFBD><EFBFBD>is_timeout<75><74>ʱ<EFBFBD>жϽӿ<CFBD>
******************************************************************************/
#ifndef _MODULE_H_
#define _MODULE_H_
#include "comdef.h"
#include <stdbool.h>
/*ģ<><C4A3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>*/
typedef struct {
const char *name; //ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void (*init)(void); //<2F><>ʼ<EFBFBD><CABC><EFBFBD>ӿ<EFBFBD>
}init_item_t;
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
typedef struct {
const char *name; //ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void (*handle)(void); //<2F><>ʼ<EFBFBD><CABC><EFBFBD>ӿ<EFBFBD>
unsigned int interval; //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
unsigned int *timer; //ָ<><D6B8><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ָ<EFBFBD><D6B8>
}task_item_t;
#define __module_initialize(name,func,level) \
USED ANONY_TYPE(const init_item_t, init_tbl_##func) \
SECTION("init.item."level) = {name,func}
/*
* @brief <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>
* @param[in] name - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] handle - <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(void func(void){...})
* @param[in] interval- <20><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>(ms)
*/
#define task_register(name, handle,interval) \
static unsigned int __task_timer_##handle; \
USED ANONY_TYPE(const task_item_t, handle) \
SECTION("task.item.1") = \
{name,handle, interval, &__task_timer_##handle}
/*
* @brief ģ<><C4A3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ע<EFBFBD><D7A2>
* @param[in] name - ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] func - <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD><DABA><EFBFBD>(void func(void){...})
*/
#define system_init(name,func) __module_initialize(name,func,"1")
#define driver_init(name,func) __module_initialize(name,func,"2")
#define module_init(name,func) __module_initialize(name,func,"3")
void systick_increase(unsigned int ms);
unsigned int get_tick(void);
bool is_timeout(unsigned int start, unsigned int timeout);
void module_task_init(void);
void module_task_process(void);
#endif