diff options
| author | hathach <[email protected]> | 2013-01-22 17:41:06 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2013-01-22 17:41:06 +0700 |
| commit | 38ce3f7534ec9e3e0b10b8923d7d17e437463e86 (patch) | |
| tree | 4eb3c2e065610c6b1dadc14a9c98e421041c5546 /tinyusb/class | |
| parent | cfe7a3d23b4639c3578b166fc865450bc439d82c (diff) | |
start to support
- usbd host
- osal
some global define
#define TUSB_CFG_HOST_CONTROLLER_NUM
#define TUSB_CFG_HOST_DEVICE_MAX
#define TUSB_CFG_CONFIGURATION_MAX
rename & refractor HID type structure & enum
use CException to test asssertion library
add test for hid_host_keyboard with usbd configure get & osal queue get stubs
update test for assertion library
refractor ASSERT_STATUS in assertion library
update tusb_error_t values
rename usb basic type & enum in tusb_types.h and std_descriptors.h
Diffstat (limited to 'tinyusb/class')
| -rw-r--r-- | tinyusb/class/cdc.c | 6 | ||||
| -rw-r--r-- | tinyusb/class/hid.c | 34 | ||||
| -rw-r--r-- | tinyusb/class/hid.h | 48 | ||||
| -rw-r--r-- | tinyusb/class/hid_host.c | 20 | ||||
| -rw-r--r-- | tinyusb/class/hid_host.h | 4 |
5 files changed, 66 insertions, 46 deletions
diff --git a/tinyusb/class/cdc.c b/tinyusb/class/cdc.c index 246e08d57..d6b0ec518 100644 --- a/tinyusb/class/cdc.c +++ b/tinyusb/class/cdc.c @@ -287,10 +287,10 @@ tusb_error_t tusb_cdc_init(USBD_HANDLE_T hUsb, USB_INTERFACE_DESCRIPTOR const *c ASSERT (pControlIntfDesc && pDataIntfDesc, ERR_FAILED); /* register Bulk IN & OUT endpoint interrupt handler */ - ASSERT ( LPC_OK == USBD_API->core->RegisterEpHandler (hUsb , ((CDC_DATA_EP_IN & 0x0F) << 1) +1 , CDC_BulkIn_Hdlr , NULL), tERROR_FAILED ); - ASSERT ( LPC_OK == USBD_API->core->RegisterEpHandler (hUsb , (CDC_DATA_EP_OUT & 0x0F) << 1 , CDC_BulkOut_Hdlr , NULL), tERROR_FAILED ); + ASSERT ( LPC_OK == USBD_API->core->RegisterEpHandler (hUsb , ((CDC_DATA_EP_IN & 0x0F) << 1) +1 , CDC_BulkIn_Hdlr , NULL), TUSB_ERROR_FAILED ); + ASSERT ( LPC_OK == USBD_API->core->RegisterEpHandler (hUsb , (CDC_DATA_EP_OUT & 0x0F) << 1 , CDC_BulkOut_Hdlr , NULL), TUSB_ERROR_FAILED ); - ASSERT ( LPC_OK == USBD_API->cdc->init(hUsb, &cdc_param, &g_hCdc), tERROR_FAILED); + ASSERT ( LPC_OK == USBD_API->cdc->init(hUsb, &cdc_param, &g_hCdc), TUSB_ERROR_FAILED); /* update memory variables */ *mem_base = cdc_param.mem_base; diff --git a/tinyusb/class/hid.c b/tinyusb/class/hid.c index 167d57b9d..9433fe17d 100644 --- a/tinyusb/class/hid.c +++ b/tinyusb/class/hid.c @@ -45,7 +45,7 @@ static volatile bool bKeyChanged = false; #endif #ifdef TUSB_CFG_DEVICE_HID_MOUSE -USB_HID_MouseReport_t hid_mouse_report; +tusb_mouse_report_t hid_mouse_report; static volatile bool bMouseChanged = false; #endif @@ -80,7 +80,7 @@ ErrorCode_t HID_GetReport( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t #ifdef TUSB_CFG_DEVICE_HID_MOUSE case HID_PROTOCOL_MOUSE: *pBuffer = (uint8_t*) &hid_mouse_report; - *plength = sizeof(USB_HID_MouseReport_t); + *plength = sizeof(tusb_mouse_report_t); if (!bMouseChanged) { @@ -142,9 +142,9 @@ ErrorCode_t HID_EpIn_Hdlr (USBD_HANDLE_T hUsb, void* data, uint32_t event) case HID_PROTOCOL_MOUSE: if (!bMouseChanged) { - memset(&hid_mouse_report, 0, sizeof(USB_HID_MouseReport_t)); + memset(&hid_mouse_report, 0, sizeof(tusb_mouse_report_t)); } - USBD_API->hw->WriteEP(hUsb, pHidCtrl->epin_adr, (uint8_t*) &hid_mouse_report, sizeof(USB_HID_MouseReport_t)); + USBD_API->hw->WriteEP(hUsb, pHidCtrl->epin_adr, (uint8_t*) &hid_mouse_report, sizeof(tusb_mouse_report_t)); bMouseChanged = false; break; #endif @@ -206,7 +206,7 @@ tusb_error_t tusb_hid_init(USBD_HANDLE_T hUsb, USB_INTERFACE_DESCRIPTOR const *c ASSERT( (pIntfDesc != NULL) && (pIntfDesc->bInterfaceClass == USB_DEVICE_CLASS_HUMAN_INTERFACE), ERR_FAILED); - ASSERT( LPC_OK == USBD_API->hid->init(hUsb, &hid_param), tERROR_FAILED ); + ASSERT( LPC_OK == USBD_API->hid->init(hUsb, &hid_param), TUSB_ERROR_FAILED ); /* update memory variables */ *mem_base += (*mem_size - hid_param.mem_size); @@ -227,7 +227,7 @@ tusb_error_t tusb_hid_configured(USBD_HANDLE_T hUsb) #endif #ifdef TUSB_CFG_DEVICE_HID_MOUSE - USBD_API->hw->WriteEP(hUsb , HID_MOUSE_EP_IN , (uint8_t* ) &hid_mouse_report , sizeof(USB_HID_MouseReport_t) ); // initial packet for IN endpoint, will not work if omitted + USBD_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; @@ -280,14 +280,14 @@ tusb_error_t tusb_hid_keyboard_sendKeys(uint8_t modifier, uint8_t keycodes[], ui if (bKeyChanged) { - return tERROR_FAILED; + return TUSB_ERROR_FAILED; } ASSERT(keycodes && numkey && numkey <=6, ERR_FAILED); - hid_keyboard_report.Modifier = modifier; - memset(hid_keyboard_report.KeyCode, 0, 6); - memcpy(hid_keyboard_report.KeyCode, keycodes, numkey); + hid_keyboard_report.modifier = modifier; + memset(hid_keyboard_report.keycode, 0, 6); + memcpy(hid_keyboard_report.keycode, keycodes, numkey); bKeyChanged = true; @@ -304,9 +304,9 @@ tusb_error_t tusb_hid_keyboard_sendKeys(uint8_t modifier, uint8_t keycodes[], ui Indicate which button(s) are being pressed (see USB_HID_MOUSE_BUTTON_CODE) @param[in] x - Position adjustment on the X scale + Position adjustment on the x scale @param[in] y - Position adjustment on the Y scale + Position adjustment on the y scale @section EXAMPLE @@ -314,7 +314,7 @@ tusb_error_t tusb_hid_keyboard_sendKeys(uint8_t modifier, uint8_t keycodes[], ui if (usb_isConfigured()) { - // Move the mouse +10 in the X direction and + 10 in the Y direction + // Move the mouse +10 in the x direction and + 10 in the y direction tusb_hid_mouse_send(0x00, 10, 10); } @@ -331,12 +331,12 @@ tusb_error_t tusb_hid_mouse_send(uint8_t buttons, int8_t x, int8_t y) if (bMouseChanged) { - return tERROR_FAILED; + return TUSB_ERROR_FAILED; } - hid_mouse_report.Button = buttons; - hid_mouse_report.X = x; - hid_mouse_report.Y = y; + hid_mouse_report.buttons = buttons; + hid_mouse_report.x = x; + hid_mouse_report.y = y; bMouseChanged = true; diff --git a/tinyusb/class/hid.h b/tinyusb/class/hid.h index 0add02bfc..f6848be6d 100644 --- a/tinyusb/class/hid.h +++ b/tinyusb/class/hid.h @@ -58,17 +58,17 @@ // TODO refractor #include "common/common.h" -/** \struct USB_HID_MouseReport_t +/** \struct tusb_mouse_report_t * \brief Standard HID Boot Protocol Mouse Report. * * Type define for a standard Boot Protocol Mouse report */ typedef ATTR_PREPACKED struct { - uint8_t Button; /**< Button mask for currently pressed buttons in the mouse. */ - int8_t X; /**< Current delta X movement of the mouse. */ - int8_t Y; /**< Current delta Y movement on the mouse. */ -} ATTR_PACKED USB_HID_MouseReport_t; + uint8_t buttons; /**< buttons mask for currently pressed buttons in the mouse. */ + int8_t x; /**< Current delta x movement of the mouse. */ + int8_t y; /**< Current delta y movement on the mouse. */ +} ATTR_PACKED tusb_mouse_report_t; /** \struct tusb_keyboard_report_t * \brief Standard HID Boot Protocol Keyboard Report. @@ -77,13 +77,13 @@ typedef ATTR_PREPACKED struct */ typedef ATTR_PREPACKED struct { - uint8_t Modifier; /**< Keyboard modifier byte, indicating pressed modifier keys (a combination of HID_KEYBOARD_MODIFER_* masks). */ - uint8_t Reserved; /**< Reserved for OEM use, always set to 0. */ - uint8_t KeyCode[6]; /**< Key codes of the currently pressed keys. */ + uint8_t modifier; /**< Keyboard modifier byte, indicating pressed modifier keys (a combination of HID_KEYBOARD_MODIFER_* masks). */ + uint8_t reserved; /**< Reserved for OEM use, always set to 0. */ + uint8_t keycode[6]; /**< Key codes of the currently pressed keys. */ } ATTR_PACKED tusb_keyboard_report_t; /** \enum USB_HID_MOUSE_BUTTON_CODE - * \brief Button codes for HID mouse + * \brief buttons codes for HID mouse */ enum USB_HID_MOUSE_BUTTON_CODE { @@ -95,16 +95,26 @@ enum USB_HID_MOUSE_BUTTON_CODE /** \enum USB_HID_KB_KEYMODIFIER_CODE * \brief KB modifier codes for HID KB */ -enum USB_HID_KB_KEYMODIFIER_CODE +enum TUSB_KEYBOARD_MODIFIER_CODE { - HID_KEYMODIFIER_LEFTCTRL = 0, - HID_KEYMODIFIER_LEFTSHIFT, - HID_KEYMODIFIER_LEFTALT, - HID_KEYMODIFIER_LEFTGUI, - HID_KEYMODIFIER_RIGHTCTRL, - HID_KEYMODIFIER_RIGHTSHIFT, - HID_KEYMODIFIER_RIGHTALT, - HID_KEYMODIFIER_RIGHTGUI + TUSB_KEYBOARD_MODIFIER_LEFTCTRL = BIN8(00000001), + TUSB_KEYBOARD_MODIFIER_LEFTSHIFT = BIN8(00000010), + TUSB_KEYBOARD_MODIFIER_LEFTALT = BIN8(00000100), + TUSB_KEYBOARD_MODIFIER_LEFTGUI = BIN8(00001000), + TUSB_KEYBOARD_MODIFIER_RIGHTCTRL = BIN8(00010000), + TUSB_KEYBOARD_MODIFIER_RIGHTSHIFT = BIN8(00100000), + TUSB_KEYBOARD_MODIFIER_RIGHTALT = BIN8(01000000), + TUSB_KEYBOARD_MODIFIER_RIGHTGUI = BIN8(10000000) +}; + +enum TUSB_KEYBOARD_KEYCODE +{ + TUSB_KEYBOARD_KEYCODE_a = 0x04, + TUSB_KEYBOARD_KEYCODE_z = 0x1d, + + TUSB_KEYBOARD_KEYCODE_1 = 0x1e, + TUSB_KEYBOARD_KEYCODE_0 = 0x27 + // TODO complete keycode table }; /** \enum USB_HID_LOCAL_CODE @@ -156,7 +166,7 @@ enum USB_HID_LOCAL_CODE #endif #ifdef TUSB_CFG_HOST - #include "host/hcd.h" + #include "host/usbd_host.h" #include "hid_host.h" #endif diff --git a/tinyusb/class/hid_host.c b/tinyusb/class/hid_host.c index 17b1aca0e..d0c3f13ea 100644 --- a/tinyusb/class/hid_host.c +++ b/tinyusb/class/hid_host.c @@ -39,12 +39,24 @@ #if defined DEVICE_CLASS_HID && defined TUSB_CFG_HOST -bool tusb_host_keyboard_get(tusb_interface_keyboard_handle_t const * const handle, tusb_keyboard_report_t * const report) +tusb_error_t tusbh_keyboard_get(tusb_handle_configure_t const config_hdl, tusb_keyboard_report_t * const report) { - ASSSERT_PTR(handle, false); - ASSSERT_PTR(report, false); + tusb_configure_info_t *p_cfg_info; - return true; + pipe_handle_t pipe_in; + osal_queue_id_t qid; + + ASSERT_PTR(report, TUSB_ERROR_INVALID_PARA); + ASSERT_STATUS( usbh_configure_info_get(config_hdl, &p_cfg_info) ); + + pipe_in = p_cfg_info->classes.hid_keyboard.pipe_in; + qid = p_cfg_info->classes.hid_keyboard.qid; + + ASSERT(0 != pipe_in, TUSB_ERROR_CLASS_DEVICE_DONT_SUPPORT); + ASSERT_STATUS( osal_queue_get(qid, (uint32_t*)report, OSAL_TIMEOUT_WAIT_FOREVER) ); + ASSERT_STATUS( osal_queue_get(qid, ((uint32_t*)report)+1, OSAL_TIMEOUT_WAIT_FOREVER) ); + + return TUSB_ERROR_NONE; } #endif diff --git a/tinyusb/class/hid_host.h b/tinyusb/class/hid_host.h index 856edff7c..d0dda7a93 100644 --- a/tinyusb/class/hid_host.h +++ b/tinyusb/class/hid_host.h @@ -57,9 +57,7 @@ #include "hid.h" -typedef uint32_t tusb_interface_keyboard_handle_t; - -bool tusb_host_keyboard_get(tusb_interface_keyboard_handle_t const * const handle, tusb_keyboard_report_t *report); +tusb_error_t tusbh_keyboard_get(tusb_handle_configure_t const handle, tusb_keyboard_report_t * const report); #ifdef __cplusplus } |
