Files
overland-controller/tools/esp32_ble_discover/esp32_ble_discover.ino
T

74 lines
1.7 KiB
Arduino

#include <NimBLEDevice.h>
static const char* TARGET_ADDRESS = "a5:c2:37:2c:05:dc";
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println();
Serial.println("=== ESP32 BLE Service Discovery ===");
Serial.print("Target: ");
Serial.println(TARGET_ADDRESS);
NimBLEDevice::init("XterraESP32");
NimBLEDevice::setPower(ESP_PWR_LVL_P9);
NimBLEAddress address(TARGET_ADDRESS);
NimBLEClient* client = NimBLEDevice::createClient();
Serial.println("Connecting...");
bool connected = client->connect(address);
if (!connected) {
Serial.println("Connect failed.");
return;
}
Serial.println("Connected.");
Serial.println("Discovering services...");
std::vector<NimBLERemoteService*>* services = client->getServices(true);
if (!services) {
Serial.println("No services found.");
client->disconnect();
return;
}
Serial.print("Service count: ");
Serial.println(services->size());
for (auto service : *services) {
Serial.print("Service UUID: ");
Serial.println(service->getUUID().toString().c_str());
std::vector<NimBLERemoteCharacteristic*>* chars =
service->getCharacteristics(true);
if (!chars) {
continue;
}
for (auto ch : *chars) {
Serial.print(" Characteristic UUID: ");
Serial.print(ch->getUUID().toString().c_str());
Serial.print(" props:");
if (ch->canRead()) Serial.print(" READ");
if (ch->canWrite()) Serial.print(" WRITE");
if (ch->canWriteNoResponse()) Serial.print(" WRITE_NR");
if (ch->canNotify()) Serial.print(" NOTIFY");
Serial.println();
}
}
client->disconnect();
Serial.println("Done.");
}
void loop() {
}