@@ -67,6 +67,8 @@ typedef struct
67
67
CFG_TUH_MEM_SECTION
68
68
tu_static hidh_interface_t _hidh_itf [CFG_TUH_HID ];
69
69
70
+ tu_static uint8_t _hidh_default_protocol = HID_PROTOCOL_BOOT ;
71
+
70
72
//--------------------------------------------------------------------+
71
73
// Helper
72
74
//--------------------------------------------------------------------+
@@ -211,6 +213,10 @@ static void set_protocol_complete(tuh_xfer_t* xfer)
211
213
}
212
214
}
213
215
216
+ void tuh_hid_set_default_protocol (uint8_t protocol ) {
217
+ _hidh_default_protocol = protocol ;
218
+ }
219
+
214
220
static bool _hidh_set_protocol (uint8_t daddr , uint8_t itf_num , uint8_t protocol , tuh_xfer_cb_t complete_cb , uintptr_t user_data )
215
221
{
216
222
TU_LOG_DRV ("HID Set Protocol = %d\r\n" , protocol );
@@ -521,7 +527,7 @@ bool hidh_open(uint8_t rhport, uint8_t daddr, tusb_desc_interface_t const *desc_
521
527
p_hid -> report_desc_len = tu_unaligned_read16 (& desc_hid -> wReportLength );
522
528
523
529
// Per HID Specs: default is Report protocol, though we will force Boot protocol when set_config
524
- p_hid -> protocol_mode = HID_PROTOCOL_BOOT ;
530
+ p_hid -> protocol_mode = _hidh_default_protocol ;
525
531
if ( HID_SUBCLASS_BOOT == desc_itf -> bInterfaceSubClass )
526
532
{
527
533
p_hid -> itf_protocol = desc_itf -> bInterfaceProtocol ;
@@ -591,7 +597,7 @@ static void process_set_config(tuh_xfer_t* xfer)
591
597
break ;
592
598
593
599
case CONFIG_SET_PROTOCOL :
594
- _hidh_set_protocol (daddr , p_hid -> itf_num , HID_PROTOCOL_BOOT , process_set_config , CONFIG_GET_REPORT_DESC );
600
+ _hidh_set_protocol (daddr , p_hid -> itf_num , _hidh_default_protocol , process_set_config , CONFIG_GET_REPORT_DESC );
595
601
break ;
596
602
597
603
case CONFIG_GET_REPORT_DESC :
0 commit comments