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); /** @} */ /** @} */