startMeasurement method

  1. @override
Future<VtjCommandResult<StartMeasurementResult>> startMeasurement(
  1. BluetoothDevice device,
  2. MeasurementConfig config
)
override

Start an accelerometer measurement with the given configuration. See BLE Interface Specification Section 7.3

Implementation

@override
Future<VtjCommandResult<StartMeasurementResult>> startMeasurement(
  BluetoothDevice device,
  MeasurementConfig config,
) async {
  final manager = _measurementRegistry.getManager(device);

  final result = await _executeCommand<StartMeasurementResult>(
    device: device,
    createCommand: () => StartMeasurementCommand(config),
  );

  // If command succeeded, start tracking measurement progress
  result.when(
    success: (_) {
      // Store config for later decompression during fetch
      final deviceId = device.remoteId.str;
      _measurementConfigByDevice[deviceId] = config;

      manager.startMeasurement(durationSeconds: config.durationSeconds);
    },
    failure: (error, code) {
      manager.failMeasurement(error, code);
    },
  );

  return result;
}