processData method

  1. @override
Future<List<StsResult>> processData({
  1. required List<SensorEvent> accData,
  2. required List<SensorEvent> gyroData,
  3. required List<SensorEvent> magData,
  4. required double accActualRate,
  5. required double gyroActualRate,
  6. required double magActualRate,
})
override

Processes raw sensor data and returns a list of StsResults.

accData - List of accelerometer sensor events. gyroData - List of gyroscope sensor events. magData - List of magnetometer sensor events. accActualRate - Actual sampling rate of accelerometer. gyroActualRate - Actual sampling rate of gyroscope. magActualRate - Actual sampling rate of magnetometer. Returns a list of processed StsResults.

Implementation

@override
Future<List<StsResult>> processData({
  required List<SensorEvent> accData,
  required List<SensorEvent> gyroData,
  required List<SensorEvent> magData,
  required double accActualRate,
  required double gyroActualRate,
  required double magActualRate,
}) async {

  if (config.useAccelerometer && config.accelerometerAxes.contains(SensorAxis.y) && config.sensorLocation == SensorLocation.chest) {
    cycles = countStsCyclesChest(accData: accData, gyroData: gyroData, accActualRate: accActualRate, gyroActualRate: gyroActualRate);
    for(Cycle cycle in cycles) {
      for (SensorEvent event in cycle.events) {
        detectedCycles.add(event);
      }
    }
    if (kDebugMode) {
      print('[StsProcessor] SensorLocation.chest algorithm');
    }
  } else if (config.useGyroscope && config.gyroscopeAxes.contains(SensorAxis.x) && config.sensorLocation == SensorLocation.thigh) {
    cycles = countStsCyclesThigh(accData: accData, gyroData: gyroData, accActualRate: accActualRate, gyroActualRate: gyroActualRate);
    if (kDebugMode) {
      print('[StsProcessor] SensorLocation.thigh algorithm');
    }
  }

   final cycleTimes = <double>[];
   int numCycles = cycles.length;
   for (Cycle cycle in cycles) {
     final cycleTime = cycle.events.last.timestamp.difference(cycle.events.first.timestamp).inMilliseconds / 1000.0;
     cycleTimes.add(cycleTime);
     if (kDebugMode) {
       print('cycleTime[${cycles.indexOf(cycle)}]:$cycleTime');
     }
   }
  cycles = [];
  return [
    StsResult.fromResults(
      cycleCount: numCycles,
      cycleTimes: cycleTimes,
    )
  ];
}