stopMeasurement method
Prematurely stop an accelerometer measurement. See BLE Interface Specification Section 7.4
Implementation
@override
Future<VtjCommandResult<StopMeasurementResult>> stopMeasurement(
BluetoothDevice device,
) async {
final manager = _measurementRegistry.getManager(device);
final result = await _executeCommand<StopMeasurementResult>(
device: device,
createCommand: () => StopMeasurementCommand(),
);
// Reset measurement state on stop
result.when(
success: (_) {
// Get device state to confirm measurement stopped
getDeviceState(device).then((stateResult) {
stateResult.when(
success: (state) {
if (state.measurementState == 2) {
manager.completeMeasurement();
} else {
manager.reset();
}
},
failure: (_, __) => manager.reset(),
);
});
},
failure: (error, code) {
manager.failMeasurement(error, code);
},
);
return result;
}