- Add "--enable-usb30-code" in configure, defaults to no
[AROS.git] / compiler / include / libraries / poseidon.h
blob78faac6c549a9df4ba2639fc4fd87ae16e91d128
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 #if defined(AROS_USB30_CODE)
153 #define DA_IsSuperspeed (DA_Dummy + 0x44)
154 #endif
156 /* Tags for psdGetAttrs(PGA_CONFIG,...) */
157 #define CA_Dummy (TAG_USER + 23)
158 #define CA_Attrs (CA_Dummy + 0x01)
159 #define CA_SelfPowered (CA_Dummy + 0x02)
160 #define CA_RemoteWakeup (CA_Dummy + 0x03)
161 #define CA_ConfigNum (CA_Dummy + 0x10)
162 #define CA_MaxPower (CA_Dummy + 0x11)
163 #define CA_ConfigName (CA_Dummy + 0x12)
164 #define CA_NumInterfaces (CA_Dummy + 0x13)
165 #define CA_Device (CA_Dummy + 0x14)
166 #define CA_InterfaceList (CA_Dummy + 0x20)
168 /* Tags for psdGetAttrs(PGA_DESCRIPTOR,...) */
169 #define DDA_Dummy (TAG_USER + 888)
170 #define DDA_Device (DDA_Dummy + 0x01)
171 #define DDA_Config (DDA_Dummy + 0x02)
172 #define DDA_Interface (DDA_Dummy + 0x03)
173 #define DDA_Endpoint (DDA_Dummy + 0x04)
174 #define DDA_Name (DDA_Dummy + 0x08)
175 #define DDA_DescriptorType (DDA_Dummy + 0x10)
176 #define DDA_DescriptorData (DDA_Dummy + 0x11)
177 #define DDA_DescriptorLength (DDA_Dummy + 0x12)
178 #define DDA_CS_SubType (DDA_Dummy + 0x20)
180 /* Tags for psdGetAttrs(PGA_INTERFACE,...) */
181 #define IFA_Dummy (TAG_USER + 4711)
182 #define IFA_InterfaceNum (IFA_Dummy + 0x10)
183 #define IFA_AlternateNum (IFA_Dummy + 0x11)
184 #define IFA_Class (IFA_Dummy + 0x12)
185 #define IFA_SubClass (IFA_Dummy + 0x13)
186 #define IFA_Protocol (IFA_Dummy + 0x14)
187 #define IFA_InterfaceName (IFA_Dummy + 0x15)
188 #define IFA_Config (IFA_Dummy + 0x16)
189 #define IFA_Binding (IFA_Dummy + 0x17)
190 #define IFA_NumEndpoints (IFA_Dummy + 0x18)
191 #define IFA_BindingClass (IFA_Dummy + 0x19)
192 #define IFA_IDString (IFA_Dummy + 0x1a)
193 #define IFA_EndpointList (IFA_Dummy + 0x20)
194 #define IFA_AlternateIfList (IFA_Dummy + 0x21)
196 /* Tags for psdGetAttrs(PGA_ENDPOINT,...) */
197 #define EA_Dummy (TAG_USER + 1138)
198 #define EA_IsIn (EA_Dummy + 0x01)
199 #define EA_EndpointNum (EA_Dummy + 0x10)
200 #define EA_TransferType (EA_Dummy + 0x11)
201 #define EA_MaxPktSize (EA_Dummy + 0x12)
202 #define EA_Interval (EA_Dummy + 0x13)
203 #define EA_Interface (EA_Dummy + 0x14)
204 #define EA_NumTransMuFrame (EA_Dummy + 0x15)
205 #define EA_SyncType (EA_Dummy + 0x16)
206 #define EA_UsageType (EA_Dummy + 0x17)
208 /* Tags for psdGetAttrs(PGA_PIPE,...) */
209 #define PPA_Dummy (TAG_USER + 1234)
210 #define PPA_Endpoint (PPA_Dummy + 0x01)
211 #define PPA_Error (PPA_Dummy + 0x02)
212 #define PPA_Actual (PPA_Dummy + 0x03)
213 #define PPA_EndpointNum (PPA_Dummy + 0x04)
214 #define PPA_DeviceAddress (PPA_Dummy + 0x05)
215 #define PPA_IORequest (PPA_Dummy + 0x06)
216 #define PPA_NoZeroPktTerm (PPA_Dummy + 0x07)
217 #define PPA_NoShortPackets PPA_NoZeroPktTerm /* obsolete, bad naming */
218 #define PPA_NakTimeout (PPA_Dummy + 0x08)
219 #define PPA_NakTimeoutTime (PPA_Dummy + 0x09)
220 #define PPA_AllowRuntPackets (PPA_Dummy + 0x0a)
221 #define PPA_MaxPktSize (PPA_Dummy + 0x0b)
222 #define PPA_Interval (PPA_Dummy + 0x0c)
224 /* Tags for application binding and psdGetAttrs(PGA_APPBINDING,...)*/
225 #define ABA_Dummy (TAG_USER + 666)
226 #define ABA_ReleaseHook (ABA_Dummy + 0x01)
227 #define ABA_Device (ABA_Dummy + 0x02)
228 #define ABA_UserData (ABA_Dummy + 0x03)
229 #define ABA_Task (ABA_Dummy + 0x04)
230 #define ABA_ForceRelease (ABA_Dummy + 0x10)
232 /* Tags for psdGetAttrs(PGA_EVENTNOTE,...)*/
233 #define ENA_Dummy (TAG_USER + 777)
234 #define ENA_EventID (ENA_Dummy + 0x01)
235 #define ENA_Param1 (ENA_Dummy + 0x02)
236 #define ENA_Param2 (ENA_Dummy + 0x03)
238 /* Tags for psdGetAttrs(PGA_GLOBALCFG,...) */
239 #define GCA_Dummy (TAG_USER + 0x1138)
240 #define GCA_LogInfo (GCA_Dummy + 0x01)
241 #define GCA_LogWarning (GCA_Dummy + 0x02)
242 #define GCA_LogError (GCA_Dummy + 0x03)
243 #define GCA_LogFailure (GCA_Dummy + 0x04)
244 #define GCA_SubTaskPri (GCA_Dummy + 0x10)
245 #define GCA_BootDelay (GCA_Dummy + 0x11)
246 #define GCA_PopupDeviceNew (GCA_Dummy + 0x20)
247 #define GCA_PopupDeviceGone (GCA_Dummy + 0x21)
248 #define GCA_PopupDeviceDeath (GCA_Dummy + 0x22)
249 #define GCA_PopupCloseDelay (GCA_Dummy + 0x23)
250 #define GCA_PopupActivateWin (GCA_Dummy + 0x30)
251 #define GCA_PopupWinToFront (GCA_Dummy + 0x31)
252 #define GCA_InsertionSound (GCA_Dummy + 0x40)
253 #define GCA_RemovalSound (GCA_Dummy + 0x41)
254 #define GCA_AutoDisableLP (GCA_Dummy + 0x60)
255 #define GCA_AutoDisableDead (GCA_Dummy + 0x61)
256 #define GCA_AutoRestartDead (GCA_Dummy + 0x63)
257 #define GCA_PowerSaving (GCA_Dummy + 0x64)
258 #define GCA_ForceSuspend (GCA_Dummy + 0x65)
259 #define GCA_SuspendTimeout (GCA_Dummy + 0x66)
260 #define GCA_PrefsVersion (GCA_Dummy + 0x70)
262 /* Tags for psdGetAttrs(PGA_PIPESTREAM,...) */
263 #define PSA_Dummy (TAG_USER + 0x0409)
264 #define PSA_MessagePort (PSA_Dummy + 0x01)
265 #define PSA_AsyncIO (PSA_Dummy + 0x02)
266 #define PSA_NumPipes (PSA_Dummy + 0x03)
267 #define PSA_BufferSize (PSA_Dummy + 0x04)
268 #define PSA_ShortPktTerm (PSA_Dummy + 0x05)
269 #define PSA_ReadAhead (PSA_Dummy + 0x06)
270 #define PSA_BufferedRead (PSA_Dummy + 0x07)
271 #define PSA_BufferedWrite (PSA_Dummy + 0x08)
272 #define PSA_NoZeroPktTerm (PSA_Dummy + 0x09)
273 #define PSA_NakTimeout (PSA_Dummy + 0x0a)
274 #define PSA_NakTimeoutTime (PSA_Dummy + 0x0b)
275 #define PSA_AllowRuntPackets (PSA_Dummy + 0x0c)
276 #define PSA_TermArray (PSA_Dummy + 0x0d)
277 #define PSA_DoNotWait (PSA_Dummy + 0x0e)
278 #define PSA_AbortSigMask (PSA_Dummy + 0x0f)
279 #define PSA_BytesPending (PSA_Dummy + 0x10)
280 #define PSA_Error (PSA_Dummy + 0x11)
281 #define PSA_ActivePipe (PSA_Dummy + 0x12)
283 /* Tags for psdGetAttrs(PGA_RTISO,...) */
284 #define RTA_Dummy (TAG_USER + 999)
285 #define RTA_InRequestHook (RTA_Dummy + 0x01)
286 #define RTA_OutRequestHook (RTA_Dummy + 0x02)
287 #define RTA_InDoneHook (RTA_Dummy + 0x03)
288 #define RTA_OutDoneHook (RTA_Dummy + 0x04)
289 #define RTA_ReleaseHook (RTA_Dummy + 0x05)
290 #define RTA_OutPrefetchSize (RTA_Dummy + 0x10)
292 /* NumToStr types */
293 #define NTS_IOERR 1
294 #define NTS_LANGID 2
295 #define NTS_TRANSTYPE 3
296 #define NTS_VENDORID 4
297 #define NTS_CLASSCODE 5
298 #define NTS_DESCRIPTOR 6
299 #define NTS_SYNCTYPE 7
300 #define NTS_USAGETYPE 8
301 #define NTS_COMBOCLASS 9
303 /* NTS_COMBOCLASS flags */
304 #define NTSCCS_CLASS 0 /* Class field is bits 0-7 */
305 #define NTSCCS_SUBCLASS 8 /* Subclass field is bits 8-15 */
306 #define NTSCCS_PROTO 16 /* Protocol field is bits 16-24 */
307 #define NTSCCF_CLASS (1<<24) /* Class field is valid */
308 #define NTSCCF_SUBCLASS (1<<25) /* Subclass field is valid */
309 #define NTSCCF_PROTO (1<<26) /* Protocol field is valid */
311 /* Event Handler stuff */
312 #define EHMB_ADDHARDWARE 0x01 /* Param1 = phw */
313 #define EHMB_REMHARDWARE 0x02 /* Param1 = phw */
314 #define EHMB_ADDDEVICE 0x03 /* Param1 = pd */
315 #define EHMB_REMDEVICE 0x04 /* Param1 = pd */
316 #define EHMB_ADDCLASS 0x05 /* Param1 = puc */
317 #define EHMB_REMCLASS 0x06 /* Param1 = puc */
318 #define EHMB_ADDBINDING 0x07 /* Param1 = pd */
319 #define EHMB_REMBINDING 0x08 /* Param1 = pd */
320 #define EHMB_ADDERRORMSG 0x09 /* Param1 = pem */
321 #define EHMB_REMERRORMSG 0x0a /* Param1 = pem */
322 #define EHMB_CONFIGCHG 0x0b /* Param1 = void */
323 #define EHMB_DEVICEDEAD 0x0c /* Param1 = pd */
324 #define EHMB_DEVICELOWPW 0x0d /* Param1 = pd */
325 #define EHMB_DEVSUSPENDED 0x0e /* Param1 = pd */
326 #define EHMB_DEVRESUMED 0x0f /* Param1 = pd */
328 #define EHMF_ADDHARDWARE (1L<<EHMB_ADDHARDWARE)
329 #define EHMF_REMHARDWARE (1L<<EHMB_REMHARDWARE)
330 #define EHMF_ADDDEVICE (1L<<EHMB_ADDDEVICE)
331 #define EHMF_REMDEVICE (1L<<EHMB_REMDEVICE)
332 #define EHMF_ADDCLASS (1L<<EHMB_ADDCLASS)
333 #define EHMF_REMCLASS (1L<<EHMB_REMCLASS)
334 #define EHMF_ADDBINDING (1L<<EHMB_ADDBINDING)
335 #define EHMF_REMBINDING (1L<<EHMB_REMBINDING)
336 #define EHMF_ADDERRORMSG (1L<<EHMB_ADDERRORMSG)
337 #define EHMF_REMERRORMSG (1L<<EHMB_REMERRORMSG)
338 #define EHMF_CONFIGCHG (1L<<EHMB_CONFIGCHG)
339 #define EHMF_DEVICEDEAD (1L<<EHMB_DEVICEDEAD)
340 #define EHMF_DEVICELOWPW (1L<<EHMB_DEVICELOWPW)
341 #define EHMF_DEVSUSPENDED (1L<<EHMB_DEVSUSPENDED)
342 #define EHMF_DEVRESUMED (1L<<EHMB_DEVRESUMED)
344 /* Configuration stuff */
346 #if AROS_BIG_ENDIAN
347 /* While Poseidon writes a correct big endian IFF structure on both big and little endian
348 * the contents are *not* endian agnostic. Therefore we will avoid loading prefs of
349 * different endianess by defining the outmost FORM ID endian specific. Also notice that
350 * compatibility of the config files with 68k and MorphOS versions is not given. */
351 #define IFFFORM_PSDCFG MAKE_ID('P','S','B','C')
352 #else
353 #define IFFFORM_PSDCFG MAKE_ID('P','S','L','C')
354 #endif
355 #define IFFFORM_STACKCFG MAKE_ID('S','T','K','C')
356 #define IFFFORM_DEVICECFG MAKE_ID('D','E','V','C')
357 #define IFFFORM_CLASSCFG MAKE_ID('C','L','S','C')
358 #define IFFFORM_UHWDEVICE MAKE_ID('U','H','W','D')
359 #define IFFFORM_USBCLASS MAKE_ID('U','C','L','S')
360 #define IFFFORM_CLASSDATA MAKE_ID('G','C','P','D')
361 #define IFFFORM_DEVCFGDATA MAKE_ID('D','C','F','G')
362 #define IFFFORM_DEVCLSDATA MAKE_ID('D','C','P','D')
363 #define IFFFORM_IFCFGDATA MAKE_ID('I','C','F','G')
364 #define IFFFORM_IFCLSDATA MAKE_ID('I','C','P','D')
366 #define IFFCHNK_OWNER MAKE_ID('O','W','N','R')
367 #define IFFCHNK_NAME MAKE_ID('N','A','M','E')
368 #define IFFCHNK_UNIT MAKE_ID('U','N','I','T')
369 #define IFFCHNK_OFFLINE MAKE_ID('O','F','F','L')
370 #define IFFCHNK_GLOBALCFG MAKE_ID('G','C','F','G')
371 #define IFFCHNK_DEVID MAKE_ID('D','V','I','D')
372 #define IFFCHNK_IFID MAKE_ID('I','F','I','D')
373 #define IFFCHNK_FORCEDBIND MAKE_ID('F','B','N','D')
374 #define IFFCHNK_POPUP MAKE_ID('P','O','P','O')
375 #define IFFCHNK_INSERTSND MAKE_ID('I','N','S','F')
376 #define IFFCHNK_REMOVESND MAKE_ID('R','M','S','F')
378 /* Private stuff starts here */
380 #if defined(__GNUC__)
381 # pragma pack(2)
382 #endif
384 /* GCA_PopupDeviceNew definitions */
386 #define PGCP_NEVER 0 /* never open a pop-up window */
387 #define PGCP_ERROR 1 /* popup, on error condition (e.g. low power) */
388 #define PGCP_ISNEW 2 /* popup, if this is the first time the device is connected */
389 #define PGCP_NOBINDING 3 /* popup, if there is no binding */
390 #define PGCP_ASKCONFIG 4 /* popup and ask to configure, if not existent */
391 #define PGCP_CANCONFIG 5 /* popup and ask to configure, if possible */
392 #define PGCP_HASBINDING 6 /* popup, if there is a binding to a class */
393 #define PGCP_ALWAYS 7 /* popup always */
395 struct PsdGlobalCfg
397 ULONG pgc_ChunkID; /* ChunkID=IFFCHNK_GLOBALCFG */
398 ULONG pgc_Length; /* sizeof(struct PsdGlobalCfg)-8 */
399 BOOL pgc_LogInfo; /* Log normal messages */
400 BOOL pgc_LogWarning; /* Log warnings */
401 BOOL pgc_LogError; /* Log errors */
402 BOOL pgc_LogFailure; /* Log failures */
403 ULONG pgc_BootDelay; /* boot delay */
404 WORD pgc_SubTaskPri; /* Subtask priority */
405 UWORD pgc_PopupDeviceNew; /* New device popup */
406 BOOL pgc_PopupDeviceGone; /* Device removed popup */
407 BOOL pgc_PopupDeviceDeath; /* Device dead popup */
408 ULONG pgc_PopupCloseDelay; /* Delay in seconds before closing */
409 BOOL pgc_PopupActivateWin; /* Activate window on opening */
410 BOOL pgc_PopupWinToFront; /* Pop window to front on content change */
411 BOOL pgc_AutoDisableLP; /* Automatically disable on LowPower */
412 BOOL pgc_AutoDisableDead; /* Automatically disable on Dead */
413 BOOL pgc_AutoRestartDead; /* Automatically restart on Dead */
414 ULONG pgc_PrefsVersion; /* Reference version of prefs saved */
415 BOOL pgc_PowerSaving; /* Enable power saving features */
416 BOOL pgc_ForceSuspend; /* Force Suspend on classes not supporting it, but with remote wakeup */
417 ULONG pgc_SuspendTimeout; /* Timeout when to suspend a device after inactivity */
420 /* DA_OverridePowerInfo definitions */
421 #define POCP_TRUST_DEVICE 0
422 #define POCP_BUS_POWERED 1
423 #define POCP_SELF_POWERED 2
425 struct PsdPoPoCfg
427 ULONG poc_ChunkID; /* ChunkID=IFFCHNK_POPO */
428 ULONG poc_Length; /* sizeof(struct PsdPopoCfg)-8 */
429 BOOL poc_InhibitPopup; /* Inhibit opening of popup window */
430 BOOL poc_NoClassBind; /* Inhibit class scan */
431 UWORD poc_OverridePowerInfo; /* 0=keep, 1=buspowered, 2=selfpowered */
434 #if defined(__GNUC__)
435 # pragma pack()
436 #endif
438 /* The library node - private
440 struct PsdBase
442 struct Library ps_Library; /* standard */
445 struct PsdEventHook
447 struct Node peh_Node; /* Node linkage */
450 struct PsdEventNote
452 struct Message pen_Msg; /* Intertask communication message */
455 struct PsdErrorMsg
457 struct Node pem_Node; /* Node linkage */
460 struct PsdIFFContext
462 struct Node pic_Node; /* Node linkage */
465 struct PsdUsbClass
467 struct Node puc_Node; /* Node linkage */
470 struct PsdAppBinding
472 struct Node pab_Node; /* Node linkage */
475 struct PsdHardware
477 struct Node phw_Node; /* Node linkage */
480 struct PsdDevice
482 struct Node pd_Node; /* Node linkage */
485 struct PsdDescriptor
487 struct Node pdd_Node; /* Node linkage */
490 struct PsdConfig
492 struct Node pc_Node; /* Node linkage */
495 struct PsdInterface
497 struct Node pif_Node; /* Node linkage */
500 struct PsdEndpoint
502 struct Node pep_Node; /* Node linkage */
505 struct PsdPipe
507 struct Message pp_Msg; /* Intertask communication message */
510 struct PsdPipeStream
512 struct Node pps_Node; /* Node linkage */
515 struct PsdRTIsoHandler
517 struct Node prt_Node; /* Node linkage */
520 #endif /* LIBRARIES_POSEIDON_H */