-
Alexander Sparkowsky authoredAlexander Sparkowsky authored
SampleWrite.cpp 1.63 KiB
/**
* Create a BLE Server such that when a client connects and requests a change to the characteristic
* value, the callback associated with the server will be invoked such that the server can perform
* some action based on the new value. The action in this sample is merely to log the new value to
* the console.
*/
#include "BLEUtils.h"
#include "BLEServer.h"
#include <esp_log.h>
#include <string>
#include <sys/time.h>
#include <sstream>
#include "BLEDevice.h"
#include "sdkconfig.h"
static char LOG_TAG[] = "SampleWrite";
// See the following for generating UUIDs:
// https://www.uuidgenerator.net/
#define SERVICE_UUID "4fafc201-1fb5-459e-8fcc-c5c9c331914b"
#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8"
class MyCallbacks: public BLECharacteristicCallbacks {
void onWrite(BLECharacteristic *pCharacteristic) {
std::string value = pCharacteristic->getValue();
if (value.length() > 0) {
ESP_LOGD(LOG_TAG, "*********");
ESP_LOGD(LOG_TAG, "New value: %.2x", value[0]);
ESP_LOGD(LOG_TAG, "*********");
}
}
};
static void run() {
BLEDevice::init("MYDEVICE");
BLEServer *pServer = new BLEServer();
BLEService *pService = pServer->createService(BLEUUID(SERVICE_UUID));
BLECharacteristic *pCharacteristic = pService->createCharacteristic(
BLEUUID(CHARACTERISTIC_UUID),
BLECharacteristic::PROPERTY_READ | BLECharacteristic::PROPERTY_WRITE
);
pCharacteristic->setCallbacks(new MyCallbacks());
pCharacteristic->setValue("Hello World");
pService->start();
BLEAdvertising *pAdvertising = pServer->getAdvertising();
pAdvertising->start();
}
void SampleWrite(void)
{
run();
} // app_main