#include <Arduino.h>
#include <bledevice.h>
#include <ble2902.h>
BLEDevice BLE;
BLEServer* pServer = nullptr;
BLECharacteristic* pCharacteristic = nullptr;
//服务UUID
#define SERVICE_UUID "0000200H-0000-1000-8000-00805F9B34FB"
//特征UUID
#define CHARACTERISTIC_UUID "0000200H-0001-1000-8000-00805F9B34FB"
class MyServerCallbacks : public BLEServerCallbacks
{
void onConnect(BLEServer* pServer)
{
Serial.println("Client connected");
}
void onDisconnect(BLEServer* pServer)
{
Serial.println("Client disconnected");
//重启广播
BLEAdvertising* pAdvertising = pServer->getAdvertising();
pAdvertising->start();
}
};
class MyBLECharacteristicCallbacks : public BLECharacteristicCallbacks
{
void onWrite(BLECharacteristic* pCharacteristic)
{
std::string value = pCharacteristic->getValue();
Serial.print("Received Value: ");
Serial.println(value.c_str());
}
};
void setup()
{
Serial.begin(115200);
BLE.init("ESP32Device");
//创建服务
pServer = BLE.createServer();
BLEService* pservice = pServer->createService(SERVICE_UUID);
pServer -> setCallbacks(new MyServerCallbacks());
//创建特征
pCharacteristic = pservice->createCharacteristic(CHARACTERISTIC_UUID, BLECharacteristic::PROPERTY_NOTIFY);
pCharacteristic->setValue("Hello from ESP32");
pCharacteristic->setCallbacks(new MyBLECharacteristicCallbacks());
pCharacteristic->addDescriptor(new BLE2902());
pservice->start();
//开始广播
BLEAdvertising* pAdvertising = pServer->getAdvertising();
pAdvertising->addServiceUUID(SERVICE_UUID);
pAdvertising->setScanResponse(true);
pAdvertising->start();
}
void loop()
{
if(pServer->getConnectedCount() > 0)
{
pCharacteristic->setValue("Hello from ESP32");
pCharacteristic->notify();
delay(1000);
}
}
Service(服务),6 Characteristics(特征值)UUID:0000AE30-0000-1000-8000-00805F9B34FB
0000AE01-0000-1000-8000-00805F9B34FB支持类型:Write 0000AE02-0000-1000-8000-00805F9B34FB
支持类型:Notify 0000AE03-0000-1000-8000-00805F9B34FB
支持类型:Write 0000AE04-0000-1000-8000-00805F9B34FB
支持类型:Notify 0000AE05-0000-1000-8000-00805F9B34FB
支持类型:Indicate 0000AE10-0000-1000-8000-00805F9B34FB
支持类型:Read、Write
Service(服务),2 Characteristics(特征值)UUID:0000AE3A-0000-1000-8000-00805F9B34FB
0000AE3B-0000-1000-8000-00805F9B34FB支持类型:Write 0000AE3C-0000-1000-8000-00805F9B34FB支持类型:Notify
Service(服务),2 Characteristics(特征值)UUID:0000AE00-0000-1000-8000-00805F9B34FB
0000AE01-0000-1000-8000-00805F9B34FB支持类型:Write 0000AE02-0000-1000-8000-00805F9B34FB支持类型:Notify
Service(服务),1Characteristics(特征值)UUID:0000180F-0000-1000-8000-00805F9B34FB
00002A19-0000-1000-8000-00805F9B34FB支持类型:Notify、Read
Service(服务),1Characteristics(特征值)UUID:00001800-0000-1000-8000-00805F9B34FB
00002A00-0000-1000-8000-00805F9B34FB支持类型:Read、Write