26#ifndef __USBD_CDC_ACM_H
27#define __USBD_CDC_ACM_H
31#include <iointernal.h>
50#define PORT_FLAGS_RDAVAIL_SHIFT (0)
53#define PORT_FLAGS_WRAVAIL_SHIFT (8)
56#define PORT_FLAGS_ERROR_SHIFT (16)
241 IoExpandStruct ioStruct;
255 static int fd_read(
int fd,
char *buf,
int nbytes);
269 static int fd_write(
int fd,
const char *buf,
int nbytes);
281 static int fd_close(
int fd);
294 static int fd_peek(
int fd,
char *buf);
308 int ProcessTxnBuffer(uint8_t epnum,
PoolPtr pp, uint16_t bufLen);
322 virtual int Do_SetLineCoding(uint8_t epnum, CDC_LineCoding_t coding);
335 virtual int Do_SetCtlLineState(usb_setup_pkt_t msg);
351 friend void UserMain(
void *pd);
371 dCDC_ACM(nbrtos::USB::Ctlr *parent,
const usb_dev_t *desc,
372 const usb_cfg_t *cfg,
const nbrtos::USB::StrDescTbl *strTbl);
477 virtual uint16_t
GetStatus(eReqTarget_t target, uint16_t wIndex,
int *err);
USB CDC Abstract Control Model Device Class.
Definition usbd_cdc_acm.h:189
int WriteData(uint8_t *pData, int wrLen)
Write data to the CDC device (non-blocking)
virtual int ProcessBuffer(uint8_t ep, PoolPtr pp, uint16_t bufLen)
Process a received data buffer.
virtual int Event_ControlMsg(nbrtos::USB::bufPtr_t ctlMsg, uint8_t bufLen)
Handle USB control message.
nbrtos::USB::eBusState_t GetUSBState()
Get current USB bus state.
virtual void Event_BusReset()
Handle USB bus reset event.
int ReadWTimeout(uint8_t *pData, int rdLen, TickTimeout timeout)
Read data from the CDC device with timeout.
virtual void Event_Resume()
Handle USB resume event.
int ReadData(uint8_t *pData, int rdLen)
Read data from the CDC device (non-blocking)
void SetUSBState(nbrtos::USB::eBusState_t newState)
Set USB bus state.
virtual int SetConfiguration(uint16_t wValue)
Set the active USB configuration.
virtual void Event_Suspend()
Handle USB suspend event.
virtual uint16_t GetStatus(eReqTarget_t target, uint16_t wIndex, int *err)
Get device or endpoint status.
virtual int ProcessSetupPkt(uint8_t epnum, usb_setup_pkt_t msg)
Process USB setup packet.
int Open()
Open the CDC device for use.
virtual uint16_t GetMaxPktSize(uint8_t epnum, eDir_t dir)
Get maximum packet size for an endpoint.
virtual uint8_t GetAltSetting(uint8_t intfNum, int *err)
Get current alternate setting for an interface.
int WriteWTimeout(uint8_t *pData, int wrLen, TickTimeout timeout)
Write data to the CDC device with timeout.
int Peek(uint8_t *buf)
Peek at the next byte without removing it.
virtual int SetAltSetting(uint16_t wIndex, uint16_t wValue)
Set alternate interface setting.
virtual uint8_t GetActiveConfig(int *err)
Get currently active configuration.
static int sProcessBuffer(Device *dev, uint8_t ep, PoolPtr pp, uint16_t bufLen)
Static callback wrapper for ProcessBuffer.
dCDC_ACM(nbrtos::USB::Ctlr *parent, const usb_dev_t *desc, const usb_cfg_t *cfg, const nbrtos::USB::StrDescTbl *strTbl)
Construct a CDC ACM device instance.
FIFO buffer storage using linked pool buffers.
Definition buffers.h:443
Main buffer structure for network and serial communication.
Definition buffers.h:90