My Project
 All Classes Functions Variables Pages
BLEHIDDevice.h
1 /*
2  * BLEHIDDevice.h
3  *
4  * Created on: Jan 03, 2018
5  * Author: chegewara
6  */
7 
8 #ifndef _BLEHIDDEVICE_H_
9 #define _BLEHIDDEVICE_H_
10 
11 #include "sdkconfig.h"
12 #if defined(CONFIG_BT_ENABLED)
13 
14 #include "BLECharacteristic.h"
15 #include "BLEService.h"
16 #include "BLEDescriptor.h"
17 #include "BLE2902.h"
18 #include "HIDTypes.h"
19 
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
29 
30 class BLEHIDDevice {
31 public:
32  BLEHIDDevice(BLEServer*);
33  virtual ~BLEHIDDevice();
34 
35  void reportMap(uint8_t* map, uint16_t);
36  void startServices();
37 
38  BLEService* deviceInfo();
39  BLEService* hidService();
40  BLEService* batteryService();
41 
42  BLECharacteristic* manufacturer();
43  void manufacturer(std::string name);
44  //BLECharacteristic* pnp();
45  void pnp(uint8_t sig, uint16_t vid, uint16_t pid, uint16_t version);
46  //BLECharacteristic* hidInfo();
47  void hidInfo(uint8_t country, uint8_t flags);
48  //BLECharacteristic* batteryLevel();
49  void setBatteryLevel(uint8_t level);
50 
51 
52  //BLECharacteristic* reportMap();
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();
60 
61 private:
62  BLEService* m_deviceInfoService; //0x180a
63  BLEService* m_hidService; //0x1812
64  BLEService* m_batteryService = 0; //0x180f
65 
66  BLECharacteristic* m_manufacturerCharacteristic; //0x2a29
67  BLECharacteristic* m_pnpCharacteristic; //0x2a50
68  BLECharacteristic* m_hidInfoCharacteristic; //0x2a4a
69  BLECharacteristic* m_reportMapCharacteristic; //0x2a4b
70  BLECharacteristic* m_hidControlCharacteristic; //0x2a4c
71  BLECharacteristic* m_protocolModeCharacteristic; //0x2a4e
72  BLECharacteristic* m_batteryLevelCharacteristic; //0x2a19
73 };
74 #endif // CONFIG_BT_ENABLED
75 #endif /* _BLEHIDDEVICE_H_ */