mirror of
https://github.com/meshtastic/firmware.git
synced 2025-10-27 15:02:41 +00:00
requestLowerPowerConnection
This commit is contained in:
parent
00b95704fa
commit
492e2ae5e5
@ -591,9 +591,15 @@ class NimbleBluetoothServerCallback : public NimBLEServerCallbacks
|
|||||||
constraints, and recommendations. (Android doesn't have specific constraints, but seems to be compatible with the Apple
|
constraints, and recommendations. (Android doesn't have specific constraints, but seems to be compatible with the Apple
|
||||||
recommendations.)
|
recommendations.)
|
||||||
|
|
||||||
minInterval (units of 1.25ms): 7.5ms = 6 (lower than the Apple recommended minimum, but allows faster when the client
|
Selected settings:
|
||||||
supports it.) maxInterval (units of 1.25ms): 15ms = 12 latency: 0 (don't allow peripheral to skip any connection events)
|
minInterval (units of 1.25ms): 7.5ms = 6 (lower than the Apple recommended minimum, but allows faster when the client
|
||||||
timeout (units of 10ms): 6 seconds = 600 (supervision timeout)
|
supports it.)
|
||||||
|
maxInterval (units of 1.25ms): 15ms = 12
|
||||||
|
latency: 0 (don't allow peripheral to skip any connection events)
|
||||||
|
timeout (units of 10ms): 6 seconds = 600 (supervision timeout)
|
||||||
|
|
||||||
|
These are intentionally aggressive to prioritize speed over power consumption, but are only used for a few seconds at
|
||||||
|
setup. Not worth adjusting much.
|
||||||
*/
|
*/
|
||||||
LOG_INFO("BLE requestHighThroughputConnection");
|
LOG_INFO("BLE requestHighThroughputConnection");
|
||||||
#ifdef NIMBLE_TWO
|
#ifdef NIMBLE_TWO
|
||||||
@ -602,6 +608,37 @@ class NimbleBluetoothServerCallback : public NimBLEServerCallbacks
|
|||||||
bleServer->updateConnParams(desc->conn_handle, 6, 12, 0, 600);
|
bleServer->updateConnParams(desc->conn_handle, 6, 12, 0, 600);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef NIMBLE_TWO
|
||||||
|
void requestLowerPowerConnection(NimBLEConnInfo &connInfo)
|
||||||
|
#else
|
||||||
|
void requestLowerPowerConnection(ble_gap_conn_desc *desc)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
/* Request a lower power consumption (but higher latency, lower throughput) BLE connection.
|
||||||
|
|
||||||
|
This is suitable for steady-state operation after initial setup is complete.
|
||||||
|
|
||||||
|
See https://developer.apple.com/library/archive/qa/qa1931/_index.html for formulas to calculate values, iOS/macOS
|
||||||
|
constraints, and recommendations. (Android doesn't have specific constraints, but seems to be compatible with the Apple
|
||||||
|
recommendations.)
|
||||||
|
|
||||||
|
Selected settings:
|
||||||
|
minInterval (units of 1.25ms): 30ms = 24
|
||||||
|
maxInterval (units of 1.25ms): 50ms = 40
|
||||||
|
latency: 2 (allow peripheral to skip up to 2 consecutive connection events to save power)
|
||||||
|
timeout (units of 10ms): 6 seconds = 600 (supervision timeout)
|
||||||
|
|
||||||
|
There's an opportunity for tuning here if anyone wants to do some power measurements, but these should allow 10-20 packets
|
||||||
|
per second.
|
||||||
|
*/
|
||||||
|
LOG_INFO("BLE requestLowerPowerConnection");
|
||||||
|
#ifdef NIMBLE_TWO
|
||||||
|
bleServer->updateConnParams(connInfo.getConnHandle(), 24, 40, 2, 600);
|
||||||
|
#else
|
||||||
|
bleServer->updateConnParams(desc->conn_handle, 24, 40, 2, 600);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static NimbleBluetoothToRadioCallback *toRadioCallbacks;
|
static NimbleBluetoothToRadioCallback *toRadioCallbacks;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user