mirror of
https://github.com/hathach/tinyusb.git
synced 2025-01-17 05:32:55 +08:00
nrf52840 boot mouse does not work, need more work
This commit is contained in:
parent
546f2a1165
commit
3400dfdf4e
@ -98,29 +98,25 @@ void virtual_com_task(void)
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------+
|
||||
// USB CDC
|
||||
// USB HID
|
||||
//--------------------------------------------------------------------+
|
||||
void usb_hid_task(void)
|
||||
{
|
||||
if ( tud_mounted() )
|
||||
{
|
||||
|
||||
|
||||
/*------------- Keyboard -------------*/
|
||||
/*
|
||||
if ( !tud_hid_keyboard_busy() )
|
||||
{
|
||||
// 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 bt = board_buttons();
|
||||
|
||||
if ( bt )
|
||||
if ( btn )
|
||||
{
|
||||
uint8_t keycode[6] = { 0 };
|
||||
|
||||
for(uint8_t i=0; i < 6; i++)
|
||||
{
|
||||
if ( bt & (1 << i) ) keycode[i] = HID_KEY_A + i;
|
||||
if ( btn & (1 << i) ) keycode[i] = HID_KEY_A + i;
|
||||
}
|
||||
|
||||
tud_hid_keyboard_send_keycode(0, keycode);
|
||||
@ -130,10 +126,24 @@ void usb_hid_task(void)
|
||||
tud_hid_keyboard_send_report(NULL);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
/*------------- Mouse -------------*/
|
||||
if ( !tud_hid_mouse_busy() )
|
||||
{
|
||||
// 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 )
|
||||
{
|
||||
hid_mouse_report_t report = { .buttons = 0, .x = 10, .y = 0, .wheel = 0 };
|
||||
tud_hid_mouse_send_report(&report);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -167,14 +167,17 @@ typedef struct ATTR_PACKED
|
||||
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. */
|
||||
// int8_t pan;
|
||||
} hid_mouse_report_t;
|
||||
|
||||
/// Standard Mouse Buttons Bitmap
|
||||
typedef enum
|
||||
{
|
||||
MOUSE_BUTTON_LEFT = BIT_(0), ///< Left button
|
||||
MOUSE_BUTTON_RIGHT = BIT_(1), ///< Right button
|
||||
MOUSE_BUTTON_MIDDLE = BIT_(2) ///< Middle button
|
||||
MOUSE_BUTTON_LEFT = BIT_(0), ///< Left button
|
||||
MOUSE_BUTTON_RIGHT = BIT_(1), ///< Right button
|
||||
MOUSE_BUTTON_MIDDLE = BIT_(2), ///< Middle button
|
||||
MOUSE_BUTTON_BACKWARD = BIT_(3), ///< Backward button,
|
||||
MOUSE_BUTTON_FORWARD = BIT_(4), ///< Forward button,
|
||||
}hid_mouse_button_bm_t;
|
||||
|
||||
/// @}
|
||||
|
@ -167,7 +167,7 @@ bool tud_hid_mouse_busy(void)
|
||||
return dcd_edpt_busy(TUD_OPT_RHPORT, _mse_itf.ep_in);
|
||||
}
|
||||
|
||||
bool tud_hid_mouse_send(hid_mouse_report_t const *p_report)
|
||||
bool tud_hid_mouse_send_report(hid_mouse_report_t const *p_report)
|
||||
{
|
||||
VERIFY( tud_mounted() && !tud_hid_mouse_busy() );
|
||||
|
||||
|
@ -65,7 +65,7 @@ bool tud_hid_keyboard_busy(void);
|
||||
|
||||
/** \brief Send a keyboard report
|
||||
* \param[in,out] p_report Report data, if NULL, an empty report (all zeroes) is used
|
||||
* \returns true on success, false otherwise (not mounted or busy)
|
||||
* \returns true on success, false otherwise (not mounted or busy)
|
||||
*/
|
||||
bool tud_hid_keyboard_send_report(hid_keyboard_report_t const *p_report);
|
||||
|
||||
@ -127,10 +127,10 @@ ATTR_WEAK void tud_hid_keyboard_set_report_cb(hid_report_type_t report_type, uin
|
||||
bool tud_hid_mouse_busy(void);
|
||||
|
||||
/** \brief Perform transfer queuing
|
||||
* \param[in,out] p_report address that is used to store data from device. Must be accessible by usb controller (see \ref CFG_TUSB_ATTR_USBRAM)
|
||||
* \returns true on success, false otherwise (not mounted or busy)
|
||||
* \param[in,out] p_report Report data, if NULL, an empty report (all zeroes) is used
|
||||
* \returns true on success, false otherwise (not mounted or busy)
|
||||
*/
|
||||
bool tud_hid_mouse_send(hid_mouse_report_t const *p_report);
|
||||
bool tud_hid_mouse_send_report(hid_mouse_report_t const *p_report);
|
||||
|
||||
/*------------- Callbacks -------------*/
|
||||
|
||||
|
@ -123,39 +123,45 @@ uint8_t const _desc_auto_hid_kbd_report[] = {
|
||||
HID_USAGE ( HID_USAGE_DESKTOP_KEYBOARD ),
|
||||
HID_COLLECTION ( HID_COLLECTION_APPLICATION ),
|
||||
HID_USAGE_PAGE ( HID_USAGE_PAGE_KEYBOARD ),
|
||||
// 8 bits Modifier Keys (Shfit, Control, Alt)
|
||||
HID_USAGE_MIN ( 224 ),
|
||||
HID_USAGE_MAX ( 231 ),
|
||||
HID_LOGICAL_MIN ( 0 ),
|
||||
HID_LOGICAL_MAX ( 1 ),
|
||||
|
||||
HID_REPORT_COUNT ( 8 ),
|
||||
HID_REPORT_SIZE ( 1 ),
|
||||
HID_REPORT_COUNT ( 8 ), /* 8 bits */
|
||||
HID_INPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ), /* maskable modifier key */
|
||||
HID_INPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ),
|
||||
|
||||
HID_REPORT_SIZE ( 8 ),
|
||||
// 8 bit reserved
|
||||
HID_REPORT_COUNT ( 1 ),
|
||||
HID_INPUT ( HID_CONSTANT ), /* reserved */
|
||||
HID_REPORT_SIZE ( 8 ),
|
||||
HID_INPUT ( HID_CONSTANT ),
|
||||
|
||||
// 6-byte Keycodes
|
||||
HID_USAGE_PAGE (HID_USAGE_PAGE_KEYBOARD),
|
||||
HID_USAGE_MIN ( 0 ),
|
||||
HID_USAGE_MAX ( 255 ),
|
||||
HID_LOGICAL_MIN ( 0 ),
|
||||
HID_LOGICAL_MAX ( 255 ),
|
||||
|
||||
HID_REPORT_COUNT ( 6 ),
|
||||
HID_REPORT_SIZE ( 8 ),
|
||||
HID_INPUT ( HID_DATA | HID_ARRAY | HID_ABSOLUTE ),
|
||||
|
||||
// LED Indicator Kana | Compose | Scroll Lock | CapsLock | NumLock
|
||||
HID_USAGE_PAGE ( HID_USAGE_PAGE_LED ),
|
||||
/* 5-bit Led report */
|
||||
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_OUTPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ),
|
||||
|
||||
HID_REPORT_SIZE ( 3 ), /* led padding */
|
||||
/* led padding */
|
||||
HID_REPORT_COUNT ( 1 ),
|
||||
HID_REPORT_SIZE ( 3 ),
|
||||
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_SIZE ( 8 ),
|
||||
HID_REPORT_COUNT ( 6 ),
|
||||
HID_INPUT ( HID_DATA | HID_ARRAY | HID_ABSOLUTE ), /* keycodes array 6 items */
|
||||
HID_COLLECTION_END
|
||||
};
|
||||
#endif
|
||||
@ -173,29 +179,33 @@ uint8_t const _desc_auto_hid_mse_report[] = {
|
||||
HID_COLLECTION ( HID_COLLECTION_PHYSICAL ),
|
||||
HID_USAGE_PAGE ( HID_USAGE_PAGE_BUTTON ),
|
||||
HID_USAGE_MIN ( 1 ),
|
||||
HID_USAGE_MAX ( 3 ),
|
||||
HID_USAGE_MAX ( 5 ),
|
||||
HID_LOGICAL_MIN ( 0 ),
|
||||
HID_LOGICAL_MAX ( 1 ),
|
||||
|
||||
// Left, Right, Middle, Backward, Forward mouse buttons
|
||||
HID_REPORT_COUNT ( 5 ),
|
||||
HID_REPORT_SIZE ( 1 ),
|
||||
HID_REPORT_COUNT ( 3 ), /* Left, Right and Middle mouse*/
|
||||
HID_INPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ),
|
||||
|
||||
HID_REPORT_SIZE ( 5 ),
|
||||
// 3 bit padding
|
||||
HID_REPORT_SIZE ( 3 ),
|
||||
HID_REPORT_COUNT ( 1 ),
|
||||
HID_INPUT ( HID_CONSTANT ), /* 5 bit padding followed 3 bit buttons */
|
||||
HID_INPUT ( HID_CONSTANT ),
|
||||
|
||||
HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ),
|
||||
/* X, Y position */
|
||||
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 ),
|
||||
HID_REPORT_SIZE ( 8 ),
|
||||
HID_REPORT_COUNT ( 2 ), /* X, Y position */
|
||||
HID_INPUT ( HID_DATA | HID_VARIABLE | HID_RELATIVE ), /* relative values */
|
||||
|
||||
HID_USAGE ( HID_USAGE_DESKTOP_WHEEL ), /* mouse scroll */
|
||||
/* mouse scroll */
|
||||
HID_USAGE ( HID_USAGE_DESKTOP_WHEEL ),
|
||||
HID_LOGICAL_MIN ( 0x81 ), /* -127 */
|
||||
HID_LOGICAL_MAX ( 0x7f ), /* 127 */
|
||||
HID_REPORT_COUNT( 1 ),
|
||||
|
Loading…
x
Reference in New Issue
Block a user