summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhathach <[email protected]>2013-07-03 12:46:12 +0700
committerhathach <[email protected]>2013-07-03 12:46:12 +0700
commit4a8686e86891b839f3e8483c8968aeba47463096 (patch)
tree1caab4935e18b014a9091efe22cc950ad7e606e0
parentb0f45b3651432c4d4c3072b2a900efbbbf6944a3 (diff)
adding _mounted_isr & _umounted_isr callback for host keyboard & mouse
remove TUSB_EVENT_INTERFACE_OPEN & TUSB_EVENT_INTERFACE_CLOSE
-rw-r--r--demos/host/src/keyboard_app.c21
-rw-r--r--demos/host/src/mouse_app.c21
-rw-r--r--tests/lpc18xx_43xx/test/host/cdc/test_cdc_host.c4
-rw-r--r--tests/lpc18xx_43xx/test/host/hid/hidh_callback.h5
-rw-r--r--tests/lpc18xx_43xx/test/host/hid/test_hidh_keyboard.c2
-rw-r--r--tests/lpc18xx_43xx/test/host/hid/test_hidh_mouse.c2
-rw-r--r--tinyusb/class/hid_host.c16
-rw-r--r--tinyusb/class/hid_host.h4
-rw-r--r--tinyusb/core/tusb_types.h3
9 files changed, 49 insertions, 29 deletions
diff --git a/demos/host/src/keyboard_app.c b/demos/host/src/keyboard_app.c
index 7475eb91c..ddd73fb97 100644
--- a/demos/host/src/keyboard_app.c
+++ b/demos/host/src/keyboard_app.c
@@ -67,19 +67,22 @@ static inline void process_kbd_report(tusb_keyboard_report_t const * report);
//--------------------------------------------------------------------+
// 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)
{
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:
osal_queue_send(queue_kbd_hdl, &usb_keyboard_report);
tusbh_hid_keyboard_get_report(dev_addr, (uint8_t*) &usb_keyboard_report);
diff --git a/demos/host/src/mouse_app.c b/demos/host/src/mouse_app.c
index 432004c2c..23a11f701 100644
--- a/demos/host/src/mouse_app.c
+++ b/demos/host/src/mouse_app.c
@@ -67,19 +67,22 @@ static inline void process_mouse_report(tusb_mouse_report_t const * p_report);
//--------------------------------------------------------------------+
// 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)
{
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:
osal_queue_send(queue_mouse_hdl, &usb_mouse_report);
tusbh_hid_mouse_get_report(dev_addr, (uint8_t*) &usb_mouse_report);
diff --git a/tests/lpc18xx_43xx/test/host/cdc/test_cdc_host.c b/tests/lpc18xx_43xx/test/host/cdc/test_cdc_host.c
index 9956a82f5..92534e9f9 100644
--- a/tests/lpc18xx_43xx/test/host/cdc/test_cdc_host.c
+++ b/tests/lpc18xx_43xx/test/host/cdc/test_cdc_host.c
@@ -244,7 +244,7 @@ void test_cdc_xfer_pipe_out(void)
{
pipe_handle_t pipe_notification = { .dev_addr = 1, .xfer_type = TUSB_XFER_INTERRUPT };
pipe_handle_t pipe_out = { .dev_addr = 1, .xfer_type = TUSB_XFER_BULK, .index = 0 };
- pipe_handle_t pipe_in = { .dev_addr = 1, .xfer_type = TUSB_XFER_BULK, .index = 1 };
+ pipe_handle_t pipe_in = { .dev_addr = 1, .xfer_type = TUSB_XFER_BULK, .index = 1 };
cdch_data[dev_addr-1].pipe_notification = pipe_notification;
cdch_data[dev_addr-1].pipe_out = pipe_out;
@@ -260,7 +260,7 @@ void test_cdc_xfer_pipe_in(void)
{
pipe_handle_t pipe_notification = { .dev_addr = 1, .xfer_type = TUSB_XFER_INTERRUPT };
pipe_handle_t pipe_out = { .dev_addr = 1, .xfer_type = TUSB_XFER_BULK, .index = 0 };
- pipe_handle_t pipe_in = { .dev_addr = 1, .xfer_type = TUSB_XFER_BULK, .index = 1 };
+ pipe_handle_t pipe_in = { .dev_addr = 1, .xfer_type = TUSB_XFER_BULK, .index = 1 };
cdch_data[dev_addr-1].pipe_notification = pipe_notification;
cdch_data[dev_addr-1].pipe_out = pipe_out;
diff --git a/tests/lpc18xx_43xx/test/host/hid/hidh_callback.h b/tests/lpc18xx_43xx/test/host/hid/hidh_callback.h
index 70da64695..9ac72bb8d 100644
--- a/tests/lpc18xx_43xx/test/host/hid/hidh_callback.h
+++ b/tests/lpc18xx_43xx/test/host/hid/hidh_callback.h
@@ -60,7 +60,12 @@
//------------- hidh -------------//
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_mounted_isr(uint8_t dev_addr) ATTR_WEAK;
+void tusbh_hid_mouse_unmounted_isr(uint8_t dev_addr) ATTR_WEAK;
#ifdef __cplusplus
}
diff --git a/tests/lpc18xx_43xx/test/host/hid/test_hidh_keyboard.c b/tests/lpc18xx_43xx/test/host/hid/test_hidh_keyboard.c
index 733c1ab73..4d80671f6 100644
--- a/tests/lpc18xx_43xx/test/host/hid/test_hidh_keyboard.c
+++ b/tests/lpc18xx_43xx/test/host/hid/test_hidh_keyboard.c
@@ -145,7 +145,7 @@ void test_keyboard_open_ok(void)
usbh_control_xfer_subtask_StubWithCallback(stub_set_idle_request);
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 -------------//
TEST_ASSERT_EQUAL(TUSB_ERROR_NONE, hidh_open_subtask(dev_addr, p_kbd_interface_desc, &length));
diff --git a/tests/lpc18xx_43xx/test/host/hid/test_hidh_mouse.c b/tests/lpc18xx_43xx/test/host/hid/test_hidh_mouse.c
index 88aa9351f..d64d70460 100644
--- a/tests/lpc18xx_43xx/test/host/hid/test_hidh_mouse.c
+++ b/tests/lpc18xx_43xx/test/host/hid/test_hidh_mouse.c
@@ -134,7 +134,7 @@ void test_mouse_open_ok(void)
usbh_control_xfer_subtask_StubWithCallback(stub_set_idle_request);
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 -------------//
TEST_ASSERT_STATUS( hidh_open_subtask(dev_addr, p_mouse_interface_desc, &length));
diff --git a/tinyusb/class/hid_host.c b/tinyusb/class/hid_host.c
index 13949c0d4..4b5a31f0c 100644
--- a/tinyusb/class/hid_host.c
+++ b/tinyusb/class/hid_host.c
@@ -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)
{
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
#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)
{
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
#endif
@@ -324,10 +324,18 @@ void hidh_close(uint8_t dev_addr)
{
#if TUSB_CFG_HOST_HID_KEYBOARD
hidh_interface_close(dev_addr, &keyboard_data[dev_addr-1]);
+ if (tusbh_hid_keyboard_unmounted_isr)
+ {
+ tusbh_hid_keyboard_unmounted_isr(dev_addr);
+ }
#endif
#if TUSB_CFG_HOST_HID_MOUSE
hidh_interface_close(dev_addr, &mouse_data[dev_addr-1]);
+ if( tusbh_hid_mouse_unmounted_isr )
+ {
+ tusbh_hid_mouse_unmounted_isr( dev_addr );
+ }
#endif
#if TUSB_CFG_HOST_HID_GENERIC
diff --git a/tinyusb/class/hid_host.h b/tinyusb/class/hid_host.h
index 510cbc950..7d5876990 100644
--- a/tinyusb/class/hid_host.h
+++ b/tinyusb/class/hid_host.h
@@ -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;
//------------- Application Callback -------------//
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
@@ -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;
//------------- Application Callback -------------//
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
diff --git a/tinyusb/core/tusb_types.h b/tinyusb/core/tusb_types.h
index 34a110523..4d4d976e1 100644
--- a/tinyusb/core/tusb_types.h
+++ b/tinyusb/core/tusb_types.h
@@ -200,9 +200,6 @@ typedef enum {
TUSB_EVENT_XFER_ERROR,
TUSB_EVENT_XFER_STALLED,
- TUSB_EVENT_INTERFACE_OPEN,
- TUSB_EVENT_INTERFACE_CLOSE,
-
TUSB_EVENT_BUS_RESET, // TODO refractor
TUSB_EVENT_SETUP_RECEIVED,
}tusb_event_t;