diff options
| author | hathach <[email protected]> | 2013-06-03 15:56:14 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2013-06-03 15:56:14 +0700 |
| commit | 9f9adca03b97874754075b9c1a4612c2be1e5f07 (patch) | |
| tree | 2397037b16feb292b371a848dfe947f370624252 /tinyusb/class | |
| parent | 52f18f37848615b9ebe8d749c16eea114b24f524 (diff) | |
add TUSB_CFG_PROUDCT_ID check
move USB_MAX_EP_NUM to device dependency
- lpc43 --> 6
- lpc11/13 --> 5
Diffstat (limited to 'tinyusb/class')
| -rw-r--r-- | tinyusb/class/hid_device.c | 123 |
1 files changed, 60 insertions, 63 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; |
