usb_status_t UsbGenericHidSetConfiguration(class_handle_t handle, uint8_t configuration) { if (USB_COMPOSITE_CONFIGURATION_INDEX == configuration) { return UsbReceiveData(); } return kStatus_USB_Error; }
usb_status_t UsbGenericHidSetInterface(class_handle_t handle, uint8_t interface, uint8_t alternateSetting) { if (USB_GENERIC_HID_INTERFACE_INDEX == interface) { return UsbReceiveData(); } return kStatus_USB_Error; }
usb_status_t UsbGenericHidCallback(class_handle_t handle, uint32_t event, void *param) { usb_status_t error = kStatus_USB_Error; switch (event) { case kUSB_DeviceHidEventSendResponse: break; case kUSB_DeviceHidEventRecvResponse: UsbProtocolHandler(); USB_DeviceHidSend(UsbCompositeDevice.genericHidHandle, USB_GENERIC_HID_ENDPOINT_IN_INDEX, GenericHidOutBuffer, USB_GENERIC_HID_OUT_BUFFER_LENGTH); return UsbReceiveData(); break; case kUSB_DeviceHidEventGetReport: case kUSB_DeviceHidEventSetReport: case kUSB_DeviceHidEventRequestReportBuffer: error = kStatus_USB_InvalidRequest; break; case kUSB_DeviceHidEventGetIdle: case kUSB_DeviceHidEventGetProtocol: case kUSB_DeviceHidEventSetIdle: case kUSB_DeviceHidEventSetProtocol: break; default: break; } return error; }
void vUSBTask(void *pvParameters) { uint16 usbsize; uint8 usbbuf[256]; //uint8 usbbufsizes[100]; CONTENTS stru[100]; uint16 usbbufsizesCounter=0; bool st = false; /* The parameters are not used. */ (void) pvParameters; /* uint16_t bufff[20]; bufff[0] = 0x555; bufff[1] = 0x444; bufff[2] = 0x333; bufff[3] = 0x222; bufff[4] = 0x111; FLASH_ErasePage(DEVICE_FLASHMEM_LOCATION); //FLASH_ProgramHalfWord(DEVICE_FLASHMEM_LOCATION,bufff[0]); //FLASH_ProgramHalfWord(DEVICE_FLASHMEM_LOCATION+0x02,bufff[1]); //FLASH_ProgramHalfWord(DEVICE_FLASHMEM_LOCATION+0x04,bufff[2]); //FLASH_ProgramHalfWord(DEVICE_FLASHMEM_LOCATION+0x06,bufff[3]); //FLASH_ProgramHalfWord(DEVICE_FLASHMEM_LOCATION+0x08,bufff[4]); WriteFlash( bufff,(void*)(DEVICE_FLASHMEM_LOCATION), 10);*/ //vTaskDelay(15000); Set_USBClock(); USB_Interrupts_Config(); USB_Init(); int heapSize = 0; while (1) { heapSize = xPortGetFreeHeapSize(); heapSize +=0; usbsize = UsbReceiveData(usbbuf,256); if(usbsize > 0) { stru[usbbufsizesCounter].buf[0]=usbbuf[0]; stru[usbbufsizesCounter].buf[1]=usbbuf[1]; stru[usbbufsizesCounter].buf[2]=usbbuf[2]; stru[usbbufsizesCounter].buf[3]=usbbuf[3]; stru[usbbufsizesCounter].size = usbsize; usbbufsizesCounter++; if(usbbufsizesCounter>=100) usbbufsizesCounter = 0; usbsize = RVnetSlaveProcess(usbbuf,usbsize,1); if(usbsize > 0) { UsbSendData(usbbuf,usbsize); } } vTaskDelay(1); } }