// 初始化BLE设备,设置本地设备名为“ESP32-S3 BLE Service”
//这是广播的时候名称
BLEDevice::init("ESP32-S3 BLE Service");
// 创建一个新的BLE服务器实例,并保存到pServer指针中
//BLEDevice::createServer();这个函数返回的是BLEServer类型的指针
//createServer是BLEDevice类里面的一个静态方法
//只可以调用一次这个函数,并不支持多个。
pServer = BLEDevice::createServer();
//下面这个需要提前创建好
// 定义一个指向BLEServer对象的指针,用于管理BLE服务器实例
//BLEServer *pServer = NULL;
// 创建一个BLE服务,并指定其UUID,并且获取到这个服务的指针。
//这个是服务,不是服务器。
BLEService *pService = pServer->createService(SERVICE_UUID);
// 创建一个发送特性,并设置其属性为可以发送通知
pTxCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID_TX, //给这个特性配置UUID号
BLECharacteristic::PROPERTY_NOTIFY//设置这个特性的权限
);
// 为这个特性添加一个CCCD描述符,允许客户端订阅通知
//有了这个描述符,客户可以设置这个描述符的值来告诉服务器要不要给我发通知,0x0000是不发送 0x0001是要发送
pTxCharacteristic->addDescriptor(new BLE2902());
配置了一个可写入权限,默认可容纳600字节。(由于这款手机app最大发送509个字节,我测试出至少509个字节是可以写入的,也可以读取出这509个字节)(实际手机可发送512字节,但是扣除固定3字节)
// 创建一个接收特性,并设置其属性为可写
pRxCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID_RX,//分配UUID
BLECharacteristic::PROPERTY_WRITE//设置这个特性的权限是什么
);