diff --git a/lib/foreground_task/task_handler.dart b/lib/foreground_task/task_handler.dart index ac566817e2571cae021b5805a20af226f499e426..e40b84a17f542dfa20a00149b718979c0071d172 100644 --- a/lib/foreground_task/task_handler.dart +++ b/lib/foreground_task/task_handler.dart @@ -399,7 +399,7 @@ class ForegroundTaskHandler extends TaskHandler { ..sensorTwoDistances = s2Data ..sensorOneDistances = s1Data ..confirmedIdx = confirmedIdx - ..timestamp = now + ..timestamp = now.toUtc() ..batteryVoltage = 4.0 // TODO: get the battery voltage via ble ..latitude = location.latitude ..longitude = location.longitude diff --git a/lib/manager/upload_manger.dart b/lib/manager/upload_manger.dart index 9fa1f93dd950406b86fd198aa1ff0199eec76de9..0bd673ea1dacb9091d6d641ccef002008030aa55 100644 --- a/lib/manager/upload_manger.dart +++ b/lib/manager/upload_manger.dart @@ -4,6 +4,7 @@ import 'package:app/manager/settings_manager.dart'; import 'package:http/http.dart' as http; import 'package:http_parser/http_parser.dart'; import 'package:isar/isar.dart'; +import 'package:package_info_plus/package_info_plus.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -82,20 +83,21 @@ class UploadManager { } String _genMetadataHeader(Trip trip, int maxMeasurements, - int handlebarDistance, int maxFlightTimeinMicroSec) { + int handlebarDistance, int maxFlightTimeinMicroSec, String appVersion) { // https://github.com/openbikesensor/OpenBikeSensorFirmware/blob/main/docs/software/firmware/csv_format.md#metadata final fields = [ "OBSFirmwareVersion=${trip.obsFirmwareRevision}", "OBSDataFormat=2", "DataPerMeasurement=3", "MaximumMeasurementsPerLine=$maxMeasurements", - "OffsetLeft=${handlebarDistance / 2}", - "OffsetRight=${handlebarDistance / 2}", + "OffsetLeft=$handlebarDistance", + "OffsetRight=$handlebarDistance", "NumberOfDefinedPrivacyAreas=0", // can be 0 as we do not record in privacy areas "PrivacyLevelApplied=AbsolutePrivacy", "MaximumValidFlightTimeMicroseconds=$maxFlightTimeinMicroSec", "DistanceSensorsUsed=HC-SR04/JSN-SR04T", // TODO read from db - "DeviceId=obs-app" + "DeviceId=obs-app-$appVersion", + "TimeZone=UTC" ]; return fields.join("&"); } @@ -193,11 +195,16 @@ class UploadManager { return fields.join(";"); } - String _genCSVFile( - Trip trip, int handlebarDistance, int maxFlightTimeinMicroSec) { + String _genCSVFile(Trip trip, int handlebarDistance, String appVersion, + int maxFlightTimeinMicroSec) { final maxMeasurements = _maxDistanceForTrip(trip); final metadata = _genMetadataHeader( - trip, maxMeasurements, handlebarDistance, maxFlightTimeinMicroSec); + trip, + maxMeasurements, + handlebarDistance, + maxFlightTimeinMicroSec, + appVersion, + ); final header = _genCSVHeader(trip, maxMeasurements); final List<String> rows = []; @@ -226,7 +233,9 @@ class UploadManager { throw Exception("No portal key set"); } - String csvContent = _genCSVFile(trip, handlebarDistance, + final appVersion = (await PackageInfo.fromPlatform()).version; + + String csvContent = _genCSVFile(trip, handlebarDistance, appVersion, maxMeasurements * MICRO_SEC_TO_CM_DIVIDER.toInt()); String filename = "${trip.trackID}_${trip.createdAt.toString()}.csv";