Update DevChapter9.c - use the Endpoint_ClearStatusStage() function where possible to reduce code size and (potentially) allow for centralized status stage timeouts.

Fix Joystick device demo HID descriptors - buttons should be placed outside the Pointer collection.
pull/1469/head
Dean Camera 15 years ago
parent 0899deaae3
commit f93f732108

@ -58,6 +58,7 @@ USB_Descriptor_HIDReport_Datatype_t PROGMEM JoystickReport[] =
0x75, 0x08, /* Report Size (8) */ 0x75, 0x08, /* Report Size (8) */
0x95, 0x02, /* Report Count (2) */ 0x95, 0x02, /* Report Count (2) */
0x81, 0x82, /* Input (Data, Variable, Absolute, Volatile) */ 0x81, 0x82, /* Input (Data, Variable, Absolute, Volatile) */
0xc0, /* End Collection */
0x05, 0x09, /* Usage Page (Button) */ 0x05, 0x09, /* Usage Page (Button) */
0x09, 0x02, /* Usage (Button 2) */ 0x09, 0x02, /* Usage (Button 2) */
0x09, 0x01, /* Usage (Button 1) */ 0x09, 0x01, /* Usage (Button 1) */
@ -69,7 +70,6 @@ USB_Descriptor_HIDReport_Datatype_t PROGMEM JoystickReport[] =
0x75, 0x06, /* Report Size (6) */ 0x75, 0x06, /* Report Size (6) */
0x95, 0x01, /* Report Count (1) */ 0x95, 0x01, /* Report Count (1) */
0x81, 0x01, /* Input (Constant) */ 0x81, 0x01, /* Input (Constant) */
0xc0, /* End Collection */
0xc0 /* End Collection */ 0xc0 /* End Collection */
}; };

@ -58,6 +58,7 @@ USB_Descriptor_HIDReport_Datatype_t PROGMEM JoystickReport[] =
0x75, 0x08, /* Report Size (8) */ 0x75, 0x08, /* Report Size (8) */
0x95, 0x02, /* Report Count (2) */ 0x95, 0x02, /* Report Count (2) */
0x81, 0x82, /* Input (Data, Variable, Absolute, Volatile) */ 0x81, 0x82, /* Input (Data, Variable, Absolute, Volatile) */
0xc0, /* End Collection */
0x05, 0x09, /* Usage Page (Button) */ 0x05, 0x09, /* Usage Page (Button) */
0x09, 0x02, /* Usage (Button 2) */ 0x09, 0x02, /* Usage (Button 2) */
0x09, 0x01, /* Usage (Button 1) */ 0x09, 0x01, /* Usage (Button 1) */
@ -69,7 +70,6 @@ USB_Descriptor_HIDReport_Datatype_t PROGMEM JoystickReport[] =
0x75, 0x06, /* Report Size (6) */ 0x75, 0x06, /* Report Size (6) */
0x95, 0x01, /* Report Count (1) */ 0x95, 0x01, /* Report Count (1) */
0x81, 0x01, /* Input (Constant) */ 0x81, 0x01, /* Input (Constant) */
0xc0, /* End Collection */
0xc0 /* End Collection */ 0xc0 /* End Collection */
}; };

