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

VxWorks

开发平台:

C/C++

  1. /* wdbVisionDrv.h - header file for Wind River Generic Vision Driver */
  2. /* Copyright 1986-2002 Wind River Systems Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01b,05may01,g_h  renaming to wdbVisionDrv.h and cleaning
  7. 01a,09apr01,rnr  written.
  8. */
  9. #ifndef __INCwdbVisionDrvh
  10. #define __INCwdbVisionDrvh
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif
  14. /* includes */
  15. #include   "vxWorks.h"
  16. #include   "semLib.h"
  17. /* defines */
  18. #define VISION_DEFAULT_POLL_PRI        200  /* Rx polling task priority     */
  19. #define VISION_DEFAULT_POLL_DELAY      2    /* Polling Task delay tick      */
  20. #define VISION_PKT_MTU                 1488 /* Maximum Transmission Unit    */
  21. #define VISION_MAX_PTASK_DELAY         50   /* Maximum poll loop delay      */
  22. #define VISION_MIN_PTASK_PRIOR         5    /* Maximum polltask priority    */
  23. #define VISION_MAX_PTASK_PRIOR         255  /* Minimum polltask priority    */
  24.                                             /* (MIN/MAX reversed,0 is high) */
  25. #define TX_BUFFER_SIZE                 (VISION_PKT_MTU * 2)  /* default queue sizes  */
  26. #define RX_BUFFER_SIZE                 (VISION_PKT_MTU * 2)  /* changed with ioctl() */
  27. #define LOOP_BUFFER_SIZE               (VISION_PKT_MTU * 10) /* Loopback space       */
  28. /* Tx/Rx Modes: used in ioctl() case statements */
  29. #define VISION_POLL_MODE               0x0001 /* Polled / Pseudo Interrupt */
  30. #define VISION_PINTR_MODE              0x0002
  31. #define VISION_PISR_MODE               0x0004
  32. #define VISION_BLOCKED_MODE            0x0008 /* Blocking / Non-Blocking   */
  33. #define VISION_NONBLOCKED_MODE         0x0010
  34. #define VISION_BUFFERED_MODE           0x0020 /* Buffered / Non-Buffered   */
  35. #define VISION_NONBUFFERED_MODE        0x0040
  36. #define VISION_LPBK_MODE               0x0080 /* Normal / Loopback Mode    */
  37. #define VISION_NORMAL_MODE             0x0100
  38. #define VISION_TX_QUEUE_SIZE           0x0200 /* Tx/Rx  Queue Sizes        */
  39. #define VISION_RX_QUEUE_SIZE           0x0400
  40. #define VISION_PTASK_PRIORITY          0x0800 /* Change pTask Priority     */
  41. #define VISION_PTASK_DELAY             0x1000 /* Change pTask Loop Delay   */
  42. /* Driver States */
  43. #define VISION_STATE_CLOSED            0
  44. #define VISION_STATE_OPEN              1
  45. /* Tx/Rx Buffering Queues */ 
  46. typedef struct 
  47.     {
  48.     int   nofChars; /* Number of bytes currently stored      */
  49.     int   size;     /* Maximum size of the queue             */
  50.     int   head;     /* Current start of data in queue buffer */
  51.     int   tail;     /* Current end   of data in queue buffer */
  52.     char *pData;    /* Buffer where data is stored           */
  53.     } VISION_QUEUE;
  54. /* MACRO definitions for operating system specific calls */
  55. #define MEMCOPY(d, s, c)               memcpy(d, s, c)
  56. typedef SEM_ID CRITSECT;
  57. #define CREATE_CRITSECT(s)             semMCreate(SEM_Q_FIFO) 
  58. #define REMOVE_CRITSECT(s)             semDelete(s)
  59. #define ENTER_CRITSECT(s)              semTake(s,WAIT_FOREVER)
  60. #define EXIT_CRITSECT(s)               semGive(s)
  61. /* 
  62.  *   DELAY_TASK - places the current task or thread to sleep for c msecs/ticks
  63.  */
  64. #define DELAY_TASK(c)                  taskDelay(c)
  65. /* VDRIV_DEV - Wind River Vision Device descriptor */ 
  66. typedef struct      
  67.     {                      
  68.     DEV_HDR             devHdr;        /* DEV_HDR must com first     */
  69.     char                state;         /* State of the driver        */
  70.     char               *pDeviceName;   /* device name: etd/0         */
  71.     int                 opMode;        /* Poll/Pseudo Interrupt Mode */
  72.     int                 rdWrMode;      /* read/write mode            */
  73.     int                 bufferMode;    /* Buffering mode             */
  74.     int                 blockMode;     /* Blocking mode              */
  75.     int                 loopMode;      /* Diagnostic loopback        */
  76.     int                 pollDelay;     /* Polling Task Delay         */
  77.     int                 pollTaskId;    /* Polling Task Id            */
  78.     VISION_QUEUE        txQueue;       /* Transmit buffer            */
  79.     VISION_QUEUE        rxQueue;       /* Receive buffer             */
  80.     VISION_QUEUE        loopQueue;     /* Loopback queue             */
  81.     CRITSECT            txCrSection;   /* Xmit     Queue protection  */
  82.     CRITSECT            rxCrSection;   /* Recv     Queue protection  */
  83.     CRITSECT            loopCrSection; /* Loopback Queue protection  */
  84.     V_DRIVER_INTERFACE  inter;         /* Interface structure        */
  85.     } VDRIV_DEV ;
  86. /* function prototypes */
  87. #if defined(__STDC__)
  88. IMPORT int visionDriverInit (void);
  89. IMPORT int visionDriverCreate (char *, int, int, int, int, int);
  90. #else   /* __STDC__ */
  91. IMPORT int visionDriverInit ();
  92. IMPORT int visionDriverCreate ();
  93. #endif  /* __STDC__ */
  94. #ifdef __cplusplus
  95. }
  96. #endif
  97. #endif  /* __INCwdbVisionDrvh */