diff --git a/arch/esp32/esp32.ini b/arch/esp32/esp32.ini
index df3778002..72c0e13dc 100644
--- a/arch/esp32/esp32.ini
+++ b/arch/esp32/esp32.ini
@@ -46,7 +46,7 @@ lib_deps =
${environmental_base.lib_deps}
${radiolib_base.lib_deps}
https://github.com/meshtastic/esp32_https_server/archive/23665b3adc080a311dcbb586ed5941b5f94d6ea2.zip
- h2zero/NimBLE-Arduino@^1.4.3
+ h2zero/NimBLE-Arduino@^2.2.3
https://github.com/dbinfrago/libpax/archive/3cdc0371c375676a97967547f4065607d4c53fd1.zip
lewisxhe/XPowersLib@^0.2.7
https://github.com/meshtastic/ESP32_Codec2/archive/633326c78ac251c059ab3a8c430fcdf25b41672f.zip
diff --git a/platformio.ini b/platformio.ini
index 377635873..c79a02f88 100644
--- a/platformio.ini
+++ b/platformio.ini
@@ -85,7 +85,7 @@ build_src_filter = ${env.build_src_filter} - -getValue();
@@ -66,7 +66,7 @@ class NimbleBluetoothToRadioCallback : public NimBLECharacteristicCallbacks
class NimbleBluetoothFromRadioCallback : public NimBLECharacteristicCallbacks
{
- virtual void onRead(NimBLECharacteristic *pCharacteristic)
+ virtual void onRead(NimBLECharacteristic *pCharacteristic, NimBLEConnInfo &connInfo)
{
uint8_t fromRadioBytes[meshtastic_FromRadio_size];
size_t numBytes = bluetoothPhoneAPI->getFromRadio(fromRadioBytes);
@@ -79,7 +79,7 @@ class NimbleBluetoothFromRadioCallback : public NimBLECharacteristicCallbacks
class NimbleBluetoothServerCallback : public NimBLEServerCallbacks
{
- virtual uint32_t onPassKeyRequest()
+ virtual void onPassKeyEntry(NimBLEConnInfo &connInfo)
{
uint32_t passkey = config.bluetooth.fixed_pin;
@@ -122,10 +122,10 @@ class NimbleBluetoothServerCallback : public NimBLEServerCallbacks
#endif
passkeyShowing = true;
- return passkey;
+ NimBLEDevice::injectPassKey(connInfo, passkey);
}
- virtual void onAuthenticationComplete(ble_gap_conn_desc *desc)
+ virtual void onAuthenticationComplete(NimBLEConnInfo &connInfo)
{
LOG_INFO("BLE authentication complete");
@@ -138,9 +138,9 @@ class NimbleBluetoothServerCallback : public NimBLEServerCallbacks
}
}
- virtual void onDisconnect(NimBLEServer *pServer, ble_gap_conn_desc *desc)
+ virtual void onDisconnect(NimBLEServer *pServer, NimBLEConnInfo &connInfo, int reason)
{
- LOG_INFO("BLE disconnect");
+ LOG_INFO("BLE disconnect. Reason %i", reason);
bluetoothStatus->updateStatus(
new meshtastic::BluetoothStatus(meshtastic::BluetoothStatus::ConnectionState::DISCONNECTED));
@@ -191,7 +191,7 @@ int NimbleBluetooth::getRssi()
if (bleServer && isConnected()) {
auto service = bleServer->getServiceByUUID(MESH_SERVICE_UUID);
uint16_t handle = service->getHandle();
- return NimBLEDevice::getClientByID(handle)->getRssi();
+ return NimBLEDevice::getClientByHandle(handle)->getRssi();
}
return 0; // FIXME figure out where to source this
}
@@ -216,6 +216,7 @@ void NimbleBluetooth::setup()
NimbleBluetoothServerCallback *serverCallbacks = new NimbleBluetoothServerCallback();
bleServer->setCallbacks(serverCallbacks, true);
+ bleServer->advertiseOnDisconnect(true);
setupService();
startAdvertising();
}