Skip to content

Commit f03c28e

Browse files
authored
Merge pull request hathach#1776 from hathach/hid-fido
Hid fido
2 parents 71a5906 + d581206 commit f03c28e

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

src/class/hid/hid.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -708,6 +708,7 @@ enum {
708708
HID_USAGE_PAGE_MSR = 0x8e,
709709
HID_USAGE_PAGE_CAMERA = 0x90,
710710
HID_USAGE_PAGE_ARCADE = 0x91,
711+
HID_USAGE_PAGE_FIDO = 0xF1D0, // FIDO alliance HID usage page
711712
HID_USAGE_PAGE_VENDOR = 0xFF00 // 0xFF00 - 0xFFFF
712713
};
713714

@@ -844,6 +845,14 @@ enum
844845
HID_USAGE_CONSUMER_AC_PAN = 0x0238,
845846
};
846847

848+
/// HID Usage Table: FIDO Alliance Page (0xF1D0)
849+
enum
850+
{
851+
HID_USAGE_FIDO_U2FHID = 0x01, // U2FHID usage for top-level collection
852+
HID_USAGE_FIDO_DATA_IN = 0x20, // Raw IN data report
853+
HID_USAGE_FIDO_DATA_OUT = 0x21 // Raw OUT data report
854+
};
855+
847856
/*--------------------------------------------------------------------
848857
* ASCII to KEYCODE Conversion
849858
* Expand to array of [128][2] (shift, keycode)

src/class/hid/hid_device.h

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,31 @@ static inline bool tud_hid_gamepad_report(uint8_t report_id, int8_t x, int8_t y
352352
HID_INPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,\
353353
HID_COLLECTION_END \
354354

355+
// FIDO U2F Authenticator Descriptor Template
356+
// - 1st parameter is report size, which is 64 bytes maximum in U2F
357+
// - 2nd parameter is HID_REPORT_ID(n) (optional)
358+
#define TUD_HID_REPORT_DESC_FIDO_U2F(report_size, ...) \
359+
HID_USAGE_PAGE_N ( HID_USAGE_PAGE_FIDO, 2 ) ,\
360+
HID_USAGE ( HID_USAGE_FIDO_U2FHID ) ,\
361+
HID_COLLECTION ( HID_COLLECTION_APPLICATION ) ,\
362+
/* Report ID if any */ \
363+
__VA_ARGS__ \
364+
/* Usage Data In */ \
365+
HID_USAGE ( HID_USAGE_FIDO_DATA_IN ) ,\
366+
HID_LOGICAL_MIN ( 0 ) ,\
367+
HID_LOGICAL_MAX_N ( 0xff, 2 ) ,\
368+
HID_REPORT_SIZE ( 8 ) ,\
369+
HID_REPORT_COUNT ( report_size ) ,\
370+
HID_INPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,\
371+
/* Usage Data Out */ \
372+
HID_USAGE ( HID_USAGE_FIDO_DATA_OUT ) ,\
373+
HID_LOGICAL_MIN ( 0 ) ,\
374+
HID_LOGICAL_MAX_N ( 0xff, 2 ) ,\
375+
HID_REPORT_SIZE ( 8 ) ,\
376+
HID_REPORT_COUNT ( report_size ) ,\
377+
HID_OUTPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,\
378+
HID_COLLECTION_END \
379+
355380
// HID Generic Input & Output
356381
// - 1st parameter is report size (mandatory)
357382
// - 2nd parameter is report id HID_REPORT_ID(n) (optional)

0 commit comments

Comments
 (0)