133 lines
4.8 KiB
C
133 lines
4.8 KiB
C
/* wdbVisionDrv.h - header file for Wind River Generic Vision Driver */
|
|
|
|
/* Copyright 1986-2005, 2010 Wind River Systems Inc. */
|
|
|
|
/*
|
|
modification history
|
|
--------------------
|
|
01d,29apr10,pad Moved extern C statement after include statements.
|
|
01c,11may05,j_b add return value to CREATE_CRITSECT (SPR# 107058)
|
|
01b,05may01,g_h renaming to wdbVisionDrv.h and cleaning
|
|
01a,09apr01,rnr written.
|
|
*/
|
|
|
|
#ifndef __INCwdbVisionDrvh
|
|
#define __INCwdbVisionDrvh
|
|
|
|
/* includes */
|
|
|
|
#include "vxWorks.h"
|
|
#include "semLib.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* defines */
|
|
|
|
#define VISION_DEFAULT_POLL_PRI 200 /* Rx polling task priority */
|
|
#define VISION_DEFAULT_POLL_DELAY 2 /* Polling Task delay tick */
|
|
|
|
#define VISION_PKT_MTU 1488 /* Maximum Transmission Unit */
|
|
|
|
#define VISION_MAX_PTASK_DELAY 50 /* Maximum poll loop delay */
|
|
#define VISION_MIN_PTASK_PRIOR 5 /* Maximum polltask priority */
|
|
#define VISION_MAX_PTASK_PRIOR 255 /* Minimum polltask priority */
|
|
/* (MIN/MAX reversed,0 is high) */
|
|
|
|
#define TX_BUFFER_SIZE (VISION_PKT_MTU * 2) /* default queue sizes */
|
|
#define RX_BUFFER_SIZE (VISION_PKT_MTU * 2) /* changed with ioctl() */
|
|
#define LOOP_BUFFER_SIZE (VISION_PKT_MTU * 10) /* Loopback space */
|
|
|
|
/* Tx/Rx Modes: used in ioctl() case statements */
|
|
|
|
#define VISION_POLL_MODE 0x0001 /* Polled / Pseudo Interrupt */
|
|
#define VISION_PINTR_MODE 0x0002
|
|
#define VISION_PISR_MODE 0x0004
|
|
#define VISION_BLOCKED_MODE 0x0008 /* Blocking / Non-Blocking */
|
|
#define VISION_NONBLOCKED_MODE 0x0010
|
|
#define VISION_BUFFERED_MODE 0x0020 /* Buffered / Non-Buffered */
|
|
#define VISION_NONBUFFERED_MODE 0x0040
|
|
#define VISION_LPBK_MODE 0x0080 /* Normal / Loopback Mode */
|
|
#define VISION_NORMAL_MODE 0x0100
|
|
#define VISION_TX_QUEUE_SIZE 0x0200 /* Tx/Rx Queue Sizes */
|
|
#define VISION_RX_QUEUE_SIZE 0x0400
|
|
#define VISION_PTASK_PRIORITY 0x0800 /* Change pTask Priority */
|
|
#define VISION_PTASK_DELAY 0x1000 /* Change pTask Loop Delay */
|
|
|
|
/* Driver States */
|
|
|
|
#define VISION_STATE_CLOSED 0
|
|
#define VISION_STATE_OPEN 1
|
|
|
|
/* Tx/Rx Buffering Queues */
|
|
|
|
typedef struct
|
|
{
|
|
int nofChars; /* Number of bytes currently stored */
|
|
int size; /* Maximum size of the queue */
|
|
int head; /* Current start of data in queue buffer */
|
|
int tail; /* Current end of data in queue buffer */
|
|
char *pData; /* Buffer where data is stored */
|
|
} VISION_QUEUE;
|
|
|
|
/* MACRO definitions for operating system specific calls */
|
|
|
|
#define MEMCOPY(d, s, c) memcpy(d, s, c)
|
|
|
|
typedef SEM_ID CRITSECT;
|
|
|
|
#define CREATE_CRITSECT(s) (s = semMCreate(SEM_Q_FIFO))
|
|
#define REMOVE_CRITSECT(s) semDelete(s)
|
|
#define ENTER_CRITSECT(s) semTake(s,WAIT_FOREVER)
|
|
#define EXIT_CRITSECT(s) semGive(s)
|
|
|
|
/*
|
|
* DELAY_TASK - places the current task or thread to sleep for c msecs/ticks
|
|
*/
|
|
|
|
#define DELAY_TASK(c) taskDelay(c)
|
|
|
|
/* VDRIV_DEV - Wind River Vision Device descriptor */
|
|
|
|
typedef struct
|
|
{
|
|
DEV_HDR devHdr; /* DEV_HDR must com first */
|
|
char state; /* State of the driver */
|
|
char *pDeviceName; /* device name: etd/0 */
|
|
int opMode; /* Poll/Pseudo Interrupt Mode */
|
|
int rdWrMode; /* read/write mode */
|
|
int bufferMode; /* Buffering mode */
|
|
int blockMode; /* Blocking mode */
|
|
int loopMode; /* Diagnostic loopback */
|
|
int pollDelay; /* Polling Task Delay */
|
|
int pollTaskId; /* Polling Task Id */
|
|
VISION_QUEUE txQueue; /* Transmit buffer */
|
|
VISION_QUEUE rxQueue; /* Receive buffer */
|
|
VISION_QUEUE loopQueue; /* Loopback queue */
|
|
CRITSECT txCrSection; /* Xmit Queue protection */
|
|
CRITSECT rxCrSection; /* Recv Queue protection */
|
|
CRITSECT loopCrSection; /* Loopback Queue protection */
|
|
V_DRIVER_INTERFACE inter; /* Interface structure */
|
|
} VDRIV_DEV ;
|
|
|
|
/* function prototypes */
|
|
|
|
#if defined(__STDC__)
|
|
|
|
IMPORT int visionDriverInit (void);
|
|
IMPORT int visionDriverCreate (char *, int, int, int, int, int);
|
|
|
|
#else /* __STDC__ */
|
|
|
|
IMPORT int visionDriverInit ();
|
|
IMPORT int visionDriverCreate ();
|
|
|
|
#endif /* __STDC__ */
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __INCwdbVisionDrvh */
|