mirror of
https://github.com/hathach/tinyusb.git
synced 2025-03-23 13:20:54 +00:00
add test for mouse_open
add hid descriptor for mouse & mouse interface to descriptor_test refractor extract function hidh_interface_status fix error with MACRO HID_REPORT_ITEM with zero data size --> redundant semicolon
This commit is contained in:
parent
3d8a4ef8c8
commit
10c08ab404
@ -47,6 +47,10 @@
|
|||||||
|
|
||||||
extern hidh_interface_info_t mouse_data[TUSB_CFG_HOST_DEVICE_MAX];
|
extern hidh_interface_info_t mouse_data[TUSB_CFG_HOST_DEVICE_MAX];
|
||||||
hidh_interface_info_t *p_hidh_mouse;
|
hidh_interface_info_t *p_hidh_mouse;
|
||||||
|
|
||||||
|
tusb_descriptor_interface_t const *p_mouse_interface_desc = &desc_configuration.mouse_interface;
|
||||||
|
tusb_descriptor_endpoint_t const *p_mouse_endpoint_desc = &desc_configuration.mouse_endpoint;
|
||||||
|
|
||||||
uint8_t dev_addr;
|
uint8_t dev_addr;
|
||||||
|
|
||||||
void setUp(void)
|
void setUp(void)
|
||||||
@ -77,6 +81,7 @@ void test_mouse_init(void)
|
|||||||
TEST_ASSERT_MEM_ZERO(mouse_data, sizeof(hidh_interface_info_t)*TUSB_CFG_HOST_DEVICE_MAX);
|
TEST_ASSERT_MEM_ZERO(mouse_data, sizeof(hidh_interface_info_t)*TUSB_CFG_HOST_DEVICE_MAX);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//------------- is supported -------------//
|
||||||
void test_mouse_is_supported_fail_unplug(void)
|
void test_mouse_is_supported_fail_unplug(void)
|
||||||
{
|
{
|
||||||
tusbh_device_get_state_IgnoreAndReturn(TUSB_DEVICE_STATE_UNPLUG);
|
tusbh_device_get_state_IgnoreAndReturn(TUSB_DEVICE_STATE_UNPLUG);
|
||||||
@ -96,8 +101,28 @@ void test_mouse_is_supported_ok(void)
|
|||||||
TEST_ASSERT_TRUE( tusbh_hid_mouse_is_supported(dev_addr) );
|
TEST_ASSERT_TRUE( tusbh_hid_mouse_is_supported(dev_addr) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void test_mouse_open_ok(void)
|
||||||
|
{
|
||||||
|
uint16_t length=0;
|
||||||
|
pipe_handle_t pipe_hdl = {.dev_addr = dev_addr, .xfer_type = TUSB_XFER_INTERRUPT, .index = 2};
|
||||||
|
|
||||||
|
hidh_init();
|
||||||
|
|
||||||
|
hcd_pipe_open_ExpectAndReturn(dev_addr, p_mouse_endpoint_desc, TUSB_CLASS_HID, pipe_hdl);
|
||||||
|
|
||||||
|
//------------- Code Under TEST -------------//
|
||||||
|
TEST_ASSERT_EQUAL(TUSB_ERROR_NONE, hidh_open_subtask(dev_addr, p_mouse_interface_desc, &length));
|
||||||
|
|
||||||
|
TEST_ASSERT_PIPE_HANDLE(pipe_hdl, p_hidh_mouse->pipe_hdl);
|
||||||
|
TEST_ASSERT_EQUAL(8, p_hidh_mouse->report_size);
|
||||||
|
TEST_ASSERT_EQUAL(sizeof(tusb_descriptor_interface_t) + sizeof(tusb_hid_descriptor_hid_t) + sizeof(tusb_descriptor_endpoint_t),
|
||||||
|
length);
|
||||||
|
|
||||||
|
tusbh_device_get_state_IgnoreAndReturn(TUSB_DEVICE_STATE_CONFIGURED);
|
||||||
|
TEST_ASSERT_TRUE( tusbh_hid_keyboard_is_supported(dev_addr) );
|
||||||
|
TEST_ASSERT_EQUAL(TUSB_INTERFACE_STATUS_READY, p_hidh_mouse->status);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -92,10 +92,10 @@ const uint8_t keyboard_report_descriptor[] = {
|
|||||||
HID_OUTPUT ( HID_CONSTANT ),
|
HID_OUTPUT ( HID_CONSTANT ),
|
||||||
|
|
||||||
HID_USAGE_PAGE (HID_USAGE_PAGE_KEYBOARD),
|
HID_USAGE_PAGE (HID_USAGE_PAGE_KEYBOARD),
|
||||||
HID_USAGE_MIN ( 0 ),
|
HID_USAGE_MIN ( 0 ),
|
||||||
HID_USAGE_MAX ( 101 ),
|
HID_USAGE_MAX ( 101 ),
|
||||||
HID_LOGICAL_MIN ( 0 ),
|
HID_LOGICAL_MIN ( 0 ),
|
||||||
HID_LOGICAL_MAX ( 101 ),
|
HID_LOGICAL_MAX ( 101 ),
|
||||||
|
|
||||||
HID_REPORT_COUNT ( 6 ),
|
HID_REPORT_COUNT ( 6 ),
|
||||||
HID_REPORT_SIZE ( 8 ),
|
HID_REPORT_SIZE ( 8 ),
|
||||||
@ -103,6 +103,42 @@ const uint8_t keyboard_report_descriptor[] = {
|
|||||||
HID_COLLECTION_END
|
HID_COLLECTION_END
|
||||||
};
|
};
|
||||||
|
|
||||||
|
TUSB_CFG_ATTR_USBRAM ATTR_ALIGNED(4)
|
||||||
|
const uint8_t mouse_report_descriptor[] = {
|
||||||
|
HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ),
|
||||||
|
HID_USAGE ( HID_USAGE_DESKTOP_MOUSE ),
|
||||||
|
HID_COLLECTION ( HID_COLLECTION_APPLICATION ),
|
||||||
|
HID_USAGE (HID_USAGE_DESKTOP_POINTER),
|
||||||
|
|
||||||
|
HID_COLLECTION ( HID_COLLECTION_PHYSICAL ),
|
||||||
|
HID_USAGE_PAGE ( HID_USAGE_PAGE_BUTTON ),
|
||||||
|
HID_USAGE_MIN ( 1 ),
|
||||||
|
HID_USAGE_MAX ( 3 ),
|
||||||
|
HID_LOGICAL_MIN ( 0 ),
|
||||||
|
HID_LOGICAL_MAX ( 1 ),
|
||||||
|
|
||||||
|
HID_REPORT_COUNT ( 3 ), /* Left, Right and Middle mouse*/
|
||||||
|
HID_REPORT_SIZE ( 1 ),
|
||||||
|
HID_INPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ),
|
||||||
|
|
||||||
|
HID_REPORT_COUNT ( 1 ),
|
||||||
|
HID_REPORT_SIZE ( 5 ),
|
||||||
|
HID_INPUT ( HID_CONSTANT ), /* reserved */
|
||||||
|
|
||||||
|
HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ),
|
||||||
|
HID_USAGE ( HID_USAGE_DESKTOP_X ),
|
||||||
|
HID_USAGE ( HID_USAGE_DESKTOP_Y ),
|
||||||
|
HID_LOGICAL_MIN ( 0x81 ), /* -127 */
|
||||||
|
HID_LOGICAL_MAX ( 0x7f ), /* 127 */
|
||||||
|
|
||||||
|
HID_REPORT_COUNT ( 2 ), /* X, Y position */
|
||||||
|
HID_REPORT_SIZE ( 8 ),
|
||||||
|
HID_INPUT ( HID_DATA | HID_VARIABLE | HID_RELATIVE ), /* relative values */
|
||||||
|
HID_COLLECTION_END,
|
||||||
|
|
||||||
|
HID_COLLECTION_END
|
||||||
|
};
|
||||||
|
|
||||||
TUSB_CFG_ATTR_USBRAM ATTR_ALIGNED(4)
|
TUSB_CFG_ATTR_USBRAM ATTR_ALIGNED(4)
|
||||||
const app_configuration_desc_t desc_configuration =
|
const app_configuration_desc_t desc_configuration =
|
||||||
{
|
{
|
||||||
@ -120,7 +156,7 @@ const app_configuration_desc_t desc_configuration =
|
|||||||
.bMaxPower = TUSB_DESC_CONFIG_POWER_MA(100)
|
.bMaxPower = TUSB_DESC_CONFIG_POWER_MA(100)
|
||||||
},
|
},
|
||||||
|
|
||||||
///// USB HID Keyboard interface
|
//------------- HID Keyboard -------------//
|
||||||
.keyboard_interface =
|
.keyboard_interface =
|
||||||
{
|
{
|
||||||
.bLength = sizeof(tusb_descriptor_interface_t),
|
.bLength = sizeof(tusb_descriptor_interface_t),
|
||||||
@ -155,5 +191,41 @@ const app_configuration_desc_t desc_configuration =
|
|||||||
.bInterval = 0x0A
|
.bInterval = 0x0A
|
||||||
},
|
},
|
||||||
|
|
||||||
|
//------------- HID Mouse -------------//
|
||||||
|
.mouse_interface =
|
||||||
|
{
|
||||||
|
.bLength = sizeof(tusb_descriptor_interface_t),
|
||||||
|
.bDescriptorType = TUSB_DESC_INTERFACE,
|
||||||
|
.bInterfaceNumber = 2,
|
||||||
|
.bAlternateSetting = 0x00,
|
||||||
|
.bNumEndpoints = 1,
|
||||||
|
.bInterfaceClass = TUSB_CLASS_HID,
|
||||||
|
.bInterfaceSubClass = HID_SUBCLASS_BOOT,
|
||||||
|
.bInterfaceProtocol = HID_PROTOCOL_MOUSE,
|
||||||
|
.iInterface = 0x00
|
||||||
|
},
|
||||||
|
|
||||||
|
.mouse_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(mouse_report_descriptor)
|
||||||
|
},
|
||||||
|
|
||||||
|
.mouse_endpoint =
|
||||||
|
{
|
||||||
|
.bLength = sizeof(tusb_descriptor_endpoint_t),
|
||||||
|
.bDescriptorType = TUSB_DESC_ENDPOINT,
|
||||||
|
.bEndpointAddress = 0x82,
|
||||||
|
.bmAttributes = { .xfer = TUSB_XFER_INTERRUPT },
|
||||||
|
.wMaxPacketSize = 0x08,
|
||||||
|
.bInterval = 0x0A
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
.ConfigDescTermination = 0,
|
.ConfigDescTermination = 0,
|
||||||
};
|
};
|
||||||
|
@ -81,19 +81,15 @@ typedef struct
|
|||||||
tusb_descriptor_endpoint_t CDC_DataInEndpoint;
|
tusb_descriptor_endpoint_t CDC_DataInEndpoint;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 1 // || TUSB_CFG_DEVICE_HID_KEYBOARD
|
//------------- HID Keyboard -------------//
|
||||||
//Keyboard HID Interface
|
|
||||||
tusb_descriptor_interface_t keyboard_interface;
|
tusb_descriptor_interface_t keyboard_interface;
|
||||||
tusb_hid_descriptor_hid_t keyboard_hid;
|
tusb_hid_descriptor_hid_t keyboard_hid;
|
||||||
tusb_descriptor_endpoint_t keyboard_endpoint;
|
tusb_descriptor_endpoint_t keyboard_endpoint;
|
||||||
#endif
|
|
||||||
|
|
||||||
#if 0 // && TUSB_CFG_DEVICE_HID_MOUSE
|
//------------- HID Mouse -------------//
|
||||||
//Mouse HID Interface
|
tusb_descriptor_interface_t mouse_interface;
|
||||||
tusb_descriptor_interface_t HID_MouseInterface;
|
tusb_hid_descriptor_hid_t mouse_hid;
|
||||||
HID_DESCRIPTOR HID_MouseHID;
|
tusb_descriptor_endpoint_t mouse_endpoint;
|
||||||
tusb_descriptor_endpoint_t HID_MouseEndpoint;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
unsigned char ConfigDescTermination;
|
unsigned char ConfigDescTermination;
|
||||||
} app_configuration_desc_t;
|
} app_configuration_desc_t;
|
||||||
|
@ -192,12 +192,12 @@ enum USB_HID_LOCAL_CODE
|
|||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
//------------- ITEM & TAG -------------//
|
//------------- ITEM & TAG -------------//
|
||||||
#define HID_REPORT_DATA_0(data)
|
#define HID_REPORT_DATA_0(data)
|
||||||
#define HID_REPORT_DATA_1(data) data
|
#define HID_REPORT_DATA_1(data) , data
|
||||||
#define HID_REPORT_DATA_2(data) U16_TO_U8S_LE(data)
|
#define HID_REPORT_DATA_2(data) , U16_TO_U8S_LE(data)
|
||||||
#define HID_REPORT_DATA_3(data) U32_TO_U8S_LE(data)
|
#define HID_REPORT_DATA_3(data) , U32_TO_U8S_LE(data)
|
||||||
|
|
||||||
#define HID_REPORT_ITEM(data, tag, type, size) \
|
#define HID_REPORT_ITEM(data, tag, type, size) \
|
||||||
( (tag << 4) | (type << 2) | size), HID_REPORT_DATA_##size(data)
|
((tag << 4) | (type << 2) | size) HID_REPORT_DATA_##size(data)
|
||||||
|
|
||||||
#define RI_TYPE_MAIN 0
|
#define RI_TYPE_MAIN 0
|
||||||
#define RI_TYPE_GLOBAL 1
|
#define RI_TYPE_GLOBAL 1
|
||||||
|
@ -53,6 +53,19 @@
|
|||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// INTERNAL OBJECT & FUNCTION DECLARATION
|
// INTERNAL OBJECT & FUNCTION DECLARATION
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
|
tusb_interface_status_t hidh_interface_status(uint8_t dev_addr, hidh_interface_info_t *p_hid) ATTR_PURE ATTR_ALWAYS_INLINE;
|
||||||
|
tusb_interface_status_t hidh_interface_status(uint8_t dev_addr, hidh_interface_info_t *p_hid)
|
||||||
|
{
|
||||||
|
switch( tusbh_device_get_state(dev_addr) )
|
||||||
|
{
|
||||||
|
case TUSB_DEVICE_STATE_UNPLUG:
|
||||||
|
case TUSB_DEVICE_STATE_INVALID_PARAMETER:
|
||||||
|
return TUSB_INTERFACE_STATUS_INVALID_PARA;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return p_hid->status;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// KEYBOARD
|
// KEYBOARD
|
||||||
@ -94,15 +107,7 @@ tusb_error_t tusbh_hid_keyboard_get_report(uint8_t dev_addr, uint8_t instance_nu
|
|||||||
|
|
||||||
tusb_interface_status_t tusbh_hid_keyboard_status(uint8_t dev_addr, uint8_t instance_num)
|
tusb_interface_status_t tusbh_hid_keyboard_status(uint8_t dev_addr, uint8_t instance_num)
|
||||||
{
|
{
|
||||||
switch( tusbh_device_get_state(dev_addr) )
|
return hidh_interface_status(dev_addr, &keyboard_data[dev_addr-1]);
|
||||||
{
|
|
||||||
case TUSB_DEVICE_STATE_UNPLUG:
|
|
||||||
case TUSB_DEVICE_STATE_INVALID_PARAMETER:
|
|
||||||
return TUSB_INTERFACE_STATUS_INVALID_PARA;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return keyboard_data[dev_addr-1].status;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
//------------- Internal API -------------//
|
//------------- Internal API -------------//
|
||||||
static inline tusb_error_t hidh_keyboard_open(uint8_t dev_addr, tusb_descriptor_endpoint_t const *p_endpoint_desc) ATTR_ALWAYS_INLINE;
|
static inline tusb_error_t hidh_keyboard_open(uint8_t dev_addr, tusb_descriptor_endpoint_t const *p_endpoint_desc) ATTR_ALWAYS_INLINE;
|
||||||
@ -160,6 +165,8 @@ tusb_interface_status_t tusbh_hid_mouse_status(uint8_t dev_addr, uint8_t instanc
|
|||||||
default:
|
default:
|
||||||
return mouse_data[dev_addr-1].status;
|
return mouse_data[dev_addr-1].status;
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
|
return TUSB_INTERFACE_STATUS_INVALID_PARA;
|
||||||
}
|
}
|
||||||
|
|
||||||
//------------- Internal API -------------//
|
//------------- Internal API -------------//
|
||||||
|
Loading…
x
Reference in New Issue
Block a user