Dame el código para un ESP-32 que use la librería NimBLE para crear un servidor bluetooth que reciba un texto y lo imprima en consola.
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.