1 #ifndef LIBRARIES_REALTIME_H 2 #define LIBRARIES_REALTIME_H 3 4 /* 5 realtime.library include 6 7 Copyright © 2002 The MorphOS Development Team, All Rights Reserved. 8 */ 9 10 #ifndef EXEC_TYPES_H 11 # include <exec/types.h> 12 #endif 13 14 #ifndef EXEC_LISTS_H 15 # include <exec/lists.h> 16 #endif 17 18 #ifndef EXEC_LIBRARIES_H 19 # include <exec/libraries.h> 20 #endif 21 22 #ifndef UTILITY_TAGITEM_H 23 # include <utility/tagitem.h> 24 #endif 25 26 #ifndef UTILITY_HOOKS_H 27 # include <utility/hooks.h> 28 #endif 29 30 #pragma pack(2) 31 32 33 #define TICK_FREQ 1200 34 35 36 struct Conductor 37 { 38 struct Node cdt_Link; 39 UWORD cdt_Reserved0; 40 struct MinList cdt_Players; 41 ULONG cdt_ClockTime; 42 ULONG cdt_StartTime; 43 ULONG cdt_ExternalTime; 44 ULONG cdt_MaxExternalTime; 45 ULONG cdt_Metronome; 46 UWORD cdt_Reserved1; 47 UWORD cdt_Flags; 48 UBYTE cdt_State; 49 }; 50 51 52 #define CONDUCTB_EXTERNAL 0 53 #define CONDUCTB_GOTTICK 1 54 #define CONDUCTB_METROSET 2 55 #define CONDUCTB_PRIVATE 3 56 57 #define CONDUCTF_EXTERNAL (1<<CONDUCTB_EXTERNAL) 58 #define CONDUCTF_GOTTICK (1<<CONDUCTB_GOTTICK) 59 #define CONDUCTF_METROSET (1<<CONDUCTB_METROSET) 60 #define CONDUCTF_PRIVATE (1<<CONDUCTB_PRIVATE) 61 62 63 #define CONDSTATE_STOPPED 0 64 #define CONDSTATE_PAUSED 1 65 #define CONDSTATE_LOCATE 2 66 #define CONDSTATE_RUNNING 3 67 68 #define CONDSTATE_METRIC -1 69 #define CONDSTATE_SHUTTLE -2 70 #define CONDSTATE_LOCATE_SET -3 71 72 73 struct Player 74 { 75 struct Node pl_Link; 76 BYTE pl_Reserved0; 77 BYTE pl_Reserved1; 78 struct Hook *pl_Hook; 79 struct Conductor *pl_Source; 80 struct Task *pl_Task; 81 LONG pl_MetricTime; 82 LONG pl_AlarmTime; 83 APTR pl_UserData; 84 UWORD pl_PlayerID; 85 UWORD pl_Flags; 86 }; 87 88 89 #define PLAYERB_READY 0 90 #define PLAYERB_ALARMSET 1 91 #define PLAYERB_QUIET 2 92 #define PLAYERB_CONDUCTED 3 93 #define PLAYERB_EXTSYNC 4 94 95 #define PLAYERF_READY (1<<PLAYERB_READY) 96 #define PLAYERF_ALARMSET (1<<PLAYERB_ALARMSET) 97 #define PLAYERF_QUIET (1<<PLAYERB_QUIET) 98 #define PLAYERF_CONDUCTED (1<<PLAYERB_CONDUCTED) 99 #define PLAYERF_EXTSYNC (1<<PLAYERB_EXTSYNC) 100 101 102 #define PLAYER_Base (TAG_USER + 64) 103 #define PLAYER_Hook (PLAYER_Base + 1) 104 #define PLAYER_Name (PLAYER_Base + 2) 105 #define PLAYER_Priority (PLAYER_Base + 3) 106 #define PLAYER_Conductor (PLAYER_Base + 4) 107 #define PLAYER_Ready (PLAYER_Base + 5) 108 109 #define PLAYER_AlarmSigTask (PLAYER_Base + 6) 110 111 #define PLAYER_Conducted (PLAYER_Base + 7) 112 113 #define PLAYER_AlarmSigBit (PLAYER_Base + 8) 114 115 #define PLAYER_Quiet (PLAYER_Base + 9) 116 117 #define PLAYER_UserData (PLAYER_Base + 10) 118 #define PLAYER_ID (PLAYER_Base + 11) 119 120 #define PLAYER_AlarmTime (PLAYER_Base + 12) 121 #define PLAYER_Alarm (PLAYER_Base + 13) 122 123 #define PLAYER_ExtSync (PLAYER_Base + 14) 124 #define PLAYER_ErrorCode (PLAYER_Base + 15) 125 126 127 #define PM_TICK 0 128 #define PM_STATE 1 129 #define PM_POSITION 2 130 #define PM_SHUTTLE 3 131 132 133 struct pmTime 134 { 135 ULONG pmt_Method; 136 ULONG pmt_Time; 137 }; 138 139 struct pmState 140 { 141 ULONG pms_Method; 142 ULONG pms_OldState; 143 }; 144 145 146 #define RT_CONDUCTORS 0 147 148 149 #define RTE_NOMEMORY 801 150 #define RTE_NOCONDUCTOR 802 151 #define RTE_NOTIMER 803 152 #define RTE_PLAYING 804 153 154 155 struct RealTimeBase 156 { 157 struct Library rtb_LibNode; 158 UBYTE rtb_Reserved0[2]; 159 160 ULONG rtb_Time; 161 ULONG rtb_TimeFrac; 162 UWORD rtb_Reserved1; 163 WORD rtb_TickErr; 164 }; 165 166 167 #define RealTime_TickErr_Min -705 168 #define RealTime_TickErr_Max 705 169 170 171 #pragma pack() 172 173 #endif /* LIBRARIES_REALTIME_H */