NetBurner 3.5.6
PDF Version
usbd_cdc_acm.h
1/*NB_REVISION*/
2
3/*NB_COPYRIGHT*/
4
5#ifndef __USBD_CDC_ACM_H
6#define __USBD_CDC_ACM_H
7#ifdef SOMRT1061
8#include <usb.h>
9#include <iointernal.h>
10#include <usb_cdc.h>
11
12#define PORT_FLAGS_RDAVAIL_SHIFT (0)
13#define PORT_FLAGS_WRAVAIL_SHIFT (8)
14#define PORT_FLAGS_ERROR_SHIFT (16)
15
16class dCDC_ACM : public nbrtos::USB::Device {
17protected:
20 int thisFd;
21 int rxQueued;
22 int txQueued;
23 int baseEP;
24 int oldStdio[3];
25
26 uint32_t line_Baud;
27 uint8_t line_Stop;
28 uint8_t line_Parity;
29 uint8_t line_Bits;
30
31 uint32_t devState;
32 OS_CRIT portCrit;
33 OS_FLAGS portFlags;
34 IoExpandStruct ioStruct;
35
36 static int fd_read(int fd, char *buf, int nbytes);
37 static int fd_write(int fd, const char *buf, int nbytes);
38 static int fd_close(int fd);
39 static int fd_peek(int fd, char *buf);
40
41 int ProcessTxnBuffer(uint8_t epnum, PoolPtr pp, uint16_t bufLen);
42
43 virtual int Do_SetLineCoding(uint8_t epnum, CDC_LineCoding_t coding);
44 virtual int Do_SetCtlLineState(usb_setup_pkt_t msg);
45
46 int QueueRx();
47 friend void UserMain(void *pd);
48
49public:
50 dCDC_ACM(nbrtos::USB::Ctlr *parent, const usb_dev_t *desc,
51 const usb_cfg_t *cfg, const nbrtos::USB::StrDescTbl *strTbl);
52
53 virtual void Event_BusReset();
54 virtual void Event_Suspend();
55 virtual void Event_Resume();
56 virtual int Event_ControlMsg(nbrtos::USB::bufPtr_t ctlMsg, uint8_t bufLen);
57 virtual int SetConfiguration(uint16_t wValue);
58 virtual int SetAltSetting(uint16_t wIndex, uint16_t wValue);
59
60 virtual int ProcessBuffer(uint8_t ep, PoolPtr pp, uint16_t bufLen);
61 static int sProcessBuffer(Device *dev, uint8_t ep, PoolPtr pp, uint16_t bufLen);
62
63 virtual uint16_t GetStatus(eReqTarget_t target, uint16_t wIndex, int *err);
64 virtual uint8_t GetActiveConfig(int *err);
65 virtual uint8_t GetAltSetting(uint8_t intfNum, int *err);
66 virtual uint16_t GetMaxPktSize(uint8_t epnum, eDir_t dir);
67 nbrtos::USB::eBusState_t GetUSBState();
68 void SetUSBState(nbrtos::USB::eBusState_t newState);
69
70 int ReadData(uint8_t *pData, int rdLen);
71 int ReadWTimeout(uint8_t *pData, int rdLen, TickTimeout timeout);
72
73 int WriteData(uint8_t *pData, int wrLen);
74 int WriteWTimeout(uint8_t *pData, int wrLen, TickTimeout timeout);
75
76 int Open();
77
78 int Peek(uint8_t *buf);
79
80 virtual int ProcessSetupPkt(uint8_t epnum, usb_setup_pkt_t msg);
81};
82
83#endif
84#endif /* ----- #ifndef __USBD_CDC_ACM_H ----- */
FIFO buffer storage using linked pool buffers.
Definition buffers.h:443
Main buffer structure for network and serial communication.
Definition buffers.h:90