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->enableScanResponse(true);
|
||||
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;
|
||||
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 {
|
||||
|
||||
Reference in New Issue
Block a user