void APP_USBDeviceEventHandler ( USB_DEVICE_EVENT event, USB_DEVICE_EVENT_DATA * eventData ) { switch ( event ) { case USB_DEVICE_EVENT_RESET: case USB_DEVICE_EVENT_DECONFIGURED: // USB device is reset or device is deconfigured. // This means that USB device layer is about to deininitialize // all function drivers. // Also turn ON LEDs to indicate reset/deconfigured state. /* Switch on red and orange, switch off green */ BSP_SwitchONLED ( LED_9 ); BSP_SwitchONLED ( LED_6 ); BSP_SwitchOFFLED ( LED_5 ); appData.isConfigured = false; break; case USB_DEVICE_EVENT_CONFIGURED: /* check the configuration */ if ( eventData->eventConfigured.configurationValue == 1) { /* the device is in configured state */ /* Switch on green and switch off red and orange */ BSP_SwitchOFFLED ( LED_9 ); BSP_SwitchOFFLED ( LED_6 ); BSP_SwitchONLED ( LED_5 ); /* Register the CDC Device application event handler here. * Note how the appData object pointer is passed as the * user data */ USB_DEVICE_CDC_EventHandlerSet(USB_DEVICE_CDC_INDEX_0, APP_USBDeviceCDCEventHandler, (uintptr_t)&appData); /* mark that set configuration is complete */ appData.isConfigured = true; } break; case USB_DEVICE_EVENT_SUSPENDED: /* Switch on green and orange, switch off red */ BSP_SwitchOFFLED ( LED_9 ); BSP_SwitchONLED ( LED_6 ); BSP_SwitchONLED ( LED_5 ); break; case USB_DEVICE_EVENT_RESUMED: case USB_DEVICE_EVENT_ATTACHED: case USB_DEVICE_EVENT_DETACHED: case USB_DEVICE_EVENT_ERROR: default: break; } }
/*********************************************** * Application USB Device Layer Event Handler. ***********************************************/ void APP_USBDeviceEventHandler ( USB_DEVICE_EVENT event, void * eventData, uintptr_t context ) { USB_DEVICE_EVENT_DATA_CONFIGURED *configuredEventData; static bool led; switch ( event ) { case USB_DEVICE_EVENT_SOF: app2Data.sofEventHasOccurred = true; break; case USB_DEVICE_EVENT_RESET: app2Data.isConfigured = false; break; case USB_DEVICE_EVENT_CONFIGURED: /* Set the USBID pin to output (LED control) after configuration is done */ PLIB_PORTS_PinDirectionOutputSet(PORTS_ID_0, PORT_CHANNEL_F, PORTS_BIT_POS_3); (led) ? PLIB_PORTS_PinSet(PORTS_ID_0, PORT_CHANNEL_F, PORTS_BIT_POS_3) : PLIB_PORTS_PinClear(PORTS_ID_0, PORT_CHANNEL_F, PORTS_BIT_POS_3); /* Check the configuration. We only support configuration 1 */ configuredEventData = (USB_DEVICE_EVENT_DATA_CONFIGURED*)eventData; if ( configuredEventData->configurationValue == 1) { /* Register the CDC Device application event handler here. * Note how the app2Data object pointer is passed as the * user data */ USB_DEVICE_CDC_EventHandlerSet(USB_DEVICE_CDC_INDEX_0, APP_USBDeviceCDCEventHandler, (uintptr_t)&app2Data); /* Mark that the device is now configured */ app2Data.isConfigured = true; } break; case USB_DEVICE_EVENT_POWER_DETECTED: led = PLIB_PORTS_PinGetLatched(PORTS_ID_0, PORT_CHANNEL_F, PORTS_BIT_POS_3); /* Set the USBID pin to input (floating) so that it will be configured as DEVICE */ PLIB_PORTS_PinDirectionInputSet(PORTS_ID_0, PORT_CHANNEL_F, PORTS_BIT_POS_3); /* VBUS was detected. We can attach the device */ USB_DEVICE_Attach(app2Data.deviceHandle); break; case USB_DEVICE_EVENT_POWER_REMOVED: /* VBUS is not available any more. Detach the device. */ USB_DEVICE_Detach(app2Data.deviceHandle); break; case USB_DEVICE_EVENT_SUSPENDED: break; case USB_DEVICE_EVENT_RESUMED: case USB_DEVICE_EVENT_ERROR: default: break; } }
void APP_USBDeviceEventHandler ( USB_DEVICE_EVENT event, void * eventData, uintptr_t context) { uint8_t configurationValue; switch ( event ) { case USB_DEVICE_EVENT_RESET: case USB_DEVICE_EVENT_DECONFIGURED: /* USB device is reset or device is deconfigured. * This means that USB device layer is about to deininitialize * all function drivers. Update LEDs to indicate * reset/deconfigured state. */ BSP_LEDOn ( APP_USB_LED_1 ); BSP_LEDOn ( APP_USB_LED_2 ); BSP_LEDOff( APP_USB_LED_3 ); appData.isConfigured = false; break; case USB_DEVICE_EVENT_CONFIGURED: /* Check the configuration */ configurationValue = ((USB_DEVICE_EVENT_DATA_CONFIGURED *)eventData)->configurationValue; if (configurationValue == 1) { /* The device is in configured state. Update LED indication */ BSP_LEDOff( APP_USB_LED_1 ); BSP_LEDOff( APP_USB_LED_2 ); BSP_LEDOn( APP_USB_LED_3 ); /* Register the CDC Device application event handler here. * Note how the appData object pointer is passed as the * user data */ USB_DEVICE_CDC_EventHandlerSet(USB_DEVICE_CDC_INDEX_0, APP_USBDeviceCDCEventHandler, (uintptr_t)&appData); /* mark that set configuration is complete */ appData.isConfigured = true; } break; case USB_DEVICE_EVENT_SUSPENDED: /* Update LEDs */ BSP_LEDOff ( APP_USB_LED_1 ); BSP_LEDOn ( APP_USB_LED_2 ); BSP_LEDOn( APP_USB_LED_3 ); break; case USB_DEVICE_EVENT_POWER_DETECTED: /* VBUS was detected. Connect the device */ USB_DEVICE_Attach (appData.deviceHandle); break; case USB_DEVICE_EVENT_POWER_REMOVED: /* VBUS was removed. Disconnect the device */ USB_DEVICE_Detach(appData.deviceHandle); break; /* These events are not used in this demo */ case USB_DEVICE_EVENT_RESUMED: case USB_DEVICE_EVENT_ERROR: default: break; } }