usb3sun icon indicating copy to clipboard operation
usb3sun copied to clipboard

we need to switch to boot protocol, as long as we only support boot protocol

Open delan opened this issue 8 months ago • 0 comments

diff --git a/src/main.cc b/src/main.cc
index 9b4b75e..68b51cf 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -391,6 +391,15 @@ void tuh_hid_mount_cb(uint8_t dev_addr, uint8_t instance, uint8_t const *desc_re
     }
   }
 
+  // HID DCD 1.11 § 7.2.6, “When initialized, all devices default to report protocol.”
+  tuh_hid_set_protocol(dev_addr, instance, HID_PROTOCOL_BOOT);
+}
+
+void tuh_hid_set_protocol_complete_cb(uint8_t dev_addr, uint8_t instance, uint8_t protocol) {
+  Serial1.printf(">>> [%u:%u] Set_Protocol: protocol now %u\n", dev_addr, instance, protocol);
+  if (protocol != HID_PROTOCOL_BOOT)
+    Serial1.printf(">>> [%u:%u] failed to Set_Protocol to boot protocol\n", dev_addr, instance);
+
   if (!usb3sun_uhid_request_report(dev_addr, instance))
     Sprintf("error: usb [%u:%u]: failed to request to receive report\n", dev_addr, instance);
 
@@ -417,11 +426,6 @@ void tuh_umount_cb(uint8_t dev_addr) {
   buzzer.unplug();
 }
 
-void tuh_hid_set_protocol_complete_cb(uint8_t dev_addr, uint8_t instance, uint8_t protocol) {
-  // haven’t seen this actually get printed so far, but only tried a few devices
-  Sprintf("usb [%u:%u]: hid set protocol returned %u\n", dev_addr, instance, protocol);
-}
-
 // Invoked when received report from device via interrupt endpoint
 void tuh_hid_report_received_cb(uint8_t dev_addr, uint8_t instance, uint8_t const *report, uint16_t len) {
   uint8_t if_protocol = usb3sun_uhid_interface_protocol(dev_addr, instance);

delan avatar Apr 24 '25 10:04 delan