@@ -259,7 +259,7 @@ void BLEAdvertisementData::addData(std::string data) {
259
259
void BLEAdvertisementData::setAppearance (uint16_t appearance) {
260
260
char cdata[2 ];
261
261
cdata[0 ] = 3 ;
262
- cdata[1 ] = ESP_BLE_AD_TYPE_APPEARANCE;
262
+ cdata[1 ] = ESP_BLE_AD_TYPE_APPEARANCE; // 0x19
263
263
addData (std::string (cdata, 2 ) + std::string ((char *)&appearance,2 ));
264
264
} // setAppearance
265
265
@@ -274,23 +274,23 @@ void BLEAdvertisementData::setCompleteServices(BLEUUID uuid) {
274
274
case 16 : {
275
275
// [Len] [0x02] [LL] [HH]
276
276
cdata[0 ] = 3 ;
277
- cdata[1 ] = ESP_BLE_AD_TYPE_16SRV_CMPL;
277
+ cdata[1 ] = ESP_BLE_AD_TYPE_16SRV_CMPL; // 0x03
278
278
addData (std::string (cdata, 2 ) + std::string ((char *)&uuid.getNative ()->uuid .uuid16 ,2 ));
279
279
break ;
280
280
}
281
281
282
282
case 32 : {
283
283
// [Len] [0x04] [LL] [LL] [HH] [HH]
284
284
cdata[0 ] = 5 ;
285
- cdata[1 ] = ESP_BLE_AD_TYPE_32SRV_CMPL;
285
+ cdata[1 ] = ESP_BLE_AD_TYPE_32SRV_CMPL; // 0x05
286
286
addData (std::string (cdata, 2 ) + std::string ((char *)&uuid.getNative ()->uuid .uuid32 ,4 ));
287
287
break ;
288
288
}
289
289
290
290
case 128 : {
291
291
// [Len] [0x04] [0] [1] ... [15]
292
292
cdata[0 ] = 17 ;
293
- cdata[1 ] = ESP_BLE_AD_TYPE_128SRV_CMPL;
293
+ cdata[1 ] = ESP_BLE_AD_TYPE_128SRV_CMPL; // 0x07
294
294
addData (std::string (cdata, 2 ) + std::string ((char *)uuid.getNative ()->uuid .uuid128 ,16 ));
295
295
break ;
296
296
}
@@ -315,7 +315,7 @@ void BLEAdvertisementData::setCompleteServices(BLEUUID uuid) {
315
315
void BLEAdvertisementData::setFlags (uint8_t flag) {
316
316
char cdata[3 ];
317
317
cdata[0 ] = 2 ;
318
- cdata[1 ] = ESP_BLE_AD_TYPE_FLAG;
318
+ cdata[1 ] = ESP_BLE_AD_TYPE_FLAG; // 0x01
319
319
cdata[2 ] = flag;
320
320
addData (std::string (cdata, 3 ));
321
321
} // setFlag
@@ -330,7 +330,7 @@ void BLEAdvertisementData::setManufacturerData(std::string data) {
330
330
ESP_LOGD (" BLEAdvertisementData" , " >> setManufacturerData" );
331
331
char cdata[2 ];
332
332
cdata[0 ] = data.length () + 1 ;
333
- cdata[1 ] = ESP_BLE_AD_MANUFACTURER_SPECIFIC_TYPE;
333
+ cdata[1 ] = ESP_BLE_AD_MANUFACTURER_SPECIFIC_TYPE; // 0xff
334
334
addData (std::string (cdata, 2 ) + data);
335
335
ESP_LOGD (" BLEAdvertisementData" , " << setManufacturerData" );
336
336
} // setManufacturerData
@@ -344,7 +344,7 @@ void BLEAdvertisementData::setName(std::string name) {
344
344
ESP_LOGD (" BLEAdvertisementData" , " >> setName: %s" , name.c_str ());
345
345
char cdata[2 ];
346
346
cdata[0 ] = name.length () + 1 ;
347
- cdata[1 ] = ESP_BLE_AD_TYPE_NAME_CMPL;
347
+ cdata[1 ] = ESP_BLE_AD_TYPE_NAME_CMPL; // 0x09
348
348
addData (std::string (cdata, 2 ) + name);
349
349
ESP_LOGD (" BLEAdvertisementData" , " << setName" );
350
350
} // setName
@@ -360,23 +360,23 @@ void BLEAdvertisementData::setPartialServices(BLEUUID uuid) {
360
360
case 16 : {
361
361
// [Len] [0x02] [LL] [HH]
362
362
cdata[0 ] = 3 ;
363
- cdata[1 ] = ESP_BLE_AD_TYPE_16SRV_PART;
363
+ cdata[1 ] = ESP_BLE_AD_TYPE_16SRV_PART; // 0x02
364
364
addData (std::string (cdata, 2 ) + std::string ((char *)&uuid.getNative ()->uuid .uuid16 ,2 ));
365
365
break ;
366
366
}
367
367
368
368
case 32 : {
369
369
// [Len] [0x04] [LL] [LL] [HH] [HH]
370
370
cdata[0 ] = 5 ;
371
- cdata[1 ] = ESP_BLE_AD_TYPE_32SRV_PART;
371
+ cdata[1 ] = ESP_BLE_AD_TYPE_32SRV_PART; // 0x04
372
372
addData (std::string (cdata, 2 ) + std::string ((char *)&uuid.getNative ()->uuid .uuid32 ,4 ));
373
373
break ;
374
374
}
375
375
376
376
case 128 : {
377
377
// [Len] [0x04] [0] [1] ... [15]
378
378
cdata[0 ] = 17 ;
379
- cdata[1 ] = ESP_BLE_AD_TYPE_128SRV_PART;
379
+ cdata[1 ] = ESP_BLE_AD_TYPE_128SRV_PART; // 0x06
380
380
addData (std::string (cdata, 2 ) + std::string ((char *)uuid.getNative ()->uuid .uuid128 ,16 ));
381
381
break ;
382
382
}
@@ -387,6 +387,44 @@ void BLEAdvertisementData::setPartialServices(BLEUUID uuid) {
387
387
} // setPartialServices
388
388
389
389
390
+ /* *
391
+ * @brief Set the service data (UUID + data)
392
+ * @param [in] uuid The UUID to set with the service data. Size of UUID will be used.
393
+ * @param [in] data The data to be associated with the service data advert.
394
+ */
395
+ void BLEAdvertisementData::setServiceData (BLEUUID uuid, std::string data) {
396
+ char cdata[2 ];
397
+ switch (uuid.bitSize ()) {
398
+ case 16 : {
399
+ // [Len] [0x16] [UUID16] data
400
+ cdata[0 ] = data.length () + 3 ;
401
+ cdata[1 ] = ESP_BLE_AD_TYPE_SERVICE_DATA; // 0x16
402
+ addData (std::string (cdata, 2 ) + std::string ((char *)&uuid.getNative ()->uuid .uuid16 ,2 ) + data);
403
+ break ;
404
+ }
405
+
406
+ case 32 : {
407
+ // [Len] [0x20] [UUID32] data
408
+ cdata[0 ] = data.length () + 5 ;
409
+ cdata[1 ] = ESP_BLE_AD_TYPE_32SERVICE_DATA; // 0x20
410
+ addData (std::string (cdata, 2 ) + std::string ((char *)&uuid.getNative ()->uuid .uuid32 ,4 ) + data);
411
+ break ;
412
+ }
413
+
414
+ case 128 : {
415
+ // [Len] [0x21] [UUID128] data
416
+ cdata[0 ] = data.length () + 17 ;
417
+ cdata[1 ] = ESP_BLE_AD_TYPE_128SERVICE_DATA; // 0x21
418
+ addData (std::string (cdata, 2 ) + std::string ((char *)uuid.getNative ()->uuid .uuid128 ,16 ) + data);
419
+ break ;
420
+ }
421
+
422
+ default :
423
+ return ;
424
+ }
425
+ } // setServiceData
426
+
427
+
390
428
/* *
391
429
* @brief Set the short name.
392
430
* @param [in] The short name of the device.
@@ -395,7 +433,7 @@ void BLEAdvertisementData::setShortName(std::string name) {
395
433
ESP_LOGD (" BLEAdvertisementData" , " >> setShortName: %s" , name.c_str ());
396
434
char cdata[2 ];
397
435
cdata[0 ] = name.length () + 1 ;
398
- cdata[1 ] = ESP_BLE_AD_TYPE_NAME_SHORT;
436
+ cdata[1 ] = ESP_BLE_AD_TYPE_NAME_SHORT; // 0x08
399
437
addData (std::string (cdata, 2 ) + name);
400
438
ESP_LOGD (" BLEAdvertisementData" , " << setShortName" );
401
439
} // setShortName
0 commit comments