vsf_err_t stm32_usbd_ep_set_type(uint8_t idx, enum interface_usbd_eptype_t type) { int8_t index; index = stm32_usbd_get_ep(idx); if (index < 0) { return VSFERR_FAIL; } idx = (uint8_t)index; switch (type) { case USB_EP_TYPE_CONTROL: SetEPType(idx, EP_CONTROL); Clear_Status_Out(idx); break; case USB_EP_TYPE_INTERRUPT: SetEPType(idx, EP_INTERRUPT); break; case USB_EP_TYPE_BULK: SetEPType(idx, EP_BULK); ClearEPDoubleBuff(idx); break; case USB_EP_TYPE_ISO: SetEPType(idx, EP_ISOCHRONOUS); break; default: return VSFERR_INVALID_PARAMETER; } return VSFERR_NONE; }
void monkey_ep_reset(void) { int i; /* Set Joystick_DEVICE as not configured */ pInformation->Current_Configuration = 0; pInformation->Current_Interface = 0;/*the default Interface*/ /* Current Feature initialization */ pInformation->Current_Feature = config1_descriptor[7]; for(i=0; i<8; ++i) { if(ep_conf_list[i].direct==0) continue; switch(ep_conf_list[i].attr) { case 0x00: SetEPType(i, EP_BULK); ClearEPDoubleBuff(i); break; case 0x01: SetEPType(i, EP_CONTROL); Clear_Status_Out(i); break; case 0x02: SetEPType(i, EP_ISOCHRONOUS); break; case 0x03: SetEPType(i, EP_INTERRUPT); break; } if(ep_conf_list[i].direct & EP_IN) { SetEPTxStatus(i, ep_conf_list[i].tx_status); SetEPTxAddr(i, ep_conf_list[i].tx_addr); SetEPTxCount(i, ep_conf_list[i].tx_max); } if(ep_conf_list[i].direct & EP_OUT) { SetEPRxAddr(i, ep_conf_list[i].rx_addr); SetEPRxCount(i, ep_conf_list[i].rx_max); SetEPRxStatus(i, ep_conf_list[i].rx_status); } } }