Nimble Bookstoreを使用してESP-32にBluetoothサーバーを作成するC ++コードの例を次に示します。

#include <bledevice.h>
#include <bleerver.h>
#include <bleutils.h>
#include <ble2902.h>

bleerver *pserver = null;
bleservice *pservice = null;
bleharacteristic *pcharacteristic = null;

クラスmycallbacks：public blecharacteristiccallbacks {
  void onwrite（bleharacteristic *pcharacteristic）{
    std :: string rxvalue = pcharacteristic-> getValue（）;

    if（rxvalue.length（）> 0）{
      serial.println（ "受信値："）;
      for（int i = 0; i <rxvalue.length（）; i ++）{
        serial.print（rxvalue [i]）;
      }
      serial.println（）;
    }
  }
};

void setup（）{
  serial.begin（115200）;
  serial.println（ "BLE WORKの起動！"）;

  bledevice :: init（ "esp32 server"）;
  pserver = bledevice :: createServer（）;
  pservice = pserver-> createService（service_uid）;
  pcharacteristic = pservice-> createCharacteristic（
    特性_uid_rx、
    bleharacteristic :: property_notify |bleharacteristic :: property_write
  ）;

  pcharacteristic-> setCallbacks（new MyCallBacks（））;
  pservice-> start（）;

  BLEADVERTISING *PADVERTISING = BLEDEVICE :: getAdvertising（）;
  padvertising-> addserviceuid（service_uuid）;
  Padvertising-> setScanresse（false）;
  Padvertising-> Set Bruck（0x06）;
  Padvertising-> setMaxPreferred（0x12）;
  bledevice :: StartAdvertising（）;
  serial.println（ "特徴的な定義！携帯電話で読むことができます！"）;
}

void loop（）{
  bledevice :: poll（）;
}

この例では、Bluetoothサーバーと、書き込みを許可する機能を備えたサービスが作成されます。MyCallbacksクラスは、OnWriteイベントマネージャーを実装して、コンソールで受信したテキストを印刷します。最後に、サーバーは起動し、接続したいデバイスを探してリスニングを開始します。
Aquí hay un ejemplo de código en C++ que utiliza la librería NimBLE para crear un servidor Bluetooth en un ESP-32:

#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>
#include <BLE2902.h>

BLEServer *pServer = NULL;
BLEService *pService = NULL;
BLECharacteristic *pCharacteristic = NULL;

class MyCallbacks: public BLECharacteristicCallbacks {
  void onWrite(BLECharacteristic *pCharacteristic) {
    std::string rxValue = pCharacteristic->getValue();

    if (rxValue.length() > 0) {
      Serial.println("Received value: ");
      for (int i = 0; i < rxValue.length(); i++) {
        Serial.print(rxValue[i]);
      }
      Serial.println();
    }
  }
};

void setup() {
  Serial.begin(115200);
  Serial.println("Starting BLE work!");

  BLEDevice::init("ESP32 Server");
  pServer = BLEDevice::createServer();
  pService = pServer->createService(SERVICE_UUID);
  pCharacteristic = pService->createCharacteristic(
    CHARACTERISTIC_UUID_RX,
    BLECharacteristic::PROPERTY_NOTIFY | BLECharacteristic::PROPERTY_WRITE
  );

  pCharacteristic->setCallbacks(new MyCallbacks());
  pService->start();

  BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
  pAdvertising->addServiceUUID(SERVICE_UUID);
  pAdvertising->setScanResponse(false);
  pAdvertising->setMinPreferred(0x06);
  pAdvertising->setMaxPreferred(0x12);
  BLEDevice::startAdvertising();
  Serial.println("Characteristic defined! Now you can read it in your phone!");
}

void loop() {
  BLEDevice::poll();
}

En este ejemplo, se crea un servidor Bluetooth y un servicio con una característica que permite la escritura. La clase MyCallbacks implementa el manejador de eventos onWrite para imprimir en la consola cualquier texto recibido. Finalmente, el servidor se inicia y se comienza a escuchar en busca de dispositivos que quieran conectarse.