diff options
| author | hathach <[email protected]> | 2013-09-20 16:20:28 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2013-09-20 16:20:28 +0700 |
| commit | 52ae0afeb6dc781b82e6e71b864a02184eaf62bf (patch) | |
| tree | a656445a06f5274625145359396824eccf2a461d | |
| parent | d8907c9a2bec155858ae4e5c04dfac60e339418d (diff) | |
refine hid host driver
| -rw-r--r-- | demos/bsp/boards/embedded_artists/board_ea4357.h | 4 | ||||
| -rw-r--r-- | demos/host/host_freertos/host_freertos.uvopt | 14 | ||||
| -rw-r--r-- | demos/host/host_os_none/host_os_none.uvopt | 26 | ||||
| -rw-r--r-- | demos/host/src/tusb_config.h | 2 | ||||
| -rw-r--r-- | tests/lpc18xx_43xx/test/host/usbh/test_enum_task.c | 2 | ||||
| -rw-r--r-- | tests/support/tusb_config.h | 2 | ||||
| -rw-r--r-- | tinyusb/class/hid.h | 5 | ||||
| -rw-r--r-- | tinyusb/class/hid_host.c | 55 | ||||
| -rw-r--r-- | tinyusb/host/usbh.c | 4 |
9 files changed, 53 insertions, 61 deletions
diff --git a/demos/bsp/boards/embedded_artists/board_ea4357.h b/demos/bsp/boards/embedded_artists/board_ea4357.h index 0cef17358..138e6e199 100644 --- a/demos/bsp/boards/embedded_artists/board_ea4357.h +++ b/demos/bsp/boards/embedded_artists/board_ea4357.h @@ -66,8 +66,8 @@ #include "oem_base_board/pca9532.h" // LEDs -//#define CFG_PRINTF_TARGET PRINTF_TARGET_SWO -#define CFG_PRINTF_TARGET PRINTF_TARGET_UART +#define CFG_PRINTF_TARGET PRINTF_TARGET_SWO +//#define CFG_PRINTF_TARGET PRINTF_TARGET_UART /*========================================================================= HARDWARE MAC ADDRESS diff --git a/demos/host/host_freertos/host_freertos.uvopt b/demos/host/host_freertos/host_freertos.uvopt index 83d554cf5..39a67a860 100644 --- a/demos/host/host_freertos/host_freertos.uvopt +++ b/demos/host/host_freertos/host_freertos.uvopt @@ -331,7 +331,7 @@ <Focus>0</Focus> <ColumnNumber>0</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> - <TopLine>96</TopLine> + <TopLine>97</TopLine> <CurrentLine>102</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\src\main.c</PathWithFileName> @@ -379,8 +379,8 @@ <Focus>0</Focus> <ColumnNumber>0</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> - <TopLine>41</TopLine> - <CurrentLine>50</CurrentLine> + <TopLine>43</TopLine> + <CurrentLine>55</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\src\mouse_app.c</PathWithFileName> <FilenameWithoutPath>mouse_app.c</FilenameWithoutPath> @@ -833,9 +833,9 @@ <FileType>1</FileType> <tvExp>0</tvExp> <Focus>0</Focus> - <ColumnNumber>51</ColumnNumber> + <ColumnNumber>52</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> - <TopLine>348</TopLine> + <TopLine>349</TopLine> <CurrentLine>355</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\..\bsp\lpc43xx\CMSIS_LPC43xx_DriverLib\src\lpc43xx_uart.c</PathWithFileName> @@ -939,7 +939,7 @@ <Focus>0</Focus> <ColumnNumber>0</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> - <TopLine>149</TopLine> + <TopLine>150</TopLine> <CurrentLine>151</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\..\bsp\lpc43xx\startup_keil\startup_LPC43xx.s</PathWithFileName> @@ -1075,7 +1075,7 @@ <Focus>0</Focus> <ColumnNumber>27</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> - <TopLine>22</TopLine> + <TopLine>23</TopLine> <CurrentLine>29</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\..\..\vendor\freertos\freertos\Source\portable\RVDS\ARM_CM4F\port.c</PathWithFileName> diff --git a/demos/host/host_os_none/host_os_none.uvopt b/demos/host/host_os_none/host_os_none.uvopt index 2fcf8cbe9..45db11ebb 100644 --- a/demos/host/host_os_none/host_os_none.uvopt +++ b/demos/host/host_os_none/host_os_none.uvopt @@ -392,10 +392,10 @@ <FileType>1</FileType> <tvExp>0</tvExp> <Focus>0</Focus> - <ColumnNumber>0</ColumnNumber> + <ColumnNumber>54</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> - <TopLine>170</TopLine> - <CurrentLine>175</CurrentLine> + <TopLine>171</TopLine> + <CurrentLine>191</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\src\main.c</PathWithFileName> <FilenameWithoutPath>main.c</FilenameWithoutPath> @@ -426,7 +426,7 @@ <Focus>0</Focus> <ColumnNumber>20</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> - <TopLine>117</TopLine> + <TopLine>120</TopLine> <CurrentLine>129</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\src\keyboard_app.c</PathWithFileName> @@ -442,7 +442,7 @@ <Focus>0</Focus> <ColumnNumber>0</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> - <TopLine>119</TopLine> + <TopLine>122</TopLine> <CurrentLine>131</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\src\mouse_app.c</PathWithFileName> @@ -498,7 +498,7 @@ <Focus>0</Focus> <ColumnNumber>2</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> - <TopLine>138</TopLine> + <TopLine>139</TopLine> <CurrentLine>146</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\..\bsp\boards\embedded_artists\board_ea4357.c</PathWithFileName> @@ -514,7 +514,7 @@ <Focus>0</Focus> <ColumnNumber>1</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> - <TopLine>100</TopLine> + <TopLine>101</TopLine> <CurrentLine>106</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\..\bsp\boards\printf_retarget.c</PathWithFileName> @@ -712,10 +712,10 @@ <FileType>1</FileType> <tvExp>0</tvExp> <Focus>0</Focus> - <ColumnNumber>30</ColumnNumber> + <ColumnNumber>0</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> <TopLine>1</TopLine> - <CurrentLine>21</CurrentLine> + <CurrentLine>1</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\..\..\tinyusb\host\usbh.c</PathWithFileName> <FilenameWithoutPath>usbh.c</FilenameWithoutPath> @@ -730,7 +730,7 @@ <Focus>0</Focus> <ColumnNumber>47</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> - <TopLine>1</TopLine> + <TopLine>4</TopLine> <CurrentLine>13</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\..\..\tinyusb\host\ehci\ehci.c</PathWithFileName> @@ -778,7 +778,7 @@ <Focus>0</Focus> <ColumnNumber>8</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> - <TopLine>58</TopLine> + <TopLine>68</TopLine> <CurrentLine>77</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\..\..\tinyusb\hal\hal_lpc43xx.c</PathWithFileName> @@ -842,7 +842,7 @@ <Focus>0</Focus> <ColumnNumber>28</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> - <TopLine>15</TopLine> + <TopLine>23</TopLine> <CurrentLine>32</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\..\..\tinyusb\class\cdc_host.c</PathWithFileName> @@ -1002,7 +1002,7 @@ <Focus>0</Focus> <ColumnNumber>0</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> - <TopLine>145</TopLine> + <TopLine>146</TopLine> <CurrentLine>151</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\..\bsp\lpc43xx\startup_keil\startup_LPC43xx.s</PathWithFileName> diff --git a/demos/host/src/tusb_config.h b/demos/host/src/tusb_config.h index dba30c76c..215a77cbc 100644 --- a/demos/host/src/tusb_config.h +++ b/demos/host/src/tusb_config.h @@ -69,7 +69,7 @@ #define TUSB_CFG_CONFIGURATION_MAX 1 //------------- USBD -------------// -#define TUSB_CFG_HOST_ENUM_BUFFER_SIZE 256 +#define TUSB_CFG_HOST_ENUM_BUFFER_SIZE 255 //------------- CLASS -------------// #define TUSB_CFG_HOST_HUB 0 diff --git a/tests/lpc18xx_43xx/test/host/usbh/test_enum_task.c b/tests/lpc18xx_43xx/test/host/usbh/test_enum_task.c index e5c928efc..b6e9877c2 100644 --- a/tests/lpc18xx_43xx/test/host/usbh/test_enum_task.c +++ b/tests/lpc18xx_43xx/test/host/usbh/test_enum_task.c @@ -153,7 +153,7 @@ tusb_error_t control_xfer_stub(uint8_t dev_addr, const tusb_control_request_t * case 4: // get full-length configuration descriptor TEST_ASSERT_EQUAL(TUSB_REQUEST_GET_DESCRIPTOR, p_request->bRequest); TEST_ASSERT_EQUAL(TUSB_DESC_TYPE_CONFIGURATION, p_request->wValue >> 8); - TEST_ASSERT_EQUAL(desc_configuration.configuration.wTotalLength, p_request->wLength); + TEST_ASSERT_EQUAL(TUSB_CFG_HOST_ENUM_BUFFER_SIZE, p_request->wLength); memcpy(data, &desc_configuration, p_request->wLength); break; diff --git a/tests/support/tusb_config.h b/tests/support/tusb_config.h index 4b4c83b4e..e9c7b92a4 100644 --- a/tests/support/tusb_config.h +++ b/tests/support/tusb_config.h @@ -69,7 +69,7 @@ #define TUSB_CFG_HOST_DEVICE_MAX 2 #define TUSB_CFG_CONFIGURATION_MAX 2 -#define TUSB_CFG_HOST_ENUM_BUFFER_SIZE 256 +#define TUSB_CFG_HOST_ENUM_BUFFER_SIZE 255 //------------- CLASS -------------// #define TUSB_CFG_HOST_HID_KEYBOARD 1 diff --git a/tinyusb/class/hid.h b/tinyusb/class/hid.h index 06374e035..e68d1596f 100644 --- a/tinyusb/class/hid.h +++ b/tinyusb/class/hid.h @@ -104,8 +104,9 @@ typedef ATTR_PREPACKED struct ATTR_PACKED { typedef ATTR_PACKED_STRUCT(struct) { 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. */ + int8_t x; /**< Current delta x movement of the mouse. */ + int8_t y; /**< Current delta y movement on the mouse. */ + int8_t wheel; /**< Current delta wheel movement on the mouse. */ } tusb_mouse_report_t; /** diff --git a/tinyusb/class/hid_host.c b/tinyusb/class/hid_host.c index ddcbb57fa..60e0ab6d3 100644 --- a/tinyusb/class/hid_host.c +++ b/tinyusb/class/hid_host.c @@ -197,7 +197,10 @@ void hidh_init(void) #endif } -//uint8_t report_descriptor[256] TUSB_CFG_ATTR_USBRAM; +#if 0 +uint8_t report_descriptor[256] TUSB_CFG_ATTR_USBRAM; +#endif + tusb_error_t hidh_open_subtask(uint8_t dev_addr, tusb_descriptor_interface_t const *p_interface_desc, uint16_t *p_length) { tusb_error_t error; @@ -215,41 +218,29 @@ tusb_error_t hidh_open_subtask(uint8_t dev_addr, tusb_descriptor_interface_t con OSAL_SUBTASK_BEGIN +#if 0 //------------- SET IDLE request -------------// // TODO this request can be stalled by device (indicate not supported), // until we have clear stall handler, temporarily disable it. -// OSAL_SUBTASK_INVOKED_AND_WAIT( -// usbh_control_xfer_subtask( -// dev_addr, -// &(tusb_control_request_t) -// { -// .bmRequestType = { .direction = TUSB_DIR_HOST_TO_DEV, .type = TUSB_REQUEST_TYPE_CLASS, .recipient = TUSB_REQUEST_RECIPIENT_INTERFACE }, -// .bRequest = HID_REQUEST_CONTROL_SET_IDLE, -// .wValue = 0, -// .wIndex = p_interface_desc->bInterfaceNumber -// }, -// NULL ), -// error -// ); - - //------------- TODO skip Get Report Descriptor -------------// -// memclr_(report_descriptor, 256); + OSAL_SUBTASK_INVOKED_AND_WAIT( + usbh_control_xfer_subtask( dev_addr, bm_request_type(TUSB_DIR_HOST_TO_DEV, TUSB_REQUEST_TYPE_CLASS, TUSB_REQUEST_RECIPIENT_INTERFACE), + HID_REQUEST_CONTROL_SET_IDLE, 0, p_interface_desc->bInterfaceNumber, + 0, NULL ), + error + ); -// OSAL_SUBTASK_INVOKED_AND_WAIT( -// usbh_control_xfer_subtask( -// dev_addr, -// &(tusb_control_request_t) -// { -// .bmRequestType = { .direction = TUSB_DIR_DEV_TO_HOST, .type = TUSB_REQUEST_TYPE_STANDARD, .recipient = TUSB_REQUEST_RECIPIENT_INTERFACE }, -// .bRequest = TUSB_REQUEST_GET_DESCRIPTOR, -// .wValue = HID_DESC_TYPE_REPORT, -// .wIndex = p_interface_desc->bInterfaceNumber, -// .wLength = p_desc_hid->wReportLength, -// }, -// report_descriptor ), -// error -// ); -// uint8_t *p_report_desc = NULL; // report descriptor has to be global & in USB RAM + //------------- Get Report Descriptor TODO HID parser -------------// + if ( p_desc_hid->bNumDescriptors ) + { + OSAL_SUBTASK_INVOKED_AND_WAIT( + usbh_control_xfer_subtask( dev_addr, bm_request_type(TUSB_DIR_DEV_TO_HOST, TUSB_REQUEST_TYPE_STANDARD, TUSB_REQUEST_RECIPIENT_INTERFACE), + TUSB_REQUEST_GET_DESCRIPTOR, (p_desc_hid->bReportType << 8), 0, + p_desc_hid->wReportLength, report_descriptor ), + error + ); + // if error in getting report descriptor --> treating like there is none + } +#endif if ( HID_SUBCLASS_BOOT == p_interface_desc->bInterfaceSubClass ) { diff --git a/tinyusb/host/usbh.c b/tinyusb/host/usbh.c index ce0c047d9..3b9af5801 100644 --- a/tinyusb/host/usbh.c +++ b/tinyusb/host/usbh.c @@ -418,14 +418,14 @@ tusb_error_t enumeration_body_subtask(void) error ); SUBTASK_ASSERT_STATUS(error); - SUBTASK_ASSERT_WITH_HANDLER( TUSB_CFG_HOST_ENUM_BUFFER_SIZE > ((tusb_descriptor_configuration_t*)enum_data_buffer)->wTotalLength, + SUBTASK_ASSERT_WITH_HANDLER( TUSB_CFG_HOST_ENUM_BUFFER_SIZE >= ((tusb_descriptor_configuration_t*)enum_data_buffer)->wTotalLength, tusbh_device_mount_failed_cb(TUSB_ERROR_USBH_MOUNT_CONFIG_DESC_TOO_LONG, NULL) ); //------------- Get full configuration descriptor -------------// OSAL_SUBTASK_INVOKED_AND_WAIT( usbh_control_xfer_subtask( new_addr, bm_request_type(TUSB_DIR_DEV_TO_HOST, TUSB_REQUEST_TYPE_STANDARD, TUSB_REQUEST_RECIPIENT_DEVICE), TUSB_REQUEST_GET_DESCRIPTOR, (TUSB_DESC_TYPE_CONFIGURATION << 8) | (configure_selected - 1), 0, - ((tusb_descriptor_configuration_t*) enum_data_buffer)->wTotalLength, enum_data_buffer ), + TUSB_CFG_HOST_ENUM_BUFFER_SIZE, enum_data_buffer ), error ); SUBTASK_ASSERT_STATUS(error); |
