From a7b5da5dd25d8729be914655260a189c44164349 Mon Sep 17 00:00:00 2001 From: geeksville Date: Thu, 13 Feb 2020 11:53:46 -0800 Subject: [PATCH] only one announcer seems supported in ESP32 BLE, so use that for our mesh service --- lib/BluetoothOTA/src/BluetoothUtil.cpp | 10 ++++------ src/main.ino | 12 +++++++++--- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/BluetoothOTA/src/BluetoothUtil.cpp b/lib/BluetoothOTA/src/BluetoothUtil.cpp index 14a20890..f1ea5b0f 100644 --- a/lib/BluetoothOTA/src/BluetoothUtil.cpp +++ b/lib/BluetoothOTA/src/BluetoothUtil.cpp @@ -199,19 +199,17 @@ BLEServer *initBLE(std::string deviceName, std::string hwVendor, std::string swV // BLEService *pBattery = createBatteryService(pServer); BLEService *pUpdate = createUpdateService(pServer); // We need to advertise this so our android ble scan operation can see it - pServer->getAdvertising()->addServiceUUID(pUpdate->getUUID()); + + // It seems only one service can be advertised - so for now don't advertise our updater + // pServer->getAdvertising()->addServiceUUID(pUpdate->getUUID()); // start all our services (do this after creating all of them) pDevInfo->start(); pUpdate->start(); - // Start advertising - BLEAdvertising *advert = pServer->getAdvertising(); - // FIXME turn on this restriction only after the device is paired with a phone // advert->setScanFilter(false, true); // We let anyone scan for us (FIXME, perhaps only allow that until we are paired with a phone and configured) but only let whitelist phones connect - - advert->start(); + BLESecurity *pSecurity = new BLESecurity(); pSecurity->setCapability(ESP_IO_CAP_OUT); diff --git a/src/main.ino b/src/main.ino index 66ad55de..87e5fa7b 100644 --- a/src/main.ino +++ b/src/main.ino @@ -382,6 +382,9 @@ void setup() DEBUG_MSG("Starting bluetooth\n"); BLEServer *serve = initBLE(getDeviceName(), HW_VENDOR, APP_VERSION); // FIXME, use a real name based on the macaddr createMeshBluetoothService(serve); + + // Start advertising - this must be done _after_ creating all services + serve->getAdvertising()->start(); } enableModemSleep(); @@ -422,9 +425,12 @@ void loop() if (axp.isVbusRemoveIRQ()) isCharging = false; - // This is not a GPIO actually connected on the tbeam board - // digitalWrite(2, !digitalRead(2)); - axp.clearIRQ(); + if (axp.isAcinPlugInIRQ()) + fixme - cleanup all this is chrarging crap.just read the status registers then clear the irq + isUSBPowered = true + // This is not a GPIO actually connected on the tbeam board + // digitalWrite(2, !digitalRead(2)); + axp.clearIRQ(); } #endif }