feat: update optimizations

This commit is contained in:
2026-05-04 13:18:03 +02:00
parent f5e5c3904f
commit 9b672a7503
4 changed files with 60 additions and 1 deletions

View File

@ -148,6 +148,8 @@ class FirmwareUpdateService {
await _connectToBootloader(timeout: effectiveBootloaderConnectTimeout);
}
await _optimizeBootloaderConnection();
final mtuResult =
await _transport.negotiateMtu(requestedMtu: requestedMtu);
if (mtuResult.isErr()) {
@ -455,6 +457,13 @@ class FirmwareUpdateService {
}
}
Future<void> _optimizeBootloaderConnection() async {
final result = await _transport.optimizeBootloaderConnection();
if (result.isErr()) {
_emitProgress(errorMessage: result.unwrapErr().toString());
}
}
Future<DfuBootloaderStatus> _sendStartAndWaitForStatus(
BootloaderDfuStartPayload payload, {
required Duration timeout,
@ -481,6 +490,7 @@ class FirmwareUpdateService {
errorMessage: failure.message,
);
await _connectToBootloader(timeout: bootloaderConnectTimeout);
await _optimizeBootloaderConnection();
await _subscribeToStatus();
_emitProgress(state: DfuUpdateState.waitingForStatus);
return _requestStatus(timeout: timeout);
@ -746,6 +756,8 @@ abstract interface class FirmwareUpdateTransport {
Future<Result<void>> connectToBootloader({required Duration timeout});
Future<Result<void>> optimizeBootloaderConnection();
Future<Result<int>> negotiateMtu({required int requestedMtu});
Stream<List<int>> subscribeToStatus();
@ -832,6 +844,17 @@ class ShifterFirmwareUpdateTransport implements FirmwareUpdateTransport {
);
}
@override
Future<Result<void>> optimizeBootloaderConnection() {
final deviceId = _requireBootloaderDeviceId();
if (deviceId.isErr()) {
return Future.value(Err(deviceId.unwrapErr()));
}
return bluetoothController.requestHighPerformanceConnection(
deviceId.unwrap(),
);
}
@override
Future<Result<int>> negotiateMtu({required int requestedMtu}) {
final deviceId = _requireBootloaderDeviceId();