Sfoglia il codice sorgente

hid: add fido hid descriptor templates

gaoyichuan 4 anni fa
parent
commit
2a520fb921
2 ha cambiato i file con 32 aggiunte e 0 eliminazioni
  1. 9 0
      src/class/hid/hid.h
  2. 23 0
      src/class/hid/hid_device.h

+ 9 - 0
src/class/hid/hid.h

@@ -708,6 +708,7 @@ enum {
   HID_USAGE_PAGE_MSR             = 0x8e,
   HID_USAGE_PAGE_CAMERA          = 0x90,
   HID_USAGE_PAGE_ARCADE          = 0x91,
+  HID_USAGE_PAGE_FIDO_ALLIANCE   = 0xF1D0,
   HID_USAGE_PAGE_VENDOR          = 0xFF00 // 0xFF00 - 0xFFFF
 };
 
@@ -844,6 +845,14 @@ enum
   HID_USAGE_CONSUMER_AC_PAN                            = 0x0238,
 };
 
+/// HID Usage Table: FIDO Alliance Page (0xF1D0)
+enum
+{
+  HID_USAGE_FIDO_U2F_AUTHENTICATOR_DEVICE  = 0x01,
+  HID_USAGE_FIDO_INPUT_REPORT_DATA         = 0x20,
+  HID_USAGE_FIDO_OUTPUT_REPORT_DATA        = 0x21
+};
+
 /*--------------------------------------------------------------------
  * ASCII to KEYCODE Conversion
  *  Expand to array of [128][2] (shift, keycode)

+ 23 - 0
src/class/hid/hid_device.h

@@ -352,6 +352,29 @@ static inline bool  tud_hid_gamepad_report(uint8_t report_id, int8_t x, int8_t y
     HID_INPUT          ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,\
   HID_COLLECTION_END \
 
+// FIDO U2F Authenticator Descriptor Template
+#define TUD_HID_REPORT_DESC_FIDO_U2F(...) \
+  HID_USAGE_PAGE_N ( HID_USAGE_PAGE_FIDO_ALLIANCE, 2          ) ,\
+  HID_USAGE      ( HID_USAGE_FIDO_U2F_AUTHENTICATOR_DEVICE    ) ,\
+  HID_COLLECTION ( HID_COLLECTION_APPLICATION                 ) ,\
+    /* Report ID if any */ \
+    __VA_ARGS__ \
+    /* Usage Data In */ \
+    HID_USAGE         ( HID_USAGE_FIDO_INPUT_REPORT_DATA       ) ,\
+    HID_LOGICAL_MIN   ( 0                                      ) ,\
+    HID_LOGICAL_MAX_N ( 255, 2                                 ) ,\
+    HID_REPORT_SIZE   ( 8                                      ) ,\
+    HID_REPORT_COUNT  ( 64                                     ) ,\
+    HID_INPUT         ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,\
+    /* Usage Data Out */ \
+    HID_USAGE         ( HID_USAGE_FIDO_OUTPUT_REPORT_DATA      ) ,\
+    HID_LOGICAL_MIN   ( 0                                      ) ,\
+    HID_LOGICAL_MAX_N ( 255, 2                                 ) ,\
+    HID_REPORT_SIZE   ( 8                                      ) ,\
+    HID_REPORT_COUNT  ( 64                                     ) ,\
+    HID_OUTPUT        ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,\
+  HID_COLLECTION_END \
+
 // HID Generic Input & Output
 // - 1st parameter is report size (mandatory)
 // - 2nd parameter is report id HID_REPORT_ID(n) (optional)