@ -121,7 +121,7 @@ static void USB_Device_SetAddress(void)
Endpoint_ClearSETUP(); Endpoint_ClearSETUP();
Endpoint_ClearIN(); Endpoint_ClearStatusStage();
while (!(Endpoint_IsINReady())) while (!(Endpoint_IsINReady()))
{ {
@ -190,7 +190,7 @@ static void USB_Device_SetConfiguration(void)
USB_ConfigurationNumber = (uint8_t)USB_ControlRequest.wValue; USB_ConfigurationNumber = (uint8_t)USB_ControlRequest.wValue;
Endpoint_ClearIN(); Endpoint_ClearStatusStage();
if (USB_ConfigurationNumber) if (USB_ConfigurationNumber)
USB_DeviceState = DEVICE_STATE_Configured; USB_DeviceState = DEVICE_STATE_Configured;
@ -205,16 +205,9 @@ void USB_Device_GetConfiguration(void)
Endpoint_ClearSETUP(); Endpoint_ClearSETUP();
Endpoint_Write_Byte(USB_ConfigurationNumber); Endpoint_Write_Byte(USB_ConfigurationNumber);
Endpoint_ClearIN(); Endpoint_ClearIN();
while (!(Endpoint_IsOUTReceived())) Endpoint_ClearStatusStage();
{
if (USB_DeviceState == DEVICE_STATE_Unattached)
return;
}
Endpoint_ClearOUT();
} }
#if !defined(NO_INTERNAL_SERIAL) && (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)) #if !defined(NO_INTERNAL_SERIAL) && (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
@ -251,7 +244,9 @@ static void USB_Device_GetInternalSerialDescriptor(void)
} }
Endpoint_ClearSETUP(); Endpoint_ClearSETUP();
Endpoint_Write_Control_Stream_LE(&SignatureDescriptor, sizeof(SignatureDescriptor)); Endpoint_Write_Control_Stream_LE(&SignatureDescriptor, sizeof(SignatureDescriptor));
Endpoint_ClearOUT(); Endpoint_ClearOUT();
} }
#endif #endif
@ -334,16 +329,9 @@ static void USB_Device_GetStatus(void)
Endpoint_ClearSETUP(); Endpoint_ClearSETUP();
Endpoint_Write_Word_LE(CurrentStatus); Endpoint_Write_Word_LE(CurrentStatus);
Endpoint_ClearIN(); Endpoint_ClearIN();
while (!(Endpoint_IsOUTReceived())) Endpoint_ClearStatusStage();
{
if (USB_DeviceState == DEVICE_STATE_Unattached)
return;
}
Endpoint_ClearOUT();
} }
static void USB_Device_ClearSetFeature(void) static void USB_Device_ClearSetFeature(void)
@ -391,7 +379,7 @@ static void USB_Device_ClearSetFeature(void)
Endpoint_ClearSETUP(); Endpoint_ClearSETUP();
Endpoint_ClearIN(); Endpoint_ClearStatusStage();
} }
#endif #endif

@ -14,6 +14,7 @@
* Report protocol is not needed * Report protocol is not needed
* - Added new MIDI LowLevel and ClassDriver Host demo, add new MIDI Host Class driver * - Added new MIDI LowLevel and ClassDriver Host demo, add new MIDI Host Class driver
* - Added stdio.h stream examples for the virtual CDC UART in the CDC host demos * - Added stdio.h stream examples for the virtual CDC UART in the CDC host demos
* - Added new CDC/Mouse ClassDriver device demo
* *
* <b>Changed:</b> * <b>Changed:</b>
* - Removed mostly useless "TestApp" demo, as it was mainly useful only for checking for sytax errors in the library * - Removed mostly useless "TestApp" demo, as it was mainly useful only for checking for sytax errors in the library
@ -39,6 +40,7 @@
* - Fixed incorrect SampleFrequencyType value in the AudioInput and AudioOutput ClassDriver demos' descriptors * - Fixed incorrect SampleFrequencyType value in the AudioInput and AudioOutput ClassDriver demos' descriptors
* - Fixed incorrect event name rule in demo/project/bootloader makefiles * - Fixed incorrect event name rule in demo/project/bootloader makefiles
* - Fixed HID device class driver not reselecting the correct endpoint once the user callback routines have been called * - Fixed HID device class driver not reselecting the correct endpoint once the user callback routines have been called
* - Corrected HID descriptor in the Joystick Device demos - buttons should be placed outside the pointer collection
* *
* \section Sec_ChangeLog090924 Version 090924 * \section Sec_ChangeLog090924 Version 090924
* *

@ -35,6 +35,7 @@
* - "Fingerlicking Wingdinger" (WARNING: Bad Language if no Javascript), a MIDI controller - http://noisybox.net/electronics/wingdinger/ * - "Fingerlicking Wingdinger" (WARNING: Bad Language if no Javascript), a MIDI controller - http://noisybox.net/electronics/wingdinger/
* - Garmin GPS USB to NMEA standard serial sentence translator: http://github.com/nall/garmin-transmogrifier/tree/master * - Garmin GPS USB to NMEA standard serial sentence translator: http://github.com/nall/garmin-transmogrifier/tree/master
* - Generic HID Device Creator : http://generichid.sourceforge.net/ * - Generic HID Device Creator : http://generichid.sourceforge.net/
* - Mobo 4.3, some sort of Audio related device: http://sites.google.com/site/lofturj/mobo4_3
* - NES Controller USB modification: http://projects.peterpolidoro.net/video/NESUSB.htm * - NES Controller USB modification: http://projects.peterpolidoro.net/video/NESUSB.htm
* - MakeTV Episode Dispenser: http://www.youtube.com/watch?v=BkWUi18hl3g * - MakeTV Episode Dispenser: http://www.youtube.com/watch?v=BkWUi18hl3g
* - Opendous-JTAG, an open source JTAG device: http://code.google.com/p/opendous-jtag/ * - Opendous-JTAG, an open source JTAG device: http://code.google.com/p/opendous-jtag/

Loading…
Cancel
Save