8 #ifndef _BLEHIDDEVICE_H_
9 #define _BLEHIDDEVICE_H_
11 #include "sdkconfig.h"
12 #if defined(CONFIG_BT_ENABLED)
14 #include "BLECharacteristic.h"
15 #include "BLEService.h"
16 #include "BLEDescriptor.h"
20 #define GENERIC_HID 0x03C0
21 #define HID_KEYBOARD 0x03C1
22 #define HID_MOUSE 0x03C2
23 #define HID_JOYSTICK 0x03C3
24 #define HID_GAMEPAD 0x03C4
25 #define HID_TABLET 0x03C5
26 #define HID_CARD_READER 0x03C6
27 #define HID_DIGITAL_PEN 0x03C7
28 #define HID_BARCODE 0x03C8
32 BLEHIDDevice(BLEServer*);
33 virtual ~BLEHIDDevice();
35 void reportMap(uint8_t* map, uint16_t);
38 BLEService* deviceInfo();
39 BLEService* hidService();
40 BLEService* batteryService();
42 BLECharacteristic* manufacturer();
43 void manufacturer(std::string name);
45 void pnp(uint8_t sig, uint16_t vid, uint16_t pid, uint16_t version);
47 void hidInfo(uint8_t country, uint8_t flags);
49 void setBatteryLevel(uint8_t level);
53 BLECharacteristic* hidControl();
54 BLECharacteristic* inputReport(uint8_t reportID);
55 BLECharacteristic* outputReport(uint8_t reportID);
56 BLECharacteristic* featureReport(uint8_t reportID);
57 BLECharacteristic* protocolMode();
58 BLECharacteristic* bootInput();
59 BLECharacteristic* bootOutput();
62 BLEService* m_deviceInfoService;
63 BLEService* m_hidService;
64 BLEService* m_batteryService = 0;
66 BLECharacteristic* m_manufacturerCharacteristic;
67 BLECharacteristic* m_pnpCharacteristic;
68 BLECharacteristic* m_hidInfoCharacteristic;
69 BLECharacteristic* m_reportMapCharacteristic;
70 BLECharacteristic* m_hidControlCharacteristic;
71 BLECharacteristic* m_protocolModeCharacteristic;
72 BLECharacteristic* m_batteryLevelCharacteristic;
74 #endif // CONFIG_BT_ENABLED