Keep BLE UI state at CONNECTED while re-advertising
After #18 (MAX_CONNECTIONS=2), onConnect sets need_advertise=true to fill the second slot. start_advertising() then unconditionally overwrote state to ADVERTISING, so with a single connected client the UI flipped CONNECTED -> ADVERTISING on the next tick and stayed there until a second central attached. Only flip the state to ADVERTISING when no clients are connected. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
baed1d722b
commit
0b47a54956
@@ -87,8 +87,16 @@ static void start_advertising() {
|
|||||||
adv->setScanResponseData(scanResp);
|
adv->setScanResponseData(scanResp);
|
||||||
adv->enableScanResponse(true);
|
adv->enableScanResponse(true);
|
||||||
bool ok = adv->start();
|
bool ok = adv->start();
|
||||||
|
// Only reflect ADVERTISING in the UI state when no client is connected.
|
||||||
|
// With MAX_CONNECTIONS=2, onConnect re-advertises to fill the second slot;
|
||||||
|
// without this guard the UI would flip CONNECTED → ADVERTISING on every
|
||||||
|
// first connect and never come back until a second client arrived.
|
||||||
|
if (!server || server->getConnectedCount() == 0) {
|
||||||
state = BLE_STATE_ADVERTISING;
|
state = BLE_STATE_ADVERTISING;
|
||||||
Serial.printf("BLE: advertising start=%s\n", ok ? "OK" : "FAILED");
|
}
|
||||||
|
Serial.printf("BLE: advertising start=%s (connected=%u)\n",
|
||||||
|
ok ? "OK" : "FAILED",
|
||||||
|
server ? (unsigned)server->getConnectedCount() : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
class ServerCallbacks : public NimBLEServerCallbacks {
|
class ServerCallbacks : public NimBLEServerCallbacks {
|
||||||
|
|||||||
Reference in New Issue
Block a user