/* Based on Neil Kolban example for IDF: https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/tests/BLE%20Tests/SampleServer.cpp Ported to Arduino ESP32 by Evandro Copercini updates by chegewara Refactored back to IDF by H2zero */ /** NimBLE differences highlighted in comment blocks **/ /*******original******** #include #include #include ***********************/ #include extern "C"{void app_main(void);} // 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" void app_main(void) { printf("Starting BLE work!\n"); BLEDevice::init("Long name works now"); BLEServer *pServer = BLEDevice::createServer(); BLEService *pService = pServer->createService(SERVICE_UUID); BLECharacteristic *pCharacteristic = pService->createCharacteristic( CHARACTERISTIC_UUID, /***** Enum Type NIMBLE_PROPERTY now ***** BLECharacteristic::PROPERTY_READ | BLECharacteristic::PROPERTY_WRITE ); *****************************************/ NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE ); pCharacteristic->setValue("Hello World says Neil"); pService->start(); // BLEAdvertising *pAdvertising = pServer->getAdvertising(); // this still is working for backward compatibility BLEAdvertising *pAdvertising = BLEDevice::getAdvertising(); pAdvertising->addServiceUUID(SERVICE_UUID); pAdvertising->enableScanResponse(true); /** These methods have been removed ** pAdvertising->setMinPreferred(0x06); // functions that help with iPhone connections issue pAdvertising->setMinPreferred(0x12); */ BLEDevice::startAdvertising(); printf("Characteristic defined! Now you can read it in your phone!\n"); }