19const uint8_t FTDI::epDataInIndex = 1;
20const uint8_t FTDI::epDataOutIndex = 2;
21const uint8_t FTDI::epInterruptInIndex = 3;
29wIdProduct(idProduct) {
78 p->lowspeed = lowspeed;
90 USBTRACE(
"FTDI Init: Product not supported\r\n");
100 wFTDIType =
udd->bcdDevice;
112 if(epInfo[0].maxPktSize == 0) epInfo[0].
maxPktSize = 64;
134 p->lowspeed = lowspeed;
247 index = epInterruptInIndex;
249 index = ((
pep->bEndpointAddress & 0x80) == 0x80) ? epDataInIndex : epDataOutIndex;
254 epInfo[index].
epAddr = (
pep->bEndpointAddress & 0x0F);
260 if(epInfo[index].maxPktSize == 0) epInfo[index].
maxPktSize = 64;
264 PrintEndpointDescriptor(
pep);
326 uint8_t rv = pUsb->
ctrlReq(bAddress, 0,
bmREQ_FTDI_OUT,
FTDI_SIO_SET_BAUD_RATE,
baud_value & 0xff,
baud_value >> 8,
baud_index, 0, 0,
NULL,
NULL);
336 uint8_t rv = pUsb->
ctrlReq(bAddress, 0,
bmREQ_FTDI_OUT,
FTDI_SIO_SET_LATENCY_TIMER, l, 0, 0, 0, 0,
NULL,
NULL);
346 uint8_t rv = pUsb->
ctrlReq(bAddress, 0,
bmREQ_FTDI_OUT,
FTDI_SIO_GET_LATENCY_TIMER, 0, 0, 0, 0, 1, (
uint8_t *)l,
NULL);
354 uint8_t rv = pUsb->
ctrlReq(bAddress, 0,
bmREQ_FTDI_OUT,
FTDI_SIO_MODEM_CTRL,
signal & 0xff,
signal >> 8, 0, 0, 0,
NULL,
NULL);
362 uint8_t rv = pUsb->
ctrlReq(bAddress, 0,
bmREQ_FTDI_OUT,
FTDI_SIO_SET_FLOW_CTRL,
xon,
xoff,
protocol << 8, 0, 0,
NULL,
NULL);
370 uint8_t rv = pUsb->
ctrlReq(bAddress, 0,
bmREQ_FTDI_OUT,
FTDI_SIO_SET_DATA,
databm & 0xff,
databm >> 8, 0, 0, 0,
NULL,
NULL);
#define USB_ERROR_OUT_OF_ADDRESS_SPACE_IN_POOL
#define USB_ERROR_CLASS_INSTANCE_ALREADY_IN_USE
#define USB_DEV_CONFIG_ERROR_DEVICE_NOT_SUPPORTED
#define USB_ERROR_EPINFO_IS_NULL
#define USB_ERROR_ADDRESS_NOT_FOUND_IN_POOL
#define USB_NAK_MAX_POWER
#define FTDI_SIO_MODEM_CTRL
#define FTDI_SIO_GET_LATENCY_TIMER
#define FTDI_MAX_ENDPOINTS
#define FTDI_SIO_SET_FLOW_CTRL
#define FTDI_SIO_SET_LATENCY_TIMER
#define FTDI_SIO_SET_DATA
#define FTDI_SIO_SET_BAUD_RATE
virtual void FreeAddress(uint8_t addr)=0
virtual UsbDevice * GetUsbDevicePtr(uint8_t addr)=0
virtual uint8_t AllocAddress(uint8_t parent, bool is_hub=false, uint8_t port=0)=0
virtual uint8_t OnInit(FTDI *pftdi)
virtual uint8_t OnRelease(FTDI *pftdi)
uint8_t Init(uint8_t parent, uint8_t port, bool lowspeed)
void EndpointXtract(uint8_t conf, uint8_t iface, uint8_t alt, uint8_t proto, const USB_ENDPOINT_DESCRIPTOR *ep)
uint8_t GetLatency(uint8_t *l)
uint8_t SetFlowControl(uint8_t protocol, uint8_t xon=0x11, uint8_t xoff=0x13)
uint8_t SetModemControl(uint16_t control)
uint8_t SndData(uint16_t nbytes, uint8_t *dataptr)
uint8_t SetLatency(uint8_t l)
uint8_t RcvData(uint16_t *bytes_rcvd, uint8_t *dataptr)
uint8_t SetData(uint16_t databm)
uint8_t SetBaudRate(uint32_t baud)
FTDI(USB *pusb, FTDIAsyncOper *pasync, uint16_t idProduct=FTDI_PID)
AddressPool & GetAddressPool()
uint8_t getDevDescr(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t *dataptr)
defined(USB_METHODS_INLINE)
uint8_t setConf(uint8_t addr, uint8_t ep, uint8_t conf_value)
uint8_t setAddr(uint8_t oldaddr, uint8_t ep, uint8_t newaddr)
uint8_t RegisterDeviceClass(USBDeviceConfig *pdev)
uint8_t getConfDescr(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t conf, uint8_t *dataptr)
uint8_t ctrlReq(uint8_t addr, uint8_t ep, uint8_t bmReqType, uint8_t bRequest, uint8_t wValLo, uint8_t wValHi, uint16_t wInd, uint16_t total, uint16_t nbytes, uint8_t *dataptr, USBReadParser *p)
uint8_t setEpInfoEntry(uint8_t addr, uint8_t epcount, EpInfo *eprecord_ptr)
uint8_t inTransfer(uint8_t addr, uint8_t ep, uint16_t *nbytesptr, uint8_t *data, uint8_t bInterval=0)
uint8_t outTransfer(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t *data)
#define NotifyFailSetConfDescr(...)
#define NotifyFailGetConfDescr(...)
#define NotifyFailSetDevTblEntry(...)
#define NotifyFailGetDevDescr(...)
#define USB_TRANSFER_TYPE_BULK
#define bmUSB_TRANSFER_TYPE
#define USB_TRANSFER_TYPE_INTERRUPT