mesa: simplify dependencies in mmakefiles
[AROS.git] / compiler / include / libraries / poseidon.h
blob414efa9023bde045ef2b15e9d88273f9b90fec82
1 /****************************************************************************
3 __ __ V/\V. /\
4 |" | |" | mMMnw, || []
5 | | | | (o o)W () || ||
6 |__|_|_"| | / |Mw || ||//
7 (" " \| \ -'_/mw \\||/
8 \______) ~%%/WM" \||
9 _____ ___ ______ _____ __ _____ ___ __ __/~~__ ~~\ _||
10 |"(" \()/\" \ ()/"_ )|"(___) ) )|"(" \ ()/\" \(__)/" ) /" ) " \ /_)O
11 | ) )/" \ \ (_/"\__/ | )_ ( ( | )_ ) /" \ \ / /|/ / ·\ \/ ,|O
12 | (___/( (_\__) _\ \_ | (__) ) )| (__) |( (_\__)/ /"/ / |\ '_|O
13 | | _ \ / / /" \_/ ) | ")__ ( ( | )" ) \ / // /|/ / . .|/\__/ ||
14 |__| (_) \/__/ (______/ |_(___) )_)|_(___/ . \/__/(__/ (__/ .:.:| ||
15 _____
16 |" __ \ Poseidon -- The divine USB stack for Amiga computers
17 | (__) ) Version: 4.3 (30.05.09)
18 | __ ( Designed and written by
19 |"(__) ) Chris Hodges <chrisly@platon42.de>
20 |_____/ Copyright ©2002-2009 Chris Hodges. All rights reserved.
22 ****************************************************************************/
25 *----------------------------------------------------------------------------
26 * Includes for poseidon.library
27 *----------------------------------------------------------------------------
28 * By Chris Hodges <chrisly@platon42.de>
32 #ifndef LIBRARIES_POSEIDON_H
33 #define LIBRARIES_POSEIDON_H
35 #include <devices/usbhardware.h>
36 #include <devices/timer.h>
37 #include <exec/types.h>
38 #include <exec/libraries.h>
39 #include <exec/semaphores.h>
40 #include <exec/errors.h>
41 #include <dos/dos.h>
42 #include <utility/tagitem.h>
43 #include <utility/pack.h>
44 #include <libraries/iffparse.h>
46 /* Types for psdGetAttrs() and psdSetAttrs() */
47 #define PGA_STACK 0x01
48 #define PGA_USBCLASS 0x02
49 #define PGA_HARDWARE 0x03
50 #define PGA_DEVICE 0x04
51 #define PGA_CONFIG 0x05
52 #define PGA_INTERFACE 0x06
53 #define PGA_ENDPOINT 0x07
54 #define PGA_ERRORMSG 0x08
55 #define PGA_PIPE 0x09
56 #define PGA_APPBINDING 0x0a
57 #define PGA_EVENTNOTE 0x0b
58 #define PGA_STACKCFG 0x0c
59 #define PGA_PIPESTREAM 0x0d
60 #define PGA_DESCRIPTOR 0x0e
61 #define PGA_RTISO 0x0f
62 #define PGA_LAST 0x0f
64 /* Tags for psdGetAttrs(PGA_STACK,...) */
65 #define PA_Dummy (TAG_USER + 2612)
66 #define PA_ConfigRead (PA_Dummy + 0x01)
67 #define PA_HardwareList (PA_Dummy + 0x20)
68 #define PA_ClassList (PA_Dummy + 0x21)
69 #define PA_ErrorMsgList (PA_Dummy + 0x22)
70 #define PA_GlobalConfig (PA_Dummy + 0x44)
71 #define PA_CurrConfigHash (PA_Dummy + 0x45)
72 #define PA_SavedConfigHash (PA_Dummy + 0x46)
73 #define PA_MemPoolUsage (PA_Dummy + 0x50)
74 #define PA_ReleaseVersion (PA_Dummy + 0x60)
75 #define PA_OSVersion (PA_Dummy + 0x61)
77 /* Tags for psdGetAttrs(PGA_ERRORMSG,...) */
78 #define EMA_Dummy (TAG_USER + 103)
79 #define EMA_Level (EMA_Dummy + 0x10)
80 #define EMA_Origin (EMA_Dummy + 0x11)
81 #define EMA_Msg (EMA_Dummy + 0x12)
82 #define EMA_DateStamp (EMA_Dummy + 0x13)
84 /* Tags for psdGetAttrs(PGA_USBCLASS,...) */
86 #define UCA_Dummy (TAG_USER + 4489)
87 #define UCA_ClassBase (UCA_Dummy + 0x10)
88 #define UCA_ClassName (UCA_Dummy + 0x11)
89 #define UCA_UseCount (UCA_Dummy + 0x12)
90 #define UCA_FullPath (UCA_Dummy + 0x13)
92 /* Tags for psdGetAttrs(PGA_HARDWARE,...) */
93 #define HA_Dummy (TAG_USER + 0x2612)
94 #define HA_DeviceName (HA_Dummy + 0x10)
95 #define HA_DeviceUnit (HA_Dummy + 0x11)
96 #define HA_ProductName (HA_Dummy + 0x12)
97 #define HA_Manufacturer (HA_Dummy + 0x13)
98 #define HA_Version (HA_Dummy + 0x14)
99 #define HA_Revision (HA_Dummy + 0x15)
100 #define HA_Description (HA_Dummy + 0x16)
101 #define HA_Copyright (HA_Dummy + 0x17)
102 #define HA_DriverVersion (HA_Dummy + 0x18)
103 #define HA_DeviceList (HA_Dummy + 0x20)
105 /* Tags for psdGetAttrs(PGA_DEVICE,...) */
106 #define DA_Dummy (TAG_USER + 42)
107 #define DA_IsLowspeed (DA_Dummy + 0x01)
108 #define DA_IsConnected (DA_Dummy + 0x02)
109 #define DA_HasAddress (DA_Dummy + 0x03)
110 #define DA_HasDevDesc (DA_Dummy + 0x04)
111 #define DA_IsConfigured (DA_Dummy + 0x05)
112 #define DA_HasAppBinding (DA_Dummy + 0x06)
113 #define DA_IsHighspeed (DA_Dummy + 0x07)
114 #define DA_IsDead (DA_Dummy + 0x08)
115 #define DA_Config (DA_Dummy + 0x09)
116 #define DA_IsSuspended (DA_Dummy + 0x0a)
117 #define DA_Address (DA_Dummy + 0x10)
118 #define DA_NumConfigs (DA_Dummy + 0x11)
119 #define DA_CurrConfig (DA_Dummy + 0x12)
120 #define DA_HubDevice (DA_Dummy + 0x13)
121 #define DA_UsbVersion (DA_Dummy + 0x14)
122 #define DA_Class (DA_Dummy + 0x15)
123 #define DA_SubClass (DA_Dummy + 0x16)
124 #define DA_Protocol (DA_Dummy + 0x17)
125 #define DA_Version (DA_Dummy + 0x18)
126 #define DA_VendorID (DA_Dummy + 0x19)
127 #define DA_ProductID (DA_Dummy + 0x1a)
128 #define DA_Manufacturer (DA_Dummy + 0x1b)
129 #define DA_ProductName (DA_Dummy + 0x1c)
130 #define DA_SerialNumber (DA_Dummy + 0x1d)
131 #define DA_Hardware (DA_Dummy + 0x1e)
132 #define DA_Binding (DA_Dummy + 0x1f)
133 #define DA_ConfigList (DA_Dummy + 0x20)
134 #define DA_LangIDArray (DA_Dummy + 0x21)
135 #define DA_CurrLangID (DA_Dummy + 0x22)
136 #define DA_BindingClass (DA_Dummy + 0x23)
137 #define DA_IDString (DA_Dummy + 0x24)
138 #define DA_CloneCount (DA_Dummy + 0x25)
139 #define DA_AtHubPortNumber (DA_Dummy + 0x26)
140 #define DA_NeedsSplitTrans (DA_Dummy + 0x27)
141 #define DA_OrigProductName (DA_Dummy + 0x28)
142 #define DA_DescriptorList (DA_Dummy + 0x29)
143 #define DA_MaxPktSize0 (DA_Dummy + 0x2a)
144 #define DA_HubThinkTime (DA_Dummy + 0x2b)
145 #define DA_PowerSupply (DA_Dummy + 0x30)
146 #define DA_PowerDrained (DA_Dummy + 0x31)
147 #define DA_LowPower (DA_Dummy + 0x32)
148 #define DA_InhibitPopup (DA_Dummy + 0x40)
149 #define DA_IsNewToMe (DA_Dummy + 0x41)
150 #define DA_InhibitClassBind (DA_Dummy + 0x42)
151 #define DA_OverridePowerInfo (DA_Dummy + 0x43)
152 #define DA_IsSuperspeed (DA_Dummy + 0x44)
154 /* Tags for psdGetAttrs(PGA_CONFIG,...) */
155 #define CA_Dummy (TAG_USER + 23)
156 #define CA_Attrs (CA_Dummy + 0x01)
157 #define CA_SelfPowered (CA_Dummy + 0x02)
158 #define CA_RemoteWakeup (CA_Dummy + 0x03)
159 #define CA_ConfigNum (CA_Dummy + 0x10)
160 #define CA_MaxPower (CA_Dummy + 0x11)
161 #define CA_ConfigName (CA_Dummy + 0x12)
162 #define CA_NumInterfaces (CA_Dummy + 0x13)
163 #define CA_Device (CA_Dummy + 0x14)
164 #define CA_InterfaceList (CA_Dummy + 0x20)
166 /* Tags for psdGetAttrs(PGA_DESCRIPTOR,...) */
167 #define DDA_Dummy (TAG_USER + 888)
168 #define DDA_Device (DDA_Dummy + 0x01)
169 #define DDA_Config (DDA_Dummy + 0x02)
170 #define DDA_Interface (DDA_Dummy + 0x03)
171 #define DDA_Endpoint (DDA_Dummy + 0x04)
172 #define DDA_Name (DDA_Dummy + 0x08)
173 #define DDA_DescriptorType (DDA_Dummy + 0x10)
174 #define DDA_DescriptorData (DDA_Dummy + 0x11)
175 #define DDA_DescriptorLength (DDA_Dummy + 0x12)
176 #define DDA_CS_SubType (DDA_Dummy + 0x20)
178 /* Tags for psdGetAttrs(PGA_INTERFACE,...) */
179 #define IFA_Dummy (TAG_USER + 4711)
180 #define IFA_InterfaceNum (IFA_Dummy + 0x10)
181 #define IFA_AlternateNum (IFA_Dummy + 0x11)
182 #define IFA_Class (IFA_Dummy + 0x12)
183 #define IFA_SubClass (IFA_Dummy + 0x13)
184 #define IFA_Protocol (IFA_Dummy + 0x14)
185 #define IFA_InterfaceName (IFA_Dummy + 0x15)
186 #define IFA_Config (IFA_Dummy + 0x16)
187 #define IFA_Binding (IFA_Dummy + 0x17)
188 #define IFA_NumEndpoints (IFA_Dummy + 0x18)
189 #define IFA_BindingClass (IFA_Dummy + 0x19)
190 #define IFA_IDString (IFA_Dummy + 0x1a)
191 #define IFA_EndpointList (IFA_Dummy + 0x20)
192 #define IFA_AlternateIfList (IFA_Dummy + 0x21)
194 /* Tags for psdGetAttrs(PGA_ENDPOINT,...) */
195 #define EA_Dummy (TAG_USER + 1138)
196 #define EA_IsIn (EA_Dummy + 0x01)
197 #define EA_EndpointNum (EA_Dummy + 0x10)
198 #define EA_TransferType (EA_Dummy + 0x11)
199 #define EA_MaxPktSize (EA_Dummy + 0x12)
200 #define EA_Interval (EA_Dummy + 0x13)
201 #define EA_Interface (EA_Dummy + 0x14)
202 #define EA_NumTransMuFrame (EA_Dummy + 0x15)
203 #define EA_SyncType (EA_Dummy + 0x16)
204 #define EA_UsageType (EA_Dummy + 0x17)
206 /* Tags for psdGetAttrs(PGA_PIPE,...) */
207 #define PPA_Dummy (TAG_USER + 1234)
208 #define PPA_Endpoint (PPA_Dummy + 0x01)
209 #define PPA_Error (PPA_Dummy + 0x02)
210 #define PPA_Actual (PPA_Dummy + 0x03)
211 #define PPA_EndpointNum (PPA_Dummy + 0x04)
212 #define PPA_DeviceAddress (PPA_Dummy + 0x05)
213 #define PPA_IORequest (PPA_Dummy + 0x06)
214 #define PPA_NoZeroPktTerm (PPA_Dummy + 0x07)
215 #define PPA_NoShortPackets PPA_NoZeroPktTerm /* obsolete, bad naming */
216 #define PPA_NakTimeout (PPA_Dummy + 0x08)
217 #define PPA_NakTimeoutTime (PPA_Dummy + 0x09)
218 #define PPA_AllowRuntPackets (PPA_Dummy + 0x0a)
219 #define PPA_MaxPktSize (PPA_Dummy + 0x0b)
220 #define PPA_Interval (PPA_Dummy + 0x0c)
222 /* Tags for application binding and psdGetAttrs(PGA_APPBINDING,...)*/
223 #define ABA_Dummy (TAG_USER + 666)
224 #define ABA_ReleaseHook (ABA_Dummy + 0x01)
225 #define ABA_Device (ABA_Dummy + 0x02)
226 #define ABA_UserData (ABA_Dummy + 0x03)
227 #define ABA_Task (ABA_Dummy + 0x04)
228 #define ABA_ForceRelease (ABA_Dummy + 0x10)
230 /* Tags for psdGetAttrs(PGA_EVENTNOTE,...)*/
231 #define ENA_Dummy (TAG_USER + 777)
232 #define ENA_EventID (ENA_Dummy + 0x01)
233 #define ENA_Param1 (ENA_Dummy + 0x02)
234 #define ENA_Param2 (ENA_Dummy + 0x03)
236 /* Tags for psdGetAttrs(PGA_GLOBALCFG,...) */
237 #define GCA_Dummy (TAG_USER + 0x1138)
238 #define GCA_LogInfo (GCA_Dummy + 0x01)
239 #define GCA_LogWarning (GCA_Dummy + 0x02)
240 #define GCA_LogError (GCA_Dummy + 0x03)
241 #define GCA_LogFailure (GCA_Dummy + 0x04)
242 #define GCA_SubTaskPri (GCA_Dummy + 0x10)
243 #define GCA_BootDelay (GCA_Dummy + 0x11)
244 #define GCA_PopupDeviceNew (GCA_Dummy + 0x20)
245 #define GCA_PopupDeviceGone (GCA_Dummy + 0x21)
246 #define GCA_PopupDeviceDeath (GCA_Dummy + 0x22)
247 #define GCA_PopupCloseDelay (GCA_Dummy + 0x23)
248 #define GCA_PopupActivateWin (GCA_Dummy + 0x30)
249 #define GCA_PopupWinToFront (GCA_Dummy + 0x31)
250 #define GCA_InsertionSound (GCA_Dummy + 0x40)
251 #define GCA_RemovalSound (GCA_Dummy + 0x41)
252 #define GCA_AutoDisableLP (GCA_Dummy + 0x60)
253 #define GCA_AutoDisableDead (GCA_Dummy + 0x61)
254 #define GCA_AutoRestartDead (GCA_Dummy + 0x63)
255 #define GCA_PowerSaving (GCA_Dummy + 0x64)
256 #define GCA_ForceSuspend (GCA_Dummy + 0x65)
257 #define GCA_SuspendTimeout (GCA_Dummy + 0x66)
258 #define GCA_PrefsVersion (GCA_Dummy + 0x70)
260 /* Tags for psdGetAttrs(PGA_PIPESTREAM,...) */
261 #define PSA_Dummy (TAG_USER + 0x0409)
262 #define PSA_MessagePort (PSA_Dummy + 0x01)
263 #define PSA_AsyncIO (PSA_Dummy + 0x02)
264 #define PSA_NumPipes (PSA_Dummy + 0x03)
265 #define PSA_BufferSize (PSA_Dummy + 0x04)
266 #define PSA_ShortPktTerm (PSA_Dummy + 0x05)
267 #define PSA_ReadAhead (PSA_Dummy + 0x06)
268 #define PSA_BufferedRead (PSA_Dummy + 0x07)
269 #define PSA_BufferedWrite (PSA_Dummy + 0x08)
270 #define PSA_NoZeroPktTerm (PSA_Dummy + 0x09)
271 #define PSA_NakTimeout (PSA_Dummy + 0x0a)
272 #define PSA_NakTimeoutTime (PSA_Dummy + 0x0b)
273 #define PSA_AllowRuntPackets (PSA_Dummy + 0x0c)
274 #define PSA_TermArray (PSA_Dummy + 0x0d)
275 #define PSA_DoNotWait (PSA_Dummy + 0x0e)
276 #define PSA_AbortSigMask (PSA_Dummy + 0x0f)
277 #define PSA_BytesPending (PSA_Dummy + 0x10)
278 #define PSA_Error (PSA_Dummy + 0x11)
279 #define PSA_ActivePipe (PSA_Dummy + 0x12)
281 /* Tags for psdGetAttrs(PGA_RTISO,...) */
282 #define RTA_Dummy (TAG_USER + 999)
283 #define RTA_InRequestHook (RTA_Dummy + 0x01)
284 #define RTA_OutRequestHook (RTA_Dummy + 0x02)
285 #define RTA_InDoneHook (RTA_Dummy + 0x03)
286 #define RTA_OutDoneHook (RTA_Dummy + 0x04)
287 #define RTA_ReleaseHook (RTA_Dummy + 0x05)
288 #define RTA_OutPrefetchSize (RTA_Dummy + 0x10)
290 /* NumToStr types */
291 #define NTS_IOERR 1
292 #define NTS_LANGID 2
293 #define NTS_TRANSTYPE 3
294 #define NTS_VENDORID 4
295 #define NTS_CLASSCODE 5
296 #define NTS_DESCRIPTOR 6
297 #define NTS_SYNCTYPE 7
298 #define NTS_USAGETYPE 8
299 #define NTS_COMBOCLASS 9
301 /* NTS_COMBOCLASS flags */
302 #define NTSCCS_CLASS 0 /* Class field is bits 0-7 */
303 #define NTSCCS_SUBCLASS 8 /* Subclass field is bits 8-15 */
304 #define NTSCCS_PROTO 16 /* Protocol field is bits 16-24 */
305 #define NTSCCF_CLASS (1<<24) /* Class field is valid */
306 #define NTSCCF_SUBCLASS (1<<25) /* Subclass field is valid */
307 #define NTSCCF_PROTO (1<<26) /* Protocol field is valid */
309 /* Event Handler stuff */
310 #define EHMB_ADDHARDWARE 0x01 /* Param1 = phw */
311 #define EHMB_REMHARDWARE 0x02 /* Param1 = phw */
312 #define EHMB_ADDDEVICE 0x03 /* Param1 = pd */
313 #define EHMB_REMDEVICE 0x04 /* Param1 = pd */
314 #define EHMB_ADDCLASS 0x05 /* Param1 = puc */
315 #define EHMB_REMCLASS 0x06 /* Param1 = puc */
316 #define EHMB_ADDBINDING 0x07 /* Param1 = pd */
317 #define EHMB_REMBINDING 0x08 /* Param1 = pd */
318 #define EHMB_ADDERRORMSG 0x09 /* Param1 = pem */
319 #define EHMB_REMERRORMSG 0x0a /* Param1 = pem */
320 #define EHMB_CONFIGCHG 0x0b /* Param1 = void */
321 #define EHMB_DEVICEDEAD 0x0c /* Param1 = pd */
322 #define EHMB_DEVICELOWPW 0x0d /* Param1 = pd */
323 #define EHMB_DEVSUSPENDED 0x0e /* Param1 = pd */
324 #define EHMB_DEVRESUMED 0x0f /* Param1 = pd */
326 #define EHMF_ADDHARDWARE (1L<<EHMB_ADDHARDWARE)
327 #define EHMF_REMHARDWARE (1L<<EHMB_REMHARDWARE)
328 #define EHMF_ADDDEVICE (1L<<EHMB_ADDDEVICE)
329 #define EHMF_REMDEVICE (1L<<EHMB_REMDEVICE)
330 #define EHMF_ADDCLASS (1L<<EHMB_ADDCLASS)
331 #define EHMF_REMCLASS (1L<<EHMB_REMCLASS)
332 #define EHMF_ADDBINDING (1L<<EHMB_ADDBINDING)
333 #define EHMF_REMBINDING (1L<<EHMB_REMBINDING)
334 #define EHMF_ADDERRORMSG (1L<<EHMB_ADDERRORMSG)
335 #define EHMF_REMERRORMSG (1L<<EHMB_REMERRORMSG)
336 #define EHMF_CONFIGCHG (1L<<EHMB_CONFIGCHG)
337 #define EHMF_DEVICEDEAD (1L<<EHMB_DEVICEDEAD)
338 #define EHMF_DEVICELOWPW (1L<<EHMB_DEVICELOWPW)
339 #define EHMF_DEVSUSPENDED (1L<<EHMB_DEVSUSPENDED)
340 #define EHMF_DEVRESUMED (1L<<EHMB_DEVRESUMED)
342 /* Configuration stuff */
344 #if AROS_BIG_ENDIAN
345 /* While Poseidon writes a correct big endian IFF structure on both big and little endian
346 * the contents are *not* endian agnostic. Therefore we will avoid loading prefs of
347 * different endianess by defining the outmost FORM ID endian specific. Also notice that
348 * compatibility of the config files with 68k and MorphOS versions is not given. */
349 #define IFFFORM_PSDCFG MAKE_ID('P','S','B','C')
350 #else
351 #define IFFFORM_PSDCFG MAKE_ID('P','S','L','C')
352 #endif
353 #define IFFFORM_STACKCFG MAKE_ID('S','T','K','C')
354 #define IFFFORM_DEVICECFG MAKE_ID('D','E','V','C')
355 #define IFFFORM_CLASSCFG MAKE_ID('C','L','S','C')
356 #define IFFFORM_UHWDEVICE MAKE_ID('U','H','W','D')
357 #define IFFFORM_USBCLASS MAKE_ID('U','C','L','S')
358 #define IFFFORM_CLASSDATA MAKE_ID('G','C','P','D')
359 #define IFFFORM_DEVCFGDATA MAKE_ID('D','C','F','G')
360 #define IFFFORM_DEVCLSDATA MAKE_ID('D','C','P','D')
361 #define IFFFORM_IFCFGDATA MAKE_ID('I','C','F','G')
362 #define IFFFORM_IFCLSDATA MAKE_ID('I','C','P','D')
364 #define IFFCHNK_OWNER MAKE_ID('O','W','N','R')
365 #define IFFCHNK_NAME MAKE_ID('N','A','M','E')
366 #define IFFCHNK_UNIT MAKE_ID('U','N','I','T')
367 #define IFFCHNK_OFFLINE MAKE_ID('O','F','F','L')
368 #define IFFCHNK_GLOBALCFG MAKE_ID('G','C','F','G')
369 #define IFFCHNK_DEVID MAKE_ID('D','V','I','D')
370 #define IFFCHNK_IFID MAKE_ID('I','F','I','D')
371 #define IFFCHNK_FORCEDBIND MAKE_ID('F','B','N','D')
372 #define IFFCHNK_POPUP MAKE_ID('P','O','P','O')
373 #define IFFCHNK_INSERTSND MAKE_ID('I','N','S','F')
374 #define IFFCHNK_REMOVESND MAKE_ID('R','M','S','F')
376 /* Private stuff starts here */
378 #if defined(__GNUC__)
379 # pragma pack(2)
380 #endif
382 /* GCA_PopupDeviceNew definitions */
384 #define PGCP_NEVER 0 /* never open a pop-up window */
385 #define PGCP_ERROR 1 /* popup, on error condition (e.g. low power) */
386 #define PGCP_ISNEW 2 /* popup, if this is the first time the device is connected */
387 #define PGCP_NOBINDING 3 /* popup, if there is no binding */
388 #define PGCP_ASKCONFIG 4 /* popup and ask to configure, if not existent */
389 #define PGCP_CANCONFIG 5 /* popup and ask to configure, if possible */
390 #define PGCP_HASBINDING 6 /* popup, if there is a binding to a class */
391 #define PGCP_ALWAYS 7 /* popup always */
393 struct PsdGlobalCfg
395 ULONG pgc_ChunkID; /* ChunkID=IFFCHNK_GLOBALCFG */
396 ULONG pgc_Length; /* sizeof(struct PsdGlobalCfg)-8 */
397 BOOL pgc_LogInfo; /* Log normal messages */
398 BOOL pgc_LogWarning; /* Log warnings */
399 BOOL pgc_LogError; /* Log errors */
400 BOOL pgc_LogFailure; /* Log failures */
401 ULONG pgc_BootDelay; /* boot delay */
402 WORD pgc_SubTaskPri; /* Subtask priority */
403 UWORD pgc_PopupDeviceNew; /* New device popup */
404 BOOL pgc_PopupDeviceGone; /* Device removed popup */
405 BOOL pgc_PopupDeviceDeath; /* Device dead popup */
406 ULONG pgc_PopupCloseDelay; /* Delay in seconds before closing */
407 BOOL pgc_PopupActivateWin; /* Activate window on opening */
408 BOOL pgc_PopupWinToFront; /* Pop window to front on content change */
409 BOOL pgc_AutoDisableLP; /* Automatically disable on LowPower */
410 BOOL pgc_AutoDisableDead; /* Automatically disable on Dead */
411 BOOL pgc_AutoRestartDead; /* Automatically restart on Dead */
412 ULONG pgc_PrefsVersion; /* Reference version of prefs saved */
413 BOOL pgc_PowerSaving; /* Enable power saving features */
414 BOOL pgc_ForceSuspend; /* Force Suspend on classes not supporting it, but with remote wakeup */
415 ULONG pgc_SuspendTimeout; /* Timeout when to suspend a device after inactivity */
418 /* DA_OverridePowerInfo definitions */
419 #define POCP_TRUST_DEVICE 0
420 #define POCP_BUS_POWERED 1
421 #define POCP_SELF_POWERED 2
423 struct PsdPoPoCfg
425 ULONG poc_ChunkID; /* ChunkID=IFFCHNK_POPO */
426 ULONG poc_Length; /* sizeof(struct PsdPopoCfg)-8 */
427 BOOL poc_InhibitPopup; /* Inhibit opening of popup window */
428 BOOL poc_NoClassBind; /* Inhibit class scan */
429 UWORD poc_OverridePowerInfo; /* 0=keep, 1=buspowered, 2=selfpowered */
432 #if defined(__GNUC__)
433 # pragma pack()
434 #endif
436 /* The library node - private
438 struct PsdBase
440 struct Library ps_Library; /* standard */
443 struct PsdEventHook
445 struct Node peh_Node; /* Node linkage */
448 struct PsdEventNote
450 struct Message pen_Msg; /* Intertask communication message */
453 struct PsdErrorMsg
455 struct Node pem_Node; /* Node linkage */
458 struct PsdIFFContext
460 struct Node pic_Node; /* Node linkage */
463 struct PsdUsbClass
465 struct Node puc_Node; /* Node linkage */
468 struct PsdAppBinding
470 struct Node pab_Node; /* Node linkage */
473 struct PsdHardware
475 struct Node phw_Node; /* Node linkage */
478 struct PsdDevice
480 struct Node pd_Node; /* Node linkage */
483 struct PsdDescriptor
485 struct Node pdd_Node; /* Node linkage */
488 struct PsdConfig
490 struct Node pc_Node; /* Node linkage */
493 struct PsdInterface
495 struct Node pif_Node; /* Node linkage */
498 struct PsdEndpoint
500 struct Node pep_Node; /* Node linkage */
503 struct PsdPipe
505 struct Message pp_Msg; /* Intertask communication message */
508 struct PsdPipeStream
510 struct Node pps_Node; /* Node linkage */
513 struct PsdRTIsoHandler
515 struct Node prt_Node; /* Node linkage */
518 #endif /* LIBRARIES_POSEIDON_H */