summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorhathach <[email protected]>2013-02-05 13:57:06 +0700
committerhathach <[email protected]>2013-02-05 13:57:06 +0700
commitaeccdfde3f4462fae5e3b9cbb4eae76526bdb204 (patch)
treeb70a35ec9335c085817aa11208b7e37a7c02fc91 /tests
parentaa040c4c984039ba9b5820aa15fd0264582bc207 (diff)
remove TUSB prefix for class enum definitions
add most of HID USAGE TABLE and definitions etc ...
Diffstat (limited to 'tests')
-rw-r--r--tests/test/host/test_hid_host_keyboard.c12
-rw-r--r--tests/test/host/test_usbh.c72
-rw-r--r--tests/test/support/descriptor_test.c159
-rw-r--r--tests/test/support/descriptor_test.h109
4 files changed, 307 insertions, 45 deletions
diff --git a/tests/test/host/test_hid_host_keyboard.c b/tests/test/host/test_hid_host_keyboard.c
index d0a93f691..888c216e6 100644
--- a/tests/test/host/test_hid_host_keyboard.c
+++ b/tests/test/host/test_hid_host_keyboard.c
@@ -46,12 +46,12 @@ extern class_hid_keyboard_info_t keyboard_info_pool[TUSB_CFG_HOST_DEVICE_MAX];
tusb_keyboard_report_t sample_key[2] =
{
{
- .modifier = TUSB_KEYBOARD_MODIFIER_LEFTCTRL,
- .keycode = {TUSB_KEYBOARD_KEYCODE_a}
+ .modifier = KEYBOARD_MODIFIER_LEFTCTRL,
+ .keycode = {KEYBOARD_KEYCODE_a}
},
{
- .modifier = TUSB_KEYBOARD_MODIFIER_RIGHTALT,
- .keycode = {TUSB_KEYBOARD_KEYCODE_z}
+ .modifier = KEYBOARD_MODIFIER_RIGHTALT,
+ .keycode = {KEYBOARD_KEYCODE_z}
}
};
@@ -78,8 +78,8 @@ void setUp(void)
.bAlternateSetting = 0,
.bNumEndpoints = 1,
.bInterfaceClass = TUSB_CLASS_HID,
- .bInterfaceSubClass = TUSB_HID_SUBCLASS_BOOT,
- .bInterfaceProtocol = TUSB_HID_PROTOCOL_KEYBOARD,
+ .bInterfaceSubClass = HID_SUBCLASS_BOOT,
+ .bInterfaceProtocol = HID_PROTOCOL_KEYBOARD,
.iInterface = 0
});
diff --git a/tests/test/host/test_usbh.c b/tests/test/host/test_usbh.c
index 432efc0d8..911756ede 100644
--- a/tests/test/host/test_usbh.c
+++ b/tests/test/host/test_usbh.c
@@ -38,6 +38,7 @@
#include "unity.h"
#include "errors.h"
#include "usbh.h"
+#include "descriptor_test.h"
#include "mock_osal.h"
#include "mock_hcd.h"
#include "mock_usbh_hcd.h"
@@ -128,6 +129,7 @@ usbh_enumerate_t enum_connect =
};
extern usbh_device_addr0_t device_addr0;
+
void queue_recv_stub (osal_queue_handle_t const queue_hdl, uint32_t *p_data, uint32_t msec, tusb_error_t *p_error, int num_call)
{
TEST_ASSERT_EQUAL_PTR(enum_queue_hdl, queue_hdl);
@@ -140,49 +142,32 @@ void semaphore_wait_stub(osal_semaphore_handle_t const sem_hdl, uint32_t msec, t
(*p_error) = TUSB_ERROR_NONE;
}
-tusb_error_t pipe_control_stub(pipe_handle_t pipe_hdl, const tusb_std_request_t * const p_request, uint8_t data[], int num_call)
+tusb_error_t get_device_desc_stub(pipe_handle_t pipe_hdl, const tusb_std_request_t * const p_request, uint8_t data[], int num_call)
{
- tusb_descriptor_device_t dev_desc =
- {
- .bLength = sizeof(tusb_descriptor_device_t),
- .bDescriptorType = TUSB_DESC_DEVICE,
- .bcdUSB = 0x0200,
- .bDeviceClass = 0x00,
- .bDeviceSubClass = 0x00,
- .bDeviceProtocol = 0x00,
+ TEST_ASSERT(num_call < 2);
+ TEST_ASSERT_EQUAL(TUSB_REQUEST_GET_DESCRIPTOR, p_request->bRequest);
+ TEST_ASSERT_EQUAL(TUSB_DESC_DEVICE, p_request->wValue >> 8);
- .bMaxPacketSize0 = 64,
+ memcpy(data, &desc_device, p_request->wLength);
- .idVendor = 0x1FC9,
- .idProduct = 0x4000,
- .bcdDevice = 0x0100,
-
- .iManufacturer = 0x01,
- .iProduct = 0x02,
- .iSerialNumber = 0x03,
+ return TUSB_ERROR_NONE;
+}
- .bNumConfigurations = 0x02
- };
+tusb_error_t set_device_addr_stub(pipe_handle_t pipe_hdl, const tusb_std_request_t * const p_request, uint8_t data[], int num_call)
+{
+ TEST_ASSERT_EQUAL(TUSB_REQUEST_SET_ADDRESS, p_request->bRequest);
+ TEST_ASSERT_EQUAL(p_request->wValue, 1);
+ return TUSB_ERROR_NONE;
+}
- switch (p_request->bRequest)
- {
- case TUSB_REQUEST_GET_DESCRIPTOR:
- switch (p_request->wValue >> 8)
- {
- case TUSB_DESC_DEVICE:
- memcpy(data, &dev_desc, p_request->wLength);
- break;
+tusb_error_t get_configuration_desc_stub(pipe_handle_t pipe_hdl, const tusb_std_request_t * const p_request, uint8_t data[], int num_call)
+{
+ TEST_ASSERT(num_call < 2);
- default:
- TEST_FAIL();
- break;
- }
- break;
+ TEST_ASSERT_EQUAL(TUSB_REQUEST_GET_DESCRIPTOR, p_request->bRequest);
+ TEST_ASSERT_EQUAL(TUSB_DESC_CONFIGURATION, p_request->wValue >> 8);
- case TUSB_REQUEST_SET_ADDRESS:
- TEST_ASSERT_EQUAL(p_request->wValue, 1);
- break;
- }
+ memcpy(data, &desc_device, p_request->wLength);
return TUSB_ERROR_NONE;
}
@@ -199,16 +184,15 @@ void test_enum_task_connect(void)
hcd_addr0_open_IgnoreAndReturn(TUSB_ERROR_NONE);
// get 8-byte of device descriptor
- hcd_pipe_control_xfer_StubWithCallback(pipe_control_stub);
+ hcd_pipe_control_xfer_StubWithCallback(get_device_desc_stub);
osal_semaphore_wait_StubWithCallback(semaphore_wait_stub);
// set device address
- hcd_pipe_control_xfer_StubWithCallback(pipe_control_stub);
+ hcd_pipe_control_xfer_StubWithCallback(set_device_addr_stub);
osal_semaphore_wait_StubWithCallback(semaphore_wait_stub);
hcd_addr0_close_IgnoreAndReturn(TUSB_ERROR_NONE);
}
-
usbh_enumeration_task();
TEST_ASSERT_EQUAL(TUSB_DEVICE_STATUS_ADDRESSED, usbh_device_info_pool[0].status);
@@ -217,6 +201,16 @@ void test_enum_task_connect(void)
TEST_ASSERT_EQUAL(enum_connect.hub_addr, usbh_device_info_pool[0].hub_addr);
TEST_ASSERT_EQUAL(enum_connect.hub_port, usbh_device_info_pool[0].hub_port);
+ hcd_pipe_control_open_ExpectAndReturn(1, desc_device.bMaxPacketSize0, TUSB_ERROR_NONE);
+
+ hcd_pipe_control_xfer_StubWithCallback(get_device_desc_stub); // get full device descriptor
+ osal_semaphore_wait_StubWithCallback(semaphore_wait_stub);
+
+ hcd_pipe_control_xfer_StubWithCallback(get_configuration_desc_stub); // get 9 bytes of configuration descriptor
+ osal_semaphore_wait_StubWithCallback(semaphore_wait_stub);
+
+ hcd_pipe_control_xfer_StubWithCallback(get_configuration_desc_stub); // get full-length configuration descriptor
+ osal_semaphore_wait_StubWithCallback(semaphore_wait_stub);
}
void test_enum_task_disconnect(void)
diff --git a/tests/test/support/descriptor_test.c b/tests/test/support/descriptor_test.c
new file mode 100644
index 000000000..bbc5c72c6
--- /dev/null
+++ b/tests/test/support/descriptor_test.c
@@ -0,0 +1,159 @@
+/*
+ * descriptor_test.c
+ *
+ * Created on: Feb 5, 2013
+ * Author: hathach
+ */
+
+/*
+ * Software License Agreement (BSD License)
+ * Copyright (c) 2012, hathach (tinyusb.net)
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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 tiny usb stack.
+ */
+
+#include "tusb_option.h"
+#include "descriptor_test.h"
+
+TUSB_CFG_ATTR_USBRAM ATTR_ALIGNED(4)
+tusb_descriptor_device_t desc_device =
+{
+ .bLength = sizeof(tusb_descriptor_device_t),
+ .bDescriptorType = TUSB_DESC_DEVICE,
+ .bcdUSB = 0x0200,
+ .bDeviceClass = 0x00,
+ .bDeviceSubClass = 0x00,
+ .bDeviceProtocol = 0x00,
+
+ .bMaxPacketSize0 = 64,
+
+ .idVendor = 0x1FC9,
+ .idProduct = 0x4000,
+ .bcdDevice = 0x0100,
+
+ .iManufacturer = 0x01,
+ .iProduct = 0x02,
+ .iSerialNumber = 0x03,
+
+ .bNumConfigurations = 0x02
+} ;
+//
+TUSB_CFG_ATTR_USBRAM ATTR_ALIGNED(4)
+const uint8_t keyboard_report_descriptor[] = {
+ HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ),
+ HID_USAGE ( HID_USAGE_DESKTOP_KEYBOARD ),
+ HID_COLLECTION ( HID_COLLECTION_APPLICATION ),
+ HID_USAGE_PAGE ( HID_USAGE_PAGE_KEYBOARD ),
+ HID_USAGE_MIN ( 224 ),
+ HID_USAGE_MAX ( 231 ),
+ HID_LOGICAL_MIN ( 0 ),
+ HID_LOGICAL_MAX ( 1 ),
+
+ HID_REPORT_COUNT ( 8 ), /* 8 bits */
+ HID_REPORT_SIZE ( 1 ),
+ HID_INPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ), /* maskable modifier key */
+
+ HID_REPORT_COUNT ( 1 ),
+ HID_REPORT_SIZE ( 8 ),
+ HID_INPUT ( HID_CONSTANT ), /* reserved */
+
+ HID_USAGE_PAGE ( HID_USAGE_PAGE_LED ),
+ HID_USAGE_MIN ( 1 ),
+ HID_USAGE_MAX ( 5 ),
+ HID_REPORT_COUNT ( 5 ),
+ HID_REPORT_SIZE ( 1 ),
+ HID_OUTPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ), /* 5-bit Led report */
+
+ HID_REPORT_COUNT ( 1 ),
+ HID_REPORT_SIZE ( 3 ), /* led padding */
+ HID_OUTPUT ( HID_CONSTANT ),
+
+ HID_USAGE_PAGE (HID_USAGE_PAGE_KEYBOARD),
+ HID_USAGE_MIN ( 0 ),
+ HID_USAGE_MAX ( 101 ),
+ HID_LOGICAL_MIN ( 0 ),
+ HID_LOGICAL_MAX ( 101 ),
+
+ HID_REPORT_COUNT ( 6 ),
+ HID_REPORT_SIZE ( 8 ),
+ HID_INPUT ( HID_DATA | HID_ARRAY | HID_ABSOLUTE ), /* keycodes array 6 items */
+ HID_COLLECTION_END
+};
+
+TUSB_CFG_ATTR_USBRAM ATTR_ALIGNED(4)
+const app_configuration_desc_t desc_configuration =
+{
+ .configuration =
+ {
+ .bLength = sizeof(tusb_descriptor_configuration_t),
+ .bDescriptorType = TUSB_DESC_CONFIGURATION,
+
+ .wTotalLength = sizeof(app_configuration_desc_t) - 1, // exclude termination
+ .bNumInterfaces = 1,
+
+ .bConfigurationValue = 1,
+ .iConfiguration = 0x00,
+ .bmAttributes = TUSB_DESC_CONFIG_ATT_BUS_POWER,
+ .bMaxPower = TUSB_DESC_CONFIG_POWER_MA(100)
+ },
+
+ ///// USB HID Keyboard interface
+ .keyboard_interface =
+ {
+ .bLength = sizeof(tusb_descriptor_interface_t),
+ .bDescriptorType = TUSB_DESC_INTERFACE,
+ .bInterfaceNumber = 1,
+ .bAlternateSetting = 0x00,
+ .bNumEndpoints = 1,
+ .bInterfaceClass = TUSB_CLASS_HID,
+ .bInterfaceSubClass = HID_SUBCLASS_BOOT,
+ .bInterfaceProtocol = HID_PROTOCOL_KEYBOARD,
+ .iInterface = 0x00
+ },
+
+ .keyboard_hid =
+ {
+ .bLength = sizeof(tusb_hid_descriptor_hid_t),
+ .bDescriptorType = HID_DESC_HID,
+ .bcdHID = 0x0111,
+ .bCountryCode = HID_Local_NotSupported,
+ .bNumDescriptors = 1,
+ .bReportType = HID_DESC_REPORT,
+ .wReportLength = sizeof(keyboard_report_descriptor)
+ },
+
+ .keyboard_endpoint =
+ {
+ .bLength = sizeof(tusb_descriptor_endpoint_t),
+ .bDescriptorType = TUSB_DESC_ENDPOINT,
+ .bEndpointAddress = 0x81,
+ .bmAttributes = { .xfer = TUSB_XFER_INTERRUPT },
+ .wMaxPacketSize = 0x08,
+ .bInterval = 0x0A
+ },
+
+ .ConfigDescTermination = 0,
+};
diff --git a/tests/test/support/descriptor_test.h b/tests/test/support/descriptor_test.h
new file mode 100644
index 000000000..71f6351c9
--- /dev/null
+++ b/tests/test/support/descriptor_test.h
@@ -0,0 +1,109 @@
+/*
+ * descriptor_test.h
+ *
+ * Created on: Feb 5, 2013
+ * Author: hathach
+ */
+
+/*
+ * Software License Agreement (BSD License)
+ * Copyright (c) 2012, hathach (tinyusb.net)
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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 tiny usb stack.
+ */
+
+/** \file
+ * \brief TBD
+ *
+ * \note TBD
+ */
+
+/** \ingroup TBD
+ * \defgroup TBD
+ * \brief TBD
+ *
+ * @{
+ */
+
+#ifndef _TUSB_TEST_DESCRIPTOR_H_
+#define _TUSB_TEST_DESCRIPTOR_H_
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "common/common.h"
+#include "class/hid.h"
+
+typedef struct
+{
+ tusb_descriptor_configuration_t configuration;
+
+#if 0 //&& IAD_DESC_REQUIRED
+ tusb_descriptor_interface_association_t CDC_IAD;
+#endif
+
+#if 0 //&& TUSB_CFG_DEVICE_CDC
+ //CDC - Serial
+ //CDC Control Interface
+ tusb_descriptor_interface_t CDC_CCI_Interface;
+ CDC_HEADER_DESCRIPTOR CDC_Header;
+ CDC_ABSTRACT_CONTROL_MANAGEMENT_DESCRIPTOR CDC_ACM;
+ CDC_UNION_1SLAVE_DESCRIPTOR CDC_Union;
+ tusb_descriptor_endpoint_t CDC_NotificationEndpoint;
+
+ //CDC Data Interface
+ tusb_descriptor_interface_t CDC_DCI_Interface;
+ tusb_descriptor_endpoint_t CDC_DataOutEndpoint;
+ tusb_descriptor_endpoint_t CDC_DataInEndpoint;
+#endif
+
+#if 1 // || TUSB_CFG_DEVICE_HID_KEYBOARD
+ //Keyboard HID Interface
+ tusb_descriptor_interface_t keyboard_interface;
+ tusb_hid_descriptor_hid_t keyboard_hid;
+ tusb_descriptor_endpoint_t keyboard_endpoint;
+#endif
+
+#if 0 // && TUSB_CFG_DEVICE_HID_MOUSE
+ //Mouse HID Interface
+ tusb_descriptor_interface_t HID_MouseInterface;
+ HID_DESCRIPTOR HID_MouseHID;
+ tusb_descriptor_endpoint_t HID_MouseEndpoint;
+#endif
+
+ unsigned char ConfigDescTermination;
+} app_configuration_desc_t;
+
+extern tusb_descriptor_device_t desc_device;
+
+#ifdef __cplusplus
+ }
+#endif
+
+#endif /* _TUSB_TEST_DESCRIPTOR_H_ */
+
+/** @} */