Fixed USB_Host_ClearPipeStall() incorrectly attempting to determine the endpoint...
[pub/USBasp.git] / Demos / Device / ClassDriver / MassStorageKeyboard / MassStorageKeyboard.c
index 330252f..ba62130 100644 (file)
@@ -113,7 +113,7 @@ void SetupHardware(void)
        LEDs_Init();
        Joystick_Init();
        Buttons_Init();
        LEDs_Init();
        Joystick_Init();
        Buttons_Init();
-       SPI_Init(SPI_SPEED_FCPU_DIV_2 | SPI_SCK_LEAD_FALLING | SPI_SAMPLE_TRAILING | SPI_MODE_MASTER);
+       SPI_Init(SPI_SPEED_FCPU_DIV_2 | SPI_ORDER_MSB_FIRST | SPI_SCK_LEAD_FALLING | SPI_SAMPLE_TRAILING | SPI_MODE_MASTER);
        Dataflash_Init();
        USB_Init();
 
        Dataflash_Init();
        USB_Init();
 
@@ -136,15 +136,14 @@ void EVENT_USB_Device_Disconnect(void)
 /** Event handler for the library USB Configuration Changed event. */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
 /** Event handler for the library USB Configuration Changed event. */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
-
-       if (!(MS_Device_ConfigureEndpoints(&Disk_MS_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+       bool ConfigSuccess = true;
 
 
-       if (!(HID_Device_ConfigureEndpoints(&Keyboard_HID_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+       ConfigSuccess &= MS_Device_ConfigureEndpoints(&Disk_MS_Interface);
+       ConfigSuccess &= HID_Device_ConfigureEndpoints(&Keyboard_HID_Interface);
 
        USB_Device_EnableSOFEvents();
 
        USB_Device_EnableSOFEvents();
+
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 /** Event handler for the library USB Unhandled Control Request event. */
 }
 
 /** Event handler for the library USB Unhandled Control Request event. */
@@ -185,8 +184,11 @@ void EVENT_USB_Device_StartOfFrame(void)
  *
  *  \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent
  */
  *
  *  \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent
  */
-bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,
-                                         const uint8_t ReportType, void* ReportData, uint16_t* const ReportSize)
+bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
+                                         uint8_t* const ReportID,
+                                         const uint8_t ReportType,
+                                         void* ReportData,
+                                         uint16_t* const ReportSize)
 {
        USB_KeyboardReport_Data_t* KeyboardReport = (USB_KeyboardReport_Data_t*)ReportData;
        
 {
        USB_KeyboardReport_Data_t* KeyboardReport = (USB_KeyboardReport_Data_t*)ReportData;
        
@@ -223,8 +225,11 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn
  *  \param[in] ReportData  Pointer to a buffer where the created report has been stored
  *  \param[in] ReportSize  Size in bytes of the received HID report
  */
  *  \param[in] ReportData  Pointer to a buffer where the created report has been stored
  *  \param[in] ReportSize  Size in bytes of the received HID report
  */
-void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID,
-                                          const uint8_t ReportType, const void* ReportData, const uint16_t ReportSize)
+void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
+                                          const uint8_t ReportID,
+                                          const uint8_t ReportType,
+                                          const void* ReportData,
+                                          const uint16_t ReportSize)
 {
        uint8_t  LEDMask   = LEDS_NO_LEDS;
        uint8_t* LEDReport = (uint8_t*)ReportData;
 {
        uint8_t  LEDMask   = LEDS_NO_LEDS;
        uint8_t* LEDReport = (uint8_t*)ReportData;