uint8_t usbSetControlLineState (void) { USBCDC_handleSetControlLineState((uint8_t)tSetupPacket.wIndex, (uint8_t)tSetupPacket.wValue); usbSendZeroLengthPacketOnIEP0(); //Send ZLP for status stage return (FALSE); }
BYTE usbSetControlLineState (VOID) { USBCDC_handleSetControlLineState((BYTE)tSetupPacket.wIndex, (BYTE)tSetupPacket.wValue); usbSendZeroLengthPacketOnIEP0(); //Send ZLP for status stage return (FALSE); }
uint8_t usbSetIdle (void) { if (hidProtocol[INTERFACE_OFFSET(tSetupPacket.wIndex)] == USB_REQ_HID_BOOT_PROTOCOL){ hidIdleRate[INTERFACE_OFFSET(tSetupPacket.wIndex)] = tSetupPacket.wValue >> 8; usbSendZeroLengthPacketOnIEP0(); } else {
void usbClearEndpointFeature(void) { uint8_t bEndpointNumber; // EP is from EP1 to EP7 while C language start from 0 bEndpointNumber = (tSetupPacket.wIndex & EP_DESC_ADDR_EP_NUM); if(bEndpointNumber == 0x00) usbSendZeroLengthPacketOnIEP0(); else{ bEndpointNumber--; if(bEndpointNumber < MAX_ENDPOINT_NUMBER){ if((tSetupPacket.wIndex & EP_DESC_ADDR_DIR_IN) == EP_DESC_ADDR_DIR_IN){ // input endpoint tInputEndPointDescriptorBlock[bEndpointNumber].bEPCNF &= ~(EPCNF_STALL | EPCNF_TOGGLE); }else{ // output endpoint tOutputEndPointDescriptorBlock[bEndpointNumber].bEPCNF &= ~(EPCNF_STALL | EPCNF_TOGGLE); } usbSendZeroLengthPacketOnIEP0(); } } }
uint8_t usbSetProtocol (void) { uint8_t bWakeUp = FALSE; hidProtocol[INTERFACE_OFFSET(tSetupPacket.wIndex)] = (uint8_t)tSetupPacket.wValue; //tSetupPacket.wValue = USB_REQ_HID_BOOT_PROTOCOL or USB_REQ_HID_REPORT_PROTOCOL bWakeUp = USBHID_handleBootProtocol((uint8_t)tSetupPacket.wValue, tSetupPacket.wIndex); usbSendZeroLengthPacketOnIEP0(); return (bWakeUp); }
VOID usbClearEndpointFeature(VOID) { BYTE bEndpointNumber; // EP is from EP1 to EP7 while C language start from 0 bEndpointNumber = (tSetupPacket.wIndex & EP_DESC_ADDR_EP_NUM); if(bEndpointNumber == 0x00) usbSendZeroLengthPacketOnIEP0(); else{ if(bEndpointNumber == 1){ if((tSetupPacket.wIndex & EP_DESC_ADDR_DIR_IN) == EP_DESC_ADDR_DIR_IN) { // input endpoint tInputEndPointDescriptorBlock[0].bEPCNF &= ~(EPCNF_STALL | EPCNF_TOGGLE); } else { // output endpoint tOutputEndPointDescriptorBlock[0].bEPCNF &= ~(EPCNF_STALL | EPCNF_TOGGLE); } usbSendZeroLengthPacketOnIEP0(); } } }
/*----------------------------------------------------------------------------+ | Functions | +----------------------------------------------------------------------------*/ uint8_t USBMSC_reset (void) { Msc_ResetStateMachine(); Msc_ResetFlags(); Msc_ResetStruct(); MscState.isMSCConfigured = TRUE; MscState.bMscResetRequired = FALSE; tInputEndPointDescriptorBlock[stUsbHandle[MSC0_INTFNUM].edb_Index].bEPCNF &= ~(EPCNF_STALL | EPCNF_TOGGLE ); tOutputEndPointDescriptorBlock[stUsbHandle[MSC0_INTFNUM].edb_Index].bEPCNF &= ~(EPCNF_STALL | EPCNF_TOGGLE ); usbSendZeroLengthPacketOnIEP0(); //status stage for control transfer return (FALSE); }
VOID usbSetControlLineState(VOID) { usbSendZeroLengthPacketOnIEP0(); // Send ZLP for status stage }