• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)23 OS_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