Hey ,
I use for the creation of a Bluettoth GattServer the NodeMCu-ESP-s and the Arduino- IDE.
I create a Server Service with 3 Characteristics.
I want to add to each Characteristic a Descriptor.
But I dont know how.Alltime I get a Error.
I attched my Scetch.
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>
#include <BLE2902.h>
#define SERVICE_UUID "58A329BE-1B1F-4A53-A874-854081499990"
#define CHARACTERISTIC_UUID_TX "C0448006-6CEE-4B41-9E73-D3FB3FF9FD81"
#define CHARACTERISTIC_UUID_RX "c0de0003-feed-f00d-c0ff-eeb3d2dbcce5"
#define CHARACTERISTIC_UUID_PacketCountTX "9308cd72-ac82-11e9-a2a3-2a2ae2dbcce4"
#define DESCRIPTOR_UUID_RX "ec57c662-ac5f-11e9-a2a3-2a2ae2dbcce4"
BLECharacteristic *pCharacteristicRX;
BLECharacteristic *pCharacteristicTX;
BLECharacteristic *pCharacteristicPacketCountTX;
BLEDescriptor pDescriptorRX(DESCRIPTOR_UUID_RX);
bool deviceConnected = false;
class EchoServerCallbacks: public BLEServerCallbacks
{
void onConnect(BLEServer* pServer)
{
deviceConnected = true;
//stop advt?
Serial.println("Connected!");
};
void onDisconnect(BLEServer* pServer)
{
//restart advt?
deviceConnected = false;
Serial.println("Disconnected!");
}
};
void setup()
{
Serial.begin(115200);
Serial.println();
Serial.println("GATT Server Test");
BLEDevice::init("GATT Server Test");
BLEServer *pServer = BLEDevice::createServer();
pServer->setCallbacks(new EchoServerCallbacks());
BLEService *pService = pServer->createService(SERVICE_UUID);
pCharacteristicRX = pService->createCharacteristic(
CHARACTERISTIC_UUID_RX,
BLECharacteristic::PROPERTY_WRITE
);
/******************************** What is wrong? ************************/
pDescriptorRX->setValue("Percentage 0 - 100");
pCharacteristicRX->addDescriptor(pDescriptorRX);
pCharacteristicRX->addDescriptor(new BLE2902());
/******************************************************************************/
pCharacteristicTX = pService->createCharacteristic(
CHARACTERISTIC_UUID_TX,
BLECharacteristic::PROPERTY_READ | BLECharacteristic::PROPERTY_WRITE
);
pCharacteristicPacketCountTX = pService->createCharacteristic(
CHARACTERISTIC_UUID_PacketCountTX,
BLECharacteristic::PROPERTY_WRITE | BLECharacteristic::PROPERTY_READ
);
pService->start();
BLEAdvertising *pAdvertising = pServer->getAdvertising();
pAdvertising->start();
Serial.println("Characteristic defined! Now you can read it in your phone!");
}
void loop()
{
//do stuff
// some delay before running repeatedly
delay(1000);
}