From b6907e63f2cbf67ed5908954ed5ff0ebc2b8c50b Mon Sep 17 00:00:00 2001 From: chrismcna Date: Sat, 22 Aug 2020 11:53:05 +0100 Subject: [PATCH] BLE - Added device information service, plus firmware and manufacturer characteristic --- src/hardware/blectl.cpp | 23 +++++++++++++++++++++++ src/hardware/blectl.h | 5 +++++ 2 files changed, 28 insertions(+) diff --git a/src/hardware/blectl.cpp b/src/hardware/blectl.cpp index 77f459b..db2fc44 100644 --- a/src/hardware/blectl.cpp +++ b/src/hardware/blectl.cpp @@ -264,6 +264,29 @@ void blectl_setup( void ) { // Start advertising pServer->getAdvertising()->addServiceUUID( pService->getUUID() ); + + // Create device information service + BLEService *pDeviceInformationService = pServer->createService(DEVICE_INFORMATION_SERVICE_UUID); + + // Create manufacturer name string Characteristic - + BLECharacteristic* pManufacturerNameStringCharacteristic = pDeviceInformationService->createCharacteristic( MANUFACTURER_NAME_STRING_CHARACTERISTIC_UUID, BLECharacteristic::PROPERTY_READ ); + pManufacturerNameStringCharacteristic->setAccessPermissions(ESP_GATT_PERM_READ_ENCRYPTED | ESP_GATT_PERM_WRITE_ENCRYPTED); + pManufacturerNameStringCharacteristic->addDescriptor( new BLE2902() ); + pManufacturerNameStringCharacteristic->setValue("Lily Go"); + + // Create manufacturer name string Characteristic - + BLECharacteristic* pFirmwareRevisionStringCharacteristic = pDeviceInformationService->createCharacteristic( FIRMWARE_REVISION_STRING_CHARACTERISTIC_UUID, BLECharacteristic::PROPERTY_READ ); + pFirmwareRevisionStringCharacteristic->setAccessPermissions(ESP_GATT_PERM_READ_ENCRYPTED | ESP_GATT_PERM_WRITE_ENCRYPTED); + pFirmwareRevisionStringCharacteristic->addDescriptor( new BLE2902() ); + pFirmwareRevisionStringCharacteristic->setValue(__FIRMWARE__); + + // Start battery service + pDeviceInformationService->start(); + + // Start advertising battery service + pServer->getAdvertising()->addServiceUUID( pDeviceInformationService->getUUID() ); + + // Create battery service BLEService *pBatteryService = pServer->createService(BATTERY_SERVICE_UUID); diff --git a/src/hardware/blectl.h b/src/hardware/blectl.h index 173450d..1417c5d 100644 --- a/src/hardware/blectl.h +++ b/src/hardware/blectl.h @@ -30,6 +30,11 @@ #define CHARACTERISTIC_UUID_RX BLEUUID("6E400002-B5A3-F393-E0A9-E50E24DCCA9E") #define CHARACTERISTIC_UUID_TX BLEUUID("6E400003-B5A3-F393-E0A9-E50E24DCCA9E") + + #define DEVICE_INFORMATION_SERVICE_UUID BLEUUID((uint16_t)0x180A) // Device Information server UUID + #define MANUFACTURER_NAME_STRING_CHARACTERISTIC_UUID BLEUUID((uint16_t)0x2A29) // Device Information - manufacturer name string UUID + #define FIRMWARE_REVISION_STRING_CHARACTERISTIC_UUID BLEUUID((uint16_t)0x2A26) // Device Information - firmware revision UUID + #define BATTERY_SERVICE_UUID BLEUUID((uint16_t)0x180F) // Battery service UUID #define BATTERY_SERVICE_BATTERY_LEVEL_CHARACTERISTIC_UUID BLEUUID((uint16_t)0x2A19) // Battery service - battery level characteristic UUID #define BATTERY_SERVICE_BATTERY_LEVEL_DESCRIPTOR_UUID BLEUUID((uint16_t)0x2901) // Battery service - battery level descriptor UUID