1 /*---------------------------------------------------------------------------* 2 Project: Dolphin OS Alarm API 3 File: OSAlarm.h 4 5 Copyright 1998, 1999 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 $Log: OSAlarm.h,v $ 14 Revision 1.6 2006/08/11 09:29:40 yasumoto_yoshitaka 15 suppress padding warning 16 17 Revision 1.5 2006/08/11 06:56:29 yasumoto_yoshitaka 18 suppress padding warning 19 20 Revision 1.4 2006/07/04 08:57:52 hiratsu 21 Added OSSet/GetAlarmUserData() API. 22 23 Revision 1.3 2006/02/14 05:29:34 hirose 24 Deleted OSInitAlarm() -- now initialized in OSInit(). 25 26 Revision 1.2 2006/02/04 11:56:47 hashida 27 (none) 28 29 Revision 1.1.1.1 2005/12/29 06:53:28 hiratsu 30 Initial import. 31 32 Revision 1.1.1.1 2005/05/12 02:41:07 yasuh-to 33 Ported from dolphin source tree. 34 35 36 8 2004/02/16 10:18 Ueno_kyu 37 Removed OSAlarmQueue{}. 38 39 7 2004/02/04 11:17 Ueno_kyu 40 Modified OSAlarm{} to keep an alarm queue (for Windows). 41 Added OSAlarmQueue{} (for Windows). 42 43 6 2002/08/08 10:33 Shiki 44 Changed OSCancelAlarms() interface. 45 46 5 2002/08/07 22:03 Shiki 47 Added OSSetAlarmTag() and OSCancelAlarms(). 48 49 4 2001/02/05 11:20 Shiki 50 Added OSCreateAlarm(). 51 52 3 2001/01/30 10:06 Shiki 53 Added OSSetAbsAlarm(). 54 55 2 2000/03/16 7:03p Shiki 56 Revised to include OSContext.h. 57 58 4 1999/08/30 4:20p Shiki 59 Added OSCheckAlarmQueue(). 60 61 3 1999/07/29 2:36p Shiki 62 Revised to use absolute ticks instead of delta between alarms. 63 64 2 1999/07/28 9:26p Shiki 65 Added OSSetPeriodicAlarm() stuff. 66 67 1 1999/07/28 6:06p Shiki 68 Initial check-in. 69 $NoKeywords: $ 70 *---------------------------------------------------------------------------*/ 71 72 #ifndef __OSALARM_H__ 73 #define __OSALARM_H__ 74 75 #include <revolution/types.h> 76 #include <revolution/os/OSContext.h> 77 78 #ifdef __cplusplus 79 extern "C" { 80 #endif 81 82 typedef struct OSAlarm OSAlarm; 83 typedef void (*OSAlarmHandler)(OSAlarm* alarm, OSContext* context); 84 85 #ifdef __MWERKS__ 86 #pragma warn_padding off 87 #endif 88 struct OSAlarm 89 { 90 OSAlarmHandler handler; 91 u32 tag; 92 OSTime fire; 93 OSAlarm* prev; 94 OSAlarm* next; 95 96 // Periodic alarm 97 OSTime period; 98 OSTime start; 99 100 // User data 101 void* userData; 102 #ifdef WIN32 103 void* queue; 104 #endif 105 }; 106 #ifdef __MWERKS__ 107 #pragma warn_padding reset 108 #endif 109 110 void OSSetAlarm ( OSAlarm* alarm, OSTime tick, OSAlarmHandler handler ); 111 void OSSetAlarmTag ( OSAlarm* alarm, u32 tag ); 112 void OSSetAbsAlarm ( OSAlarm* alarm, OSTime time, OSAlarmHandler handler ); 113 void OSSetPeriodicAlarm ( OSAlarm* alarm, OSTime start, OSTime period, 114 OSAlarmHandler handler ); 115 void OSCreateAlarm ( OSAlarm* alarm ); 116 void OSCancelAlarm ( OSAlarm* alarm ); 117 void OSCancelAlarms ( u32 tag ); 118 119 BOOL OSCheckAlarmQueue ( void ); 120 121 void OSSetAlarmUserData( OSAlarm* alarm, void* data ); 122 void *OSGetAlarmUserData( const OSAlarm* alarm ); 123 124 125 #ifdef __cplusplus 126 } 127 #endif 128 129 #endif // __OSALARM_H__ 130