summaryrefslogtreecommitdiff
path: root/src/class
diff options
context:
space:
mode:
authorgaoyichuan <[email protected]>2022-05-25 09:51:58 +0800
committergaoyichuan <[email protected]>2022-10-15 19:07:07 +0800
commit2a520fb921fceb2a8e6182bff073c4a98504127f (patch)
tree1c8f779866c3598b10dd7f7dba4209bca2b59615 /src/class
parent154821acc02f8c7917ed7e94318de0a26f883b75 (diff)
hid: add fido hid descriptor templates
Diffstat (limited to 'src/class')
-rw-r--r--src/class/hid/hid.h9
-rw-r--r--src/class/hid/hid_device.h23
2 files changed, 32 insertions, 0 deletions
diff --git a/src/class/hid/hid.h b/src/class/hid/hid.h
index 44a464be1..296664f62 100644
--- a/src/class/hid/hid.h
+++ b/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)
diff --git a/src/class/hid/hid_device.h b/src/class/hid/hid_device.h
index 3143b1024..d6cf27bd8 100644
--- a/src/class/hid/hid_device.h
+++ b/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)