commit ad7e26aa2665cc9a4ed07835982dafb89e17b601 Author: Adema Date: Wed Apr 2 10:12:42 2025 +0200 Upload files to "BLE_client_ana" diff --git a/BLE_client_ana/BLE_client_ana.ino b/BLE_client_ana/BLE_client_ana.ino new file mode 100644 index 0000000..064b206 --- /dev/null +++ b/BLE_client_ana/BLE_client_ana.ino @@ -0,0 +1,76 @@ +#include +#include +#include +#include +#include +#include + +#define SERVICE_UUID "4fafc201-1fb5-459e-8fcc-c5c9c331914b" +#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8" + +BLEClient* pClient; +BLERemoteCharacteristic* pRemoteCharacteristic; +bool doConnect = false; +bool connected = false; +BLEAdvertisedDevice* myDevice; + +class MyAdvertisedDeviceCallbacks : public BLEAdvertisedDeviceCallbacks { + void onResult(BLEAdvertisedDevice advertisedDevice) { + if (advertisedDevice.haveServiceUUID() && advertisedDevice.getServiceUUID().equals(BLEUUID(SERVICE_UUID))) { + Serial.println("Found target device! Connecting..."); + myDevice = new BLEAdvertisedDevice(advertisedDevice); + doConnect = true; + } + } +}; + +void connectToServer() { + pClient = BLEDevice::createClient(); + Serial.println(" - Created client"); + + pClient->connect(myDevice); + Serial.println(" - Connected to server"); + + BLERemoteService* pRemoteService = pClient->getService(SERVICE_UUID); + if (pRemoteService == nullptr) { + Serial.println("Failed to find service UUID"); + pClient->disconnect(); + return; + } + Serial.println(" - Found service"); + + pRemoteCharacteristic = pRemoteService->getCharacteristic(CHARACTERISTIC_UUID); + if (pRemoteCharacteristic == nullptr) { + Serial.println("Failed to find characteristic UUID"); + pClient->disconnect(); + return; + } + Serial.println(" - Found characteristic"); + + if (pRemoteCharacteristic->canNotify()) { + pRemoteCharacteristic->registerForNotify([](BLERemoteCharacteristic* pBLERemoteCharacteristic, uint8_t* pData, size_t length, bool isNotify) { + Serial.print("Received: "); + Serial.println((char*)pData); + }); + } + connected = true; +} + +void setup() { + Serial.begin(115200); + Serial.println("Starting BLE Client..."); + + BLEDevice::init(""); + BLEScan* pBLEScan = BLEDevice::getScan(); + pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks()); + pBLEScan->setActiveScan(true); + pBLEScan->start(5, false); +} + +void loop() { + if (doConnect && !connected) { + connectToServer(); + doConnect = false; + } + //delay(1000); +}