Files
m241Neelima/vxworks-6.9/target/h/usb/usbTgtSer.h
T
2026-07-30 11:19:44 +05:30

166 lines
4.3 KiB
C

/* usbTgtSer.h - usb target serial emulator common header file */
/*
* Copyright (c) 2011 Wind River Systems, Inc.
*
* The right to copy, distribute, modify, or otherwise make use
* of this software may be licensed only pursuant to the terms
* of an applicable Wind River license agreement.
*/
/*
modification history
--------------------
01f,18may12,s_z Add support for USB 3.0 target (WIND00326012)
01e,08apr11,ghs Fix code coverity issue(WIND00264893)
01d,22mar11,ghs Fix structure declare error
01c,09mar11,ghs Adapt code format
01b,07mar11,ghs Fix code review issues
01a,26jan11,ghs written
*/
#ifndef __INCusbTgtSerh
#define __INCusbTgtSerh
/* includes */
#include <usb/usbTgt.h>
#ifdef __cplusplus
extern "C" {
#endif
/* defines */
#define MAX_TCD_NAME_LEN 50
#define USBTGT_SER_MAX_BUFF_LEN 512
#define USBTGT_SER_MAX_ERP_BUFF_SIZE 2048
/* typedefs */
/* structure of target serial device */
typedef struct usbtgt_ser_dev
{
USB_TARG_CHANNEL targChannel; /* Target channel */
UINT8 uConfiguration;
UINT8 uControlIfAltSetting;
UINT8 uDataIfAltSetting;
USB_TARG_PIPE bulkOutPipe;
USB_ERP bulkOutErp;
BOOL bulkOutInUse;
BOOL bulkOutBfrValid;
BOOL bulkOutStallStatus;
USB_TARG_PIPE bulkInPipe;
USB_ERP bulkInErp;
BOOL bulkInInUse;
BOOL bulkInBfrValid;
BOOL bulkInStallStatus;
USB_ERP intInErp;
BOOL intInInUse;
pVOID intInPipe;
UINT8 * bulkOutData;
BOOL bulkOutDataInUse;
UINT8 * bulkInData;
BOOL bulkInDataInUse;
struct usbtgt_acm_sio_chan * pChan;
} USBTGT_SER_DEV, *pUSBTGT_SER_DEV;
/* state of emulator port */
typedef enum usbTgtDevPortState
{
USBTGT_SER_PORT_CLOSE = 0,
USBTGT_SER_PORT_CONNECT = 1,
USBTGT_SER_PORT_OPEN = 2
} USB_TGT_SER_PORT_STATE;
/* sioChan structure for device and SIO libs */
typedef struct usbtgt_acm_sio_chan
{
/* SIO_DRV_FUNCS *MUST* be first */
SIO_DRV_FUNCS * pDrvFuncs; /* driver functions */
/* callbacks */
STATUS (* getTxChar) (void *, char *);
STATUS (* putRcvChar) (void *, char);
void * getTxArg;
void * putRcvArg;
/* misc */
VXB_DEVICE_ID pDev; /* bus subsystem: device ID */
int channelNo; /* channel number */
int baudFreq; /* current baud rate */
int mode; /* current mode (interrupt or poll) */
uint_t options; /* Hardware options */
THREAD_HANDLE txThread;
int devId;
USB_CDC_LINE_CODING lineCoding;
UINT16 controlLineStae;
BOOL onClosing;
int ttyNum;
USB_TGT_SER_PORT_STATE portState;
char * dummyBfr;
size_t dummyBfrSize;
size_t dummyBfrDataSize;
UINT32 reqTxLen;
UINT32 actTxLen;
UINT32 actRxLen;
struct usbtgt_ser_dev * pUsbTgtSerDev;
} USBTGT_ACM_SIO_CHAN;
/* globals */
void usbTgtSerTtyRemove(int);
void usbTgtSerInstInit(VXB_DEVICE_ID);
void usbTgtSerInstInit2(VXB_DEVICE_ID);
void usbTgtSerInstConnect(VXB_DEVICE_ID);
void usbTgtSerBulkInErpCallback(pVOID);
void usbTgtSerBulkOutErpCallback(pVOID);
void usbTgtSerSioIntRcv(USBTGT_ACM_SIO_CHAN *);
void usbTgtSerSioFlushBuffer(USBTGT_ACM_SIO_CHAN *);
void usbTgtSerTest(char *);
BOOL usbTgtSerPortStateCheck(USBTGT_ACM_SIO_CHAN *);
STATUS usbTgtSerInit(int);
STATUS usbTgtSerUnInit(int);
STATUS usbTgtSerBulkInErpInit(pUSBTGT_SER_DEV, UINT8 *, UINT32,
ERP_CALLBACK, pVOID);
STATUS usbTgtSerBulkOutErpInit(pUSBTGT_SER_DEV, UINT8 *, UINT32,
ERP_CALLBACK, pVOID);
STATUS usbTgtSerBulkInTransfer(pUSBTGT_SER_DEV, char *, size_t);
#ifdef __cplusplus
}
#endif
#endif /* __INCusbTgtSerh */