summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhathach <[email protected]>2013-11-06 19:55:48 +0700
committerhathach <[email protected]>2013-11-06 19:55:48 +0700
commit9171d106bccf79a47874d183504525e23d3be9ed (patch)
tree5626615d0d0e7a93d68efb7c72bc24ae699364cb
parent60d444b4521428511fdf7864c9c6e2193f5572b6 (diff)
added hid device hidd_isr callback
refractor keyboard dev demo app
-rw-r--r--demos/device/device_os_none/keyboardd_app.c84
-rw-r--r--demos/device/device_os_none/keyboardd_app.h74
-rw-r--r--demos/device/device_os_none/main.c24
-rw-r--r--demos/device/device_os_none/tusb_config.h4
-rw-r--r--readme.md9
-rw-r--r--tinyusb/class/hid_device.c19
-rw-r--r--tinyusb/class/hid_device.h4
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
//--------------------------------------------------------------------+
diff --git a/readme.md b/readme.md
index 1eac0f8fc..f173b43e7 100644
--- a/readme.md
+++ b/readme.md
@@ -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);
/** @} */
/** @} */