mirror of
https://github.com/hathach/tinyusb.git
synced 2025-02-23 00:40:12 +00:00
adding _mounted_isr & _umounted_isr callback for host keyboard & mouse
remove TUSB_EVENT_INTERFACE_OPEN & TUSB_EVENT_INTERFACE_CLOSE
This commit is contained in:
parent
b0f45b3651
commit
4a8686e868
@ -67,19 +67,22 @@ static inline void process_kbd_report(tusb_keyboard_report_t const * report);
|
|||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// tinyusb callback (ISR context)
|
// tinyusb callback (ISR context)
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
|
void tusbh_hid_keyboard_mounted_isr(uint8_t dev_addr)
|
||||||
|
{
|
||||||
|
// application set-up
|
||||||
|
osal_queue_flush(queue_kbd_hdl);
|
||||||
|
tusbh_hid_keyboard_get_report(dev_addr, (uint8_t*) &usb_keyboard_report); // first report
|
||||||
|
}
|
||||||
|
|
||||||
|
void tusbh_hid_keyboard_unmounted_isr(uint8_t dev_addr)
|
||||||
|
{
|
||||||
|
// application tear-down
|
||||||
|
}
|
||||||
|
|
||||||
void tusbh_hid_keyboard_isr(uint8_t dev_addr, tusb_event_t event)
|
void tusbh_hid_keyboard_isr(uint8_t dev_addr, tusb_event_t event)
|
||||||
{
|
{
|
||||||
switch(event)
|
switch(event)
|
||||||
{
|
{
|
||||||
case TUSB_EVENT_INTERFACE_OPEN: // application set-up
|
|
||||||
osal_queue_flush(queue_kbd_hdl);
|
|
||||||
tusbh_hid_keyboard_get_report(dev_addr, (uint8_t*) &usb_keyboard_report); // first report
|
|
||||||
break;
|
|
||||||
|
|
||||||
case TUSB_EVENT_INTERFACE_CLOSE: // application tear-down
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case TUSB_EVENT_XFER_COMPLETE:
|
case TUSB_EVENT_XFER_COMPLETE:
|
||||||
osal_queue_send(queue_kbd_hdl, &usb_keyboard_report);
|
osal_queue_send(queue_kbd_hdl, &usb_keyboard_report);
|
||||||
tusbh_hid_keyboard_get_report(dev_addr, (uint8_t*) &usb_keyboard_report);
|
tusbh_hid_keyboard_get_report(dev_addr, (uint8_t*) &usb_keyboard_report);
|
||||||
|
@ -67,19 +67,22 @@ static inline void process_mouse_report(tusb_mouse_report_t const * p_report);
|
|||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// tinyusb callback (ISR context)
|
// tinyusb callback (ISR context)
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
|
void tusbh_hid_mouse_mounted_isr(uint8_t dev_addr)
|
||||||
|
{
|
||||||
|
// application set-up
|
||||||
|
osal_queue_flush(queue_mouse_hdl);
|
||||||
|
tusbh_hid_mouse_get_report(dev_addr, (uint8_t*) &usb_mouse_report); // first report
|
||||||
|
}
|
||||||
|
|
||||||
|
void tusbh_hid_mouse_unmounted_isr(uint8_t dev_addr)
|
||||||
|
{
|
||||||
|
// application tear-down
|
||||||
|
}
|
||||||
|
|
||||||
void tusbh_hid_mouse_isr(uint8_t dev_addr, tusb_event_t event)
|
void tusbh_hid_mouse_isr(uint8_t dev_addr, tusb_event_t event)
|
||||||
{
|
{
|
||||||
switch(event)
|
switch(event)
|
||||||
{
|
{
|
||||||
case TUSB_EVENT_INTERFACE_OPEN: // application set-up
|
|
||||||
osal_queue_flush(queue_mouse_hdl);
|
|
||||||
tusbh_hid_mouse_get_report(dev_addr, (uint8_t*) &usb_mouse_report); // first report
|
|
||||||
break;
|
|
||||||
|
|
||||||
case TUSB_EVENT_INTERFACE_CLOSE: // application tear-down
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case TUSB_EVENT_XFER_COMPLETE:
|
case TUSB_EVENT_XFER_COMPLETE:
|
||||||
osal_queue_send(queue_mouse_hdl, &usb_mouse_report);
|
osal_queue_send(queue_mouse_hdl, &usb_mouse_report);
|
||||||
tusbh_hid_mouse_get_report(dev_addr, (uint8_t*) &usb_mouse_report);
|
tusbh_hid_mouse_get_report(dev_addr, (uint8_t*) &usb_mouse_report);
|
||||||
|
@ -60,7 +60,12 @@
|
|||||||
|
|
||||||
//------------- hidh -------------//
|
//------------- hidh -------------//
|
||||||
void tusbh_hid_keyboard_isr(uint8_t dev_addr, tusb_event_t event) ATTR_WEAK;
|
void tusbh_hid_keyboard_isr(uint8_t dev_addr, tusb_event_t event) ATTR_WEAK;
|
||||||
|
void tusbh_hid_keyboard_mounted_isr(uint8_t dev_addr) ATTR_WEAK;
|
||||||
|
void tusbh_hid_keyboard_unmounted_isr(uint8_t dev_addr) ATTR_WEAK;
|
||||||
|
|
||||||
void tusbh_hid_mouse_isr(uint8_t dev_addr, tusb_event_t event) ATTR_WEAK;
|
void tusbh_hid_mouse_isr(uint8_t dev_addr, tusb_event_t event) ATTR_WEAK;
|
||||||
|
void tusbh_hid_mouse_mounted_isr(uint8_t dev_addr) ATTR_WEAK;
|
||||||
|
void tusbh_hid_mouse_unmounted_isr(uint8_t dev_addr) ATTR_WEAK;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -145,7 +145,7 @@ void test_keyboard_open_ok(void)
|
|||||||
|
|
||||||
usbh_control_xfer_subtask_StubWithCallback(stub_set_idle_request);
|
usbh_control_xfer_subtask_StubWithCallback(stub_set_idle_request);
|
||||||
hcd_pipe_open_ExpectAndReturn(dev_addr, p_kdb_endpoint_desc, TUSB_CLASS_HID, pipe_hdl);
|
hcd_pipe_open_ExpectAndReturn(dev_addr, p_kdb_endpoint_desc, TUSB_CLASS_HID, pipe_hdl);
|
||||||
tusbh_hid_keyboard_isr_Expect(dev_addr, TUSB_EVENT_INTERFACE_OPEN);
|
tusbh_hid_keyboard_mounted_isr_Expect(dev_addr);
|
||||||
|
|
||||||
//------------- Code Under TEST -------------//
|
//------------- Code Under TEST -------------//
|
||||||
TEST_ASSERT_EQUAL(TUSB_ERROR_NONE, hidh_open_subtask(dev_addr, p_kbd_interface_desc, &length));
|
TEST_ASSERT_EQUAL(TUSB_ERROR_NONE, hidh_open_subtask(dev_addr, p_kbd_interface_desc, &length));
|
||||||
|
@ -134,7 +134,7 @@ void test_mouse_open_ok(void)
|
|||||||
|
|
||||||
usbh_control_xfer_subtask_StubWithCallback(stub_set_idle_request);
|
usbh_control_xfer_subtask_StubWithCallback(stub_set_idle_request);
|
||||||
hcd_pipe_open_ExpectAndReturn(dev_addr, p_mouse_endpoint_desc, TUSB_CLASS_HID, pipe_hdl);
|
hcd_pipe_open_ExpectAndReturn(dev_addr, p_mouse_endpoint_desc, TUSB_CLASS_HID, pipe_hdl);
|
||||||
tusbh_hid_mouse_isr_Expect(dev_addr, TUSB_EVENT_INTERFACE_OPEN);
|
tusbh_hid_mouse_mounted_isr_Expect(dev_addr);
|
||||||
|
|
||||||
//------------- Code Under TEST -------------//
|
//------------- Code Under TEST -------------//
|
||||||
TEST_ASSERT_STATUS( hidh_open_subtask(dev_addr, p_mouse_interface_desc, &length));
|
TEST_ASSERT_STATUS( hidh_open_subtask(dev_addr, p_mouse_interface_desc, &length));
|
||||||
|
@ -257,9 +257,9 @@ tusb_error_t hidh_open_subtask(uint8_t dev_addr, tusb_descriptor_interface_t con
|
|||||||
if ( HID_PROTOCOL_KEYBOARD == p_interface_desc->bInterfaceProtocol)
|
if ( HID_PROTOCOL_KEYBOARD == p_interface_desc->bInterfaceProtocol)
|
||||||
{
|
{
|
||||||
SUBTASK_ASSERT_STATUS ( hidh_interface_open(dev_addr, p_interface_desc->bInterfaceNumber, p_endpoint_desc, &keyboard_data[dev_addr-1]) );
|
SUBTASK_ASSERT_STATUS ( hidh_interface_open(dev_addr, p_interface_desc->bInterfaceNumber, p_endpoint_desc, &keyboard_data[dev_addr-1]) );
|
||||||
if ( tusbh_hid_keyboard_isr )
|
if ( tusbh_hid_keyboard_mounted_isr )
|
||||||
{
|
{
|
||||||
tusbh_hid_keyboard_isr(dev_addr, TUSB_EVENT_INTERFACE_OPEN);
|
tusbh_hid_keyboard_mounted_isr(dev_addr);
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
#endif
|
#endif
|
||||||
@ -268,9 +268,9 @@ tusb_error_t hidh_open_subtask(uint8_t dev_addr, tusb_descriptor_interface_t con
|
|||||||
if ( HID_PROTOCOL_MOUSE == p_interface_desc->bInterfaceProtocol)
|
if ( HID_PROTOCOL_MOUSE == p_interface_desc->bInterfaceProtocol)
|
||||||
{
|
{
|
||||||
SUBTASK_ASSERT_STATUS ( hidh_interface_open(dev_addr, p_interface_desc->bInterfaceNumber, p_endpoint_desc, &mouse_data[dev_addr-1]) );
|
SUBTASK_ASSERT_STATUS ( hidh_interface_open(dev_addr, p_interface_desc->bInterfaceNumber, p_endpoint_desc, &mouse_data[dev_addr-1]) );
|
||||||
if (tusbh_hid_mouse_isr)
|
if (tusbh_hid_mouse_mounted_isr)
|
||||||
{
|
{
|
||||||
tusbh_hid_mouse_isr(dev_addr, TUSB_EVENT_INTERFACE_OPEN);
|
tusbh_hid_mouse_mounted_isr(dev_addr);
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
#endif
|
#endif
|
||||||
@ -324,10 +324,18 @@ void hidh_close(uint8_t dev_addr)
|
|||||||
{
|
{
|
||||||
#if TUSB_CFG_HOST_HID_KEYBOARD
|
#if TUSB_CFG_HOST_HID_KEYBOARD
|
||||||
hidh_interface_close(dev_addr, &keyboard_data[dev_addr-1]);
|
hidh_interface_close(dev_addr, &keyboard_data[dev_addr-1]);
|
||||||
|
if (tusbh_hid_keyboard_unmounted_isr)
|
||||||
|
{
|
||||||
|
tusbh_hid_keyboard_unmounted_isr(dev_addr);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if TUSB_CFG_HOST_HID_MOUSE
|
#if TUSB_CFG_HOST_HID_MOUSE
|
||||||
hidh_interface_close(dev_addr, &mouse_data[dev_addr-1]);
|
hidh_interface_close(dev_addr, &mouse_data[dev_addr-1]);
|
||||||
|
if( tusbh_hid_mouse_unmounted_isr )
|
||||||
|
{
|
||||||
|
tusbh_hid_mouse_unmounted_isr( dev_addr );
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if TUSB_CFG_HOST_HID_GENERIC
|
#if TUSB_CFG_HOST_HID_GENERIC
|
||||||
|
@ -64,6 +64,8 @@ tusb_error_t tusbh_hid_keyboard_get_report(uint8_t dev_addr, void * report) ATT
|
|||||||
tusb_interface_status_t tusbh_hid_keyboard_status(uint8_t dev_addr) ATTR_WARN_UNUSED_RESULT;
|
tusb_interface_status_t tusbh_hid_keyboard_status(uint8_t dev_addr) ATTR_WARN_UNUSED_RESULT;
|
||||||
//------------- Application Callback -------------//
|
//------------- Application Callback -------------//
|
||||||
void tusbh_hid_keyboard_isr(uint8_t dev_addr, tusb_event_t event) ATTR_WEAK;
|
void tusbh_hid_keyboard_isr(uint8_t dev_addr, tusb_event_t event) ATTR_WEAK;
|
||||||
|
void tusbh_hid_keyboard_mounted_isr(uint8_t dev_addr) ATTR_WEAK;
|
||||||
|
void tusbh_hid_keyboard_unmounted_isr(uint8_t dev_addr) ATTR_WEAK;
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// MOUSE Application API
|
// MOUSE Application API
|
||||||
@ -73,6 +75,8 @@ tusb_error_t tusbh_hid_mouse_get_report(uint8_t dev_addr, void* report) ATTR_WA
|
|||||||
tusb_interface_status_t tusbh_hid_mouse_status(uint8_t dev_addr) ATTR_WARN_UNUSED_RESULT;
|
tusb_interface_status_t tusbh_hid_mouse_status(uint8_t dev_addr) ATTR_WARN_UNUSED_RESULT;
|
||||||
//------------- Application Callback -------------//
|
//------------- Application Callback -------------//
|
||||||
void tusbh_hid_mouse_isr(uint8_t dev_addr, tusb_event_t event) ATTR_WEAK;
|
void tusbh_hid_mouse_isr(uint8_t dev_addr, tusb_event_t event) ATTR_WEAK;
|
||||||
|
void tusbh_hid_mouse_mounted_isr(uint8_t dev_addr) ATTR_WEAK;
|
||||||
|
void tusbh_hid_mouse_unmounted_isr(uint8_t dev_addr) ATTR_WEAK;
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// GENERIC Application API
|
// GENERIC Application API
|
||||||
|
@ -200,9 +200,6 @@ typedef enum {
|
|||||||
TUSB_EVENT_XFER_ERROR,
|
TUSB_EVENT_XFER_ERROR,
|
||||||
TUSB_EVENT_XFER_STALLED,
|
TUSB_EVENT_XFER_STALLED,
|
||||||
|
|
||||||
TUSB_EVENT_INTERFACE_OPEN,
|
|
||||||
TUSB_EVENT_INTERFACE_CLOSE,
|
|
||||||
|
|
||||||
TUSB_EVENT_BUS_RESET, // TODO refractor
|
TUSB_EVENT_BUS_RESET, // TODO refractor
|
||||||
TUSB_EVENT_SETUP_RECEIVED,
|
TUSB_EVENT_SETUP_RECEIVED,
|
||||||
}tusb_event_t;
|
}tusb_event_t;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user