1 /*---------------------------------------------------------------------------*
2 Project: TwlSDK - OS - include
3 File: valarm.h
4
5 Copyright 2003-2008 Nintendo. All rights reserved.
6
7 These coded instructions, statements, and computer programs contain
8 proprietary information of Nintendo of America Inc. and/or Nintendo
9 Company Ltd., and are protected by Federal copyright law. They may
10 not be disclosed to third parties or copied or duplicated in any form,
11 in whole or in part, without the prior written consent of Nintendo.
12
13 $Date:: 2008-09-17#$
14 $Rev: 8556 $
15 $Author: okubata_ryoma $
16
17 *---------------------------------------------------------------------------*/
18
19 #ifndef NITRO_OS_VALARM_H_
20 #define NITRO_OS_VALARM_H_
21
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25
26 #include <nitro/misc.h>
27 #include <nitro/types.h>
28
29
30 //--------------------------------------------------------------------------------
31 //---- VAlarm Handler
32 typedef void (*OSVAlarmHandler) (void *);
33
34 //---- struct of VAlarm
35 typedef struct OSiVAlarm OSVAlarm;
36 struct OSiVAlarm
37 {
38 //---- callback
39 OSAlarmHandler handler;
40 void *arg;
41
42 //---- tag (system use 0)
43 u32 tag;
44
45 //---- fire time
46 u32 frame;
47 s16 fire;
48
49 //---- permissible range to fire alarm
50 s16 delay;
51
52 //---- link information (system uses)
53 OSVAlarm *prev;
54 OSVAlarm *next;
55
56 //---- periodic alarm or not
57 BOOL period;
58
59 //---- flag whether its called
60 BOOL finish;
61
62 //---- flag for check to cancel
63 BOOL canceled;
64 };
65
66 //---- VAlarm resource
67 typedef struct OSVAlarmResource
68 {
69 int num;
70 }
71 OSVAlarmResource;
72 //--------------------------------------------------------------------------------
73 /*---------------------------------------------------------------------------*
74 Name: OS_InitVAlarm
75
76 Description: Initialize v-alarm module
77
78 Arguments: None.
79
80 Returns: None.
81 *---------------------------------------------------------------------------*/
82 void OS_InitVAlarm(void);
83
84 /*---------------------------------------------------------------------------*
85 Name: OS_EndVAlarm
86
87 Description: end v-alarm system
88
89 Arguments: None
90
91 Returns: None
92 *---------------------------------------------------------------------------*/
93 void OS_EndVAlarm(void);
94
95 /*---------------------------------------------------------------------------*
96 Name: OS_IsVAlarmAvailable
97
98 Description: check v-alarm system is available
99
100 Arguments: None
101
102 Returns: if available, TRUE.
103 *---------------------------------------------------------------------------*/
104 BOOL OS_IsVAlarmAvailable(void);
105
106 /*---------------------------------------------------------------------------*
107 Name: OS_CreateVAlarm
108
109 Description: Create v-alarm
110
111 Arguments: alarm pointer to v-alarm to be initialized
112
113 Returns: None.
114 *---------------------------------------------------------------------------*/
115 void OS_CreateVAlarm(OSVAlarm *alarm);
116
117 /*---------------------------------------------------------------------------*
118 Name: OS_SetVAlarm
119
120 Description: Set v-alarm as a relative time
121
122 Arguments: alarm pointer to v-alarm to be set
123 count count to fire
124 delay permission range of delay
125 handler v-alarm handler to be called
126 arg argument of handler
127
128 Returns: None.
129 *---------------------------------------------------------------------------*/
130 #define OS_VALARM_DELAY_MAX HW_LCD_LINES
131 void OS_SetVAlarm(OSVAlarm *alarm, s16 count, s16 delay, OSVAlarmHandler handler, void *arg);
132
133 /*---------------------------------------------------------------------------*
134 ( for compatibility with old definition )
135 Name: OS_SetOneTimeVAlarm
136
137 Description: Set v-alarm as a relative time
138
139 Arguments: alarm pointer to v-alarm to be set
140 count count to fire
141 handler v-alarm handler to be called
142 arg argument of handler
143
144 Returns: None.
145 *---------------------------------------------------------------------------*/
146 #define OSi_DELAYMARGIN 10
OS_SetOneTimeVAlarm(OSVAlarm * alarm,s16 count,OSVAlarmHandler handler,void * arg)147 static inline void OS_SetOneTimeVAlarm(OSVAlarm *alarm, s16 count, OSVAlarmHandler handler,
148 void *arg)
149 {
150 OS_SetVAlarm(alarm, count, OSi_DELAYMARGIN, handler, arg);
151 }
152
153 /*---------------------------------------------------------------------------*
154 Name: OS_SetPeriodicVAlarm
155
156 Description: set periodic v-alarm
157
158 Arguments: alarm pointer to v-alarm to be set
159 count count to fire cyclicly
160 delay permission range of delay
161 handler v-alarm handler to be called
162 arg argument of handler
163
164 Returns: None.
165 *---------------------------------------------------------------------------*/
166 void OS_SetPeriodicVAlarm(OSVAlarm *alarm, s16 count, s16 delay, OSVAlarmHandler handler,
167 void *arg);
168
169 /*---------------------------------------------------------------------------*
170 Name: OS_SetVAlarmTag
171
172 Description: set tag which is used OS_CancelAlarms
173
174 Arguments: alarm alarm to be set tag
175 tag tagNo
176
177 Returns: None.
178 *---------------------------------------------------------------------------*/
179 void OS_SetVAlarmTag(OSVAlarm *alarm, u32 tag);
180
181 /*---------------------------------------------------------------------------*
182 Name: OS_CancelVAlarms
183
184 Description: cancel v-alarms which have specified tag
185
186 Arguments: tag tagNo. to be cancelled. not 0
187
188 Returns: None.
189 *---------------------------------------------------------------------------*/
190 void OS_CancelVAlarm(OSVAlarm *alarm);
191
192 /*---------------------------------------------------------------------------*
193 Name: OS_CancelAllVAlarms
194
195 Description: cancel all v-alarms
196
197 Arguments: None
198
199 Returns: None.
200 *---------------------------------------------------------------------------*/
201 void OS_CancelVAlarms(u32 tag);
202
203 /*---------------------------------------------------------------------------*
204 Name: OS_CancelAllVAlarms
205
206 Description: cancel all v-alarms
207
208 Arguments: None
209
210 Returns: None.
211 *---------------------------------------------------------------------------*/
212 void OS_CancelAllVAlarms(void);
213
214
215 //================================================================================
216 // FOR DEBUG
217 //================================================================================
218 /*---------------------------------------------------------------------------*
219 Name: OS_DumpVAlarm
220
221 Description: Dump all valarm resisterd currently
222 This is for debug function.
223
224 Arguments: None
225
226 Returns: None
227 *---------------------------------------------------------------------------*/
228 void OS_DumpVAlarm(void);
229
230 /*---------------------------------------------------------------------------*
231 Name: OS_GetNumberOfVAlarm
232
233 Description: get number of valarm
234
235 Arguments: None
236
237 Returns: number of valarm
238 *---------------------------------------------------------------------------*/
239 int OS_GetNumberOfVAlarm(void);
240
241 /*---------------------------------------------------------------------------*
242 Name: OS_GetVAlarmResource
243
244 Description: store resources of valarm to specified pointer
245
246 Arguments: resource pointer to store valarm resources
247
248 Returns: TRUE ... success (always return this now)
249 FALSE ... fail
250 *---------------------------------------------------------------------------*/
251 BOOL OS_GetVAlarmResource(OSVAlarmResource *resource);
252
253 #ifdef __cplusplus
254 } /* extern "C" */
255 #endif
256
257 /* NITRO_OS_VALARM_H_ */
258 #endif
259