1 /* 2 * Copyright (c) 2009-2022 Huawei Technologies Co., Ltd. All rights reserved. 3 * 4 * UniProton is licensed under Mulan PSL v2. 5 * You can use this software according to the terms and conditions of the Mulan PSL v2. 6 * You may obtain a copy of Mulan PSL v2 at: 7 * http://license.coscl.org.cn/MulanPSL2 8 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, 9 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, 10 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. 11 * See the Mulan PSL v2 for more details. 12 * Create: 2009-12-22 13 * Description: 软定时器模块的内部头文件 14 */ 15 #ifndef PRT_SWTMR_EXTERNAL_H 16 #define PRT_SWTMR_EXTERNAL_H 17 18 #include "prt_timer_external.h" 19 #include "prt_list_external.h" 20 21 /* 最大支持软件定时器个数 */ 22 extern U32 g_swTmrMaxNum; OsSwTmrMaxNum(void)23OS_SEC_ALW_INLINE INLINE U32 OsSwTmrMaxNum(void) 24 { 25 return g_swTmrMaxNum; 26 } 27 #define OS_TIMER_MAX_NUM ((TIMER_TYPE_SWTMR << 28) + OsSwTmrMaxNum()) 28 #define OS_SWTMR_MIN_NUM (TIMER_TYPE_SWTMR << 28) 29 /* 30 * 模块间宏定义 31 */ 32 #define OS_SWTMR_INDEX_2_ID(index) (((U32)(index)) + OS_SWTMR_MIN_NUM) 33 #define OS_SWTMR_ID_2_INDEX(timerId) ((timerId) - OS_SWTMR_MIN_NUM) 34 35 #define SWTMR_CREATE_DEL_LOCK() 36 #define SWTMR_CREATE_DEL_UNLOCK() 37 38 /* 软件定时器结构定义 */ 39 struct TagSwTmrCtrl { 40 /* 指向前一个定时器 */ 41 struct TagSwTmrCtrl *prev; 42 /* 指向下一个定时器 */ 43 struct TagSwTmrCtrl *next; 44 /* 定时器状态 */ 45 U8 state; 46 /* 定时器类型 */ 47 U8 mode; 48 /* 软件定时器序号 */ 49 U16 swtmrIndex; 50 /* 定时器SortLink属性,低位为rollNum,高位为sortIndex */ 51 U32 idxRollNum; 52 /* 定时器超时时间 */ 53 U32 interval; 54 /* 定时器用户参数1 */ 55 U32 arg1; 56 /* 定时器用户参数2 */ 57 U32 arg2; 58 /* 定时器用户参数3 */ 59 U32 arg3; 60 /* 定时器用户参数4 */ 61 U32 arg4; 62 /* 定时器超时处理函数 */ 63 TmrProcFunc handler; 64 65 }; /* 定时器数据类型 */ 66 67 struct TagSwTmrSortLinkAttr { 68 /* Tick游标位置 */ 69 U16 cursor; 70 /* 保留数据 */ 71 U16 unused; 72 /* 软件定时器指针数组 */ 73 struct TagListObject *sortLink; 74 }; 75 76 /* 77 * 模块间typedef声明 78 */ 79 /* 80 * 模块间全局变量声明 81 */ 82 /* 定时器内存空间首地址 */ 83 extern struct TagSwTmrCtrl *g_swtmrCbArray; 84 85 /* 86 * 模块间函数声明 87 */ 88 /* 89 * Function : OsSwTmrQuery 90 * Description : 查询软件定时器剩余超时时间 91 * Input : tmrHandle --- 定时器句柄 92 * expireTime --- 定时器的剩余的超时时间,单位ms 93 * Output : None 94 * Return : 成功时返回OS_OK,失败时返回错误码 95 */ 96 extern U32 OsSwTmrQuery(TimerHandle tmrHandle, U32 *expireTime); 97 98 /* 99 * 模块间内联函数定义 100 */ 101 #endif /* PRT_SWTMR_EXTERNAL_H */ 102