diff options
| author | hathach <[email protected]> | 2013-11-06 19:55:48 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2013-11-06 19:55:48 +0700 |
| commit | 9171d106bccf79a47874d183504525e23d3be9ed (patch) | |
| tree | 5626615d0d0e7a93d68efb7c72bc24ae699364cb | |
| parent | 60d444b4521428511fdf7864c9c6e2193f5572b6 (diff) | |
added hid device hidd_isr callback
refractor keyboard dev demo app
| -rw-r--r-- | demos/device/device_os_none/keyboardd_app.c | 84 | ||||
| -rw-r--r-- | demos/device/device_os_none/keyboardd_app.h | 74 | ||||
| -rw-r--r-- | demos/device/device_os_none/main.c | 24 | ||||
| -rw-r--r-- | demos/device/device_os_none/tusb_config.h | 4 | ||||
| -rw-r--r-- | readme.md | 9 | ||||
| -rw-r--r-- | tinyusb/class/hid_device.c | 19 | ||||
| -rw-r--r-- | tinyusb/class/hid_device.h | 4 |
7 files changed, 189 insertions, 29 deletions
diff --git a/demos/device/device_os_none/keyboardd_app.c b/demos/device/device_os_none/keyboardd_app.c new file mode 100644 index 000000000..a60e41194 --- /dev/null +++ b/demos/device/device_os_none/keyboardd_app.c @@ -0,0 +1,84 @@ +/**************************************************************************/
+/*!
+ @file keyboardd_app.c
+ @author hathach (tinyusb.org)
+
+ @section LICENSE
+
+ Software License Agreement (BSD License)
+
+ Copyright (c) 2013, hathach (tinyusb.org)
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. Neither the name of the copyright holders nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
+ EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This file is part of the tinyusb stack.
+*/
+/**************************************************************************/
+
+#include "keyboardd_app.h"
+
+#if TUSB_CFG_DEVICE_HID_KEYBOARD
+//--------------------------------------------------------------------+
+// INCLUDE
+//--------------------------------------------------------------------+
+
+//--------------------------------------------------------------------+
+// MACRO CONSTANT TYPEDEF
+//--------------------------------------------------------------------+
+hid_keyboard_report_t keyboard_report TUSB_CFG_ATTR_USBRAM;
+
+//--------------------------------------------------------------------+
+// INTERNAL OBJECT & FUNCTION DECLARATION
+//--------------------------------------------------------------------+
+
+//--------------------------------------------------------------------+
+// IMPLEMENTATION
+//--------------------------------------------------------------------+
+void tusbd_hid_keyboard_isr(uint8_t coreid, tusb_event_t event, uint32_t xferred_bytes)
+{
+
+}
+
+void keyboardd_app_init(void)
+{
+
+}
+
+OSAL_TASK_FUNCTION( keyboardd_app_task ) (void* p_task_para)
+{
+ if (tusbd_is_configured(0))
+ {
+ static uint32_t count =0;
+ if (count++ < 10)
+ {
+ if (!tusbd_hid_keyboard_is_busy(0))
+ {
+ keyboard_report.keycode[0] = (count%2) ? 0x04 : 0x00;
+ tusbd_hid_keyboard_send(0, &keyboard_report );
+ }
+ }
+ }
+}
+
+#endif
diff --git a/demos/device/device_os_none/keyboardd_app.h b/demos/device/device_os_none/keyboardd_app.h new file mode 100644 index 000000000..78d1fa6d6 --- /dev/null +++ b/demos/device/device_os_none/keyboardd_app.h @@ -0,0 +1,74 @@ +/**************************************************************************/
+/*!
+ @file keyboardd_app.h
+ @author hathach (tinyusb.org)
+
+ @section LICENSE
+
+ Software License Agreement (BSD License)
+
+ Copyright (c) 2013, hathach (tinyusb.org)
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. Neither the name of the copyright holders nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
+ EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This file is part of the tinyusb stack.
+*/
+/**************************************************************************/
+
+/** \ingroup TBD
+ * \defgroup TBD
+ * \brief TBD
+ *
+ * @{
+ */
+
+#ifndef _TUSB_KEYBOARDD_APP_H_
+#define _TUSB_KEYBOARDD_APP_H_
+
+#include "boards/board.h"
+#include "tusb.h"
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#if TUSB_CFG_DEVICE_HID_KEYBOARD
+
+void keyboardd_app_init(void);
+OSAL_TASK_FUNCTION( keyboardd_app_task ) (void* p_task_para);
+
+#else
+
+#define keyboardd_app_init()
+#define keyboardd_app_task(x)
+
+#endif
+
+#ifdef __cplusplus
+ }
+#endif
+
+#endif /* _TUSB_KEYBOARDD_APP_H_ */
+
+/** @} */
diff --git a/demos/device/device_os_none/main.c b/demos/device/device_os_none/main.c index 4d8e3a8ad..7b87bd12a 100644 --- a/demos/device/device_os_none/main.c +++ b/demos/device/device_os_none/main.c @@ -47,6 +47,7 @@ #include "tusb.h" #include "mscd_app.h" +#include "keyboardd_app.h" //--------------------------------------------------------------------+ // MACRO CONSTANT TYPEDEF @@ -75,7 +76,7 @@ void os_none_start_scheduler(void) led_blinking_task(NULL); #if TUSB_CFG_DEVICE_HID_KEYBOARD - keyboard_device_app_task(NULL); + keyboardd_app_task(NULL); #endif #if TUSB_CFG_DEVICE_HID_MOUSE @@ -96,7 +97,7 @@ int main(void) (void) osal_task_create( OSAL_TASK_REF(led_blinking_task) ); msc_dev_app_init(); - + keyboardd_app_init(); //------------- start OS scheduler (never return) -------------// #if TUSB_CFG_OS == TUSB_OS_FREERTOS @@ -150,25 +151,6 @@ int main(void) return 0; } -#if TUSB_CFG_DEVICE_HID_KEYBOARD -hid_keyboard_report_t keyboard_report TUSB_CFG_ATTR_USBRAM; -void keyboard_device_app_task(void * p_para) -{ - if (tusbd_is_configured(0)) - { - static uint32_t count =0; - if (count++ < 10) - { - if (!tusbd_hid_keyboard_is_busy(0)) - { - keyboard_report.keycode[0] = (count%2) ? 0x04 : 0x00; - tusbd_hid_keyboard_send(0, &keyboard_report ); - } - } - } -} -#endif - #if TUSB_CFG_DEVICE_HID_MOUSE hid_mouse_report_t mouse_report TUSB_CFG_ATTR_USBRAM; void mouse_device_app_task(void * p_para) diff --git a/demos/device/device_os_none/tusb_config.h b/demos/device/device_os_none/tusb_config.h index 183667a48..9f76468b6 100644 --- a/demos/device/device_os_none/tusb_config.h +++ b/demos/device/device_os_none/tusb_config.h @@ -95,10 +95,10 @@ #define TUSB_CFG_DEVICE_CONTROL_ENDOINT_SIZE 64
//------------- CLASS -------------//
-#define TUSB_CFG_DEVICE_HID_KEYBOARD 0
+#define TUSB_CFG_DEVICE_HID_KEYBOARD 1
#define TUSB_CFG_DEVICE_HID_MOUSE 0
#define TUSB_CFG_DEVICE_HID_GENERIC 0
-#define TUSB_CFG_DEVICE_MSC 1
+#define TUSB_CFG_DEVICE_MSC 0
#define TUSB_CFG_DEVICE_CDC 0
//--------------------------------------------------------------------+
@@ -26,7 +26,10 @@ designed to be simple and run out-of-the-box provided the configuration is corre ### Device ### -coming not so soon ... +- HID Mouse +- HID Keyboard +- Mass-Storage (MSC)
+- Communication Class (CDC) ... coming soon ### RTOS ### @@ -46,7 +49,7 @@ coming soon ... ## Supported MCUs ## -- NXP LPC18xx/LPC43xx family +- NXP LPC43xx family ## Supported Toolchains ## @@ -60,7 +63,7 @@ The following toolchain is supported this code base can run out of the box with the following boards -### NXP LPC18xx/LPC43xx ### +### NXP LPC43xx ### - [Embedded Artists LPC4357 OEM & Base board](http://www.embeddedartists.com/products/kits/lpc4357_kit.php) - [NGX Technologies LPC4330 Explorer](http://shop.ngxtechnologies.com/product_info.php?products_id=104) diff --git a/tinyusb/class/hid_device.c b/tinyusb/class/hid_device.c index cbb0bd61c..a82520fed 100644 --- a/tinyusb/class/hid_device.c +++ b/tinyusb/class/hid_device.c @@ -229,7 +229,24 @@ tusb_error_t hidd_open(uint8_t coreid, tusb_descriptor_interface_t const * p_int return TUSB_ERROR_NONE; } -void hidd_isr(endpoint_handle_t edpt_hdl, tusb_event_t event, uint32_t xferred_bytes); +void hidd_isr(endpoint_handle_t edpt_hdl, tusb_event_t event, uint32_t xferred_bytes) +{ +#if TUSB_CFG_DEVICE_HID_KEYBOARD + if ( endpointhandle_is_equal(edpt_hdl, keyboardd_data.ept_handle) ) + { + tusbd_hid_keyboard_isr(edpt_hdl.coreid, event, xferred_bytes); + return; + } +#endif + +#if TUSB_CFG_DEVICE_HID_MOUSE + if ( endpointhandle_is_equal(edpt_hdl, moused_data.ept_handle) ) + { + tusbd_hid_mouse_isr(edpt_hdl.coreid, event, xferred_bytes); + return; + } +#endif +} #if defined(CAP_DEVICE_ROMDRIVER) && TUSB_CFG_DEVICE_USE_ROM_DRIVER #include "device/dcd_nxp_romdriver.h" // TODO remove rom driver dependency diff --git a/tinyusb/class/hid_device.h b/tinyusb/class/hid_device.h index 89e912122..cd2ce7db6 100644 --- a/tinyusb/class/hid_device.h +++ b/tinyusb/class/hid_device.h @@ -87,7 +87,7 @@ tusb_error_t tusbd_hid_keyboard_send(uint8_t coreid, hid_keyboard_report_t const * - TUSB_EVENT_XFER_STALLED : previously scheduled transfer is stalled by device. * \note Application should schedule the next report by calling \ref tusbh_hid_keyboard_get_report within this callback */ -void tusbd_hid_keyboard_isr(uint8_t coreid, tusb_event_t event); +void tusbd_hid_keyboard_isr(uint8_t coreid, tusb_event_t event, uint32_t xferred_bytes); /** @} */ /** @} */ @@ -121,7 +121,7 @@ bool tusbd_hid_mouse_is_busy(uint8_t coreid); */ tusb_error_t tusbd_hid_mouse_send(uint8_t coreid, hid_mouse_report_t const *p_report); -void tusbd_hid_mouse_isr(uint8_t coreid, tusb_event_t event); +void tusbd_hid_mouse_isr(uint8_t coreid, tusb_event_t event, uint32_t xferred_bytes); /** @} */ /** @} */ |
