@ -120,6 +120,16 @@ static const USBDescriptor *usb_get_descriptor_cb(USBDriver *usbp, uint8_t dtype
return & desc ;
return & desc ;
}
}
/*
* USB notification callback that does nothing . Needed to work around bugs in
* some USB LLDs that fail to resume the waiting thread when the notification
* callback pointer is NULL .
*/
static void dummy_usb_cb ( USBDriver * usbp , usbep_t ep ) {
( void ) usbp ;
( void ) ep ;
}
# ifndef KEYBOARD_SHARED_EP
# ifndef KEYBOARD_SHARED_EP
/* keyboard endpoint state structure */
/* keyboard endpoint state structure */
static USBInEndpointState kbd_ep_state ;
static USBInEndpointState kbd_ep_state ;
@ -127,7 +137,7 @@ static USBInEndpointState kbd_ep_state;
static const USBEndpointConfig kbd_ep_config = {
static const USBEndpointConfig kbd_ep_config = {
USB_EP_MODE_TYPE_INTR , /* Interrupt EP */
USB_EP_MODE_TYPE_INTR , /* Interrupt EP */
NULL , /* SETUP packet notification callback */
NULL , /* SETUP packet notification callback */
NULL , /* IN notification callback */
dummy_usb_cb , /* IN notification callback */
NULL , /* OUT notification callback */
NULL , /* OUT notification callback */
KEYBOARD_EPSIZE , /* IN maximum packet size */
KEYBOARD_EPSIZE , /* IN maximum packet size */
0 , /* OUT maximum packet size */
0 , /* OUT maximum packet size */
@ -145,7 +155,7 @@ static USBInEndpointState mouse_ep_state;
static const USBEndpointConfig mouse_ep_config = {
static const USBEndpointConfig mouse_ep_config = {
USB_EP_MODE_TYPE_INTR , /* Interrupt EP */
USB_EP_MODE_TYPE_INTR , /* Interrupt EP */
NULL , /* SETUP packet notification callback */
NULL , /* SETUP packet notification callback */
NULL , /* IN notification callback */
dummy_usb_cb , /* IN notification callback */
NULL , /* OUT notification callback */
NULL , /* OUT notification callback */
MOUSE_EPSIZE , /* IN maximum packet size */
MOUSE_EPSIZE , /* IN maximum packet size */
0 , /* OUT maximum packet size */
0 , /* OUT maximum packet size */
@ -163,7 +173,7 @@ static USBInEndpointState shared_ep_state;
static const USBEndpointConfig shared_ep_config = {
static const USBEndpointConfig shared_ep_config = {
USB_EP_MODE_TYPE_INTR , /* Interrupt EP */
USB_EP_MODE_TYPE_INTR , /* Interrupt EP */
NULL , /* SETUP packet notification callback */
NULL , /* SETUP packet notification callback */
NULL , /* IN notification callback */
dummy_usb_cb , /* IN notification callback */
NULL , /* OUT notification callback */
NULL , /* OUT notification callback */
SHARED_EPSIZE , /* IN maximum packet size */
SHARED_EPSIZE , /* IN maximum packet size */
0 , /* OUT maximum packet size */
0 , /* OUT maximum packet size */
@ -181,7 +191,7 @@ static USBInEndpointState joystick_ep_state;
static const USBEndpointConfig joystick_ep_config = {
static const USBEndpointConfig joystick_ep_config = {
USB_EP_MODE_TYPE_INTR , /* Interrupt EP */
USB_EP_MODE_TYPE_INTR , /* Interrupt EP */
NULL , /* SETUP packet notification callback */
NULL , /* SETUP packet notification callback */
NULL , /* IN notification callback */
dummy_usb_cb , /* IN notification callback */
NULL , /* OUT notification callback */
NULL , /* OUT notification callback */
JOYSTICK_EPSIZE , /* IN maximum packet size */
JOYSTICK_EPSIZE , /* IN maximum packet size */
0 , /* OUT maximum packet size */
0 , /* OUT maximum packet size */
@ -199,7 +209,7 @@ static USBInEndpointState digitizer_ep_state;
static const USBEndpointConfig digitizer_ep_config = {
static const USBEndpointConfig digitizer_ep_config = {
USB_EP_MODE_TYPE_INTR , /* Interrupt EP */
USB_EP_MODE_TYPE_INTR , /* Interrupt EP */
NULL , /* SETUP packet notification callback */
NULL , /* SETUP packet notification callback */
NULL , /* IN notification callback */
dummy_usb_cb , /* IN notification callback */
NULL , /* OUT notification callback */
NULL , /* OUT notification callback */
DIGITIZER_EPSIZE , /* IN maximum packet size */
DIGITIZER_EPSIZE , /* IN maximum packet size */
0 , /* OUT maximum packet size */
0 , /* OUT maximum packet size */