47 uint8_t
ACM::Init(uint8_t parent, uint8_t port,
bool lowspeed) {
50 uint8_t buf[constBufSize];
128 goto FailSetDevTblEntry;
132 for (uint8_t i = 0; i < num_of_conf; i++) {
146 goto FailGetConfDescr;
151 goto FailGetConfDescr;
169 goto FailSetConfDescr;
186 #ifdef DEBUG_USB_HOST
192 #ifdef DEBUG_USB_HOST
198 #ifdef DEBUG_USB_HOST
204 #ifdef DEBUG_USB_HOST
210 #ifdef DEBUG_USB_HOST
215 #ifdef DEBUG_USB_HOST
223 ErrorMessage<uint8_t > (PSTR(
"Conf.Val"), conf);
224 ErrorMessage<uint8_t > (PSTR(
"Iface Num"), iface);
225 ErrorMessage<uint8_t > (PSTR(
"Alt.Set"), alt);
307 return (
pUsb->
ctrlReq(
bAddress, 0,
bmREQ_CDCOUT,
CDC_SET_COMM_FEATURE, (fid & 0xff), (fid >> 8),
bControlIface, nbytes, nbytes, dataptr, NULL));
311 return (
pUsb->
ctrlReq(
bAddress, 0,
bmREQ_CDCIN,
CDC_GET_COMM_FEATURE, (fid & 0xff), (fid >> 8),
bControlIface, nbytes, nbytes, dataptr, NULL));
315 return (
pUsb->
ctrlReq(
bAddress, 0,
bmREQ_CDCOUT,
CDC_CLEAR_COMM_FEATURE, (fid & 0xff), (fid >> 8),
bControlIface, 0, 0, NULL, NULL));
319 return (
pUsb->
ctrlReq(
bAddress, 0,
bmREQ_CDCOUT,
CDC_SET_LINE_CODING, 0x00, 0x00,
bControlIface, sizeof (
LINE_CODING),
sizeof (
LINE_CODING), (uint8_t*)dataptr, NULL));
323 return (
pUsb->
ctrlReq(
bAddress, 0,
bmREQ_CDCIN,
CDC_GET_LINE_CODING, 0x00, 0x00,
bControlIface, sizeof (
LINE_CODING),
sizeof (
LINE_CODING), (uint8_t*)dataptr, NULL));
327 return (
pUsb->
ctrlReq(
bAddress, 0,
bmREQ_CDCOUT,
CDC_SET_CONTROL_LINE_STATE, state, 0,
bControlIface, 0, 0, NULL, NULL));
331 return (
pUsb->
ctrlReq(
bAddress, 0,
bmREQ_CDCOUT,
CDC_SEND_BREAK, (duration & 0xff), (duration >> 8),
bControlIface, 0, 0, NULL, NULL));
335 Notify(PSTR(
"Endpoint descriptor:"), 0x80);
336 Notify(PSTR(
"\r\nLength:\t\t"), 0x80);
337 PrintHex<uint8_t > (ep_ptr->
bLength, 0x80);
338 Notify(PSTR(
"\r\nType:\t\t"), 0x80);
340 Notify(PSTR(
"\r\nAddress:\t"), 0x80);
342 Notify(PSTR(
"\r\nAttributes:\t"), 0x80);
344 Notify(PSTR(
"\r\nMaxPktSize:\t"), 0x80);
346 Notify(PSTR(
"\r\nPoll Intrv:\t"), 0x80);
347 PrintHex<uint8_t > (ep_ptr->
bInterval, 0x80);
348 Notify(PSTR(
"\r\n"), 0x80);
#define USB_CLASS_COM_AND_CDC_CTRL
#define USB_CLASS_CDC_DATA
uint8_t getConfDescr(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t conf, uint8_t *dataptr)
ACM(USB *pusb, CDCAsyncOper *pasync)
#define CDC_PROTOCOL_ITU_T_V_250
#define CP_MASK_COMPARE_PROTOCOL
#define USB_ERROR_EPINFO_IS_NULL
static const uint8_t epInterruptInIndex
static const uint8_t epDataOutIndex
#define CDC_CLEAR_COMM_FEATURE
#define CDC_SET_COMM_FEATURE
#define CDC_SET_LINE_CODING
uint8_t setConf(uint8_t addr, uint8_t ep, uint8_t conf_value)
EpInfo epInfo[ACM_MAX_ENDPOINTS]
#define NotifyFailGetDevDescr(...)
uint8_t setEpInfoEntry(uint8_t addr, uint8_t epcount, EpInfo *eprecord_ptr)
#define CP_MASK_COMPARE_CLASS
#define CDC_GET_COMM_FEATURE
virtual void FreeAddress(uint8_t addr)=0
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)
virtual UsbDevice * GetUsbDevicePtr(uint8_t addr)=0
void PrintEndpointDescriptor(const USB_ENDPOINT_DESCRIPTOR *ep_ptr)
uint8_t setAddr(uint8_t oldaddr, uint8_t ep, uint8_t newaddr)
#define ACM_MAX_ENDPOINTS
#define NotifyFailGetConfDescr(...)
uint8_t GetLineCoding(LINE_CODING *dataptr)
#define USB_NAK_MAX_POWER
uint8_t SndData(uint16_t nbytes, uint8_t *dataptr)
#define CDC_GET_LINE_CODING
uint8_t outTransfer(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t *data)
virtual uint8_t Init(uint8_t parent, uint8_t port, bool lowspeed)
#define CP_MASK_COMPARE_SUBCLASS
virtual uint8_t AllocAddress(uint8_t parent, bool is_hub=false, uint8_t port=0)=0
static const uint8_t epDataInIndex
#define USB_ERROR_CLASS_INSTANCE_ALREADY_IN_USE
uint8_t SetLineCoding(const LINE_CODING *dataptr)
virtual void EndpointXtract(uint8_t conf, uint8_t iface, uint8_t alt, uint8_t proto, const USB_ENDPOINT_DESCRIPTOR *ep)
uint8_t SendBreak(uint16_t duration)
#define USB_ERROR_ADDRESS_NOT_FOUND_IN_POOL
uint8_t inTransfer(uint8_t addr, uint8_t ep, uint16_t *nbytesptr, uint8_t *data)
#define USB_DEV_CONFIG_ERROR_DEVICE_NOT_SUPPORTED
uint8_t GetCommFeature(uint16_t fid, uint8_t nbytes, uint8_t *dataptr)
virtual uint8_t Release()
#define USB_ERROR_OUT_OF_ADDRESS_SPACE_IN_POOL
#define CDC_SET_CONTROL_LINE_STATE
virtual uint8_t OnInit(ACM *pacm)=0
AddressPool & GetAddressPool()
uint8_t RegisterDeviceClass(USBDeviceConfig *pdev)
#define NotifyFailSetConfDescr(...)
uint8_t SetControlLineState(uint8_t state)
uint8_t SetCommFeature(uint16_t fid, uint8_t nbytes, uint8_t *dataptr)
uint8_t ClearCommFeature(uint16_t fid)
uint8_t getDevDescr(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t *dataptr)
defined(USB_METHODS_INLINE)
#define NotifyFailSetDevTblEntry(...)
uint8_t RcvData(uint16_t *nbytesptr, uint8_t *dataptr)