tested boot mouse working

This commit is contained in:
hathach 2018-07-25 00:16:09 +07:00
parent 67e52af936
commit 71934228d2
3 changed files with 37 additions and 41 deletions

View File

@ -103,36 +103,7 @@ void virtual_com_task(void)
void usb_hid_task(void) void usb_hid_task(void)
{ {
/*------------- Keyboard -------------*/ /*------------- Keyboard -------------*/
if ( tud_hid_keyboard_ready() ) // if ( tud_hid_keyboard_ready() )
{
// Poll every 10ms
static tu_timeout_t tm = { .start = 0, .interval = 10 };
if ( !tu_timeout_expired(&tm) ) return; // not enough time
tu_timeout_reset(&tm);
uint32_t const btn = board_buttons();
if ( btn )
{
uint8_t keycode[6] = { 0 };
for(uint8_t i=0; i < 6; i++)
{
if ( btn & (1 << i) ) keycode[i] = HID_KEY_A + i;
}
tud_hid_keyboard_keycode(0, keycode);
}else
{
// Null means all zeroes keycodes
tud_hid_keyboard_keycode(0, NULL);
}
}
/*------------- Mouse -------------*/
// if ( tud_hid_mouse_ready() )
// { // {
// // Poll every 10ms // // Poll every 10ms
// static tu_timeout_t tm = { .start = 0, .interval = 10 }; // static tu_timeout_t tm = { .start = 0, .interval = 10 };
@ -144,11 +115,38 @@ void usb_hid_task(void)
// //
// if ( btn ) // if ( btn )
// { // {
// hid_mouse_report_t report = { .buttons = 0, .x = 10, .y = 0, .wheel = 0 }; // uint8_t keycode[6] = { 0 };
// tud_hid_mouse_report(&report); //
// for(uint8_t i=0; i < 6; i++)
// {
// if ( btn & (1 << i) ) keycode[i] = HID_KEY_A + i;
// }
//
// tud_hid_keyboard_keycode(0, keycode);
// }else
// {
// // Null means all zeroes keycodes
// tud_hid_keyboard_keycode(0, NULL);
// } // }
// } // }
/*------------- Mouse -------------*/
if ( tud_hid_mouse_ready() )
{
// Poll every 10ms
static tu_timeout_t tm = { .start = 0, .interval = 10 };
if ( !tu_timeout_expired(&tm) ) return; // not enough time
tu_timeout_reset(&tm);
uint32_t const btn = board_buttons();
if ( btn )
{
tud_hid_mouse_data(0, 10, 0, 0, 0);
}
}
} }

View File

@ -353,8 +353,6 @@ static tusb_error_t proc_control_request_st(uint8_t rhport, tusb_control_request
error = TUSB_ERROR_NONE; error = TUSB_ERROR_NONE;
//------------- Standard Request e.g in enumeration -------------// //------------- Standard Request e.g in enumeration -------------//
/* Microsoft Windows will awkwardly get HID Report Descriptor with
* Recipient = Device instead of Interface */
if( TUSB_REQ_RCPT_DEVICE == p_request->bmRequestType_bit.recipient && if( TUSB_REQ_RCPT_DEVICE == p_request->bmRequestType_bit.recipient &&
TUSB_REQ_TYPE_STANDARD == p_request->bmRequestType_bit.type ) TUSB_REQ_TYPE_STANDARD == p_request->bmRequestType_bit.type )
{ {

View File

@ -118,7 +118,7 @@
// Keyboard Report Descriptor // Keyboard Report Descriptor
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
#if CFG_TUD_HID_KEYBOARD #if CFG_TUD_HID_KEYBOARD
ATTR_PACKED uint8_t const _desc_auto_hid_kbd_report[] = { uint8_t const _desc_auto_hid_kbd_report[] = {
HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ), HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ),
HID_USAGE ( HID_USAGE_DESKTOP_KEYBOARD ), HID_USAGE ( HID_USAGE_DESKTOP_KEYBOARD ),
HID_COLLECTION ( HID_COLLECTION_APPLICATION ), HID_COLLECTION ( HID_COLLECTION_APPLICATION ),
@ -170,7 +170,7 @@ ATTR_PACKED uint8_t const _desc_auto_hid_kbd_report[] = {
// Mouse Report Descriptor // Mouse Report Descriptor
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
#if CFG_TUD_HID_MOUSE #if CFG_TUD_HID_MOUSE
ATTR_PACKED uint8_t const _desc_auto_hid_mse_report[] = { uint8_t const _desc_auto_hid_mse_report[] = {
HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ), HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ),
HID_USAGE ( HID_USAGE_DESKTOP_MOUSE ), HID_USAGE ( HID_USAGE_DESKTOP_MOUSE ),
HID_COLLECTION ( HID_COLLECTION_APPLICATION ), HID_COLLECTION ( HID_COLLECTION_APPLICATION ),
@ -179,18 +179,18 @@ ATTR_PACKED uint8_t const _desc_auto_hid_mse_report[] = {
HID_COLLECTION ( HID_COLLECTION_PHYSICAL ), HID_COLLECTION ( HID_COLLECTION_PHYSICAL ),
HID_USAGE_PAGE ( HID_USAGE_PAGE_BUTTON ), HID_USAGE_PAGE ( HID_USAGE_PAGE_BUTTON ),
HID_USAGE_MIN ( 1 ), HID_USAGE_MIN ( 1 ),
HID_USAGE_MAX ( 5 ), HID_USAGE_MAX ( 3 ),
HID_LOGICAL_MIN ( 0 ), HID_LOGICAL_MIN ( 0 ),
HID_LOGICAL_MAX ( 1 ), HID_LOGICAL_MAX ( 1 ),
// Left, Right, Middle, Backward, Forward mouse buttons // Left, Right, Middle, Backward, Forward mouse buttons
HID_REPORT_COUNT ( 5 ), HID_REPORT_COUNT ( 3 ),
HID_REPORT_SIZE ( 1 ), HID_REPORT_SIZE ( 1 ),
HID_INPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ), HID_INPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ),
// 3 bit padding // 3 bit padding
HID_REPORT_COUNT ( 1 ), HID_REPORT_COUNT ( 1 ),
HID_REPORT_SIZE ( 3 ), HID_REPORT_SIZE ( 5 ),
HID_INPUT ( HID_CONSTANT ), HID_INPUT ( HID_CONSTANT ),
HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ), HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ),