Add ESP32 BLE service discovery sketch
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
#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() {
|
||||
}
|
||||
Reference in New Issue
Block a user