22
22
* @brief Construct a default NimBLEHIDDevice object.
23
23
* @param [in] server A pointer to the server instance this HID Device will use.
24
24
*/
25
- NimBLEHIDDevice::NimBLEHIDDevice (NimBLEServer *server)
26
- {
25
+ NimBLEHIDDevice::NimBLEHIDDevice (NimBLEServer* server) {
27
26
/*
28
27
* Here we create mandatory services described in bluetooth specification
29
28
*/
30
- m_deviceInfoService = server->createService (NimBLEUUID ((uint16_t )0x180a ));
31
- m_hidService = server->createService (NimBLEUUID ((uint16_t )0x1812 ));
32
- m_batteryService = server->createService (NimBLEUUID ((uint16_t )0x180f ));
29
+ m_deviceInfoService = server->createService (NimBLEUUID ((uint16_t ) 0x180a ));
30
+ m_hidService = server->createService (NimBLEUUID ((uint16_t ) 0x1812 ));
31
+ m_batteryService = server->createService (NimBLEUUID ((uint16_t ) 0x180f ));
33
32
34
33
/*
35
34
* Mandatory characteristic for device info service
36
35
*/
37
- m_pnpCharacteristic = m_deviceInfoService->createCharacteristic ((uint16_t )0x2a50 , NIMBLE_PROPERTY::READ);
36
+ m_pnpCharacteristic = m_deviceInfoService->createCharacteristic ((uint16_t ) 0x2a50 , NIMBLE_PROPERTY::READ);
38
37
39
38
/*
40
39
* Non-mandatory characteristics for device info service
@@ -45,16 +44,16 @@ NimBLEHIDDevice::NimBLEHIDDevice(NimBLEServer *server)
45
44
/*
46
45
* Mandatory characteristics for HID service
47
46
*/
48
- m_hidInfoCharacteristic = m_hidService->createCharacteristic ((uint16_t )0x2a4a , NIMBLE_PROPERTY::READ);
49
- m_reportMapCharacteristic = m_hidService->createCharacteristic ((uint16_t )0x2a4b , NIMBLE_PROPERTY::READ);
50
- m_hidControlCharacteristic = m_hidService->createCharacteristic ((uint16_t )0x2a4c , NIMBLE_PROPERTY::WRITE_NR);
51
- m_protocolModeCharacteristic = m_hidService->createCharacteristic ((uint16_t )0x2a4e , NIMBLE_PROPERTY::WRITE_NR | NIMBLE_PROPERTY::READ);
47
+ m_hidInfoCharacteristic = m_hidService->createCharacteristic ((uint16_t ) 0x2a4a , NIMBLE_PROPERTY::READ);
48
+ m_reportMapCharacteristic = m_hidService->createCharacteristic ((uint16_t ) 0x2a4b , NIMBLE_PROPERTY::READ);
49
+ m_hidControlCharacteristic = m_hidService->createCharacteristic ((uint16_t ) 0x2a4c , NIMBLE_PROPERTY::WRITE_NR);
50
+ m_protocolModeCharacteristic = m_hidService->createCharacteristic ((uint16_t ) 0x2a4e , NIMBLE_PROPERTY::WRITE_NR | NIMBLE_PROPERTY::READ);
52
51
53
52
/*
54
53
* Mandatory battery level characteristic with notification and presence descriptor
55
54
*/
56
- m_batteryLevelCharacteristic = m_batteryService->createCharacteristic ((uint16_t )0x2a19 , NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::NOTIFY);
57
- NimBLE2904 * batteryLevelDescriptor = (NimBLE2904 *)m_batteryLevelCharacteristic->createDescriptor ((uint16_t )0x2904 );
55
+ m_batteryLevelCharacteristic = m_batteryService->createCharacteristic ((uint16_t ) 0x2a19 , NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::NOTIFY);
56
+ NimBLE2904* batteryLevelDescriptor = (NimBLE2904*)m_batteryLevelCharacteristic->createDescriptor ((uint16_t ) 0x2904 );
58
57
batteryLevelDescriptor->setFormat (NimBLE2904::FORMAT_UINT8);
59
58
batteryLevelDescriptor->setNamespace (1 );
60
59
batteryLevelDescriptor->setUnit (0x27ad );
@@ -63,30 +62,27 @@ NimBLEHIDDevice::NimBLEHIDDevice(NimBLEServer *server)
63
62
* This value is setup here because its default value in most usage cases, its very rare to use boot mode
64
63
* and we want to simplify library using as much as possible
65
64
*/
66
- const uint8_t pMode[] = {0x01 };
67
- protocolMode ()->setValue ((uint8_t *) pMode, 1 );
65
+ const uint8_t pMode[] = { 0x01 };
66
+ protocolMode ()->setValue ((uint8_t *) pMode, 1 );
68
67
}
69
68
70
- NimBLEHIDDevice::~NimBLEHIDDevice ()
71
- {
69
+ NimBLEHIDDevice::~NimBLEHIDDevice () {
72
70
}
73
71
74
72
/* *
75
73
* @brief Set the report map data formatting information.
76
74
* @param [in] map A pointer to an array with the values to set.
77
75
* @param [in] size The number of values in the array.
78
76
*/
79
- void NimBLEHIDDevice::reportMap (uint8_t *map, uint16_t size)
80
- {
77
+ void NimBLEHIDDevice::reportMap (uint8_t * map, uint16_t size) {
81
78
m_reportMapCharacteristic->setValue (map, size);
82
79
}
83
80
84
81
/* *
85
82
* @brief Start the HID device services.\n
86
83
* This function called when all the services have been created.
87
84
*/
88
- void NimBLEHIDDevice::startServices ()
89
- {
85
+ void NimBLEHIDDevice::startServices () {
90
86
m_deviceInfoService->start ();
91
87
m_hidService->start ();
92
88
m_batteryService->start ();
@@ -95,8 +91,7 @@ void NimBLEHIDDevice::startServices()
95
91
/* *
96
92
* @brief Create a manufacturer characteristic (this characteristic is optional).
97
93
*/
98
- NimBLECharacteristic *NimBLEHIDDevice::manufacturer ()
99
- {
94
+ NimBLECharacteristic* NimBLEHIDDevice::manufacturer () {
100
95
if (m_manufacturerCharacteristic == nullptr )
101
96
m_manufacturerCharacteristic = m_deviceInfoService->createCharacteristic ((uint16_t )0x2a29 , NIMBLE_PROPERTY::READ);
102
97
return m_manufacturerCharacteristic;
@@ -106,8 +101,7 @@ NimBLECharacteristic *NimBLEHIDDevice::manufacturer()
106
101
* @brief Set manufacturer name
107
102
* @param [in] name The manufacturer name of this HID device.
108
103
*/
109
- void NimBLEHIDDevice::manufacturer (std::string name)
110
- {
104
+ void NimBLEHIDDevice::manufacturer (std::string name) {
111
105
manufacturer ()->setValue (name);
112
106
}
113
107
@@ -118,8 +112,7 @@ void NimBLEHIDDevice::manufacturer(std::string name)
118
112
* @param [in] pid The product ID number.
119
113
* @param [in] version The produce version number.
120
114
*/
121
- void NimBLEHIDDevice::pnp (uint8_t sig, uint16_t vid, uint16_t pid, uint16_t version)
122
- {
115
+ void NimBLEHIDDevice::pnp (uint8_t sig, uint16_t vid, uint16_t pid, uint16_t version) {
123
116
// uint8_t pnp[] = {sig, (uint8_t)(vid >> 8), (uint8_t)vid, (uint8_t)(pid >> 8), (uint8_t)pid, (uint8_t)(version >> 8), (uint8_t)version};
124
117
uint8_t pnp[] = {
125
118
sig,
@@ -138,9 +131,8 @@ void NimBLEHIDDevice::pnp(uint8_t sig, uint16_t vid, uint16_t pid, uint16_t vers
138
131
* @param [in] country The country code for the device.
139
132
* @param [in] flags The HID Class Specification release number to use.
140
133
*/
141
- void NimBLEHIDDevice::hidInfo (uint8_t country, uint8_t flags)
142
- {
143
- uint8_t info[] = {0x11 , 0x1 , country, flags};
134
+ void NimBLEHIDDevice::hidInfo (uint8_t country, uint8_t flags) {
135
+ uint8_t info[] = { 0x11 , 0x1 , country, flags };
144
136
m_hidInfoCharacteristic->setValue (info, sizeof (info));
145
137
}
146
138
@@ -149,13 +141,12 @@ void NimBLEHIDDevice::hidInfo(uint8_t country, uint8_t flags)
149
141
* @param [in] reportID input report ID, the same as in report map for input object related to the characteristic
150
142
* @return pointer to new input report characteristic
151
143
*/
152
- NimBLECharacteristic *NimBLEHIDDevice::inputReport (uint8_t reportID)
153
- {
154
- NimBLECharacteristic *inputReportCharacteristic = m_hidService->createCharacteristic ((uint16_t )0x2a4d , NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::NOTIFY | NIMBLE_PROPERTY::READ_ENC);
155
- NimBLEDescriptor *inputReportDescriptor = inputReportCharacteristic->createDescriptor ((uint16_t )0x2908 , NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::READ_ENC);
144
+ NimBLECharacteristic* NimBLEHIDDevice::inputReport (uint8_t reportID) {
145
+ NimBLECharacteristic* inputReportCharacteristic = m_hidService->createCharacteristic ((uint16_t ) 0x2a4d , NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::NOTIFY | NIMBLE_PROPERTY::READ_ENC);
146
+ NimBLEDescriptor* inputReportDescriptor = inputReportCharacteristic->createDescriptor ((uint16_t ) 0x2908 , NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::READ_ENC);
156
147
157
- uint8_t desc1_val[] = {reportID, 0x01 };
158
- inputReportDescriptor->setValue ((uint8_t *) desc1_val, 2 );
148
+ uint8_t desc1_val[] = { reportID, 0x01 };
149
+ inputReportDescriptor->setValue ((uint8_t *) desc1_val, 2 );
159
150
160
151
return inputReportCharacteristic;
161
152
}
@@ -165,13 +156,12 @@ NimBLECharacteristic *NimBLEHIDDevice::inputReport(uint8_t reportID)
165
156
* @param [in] reportID Output report ID, the same as in report map for output object related to the characteristic
166
157
* @return Pointer to new output report characteristic
167
158
*/
168
- NimBLECharacteristic *NimBLEHIDDevice::outputReport (uint8_t reportID)
169
- {
170
- NimBLECharacteristic *outputReportCharacteristic = m_hidService->createCharacteristic ((uint16_t )0x2a4d , NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE | NIMBLE_PROPERTY::WRITE_NR | NIMBLE_PROPERTY::READ_ENC | NIMBLE_PROPERTY::WRITE_ENC);
171
- NimBLEDescriptor *outputReportDescriptor = outputReportCharacteristic->createDescriptor ((uint16_t )0x2908 , NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE | NIMBLE_PROPERTY::READ_ENC | NIMBLE_PROPERTY::WRITE_ENC);
159
+ NimBLECharacteristic* NimBLEHIDDevice::outputReport (uint8_t reportID) {
160
+ NimBLECharacteristic* outputReportCharacteristic = m_hidService->createCharacteristic ((uint16_t ) 0x2a4d , NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE | NIMBLE_PROPERTY::WRITE_NR | NIMBLE_PROPERTY::READ_ENC | NIMBLE_PROPERTY::WRITE_ENC);
161
+ NimBLEDescriptor* outputReportDescriptor = outputReportCharacteristic->createDescriptor ((uint16_t ) 0x2908 , NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE | NIMBLE_PROPERTY::READ_ENC | NIMBLE_PROPERTY::WRITE_ENC);
172
162
173
- uint8_t desc1_val[] = {reportID, 0x02 };
174
- outputReportDescriptor->setValue ((uint8_t *) desc1_val, 2 );
163
+ uint8_t desc1_val[] = { reportID, 0x02 };
164
+ outputReportDescriptor->setValue ((uint8_t *) desc1_val, 2 );
175
165
176
166
return outputReportCharacteristic;
177
167
}
@@ -181,63 +171,56 @@ NimBLECharacteristic *NimBLEHIDDevice::outputReport(uint8_t reportID)
181
171
* @param [in] reportID Feature report ID, the same as in report map for feature object related to the characteristic
182
172
* @return Pointer to new feature report characteristic
183
173
*/
184
- NimBLECharacteristic *NimBLEHIDDevice::featureReport (uint8_t reportID)
185
- {
186
- NimBLECharacteristic *featureReportCharacteristic = m_hidService->createCharacteristic ((uint16_t )0x2a4d , NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE | NIMBLE_PROPERTY::READ_ENC | NIMBLE_PROPERTY::WRITE_ENC);
187
- NimBLEDescriptor *featureReportDescriptor = featureReportCharacteristic->createDescriptor ((uint16_t )0x2908 , NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE | NIMBLE_PROPERTY::READ_ENC | NIMBLE_PROPERTY::WRITE_ENC);
174
+ NimBLECharacteristic* NimBLEHIDDevice::featureReport (uint8_t reportID) {
175
+ NimBLECharacteristic* featureReportCharacteristic = m_hidService->createCharacteristic ((uint16_t ) 0x2a4d , NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE | NIMBLE_PROPERTY::READ_ENC | NIMBLE_PROPERTY::WRITE_ENC);
176
+ NimBLEDescriptor* featureReportDescriptor = featureReportCharacteristic->createDescriptor ((uint16_t ) 0x2908 , NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE | NIMBLE_PROPERTY::READ_ENC | NIMBLE_PROPERTY::WRITE_ENC);
188
177
189
- uint8_t desc1_val[] = {reportID, 0x03 };
190
- featureReportDescriptor->setValue ((uint8_t *) desc1_val, 2 );
178
+ uint8_t desc1_val[] = { reportID, 0x03 };
179
+ featureReportDescriptor->setValue ((uint8_t *) desc1_val, 2 );
191
180
192
181
return featureReportCharacteristic;
193
182
}
194
183
195
184
/* *
196
185
* @brief Creates a keyboard boot input report characteristic
197
186
*/
198
- NimBLECharacteristic *NimBLEHIDDevice::bootInput ()
199
- {
200
- return m_hidService->createCharacteristic ((uint16_t )0x2a22 , NIMBLE_PROPERTY::NOTIFY);
187
+ NimBLECharacteristic* NimBLEHIDDevice::bootInput () {
188
+ return m_hidService->createCharacteristic ((uint16_t ) 0x2a22 , NIMBLE_PROPERTY::NOTIFY);
201
189
}
202
190
203
191
/* *
204
192
* @brief Create a keyboard boot output report characteristic
205
193
*/
206
- NimBLECharacteristic *NimBLEHIDDevice::bootOutput ()
207
- {
208
- return m_hidService->createCharacteristic ((uint16_t )0x2a32 , NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE | NIMBLE_PROPERTY::WRITE_NR);
194
+ NimBLECharacteristic* NimBLEHIDDevice::bootOutput () {
195
+ return m_hidService->createCharacteristic ((uint16_t ) 0x2a32 , NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE | NIMBLE_PROPERTY::WRITE_NR);
209
196
}
210
197
211
198
/* *
212
199
* @brief Returns a pointer to the HID control point characteristic.
213
200
*/
214
- NimBLECharacteristic *NimBLEHIDDevice::hidControl ()
215
- {
201
+ NimBLECharacteristic* NimBLEHIDDevice::hidControl () {
216
202
return m_hidControlCharacteristic;
217
203
}
218
204
219
205
/* *
220
206
* @brief Returns a pointer to the protocol mode characteristic.
221
207
*/
222
- NimBLECharacteristic *NimBLEHIDDevice::protocolMode ()
223
- {
208
+ NimBLECharacteristic* NimBLEHIDDevice::protocolMode () {
224
209
return m_protocolModeCharacteristic;
225
210
}
226
211
227
212
/* *
228
213
* @brief Set the battery level characteristic value.
229
214
* @param [in] level The battery level value.
230
215
*/
231
- void NimBLEHIDDevice::setBatteryLevel (uint8_t level)
232
- {
216
+ void NimBLEHIDDevice::setBatteryLevel (uint8_t level) {
233
217
m_batteryLevelCharacteristic->setValue (&level, 1 );
234
218
}
235
219
/*
236
220
* @brief Returns battery level characteristic
237
221
* @ return battery level characteristic
238
222
*/
239
- NimBLECharacteristic *NimBLEHIDDevice::batteryLevel ()
240
- {
223
+ NimBLECharacteristic* NimBLEHIDDevice::batteryLevel () {
241
224
return m_batteryLevelCharacteristic;
242
225
}
243
226
@@ -260,24 +243,21 @@ BLECharacteristic* BLEHIDDevice::hidInfo() {
260
243
/* *
261
244
* @brief Returns a pointer to the device information service.
262
245
*/
263
- NimBLEService *NimBLEHIDDevice::deviceInfo ()
264
- {
246
+ NimBLEService* NimBLEHIDDevice::deviceInfo () {
265
247
return m_deviceInfoService;
266
248
}
267
249
268
250
/* *
269
251
* @brief Returns a pointer to the HID service.
270
252
*/
271
- NimBLEService *NimBLEHIDDevice::hidService ()
272
- {
253
+ NimBLEService* NimBLEHIDDevice::hidService () {
273
254
return m_hidService;
274
255
}
275
256
276
257
/* *
277
258
* @brief @brief Returns a pointer to the battery service.
278
259
*/
279
- NimBLEService *NimBLEHIDDevice::batteryService ()
280
- {
260
+ NimBLEService* NimBLEHIDDevice::batteryService () {
281
261
return m_batteryService;
282
262
}
283
263
0 commit comments