summaryrefslogtreecommitdiff
path: root/tinyusb
diff options
context:
space:
mode:
authorhathach <[email protected]>2013-06-03 15:56:14 +0700
committerhathach <[email protected]>2013-06-03 15:56:14 +0700
commit9f9adca03b97874754075b9c1a4612c2be1e5f07 (patch)
tree2397037b16feb292b371a848dfe947f370624252 /tinyusb
parent52f18f37848615b9ebe8d749c16eea114b24f524 (diff)
add TUSB_CFG_PROUDCT_ID check
move USB_MAX_EP_NUM to device dependency - lpc43 --> 6 - lpc11/13 --> 5
Diffstat (limited to 'tinyusb')
-rw-r--r--tinyusb/class/hid_device.c123
-rw-r--r--tinyusb/core/std_descriptors.h2
-rw-r--r--tinyusb/device/dcd_nxp_romdriver.h12
-rw-r--r--tinyusb/device/romdriver/mw_usbd_core.h2
-rw-r--r--tinyusb/device/usbd.h3
-rw-r--r--tinyusb/tusb_option.h15
6 files changed, 81 insertions, 76 deletions
diff --git a/tinyusb/class/hid_device.c b/tinyusb/class/hid_device.c
index 958d7489e..f666b3519 100644
--- a/tinyusb/class/hid_device.c
+++ b/tinyusb/class/hid_device.c
@@ -74,14 +74,70 @@ ErrorCode_t HID_SetReport( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t
ErrorCode_t HID_EpIn_Hdlr (USBD_HANDLE_T hUsb, void* data, uint32_t event);
ErrorCode_t HID_EpOut_Hdlr (USBD_HANDLE_T hUsb, void* data, uint32_t event);
+
//--------------------------------------------------------------------+
-// IMPLEMENTATION
+// APPLICATION API
//--------------------------------------------------------------------+
+#if TUSB_CFG_DEVICE_HID_KEYBOARD
+tusb_error_t tusbd_hid_keyboard_send_report(tusb_keyboard_report_t *p_kbd_report)
+{
+// uint32_t start_time = systickGetSecondsActive();
+// while (bKeyChanged) // TODO blocking while previous key has yet sent - can use fifo to improve this
+// {
+// ASSERT_MESSAGE(systickGetSecondsActive() - start_time < 5, ERR_FAILED, "HID Keyboard Timeout");
+// }
+
+ if (bKeyChanged)
+ {
+ return TUSB_ERROR_FAILED;
+ }
+
+ ASSERT_PTR(p_kbd_report, TUSB_ERROR_FAILED);
+
+ hid_keyboard_report = *p_kbd_report;
+ bKeyChanged = true;
+
+ return TUSB_ERROR_NONE;
+}
+#endif
+
+#if TUSB_CFG_DEVICE_HID_MOUSE
+tusb_error_t tusbd_hid_mouse_send_report(tusb_mouse_report_t *p_mouse_report)
+{
+// uint32_t start_time = systickGetSecondsActive();
+// while (bMouseChanged) // TODO Block while previous key hasn't been sent - can use fifo to improve this
+// {
+// ASSERT_MESSAGE(systickGetSecondsActive() - start_time < 5, ERR_FAILED, "HID Mouse Timeout");
+// }
+ if (bMouseChanged)
+ {
+ return TUSB_ERROR_FAILED;
+ }
+
+ hid_mouse_report = *p_mouse_report;
+ bMouseChanged = true;
+
+ return TUSB_ERROR_NONE;
+}
+#endif
//--------------------------------------------------------------------+
// CLASS-USBH API (don't require to verify parameters)
//--------------------------------------------------------------------+
+tusb_error_t hidd_configured(USBD_HANDLE_T hUsb)
+{
+ #if TUSB_CFG_DEVICE_HID_KEYBOARD
+ ROM_API->hw->WriteEP(hUsb , HID_KEYBOARD_EP_IN , (uint8_t* ) &hid_keyboard_report , sizeof(tusb_keyboard_report_t) ); // initial packet for IN endpoint , will not work if omitted
+ #endif
+
+ #if TUSB_CFG_DEVICE_HID_MOUSE
+ ROM_API->hw->WriteEP(hUsb , HID_MOUSE_EP_IN , (uint8_t* ) &hid_mouse_report , sizeof(tusb_mouse_report_t) ); // initial packet for IN endpoint, will not work if omitted
+ #endif
+
+ return TUSB_ERROR_NONE;
+}
+
tusb_error_t hidd_init(tusb_descriptor_interface_t const * p_interface_desc, uint16_t *p_length)
{
uint8_t const *p_desc = (uint8_t const *) p_interface_desc;
@@ -153,73 +209,14 @@ tusb_error_t hidd_interface_init(tusb_descriptor_interface_t const *pIntfDesc, u
};
ASSERT( (pIntfDesc != NULL) && (pIntfDesc->bInterfaceClass == USB_DEVICE_CLASS_HUMAN_INTERFACE), ERR_FAILED);
-
ASSERT( LPC_OK == ROM_API->hid->init(romdriver_hdl, &hid_param), TUSB_ERROR_FAILED );
- /* update memory variables */
-// *mem_base += (*mem_size - hid_param.mem_size);
-// *mem_size = hid_param.mem_size;
-
return TUSB_ERROR_NONE;
}
-tusb_error_t hidd_configured(USBD_HANDLE_T hUsb)
-{
- #if TUSB_CFG_DEVICE_HID_KEYBOARD
- ROM_API->hw->WriteEP(hUsb , HID_KEYBOARD_EP_IN , (uint8_t* ) &hid_keyboard_report , sizeof(tusb_keyboard_report_t) ); // initial packet for IN endpoint , will not work if omitted
- #endif
-
- #if TUSB_CFG_DEVICE_HID_MOUSE
- ROM_API->hw->WriteEP(hUsb , HID_MOUSE_EP_IN , (uint8_t* ) &hid_mouse_report , sizeof(tusb_mouse_report_t) ); // initial packet for IN endpoint, will not work if omitted
- #endif
-
- return TUSB_ERROR_NONE;
-}
-
-#if TUSB_CFG_DEVICE_HID_KEYBOARD
-tusb_error_t tusbd_hid_keyboard_send_report(tusb_keyboard_report_t *p_kbd_report)
-{
-// uint32_t start_time = systickGetSecondsActive();
-// while (bKeyChanged) // TODO blocking while previous key has yet sent - can use fifo to improve this
-// {
-// ASSERT_MESSAGE(systickGetSecondsActive() - start_time < 5, ERR_FAILED, "HID Keyboard Timeout");
-// }
-
- if (bKeyChanged)
- {
- return TUSB_ERROR_FAILED;
- }
-
- ASSERT_PTR(p_kbd_report, TUSB_ERROR_FAILED);
-
- hid_keyboard_report = *p_kbd_report;
- bKeyChanged = true;
-
- return TUSB_ERROR_NONE;
-}
-#endif
-
-#if TUSB_CFG_DEVICE_HID_MOUSE
-tusb_error_t tusbd_hid_mouse_send_report(tusb_mouse_report_t *p_mouse_report)
-{
-// uint32_t start_time = systickGetSecondsActive();
-// while (bMouseChanged) // TODO Block while previous key hasn't been sent - can use fifo to improve this
-// {
-// ASSERT_MESSAGE(systickGetSecondsActive() - start_time < 5, ERR_FAILED, "HID Mouse Timeout");
-// }
-
- if (bMouseChanged)
- {
- return TUSB_ERROR_FAILED;
- }
-
- hid_mouse_report = *p_mouse_report;
- bMouseChanged = true;
-
- return TUSB_ERROR_NONE;
-}
-#endif
-
+//--------------------------------------------------------------------+
+// IMPLEMENTATION
+//--------------------------------------------------------------------+
ErrorCode_t HID_GetReport( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t** pBuffer, uint16_t* plength)
{
USB_HID_CTRL_T* pHidCtrl = (USB_HID_CTRL_T*) hHid;
diff --git a/tinyusb/core/std_descriptors.h b/tinyusb/core/std_descriptors.h
index 854bbe06f..249d31491 100644
--- a/tinyusb/core/std_descriptors.h
+++ b/tinyusb/core/std_descriptors.h
@@ -53,6 +53,8 @@
extern "C" {
#endif
+#define ENDPOINT_OUT_LOGICAL_TO_PHYSICAL(addr) (addr)
+#define ENDPOINT_IN_LOGICAL_TO_PHYSICAL(addr) ((addr) | 0x80)
#define STRING_LEN_BYTE2UNICODE(n) (2 + ((n)<<1))
//--------------------------------------------------------------------+
diff --git a/tinyusb/device/dcd_nxp_romdriver.h b/tinyusb/device/dcd_nxp_romdriver.h
index 4143805e7..e33c45186 100644
--- a/tinyusb/device/dcd_nxp_romdriver.h
+++ b/tinyusb/device/dcd_nxp_romdriver.h
@@ -47,22 +47,28 @@
#define _TUSB_DCD_NXP_ROMDRIVER_H_
#include "common/common.h"
-#include "romdriver/mw_usbd_rom_api.h"
#ifdef __cplusplus
extern "C" {
#endif
+
+#define USB_MAX_IF_NUM 8 // maximum interface number supported, should be fixed to 8
+
#if (MCU == MCU_LPC18XX) || (MCU == MCU_LPC43XX)
#include "dcd_lpc18xx_lpc43xx.h"
- #define ROM_API ( * ((USBD_API_T**) NXP_ROMDRIVER_FUNCTION_ADDR) )
+ #define ROM_API ( * ((USBD_API_T**) NXP_ROMDRIVER_FUNCTION_ADDR) )
+ #define USB_MAX_EP_NUM 6
#elif (MCU == MCU_LPC13UXX) || (MCU == MCU_LPC11UXX)
#include "dcd_lpc11uxx_lpc13xx.h"
- #define ROM_API ( * (*((USBD_API_T***) NXP_ROMDRIVER_FUNCTION_ADDR)) )
+ #define ROM_API ( * (*((USBD_API_T***) NXP_ROMDRIVER_FUNCTION_ADDR)) )
+ #define USB_MAX_EP_NUM 5
#else
#error forgot something, thach ?
#endif
+#include "romdriver/mw_usbd_rom_api.h"
+
extern USBD_HANDLE_T romdriver_hdl;
#ifdef __cplusplus
diff --git a/tinyusb/device/romdriver/mw_usbd_core.h b/tinyusb/device/romdriver/mw_usbd_core.h
index fa1995bcb..dddbbb51b 100644
--- a/tinyusb/device/romdriver/mw_usbd_core.h
+++ b/tinyusb/device/romdriver/mw_usbd_core.h
@@ -26,7 +26,7 @@
#include "error.h"
#include "mw_usbd.h"
-#include "tusb_option.h"
+#include "../dcd_nxp_romdriver.h"
/** \file
* \brief ROM API for USB device stack.
diff --git a/tinyusb/device/usbd.h b/tinyusb/device/usbd.h
index 8da6da229..4f5e53e0a 100644
--- a/tinyusb/device/usbd.h
+++ b/tinyusb/device/usbd.h
@@ -51,7 +51,10 @@
//--------------------------------------------------------------------+
#include "common/common.h"
#include "osal/osal.h" // TODO refractor move to common.h ?
+
+#ifdef _TINY_USB_SOURCE_FILE_
#include "dcd.h" // TODO hide from application include
+#endif
//#include "tusb_descriptors.h"
#ifdef __cplusplus
diff --git a/tinyusb/tusb_option.h b/tinyusb/tusb_option.h
index fefe4a2d7..add373a1f 100644
--- a/tinyusb/tusb_option.h
+++ b/tinyusb/tusb_option.h
@@ -167,9 +167,7 @@
#endif
-// TODO Device APP
-#define USB_MAX_IF_NUM 8
-#define USB_MAX_EP_NUM 5
+
#define USB_FS_MAX_BULK_PACKET 64
#define USB_HS_MAX_BULK_PACKET USB_FS_MAX_BULK_PACKET /* Full speed device only */
@@ -178,14 +176,13 @@
#define USB_MAX_PACKET0 64
/* HID In/Out Endpoint Address */
-#define HID_KEYBOARD_EP_IN USB_ENDPOINT_IN(1)
-//#define HID_KEYBOARD_EP_OUT USB_ENDPOINT_OUT(1)
-#define HID_MOUSE_EP_IN USB_ENDPOINT_IN(4)
+#define HID_KEYBOARD_EP_IN ENDPOINT_IN_LOGICAL_TO_PHYSICAL(1)
+#define HID_MOUSE_EP_IN ENDPOINT_IN_LOGICAL_TO_PHYSICAL(4)
/* CDC Endpoint Address */
-#define CDC_NOTIFICATION_EP USB_ENDPOINT_IN(2)
-#define CDC_DATA_EP_OUT USB_ENDPOINT_OUT(3)
-#define CDC_DATA_EP_IN USB_ENDPOINT_IN(3)
+#define CDC_NOTIFICATION_EP ENDPOINT_IN_LOGICAL_TO_PHYSICAL(2)
+#define CDC_DATA_EP_OUT ENDPOINT_OUT_LOGICAL_TO_PHYSICAL(3)
+#define CDC_DATA_EP_IN ENDPOINT_IN_LOGICAL_TO_PHYSICAL(3)
#define CDC_NOTIFICATION_EP_MAXPACKETSIZE 8
#define CDC_DATA_EP_MAXPACKET_SIZE 16