Skip to content

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

@delan

Description

@delan
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);

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions