HID scanner demo
Dependencies: BLE_API WIFI_API_32kRAM nRF51822 mbed
BLE HID function in this demo is temporary working with Android phone ONLY. Will be fixed to support iOS device in next update.
HIDService.cpp@2:be04a220392e, 2015-08-14 (annotated)
- Committer:
- wgd8700
- Date:
- Fri Aug 14 09:37:24 2015 +0000
- Revision:
- 2:be04a220392e
- Parent:
- 0:b0fc0661c081
Update BLE_API, nRF51822, and mbed libs to sync throughout all sample code, work for 32KB RAM revision platform; Update main.cpp to add RF switch lock mechanism to prevent packet losses for BLE
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Marcomissyou | 0:b0fc0661c081 | 1 | #include "HIDService.h" |
Marcomissyou | 0:b0fc0661c081 | 2 | |
Marcomissyou | 0:b0fc0661c081 | 3 | const uint8_t KeyboardReportMap[] = |
Marcomissyou | 0:b0fc0661c081 | 4 | { 0x05, 0x01, // Usage Page (Generic Desktop) |
Marcomissyou | 0:b0fc0661c081 | 5 | 0x09, 0x06, // Usage (Keyboard) |
Marcomissyou | 0:b0fc0661c081 | 6 | 0xA1, 0x01, // Collection (Application) |
Marcomissyou | 0:b0fc0661c081 | 7 | 0x05, 0x07, // Usage Page (Key Codes) |
Marcomissyou | 0:b0fc0661c081 | 8 | 0x19, 0xe0, // Usage Minimum (224) |
Marcomissyou | 0:b0fc0661c081 | 9 | 0x29, 0xe7, // Usage Maximum (231) |
Marcomissyou | 0:b0fc0661c081 | 10 | 0x15, 0x00, // Logicagl Minimum (0) |
Marcomissyou | 0:b0fc0661c081 | 11 | 0x25, 0x01, // Logical Maximum (1) |
Marcomissyou | 0:b0fc0661c081 | 12 | 0x75, 0x01, // Report Size (1) |
Marcomissyou | 0:b0fc0661c081 | 13 | 0x95, 0x08, // Report Count (8) |
Marcomissyou | 0:b0fc0661c081 | 14 | 0x81, 0x02, // Input (Data, Variable, Absolute) |
Marcomissyou | 0:b0fc0661c081 | 15 | |
Marcomissyou | 0:b0fc0661c081 | 16 | 0x95, 0x01, // Report Count (1) |
Marcomissyou | 0:b0fc0661c081 | 17 | 0x75, 0x08, // Report Size (8) |
Marcomissyou | 0:b0fc0661c081 | 18 | 0x81, 0x01, // Input (Constant) reserved byte(1) |
Marcomissyou | 0:b0fc0661c081 | 19 | |
Marcomissyou | 0:b0fc0661c081 | 20 | 0x95, 0x05, // Report Count (5) |
Marcomissyou | 0:b0fc0661c081 | 21 | 0x75, 0x01, // Report Size (1) |
Marcomissyou | 0:b0fc0661c081 | 22 | 0x05, 0x08, // Usage Page (Page# for LEDs) |
Marcomissyou | 0:b0fc0661c081 | 23 | 0x19, 0x01, // Usage Minimum (1) |
Marcomissyou | 0:b0fc0661c081 | 24 | 0x29, 0x05, // Usage Maximum (5) |
Marcomissyou | 0:b0fc0661c081 | 25 | 0x91, 0x02, // Output (Data, Variable, Absolute), Led report |
Marcomissyou | 0:b0fc0661c081 | 26 | 0x95, 0x01, // Report Count (1) |
Marcomissyou | 0:b0fc0661c081 | 27 | 0x75, 0x03, // Report Size (3) |
Marcomissyou | 0:b0fc0661c081 | 28 | 0x91, 0x01, // Output (Data, Variable, Absolute), Led report padding |
Marcomissyou | 0:b0fc0661c081 | 29 | |
Marcomissyou | 0:b0fc0661c081 | 30 | 0x95, 0x06, // Report Count (6) |
Marcomissyou | 0:b0fc0661c081 | 31 | 0x75, 0x08, // Report Size (8) |
Marcomissyou | 0:b0fc0661c081 | 32 | 0x15, 0x00, // Logical Minimum (0) |
Marcomissyou | 0:b0fc0661c081 | 33 | 0x25, 0x65, // Logical Maximum (101) |
Marcomissyou | 0:b0fc0661c081 | 34 | 0x05, 0x07, // Usage Page (Key codes) |
Marcomissyou | 0:b0fc0661c081 | 35 | 0x19, 0x00, // Usage Minimum (0) |
Marcomissyou | 0:b0fc0661c081 | 36 | 0x29, 0x65, // Usage Maximum (101) |
Marcomissyou | 0:b0fc0661c081 | 37 | 0x81, 0x00, // Input (Data, Array) Key array(6 bytes) |
Marcomissyou | 0:b0fc0661c081 | 38 | |
Marcomissyou | 0:b0fc0661c081 | 39 | 0x09, 0x05, // Usage (Vendor Defined) |
Marcomissyou | 0:b0fc0661c081 | 40 | 0x15, 0x00, // Logical Minimum (0) |
Marcomissyou | 0:b0fc0661c081 | 41 | 0x26, 0xFF, 0x00, // Logical Maximum (255) |
Marcomissyou | 0:b0fc0661c081 | 42 | 0x75, 0x08, // Report Count (2) |
Marcomissyou | 0:b0fc0661c081 | 43 | 0x95, 0x02, // Report Size (8 bit) |
Marcomissyou | 0:b0fc0661c081 | 44 | 0xB1, 0x02, // Feature (Data, Variable, Absolute) |
Marcomissyou | 0:b0fc0661c081 | 45 | 0xC0 // End Collection (Application) |
Marcomissyou | 0:b0fc0661c081 | 46 | }; |