usbQueueLib.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:3k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* usbQueueLib.h - O/S-independent queue services */
  2. /* Copyright 2000 Wind River Systems, Inc. */
  3. /*
  4. Modification history
  5. --------------------
  6. 01f,18sep01,wef  merge from wrs.tor2_0.usb1_1-f for veloce
  7. 01e,07may01,wef  changed module number to be (module sub num << 8) | 
  8.  M_usbHostLib
  9. 01d,02may01,wef  changed module number to be M_<module> + M_usbHostLib
  10. 01c,05dec00,wef  moved Module number defs to vwModNum.h - add this
  11.                  to #includes
  12. 01b,07mar00,rcb  Change QUEUE_HANDLE from UINT32 to pVOID.
  13. 01a,13jul99,rcb  First.
  14. */
  15. /*
  16. DESCRIPTION
  17. Defines an O/S-independent queueing mechanism which is typically used for
  18. inter-thread communication in a multi-threaded environment.
  19. */
  20. #ifndef __INCusbQueueLibh
  21. #define __INCusbQueueLibh
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. /* includes */
  26. #include "usb/ossLib.h"
  27. #include "vwModNum.h"           /* USB Module number def's */
  28. /* Defines */
  29. /* USB return codes. */
  30. /* 
  31.  * USB errnos are defined as being part of the USB host Module, as are all
  32.  * vxWorks module numbers, but the USB Module number is further divided into 
  33.  * sub-modules.  Each sub-module has upto 255 values for its own error codes
  34.  */
  35.  
  36. #define USB_QUEUE_SUB_MODULE   2
  37. #define M_usbQueueLib  ( (USB_QUEUE_SUB_MODULE  << 8) | M_usbHostLib )
  38. #define usbQueueErr(x) (M_usbQueueLib | (x))
  39. #define S_usbQueueLib_BAD_HANDLE usbQueueErr (1)
  40. #define S_usbQueueLib_BAD_PARAMETER usbQueueErr (2)
  41. #define S_usbQueueLib_OUT_OF_MEMORY usbQueueErr (3)
  42. #define S_usbQueueLib_OUT_OF_RESOURCES usbQueueErr (4)
  43. #define S_usbQueueLib_Q_NOT_AVAILABLE usbQueueErr (5)
  44. /* Structure definitions. */
  45. /* Handles. */
  46. typedef pVOID QUEUE_HANDLE;     /* Queue handle */
  47. typedef QUEUE_HANDLE *pQUEUE_HANDLE;
  48. /* 
  49.  * USB_MESSAGE 
  50.  *
  51.  * Defines the format of a message which can be passed through a queue.
  52.  */
  53. typedef struct usb_message
  54.     {
  55.     UINT16 msg;      /* Message code - application specific */
  56.     UINT16 wParam;     /* WORD parameter - application specific */
  57.     UINT32 lParam;     /* DWORD parameter - application specific */
  58.     } USB_MESSAGE, *pUSB_MESSAGE;
  59. /* function prototypes */
  60. STATUS usbQueueCreate 
  61.     (
  62.     UINT16 depth,     /* Max entries queue can handle */
  63.     pQUEUE_HANDLE pQueueHandle     /* Handle of newly created queue */
  64.     );
  65. STATUS usbQueueDestroy 
  66.     (
  67.     QUEUE_HANDLE queueHandle     /* Hnadle of queue to destroy */
  68.     );
  69. STATUS usbQueuePut 
  70.     (
  71.     QUEUE_HANDLE queueHandle,     /* queue handle */
  72.     UINT16 msg,      /* app-specific message */
  73.     UINT16 wParam,     /* app-specific parameter */
  74.     UINT32 lParam,     /* app-specific parameter */
  75.     UINT32 blockFlag     /* specifies blocking action */
  76.     );
  77. STATUS usbQueueGet 
  78.     (
  79.     QUEUE_HANDLE queueHandle,     /* queue handle */
  80.     pUSB_MESSAGE pMsg,     /* USB_MESSAGE to receive msg */
  81.     UINT32 blockFlag     /* specifies blocking action */
  82.     );
  83. #ifdef __cplusplus
  84. }
  85. #endif
  86. #endif /* __INCusbQueueLibh */
  87. /* End of file. */