1 /****************************************************************************
    2 
    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.2 (31.08.08)
   18                 |  __ (  Designed and written by
   19                 |"(__) )   Chris Hodges <chrisly@platon42.de>
   20                 |_____/  Copyright ©2002-2008 Chris Hodges. All rights reserved.
   21 
   22  ****************************************************************************/
   23 
   24 /*
   25  *----------------------------------------------------------------------------
   26  *                         Includes for poseidon.library
   27  *----------------------------------------------------------------------------
   28  *                   By Chris Hodges <chrisly@platon42.de>
   29  *
   30  */
   31 
   32 #ifndef LIBRARIES_POSEIDON_H
   33 #define LIBRARIES_POSEIDON_H
   34 
   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>
   45 
   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
   63 
   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)
   76 
   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)
   83 
   84 /* Tags for psdGetAttrs(PGA_USBCLASS,...) */
   85 
   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)
   91 
   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)
  104 
  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 
  153 /* Tags for psdGetAttrs(PGA_CONFIG,...) */
  154 #define CA_Dummy             (TAG_USER + 23)
  155 #define CA_Attrs             (CA_Dummy + 0x01)
  156 #define CA_SelfPowered       (CA_Dummy + 0x02)
  157 #define CA_RemoteWakeup      (CA_Dummy + 0x03)
  158 #define CA_ConfigNum         (CA_Dummy + 0x10)
  159 #define CA_MaxPower          (CA_Dummy + 0x11)
  160 #define CA_ConfigName        (CA_Dummy + 0x12)
  161 #define CA_NumInterfaces     (CA_Dummy + 0x13)
  162 #define CA_Device            (CA_Dummy + 0x14)
  163 #define CA_InterfaceList     (CA_Dummy + 0x20)
  164 
  165 /* Tags for psdGetAttrs(PGA_DESCRIPTOR,...) */
  166 #define DDA_Dummy            (TAG_USER + 888)
  167 #define DDA_Device           (DDA_Dummy + 0x01)
  168 #define DDA_Config           (DDA_Dummy + 0x02)
  169 #define DDA_Interface        (DDA_Dummy + 0x03)
  170 #define DDA_Endpoint         (DDA_Dummy + 0x04)
  171 #define DDA_Name             (DDA_Dummy + 0x08)
  172 #define DDA_DescriptorType   (DDA_Dummy + 0x10)
  173 #define DDA_DescriptorData   (DDA_Dummy + 0x11)
  174 #define DDA_DescriptorLength (DDA_Dummy + 0x12)
  175 #define DDA_CS_SubType       (DDA_Dummy + 0x20)
  176 
  177 /* Tags for psdGetAttrs(PGA_INTERFACE,...) */
  178 #define IFA_Dummy            (TAG_USER + 4711)
  179 #define IFA_InterfaceNum     (IFA_Dummy + 0x10)
  180 #define IFA_AlternateNum     (IFA_Dummy + 0x11)
  181 #define IFA_Class            (IFA_Dummy + 0x12)
  182 #define IFA_SubClass         (IFA_Dummy + 0x13)
  183 #define IFA_Protocol         (IFA_Dummy + 0x14)
  184 #define IFA_InterfaceName    (IFA_Dummy + 0x15)
  185 #define IFA_Config           (IFA_Dummy + 0x16)
  186 #define IFA_Binding          (IFA_Dummy + 0x17)
  187 #define IFA_NumEndpoints     (IFA_Dummy + 0x18)
  188 #define IFA_BindingClass     (IFA_Dummy + 0x19)
  189 #define IFA_IDString         (IFA_Dummy + 0x1a)
  190 #define IFA_EndpointList     (IFA_Dummy + 0x20)
  191 #define IFA_AlternateIfList  (IFA_Dummy + 0x21)
  192 
  193 /* Tags for psdGetAttrs(PGA_ENDPOINT,...) */
  194 #define EA_Dummy             (TAG_USER + 1138)
  195 #define EA_IsIn              (EA_Dummy + 0x01)
  196 #define EA_EndpointNum       (EA_Dummy + 0x10)
  197 #define EA_TransferType      (EA_Dummy + 0x11)
  198 #define EA_MaxPktSize        (EA_Dummy + 0x12)
  199 #define EA_Interval          (EA_Dummy + 0x13)
  200 #define EA_Interface         (EA_Dummy + 0x14)
  201 #define EA_NumTransMuFrame   (EA_Dummy + 0x15)
  202 #define EA_SyncType          (EA_Dummy + 0x16)
  203 #define EA_UsageType         (EA_Dummy + 0x17)
  204 
  205 /* Tags for psdGetAttrs(PGA_PIPE,...) */
  206 #define PPA_Dummy            (TAG_USER  + 1234)
  207 #define PPA_Endpoint         (PPA_Dummy + 0x01)
  208 #define PPA_Error            (PPA_Dummy + 0x02)
  209 #define PPA_Actual           (PPA_Dummy + 0x03)
  210 #define PPA_EndpointNum      (PPA_Dummy + 0x04)
  211 #define PPA_DeviceAddress    (PPA_Dummy + 0x05)
  212 #define PPA_IORequest        (PPA_Dummy + 0x06)
  213 #define PPA_NoZeroPktTerm    (PPA_Dummy + 0x07)
  214 #define PPA_NoShortPackets   PPA_NoZeroPktTerm /* obsolete, bad naming */
  215 #define PPA_NakTimeout       (PPA_Dummy + 0x08)
  216 #define PPA_NakTimeoutTime   (PPA_Dummy + 0x09)
  217 #define PPA_AllowRuntPackets (PPA_Dummy + 0x0a)
  218 #define PPA_MaxPktSize       (PPA_Dummy + 0x0b)
  219 #define PPA_Interval         (PPA_Dummy + 0x0c)
  220 
  221 /* Tags for application binding and psdGetAttrs(PGA_APPBINDING,...)*/
  222 #define ABA_Dummy            (TAG_USER + 666)
  223 #define ABA_ReleaseHook      (ABA_Dummy + 0x01)
  224 #define ABA_Device           (ABA_Dummy + 0x02)
  225 #define ABA_UserData         (ABA_Dummy + 0x03)
  226 #define ABA_Task             (ABA_Dummy + 0x04)
  227 #define ABA_ForceRelease     (ABA_Dummy + 0x10)
  228 
  229 /* Tags for psdGetAttrs(PGA_EVENTNOTE,...)*/
  230 #define ENA_Dummy            (TAG_USER + 777)
  231 #define ENA_EventID          (ENA_Dummy + 0x01)
  232 #define ENA_Param1           (ENA_Dummy + 0x02)
  233 #define ENA_Param2           (ENA_Dummy + 0x03)
  234 
  235 /* Tags for psdGetAttrs(PGA_GLOBALCFG,...) */
  236 #define GCA_Dummy            (TAG_USER + 0x1138)
  237 #define GCA_LogInfo          (GCA_Dummy + 0x01)
  238 #define GCA_LogWarning       (GCA_Dummy + 0x02)
  239 #define GCA_LogError         (GCA_Dummy + 0x03)
  240 #define GCA_LogFailure       (GCA_Dummy + 0x04)
  241 #define GCA_SubTaskPri       (GCA_Dummy + 0x10)
  242 #define GCA_BootDelay        (GCA_Dummy + 0x11)
  243 #define GCA_PopupDeviceNew   (GCA_Dummy + 0x20)
  244 #define GCA_PopupDeviceGone  (GCA_Dummy + 0x21)
  245 #define GCA_PopupDeviceDeath (GCA_Dummy + 0x22)
  246 #define GCA_PopupCloseDelay  (GCA_Dummy + 0x23)
  247 #define GCA_PopupActivateWin (GCA_Dummy + 0x30)
  248 #define GCA_PopupWinToFront  (GCA_Dummy + 0x31)
  249 #define GCA_InsertionSound   (GCA_Dummy + 0x40)
  250 #define GCA_RemovalSound     (GCA_Dummy + 0x41)
  251 #define GCA_HWKludge         (GCA_Dummy + 0x50)
  252 #define GCA_AutoDisableLP    (GCA_Dummy + 0x60)
  253 #define GCA_AutoDisableDead  (GCA_Dummy + 0x61)
  254 #define GCA_AutoCheckUpdate  (GCA_Dummy + 0x62)
  255 #define GCA_AutoRestartDead  (GCA_Dummy + 0x63)
  256 #define GCA_PowerSaving      (GCA_Dummy + 0x64)
  257 #define GCA_ForceSuspend     (GCA_Dummy + 0x65)
  258 #define GCA_SuspendTimeout   (GCA_Dummy + 0x66)
  259 #define GCA_PrefsVersion     (GCA_Dummy + 0x70)
  260 
  261 /* Tags for psdGetAttrs(PGA_PIPESTREAM,...) */
  262 #define PSA_Dummy            (TAG_USER + 0x0409)
  263 #define PSA_MessagePort      (PSA_Dummy + 0x01)
  264 #define PSA_AsyncIO          (PSA_Dummy + 0x02)
  265 #define PSA_NumPipes         (PSA_Dummy + 0x03)
  266 #define PSA_BufferSize       (PSA_Dummy + 0x04)
  267 #define PSA_ShortPktTerm     (PSA_Dummy + 0x05)
  268 #define PSA_ReadAhead        (PSA_Dummy + 0x06)
  269 #define PSA_BufferedRead     (PSA_Dummy + 0x07)
  270 #define PSA_BufferedWrite    (PSA_Dummy + 0x08)
  271 #define PSA_NoZeroPktTerm    (PSA_Dummy + 0x09)
  272 #define PSA_NakTimeout       (PSA_Dummy + 0x0a)
  273 #define PSA_NakTimeoutTime   (PSA_Dummy + 0x0b)
  274 #define PSA_AllowRuntPackets (PSA_Dummy + 0x0c)
  275 #define PSA_TermArray        (PSA_Dummy + 0x0d)
  276 #define PSA_DoNotWait        (PSA_Dummy + 0x0e)
  277 #define PSA_AbortSigMask     (PSA_Dummy + 0x0f)
  278 #define PSA_BytesPending     (PSA_Dummy + 0x10)
  279 #define PSA_Error            (PSA_Dummy + 0x11)
  280 #define PSA_ActivePipe       (PSA_Dummy + 0x12)
  281 
  282 /* Tags for psdGetAttrs(PGA_RTISO,...) */
  283 #define RTA_Dummy            (TAG_USER + 999)
  284 #define RTA_InRequestHook    (RTA_Dummy + 0x01)
  285 #define RTA_OutRequestHook   (RTA_Dummy + 0x02)
  286 #define RTA_InDoneHook       (RTA_Dummy + 0x03)
  287 #define RTA_OutDoneHook      (RTA_Dummy + 0x04)
  288 #define RTA_ReleaseHook      (RTA_Dummy + 0x05)
  289 #define RTA_OutPrefetchSize  (RTA_Dummy + 0x10)
  290 
  291 /* NumToStr types */
  292 #define NTS_IOERR        1
  293 #define NTS_LANGID       2
  294 #define NTS_TRANSTYPE    3
  295 #define NTS_VENDORID     4
  296 #define NTS_CLASSCODE    5
  297 #define NTS_DESCRIPTOR   6
  298 #define NTS_SYNCTYPE     7
  299 #define NTS_USAGETYPE    8
  300 #define NTS_COMBOCLASS   9
  301 
  302 /* NTS_COMBOCLASS flags */
  303 #define NTSCCS_CLASS      0      /* Class field is bits 0-7 */
  304 #define NTSCCS_SUBCLASS   8      /* Subclass field is bits 8-15 */
  305 #define NTSCCS_PROTO     16      /* Protocol field is bits 16-24 */
  306 #define NTSCCF_CLASS     (1<<24) /* Class field is valid */
  307 #define NTSCCF_SUBCLASS  (1<<25) /* Subclass field is valid */
  308 #define NTSCCF_PROTO     (1<<26) /* Protocol field is valid */
  309 
  310 /* Event Handler stuff */
  311 #define EHMB_ADDHARDWARE  0x01 /* Param1 = phw */
  312 #define EHMB_REMHARDWARE  0x02 /* Param1 = phw */
  313 #define EHMB_ADDDEVICE    0x03 /* Param1 = pd */
  314 #define EHMB_REMDEVICE    0x04 /* Param1 = pd */
  315 #define EHMB_ADDCLASS     0x05 /* Param1 = puc */
  316 #define EHMB_REMCLASS     0x06 /* Param1 = puc */
  317 #define EHMB_ADDBINDING   0x07 /* Param1 = pd */
  318 #define EHMB_REMBINDING   0x08 /* Param1 = pd */
  319 #define EHMB_ADDERRORMSG  0x09 /* Param1 = pem */
  320 #define EHMB_REMERRORMSG  0x0a /* Param1 = pem */
  321 #define EHMB_CONFIGCHG    0x0b /* Param1 = void */
  322 #define EHMB_DEVICEDEAD   0x0c /* Param1 = pd */
  323 #define EHMB_DEVICELOWPW  0x0d /* Param1 = pd */
  324 #define EHMB_DEVSUSPENDED 0x0e /* Param1 = pd */
  325 #define EHMB_DEVRESUMED   0x0f /* Param1 = pd */
  326 
  327 #define EHMF_ADDHARDWARE  (1L<<EHMB_ADDHARDWARE)
  328 #define EHMF_REMHARDWARE  (1L<<EHMB_REMHARDWARE)
  329 #define EHMF_ADDDEVICE    (1L<<EHMB_ADDDEVICE)
  330 #define EHMF_REMDEVICE    (1L<<EHMB_REMDEVICE)
  331 #define EHMF_ADDCLASS     (1L<<EHMB_ADDCLASS)
  332 #define EHMF_REMCLASS     (1L<<EHMB_REMCLASS)
  333 #define EHMF_ADDBINDING   (1L<<EHMB_ADDBINDING)
  334 #define EHMF_REMBINDING   (1L<<EHMB_REMBINDING)
  335 #define EHMF_ADDERRORMSG  (1L<<EHMB_ADDERRORMSG)
  336 #define EHMF_REMERRORMSG  (1L<<EHMB_REMERRORMSG)
  337 #define EHMF_CONFIGCHG    (1L<<EHMB_CONFIGCHG)
  338 #define EHMF_DEVICEDEAD   (1L<<EHMB_DEVICEDEAD)
  339 #define EHMF_DEVICELOWPW  (1L<<EHMB_DEVICELOWPW)
  340 #define EHMF_DEVSUSPENDED (1L<<EHMB_DEVSUSPENDED)
  341 #define EHMF_DEVRESUMED   (1L<<EHMB_DEVRESUMED)
  342 
  343 /* Configuration stuff */
  344 
  345 #define IFFFORM_PSDCFG     MAKE_ID('P','S','D','C')
  346 #define IFFFORM_STACKCFG   MAKE_ID('S','T','K','C')
  347 #define IFFFORM_DEVICECFG  MAKE_ID('D','E','V','C')
  348 #define IFFFORM_CLASSCFG   MAKE_ID('C','L','S','C')
  349 #define IFFFORM_UHWDEVICE  MAKE_ID('U','H','W','D')
  350 #define IFFFORM_USBCLASS   MAKE_ID('U','C','L','S')
  351 #define IFFFORM_CLASSDATA  MAKE_ID('G','C','P','D')
  352 #define IFFFORM_DEVCFGDATA MAKE_ID('D','C','F','G')
  353 #define IFFFORM_DEVCLSDATA MAKE_ID('D','C','P','D')
  354 #define IFFFORM_IFCFGDATA  MAKE_ID('I','C','F','G')
  355 #define IFFFORM_IFCLSDATA  MAKE_ID('I','C','P','D')
  356 
  357 #define IFFCHNK_OWNER      MAKE_ID('O','W','N','R')
  358 #define IFFCHNK_NAME       MAKE_ID('N','A','M','E')
  359 #define IFFCHNK_UNIT       MAKE_ID('U','N','I','T')
  360 #define IFFCHNK_OFFLINE    MAKE_ID('O','F','F','L')
  361 #define IFFCHNK_GLOBALCFG  MAKE_ID('G','C','F','G')
  362 #define IFFCHNK_DEVID      MAKE_ID('D','V','I','D')
  363 #define IFFCHNK_IFID       MAKE_ID('I','F','I','D')
  364 #define IFFCHNK_FORCEDBIND MAKE_ID('F','B','N','D')
  365 #define IFFCHNK_POPUP      MAKE_ID('P','O','P','O')
  366 #define IFFCHNK_INSERTSND  MAKE_ID('I','N','S','F')
  367 #define IFFCHNK_REMOVESND  MAKE_ID('R','M','S','F')
  368 
  369 /* Private stuff starts here */
  370 
  371 #if defined(__GNUC__)
  372 # pragma pack(2)
  373 #endif
  374 
  375 /* GCA_PopupDeviceNew definitions */
  376 
  377 #define PGCP_NEVER      0 /* never open a pop-up window */
  378 #define PGCP_ERROR      1 /* popup, on error condition (e.g. low power) */
  379 #define PGCP_ISNEW      2 /* popup, if this is the first time the device is connected */
  380 #define PGCP_NOBINDING  3 /* popup, if there is no binding */
  381 #define PGCP_ASKCONFIG  4 /* popup and ask to configure, if not existent */
  382 #define PGCP_CANCONFIG  5 /* popup and ask to configure, if possible */
  383 #define PGCP_HASBINDING 6 /* popup, if there is a binding to a class */
  384 #define PGCP_ALWAYS     7 /* popup always */
  385 
  386 /* DA_OverridePowerInfo definitions */
  387 #define POCP_TRUST_DEVICE 0
  388 #define POCP_BUS_POWERED  1
  389 #define POCP_SELF_POWERED 2
  390 
  391 #if defined(__GNUC__)
  392 # pragma pack()
  393 #endif
  394 
  395 /* The library node - private
  396 */
  397 struct PsdBase
  398 {
  399     struct Library      ps_Library;       /* standard */
  400 };
  401 
  402 struct PsdEventHook
  403 {
  404     struct Node         peh_Node;         /* Node linkage */
  405 };
  406 
  407 struct PsdEventNote
  408 {
  409     struct Message      pen_Msg;          /* Intertask communication message */
  410 };
  411 
  412 struct PsdErrorMsg
  413 {
  414     struct Node         pem_Node;         /* Node linkage */
  415 };
  416 
  417 struct PsdIFFContext
  418 {
  419     struct Node         pic_Node;         /* Node linkage */
  420 };
  421 
  422 struct PsdUsbClass
  423 {
  424     struct Node         puc_Node;         /* Node linkage */
  425 };
  426 
  427 struct PsdAppBinding
  428 {
  429     struct Node         pab_Node;         /* Node linkage */
  430 };
  431 
  432 struct PsdHardware
  433 {
  434     struct Node         phw_Node;         /* Node linkage */
  435 };
  436 
  437 struct PsdDevice
  438 {
  439     struct Node         pd_Node;          /* Node linkage */
  440 };
  441 
  442 struct PsdDescriptor
  443 {
  444     struct Node         pdd_Node;         /* Node linkage */
  445 };
  446 
  447 struct PsdConfig
  448 {
  449     struct Node         pc_Node;          /* Node linkage */
  450 };
  451 
  452 struct PsdInterface
  453 {
  454     struct Node         pif_Node;         /* Node linkage */
  455 };
  456 
  457 struct PsdEndpoint
  458 {
  459     struct Node         pep_Node;         /* Node linkage */
  460 };
  461 
  462 struct PsdPipe
  463 {
  464     struct Message      pp_Msg;           /* Intertask communication message */
  465 };
  466 
  467 struct PsdPipeStream
  468 {
  469     struct Node         pps_Node;         /* Node linkage */
  470 };
  471 
  472 struct PsdRTIsoHandler
  473 {
  474     struct Node         prt_Node;         /* Node linkage */
  475 };
  476 
  477 #endif /* LIBRARIES_POSEIDON_H */