c4d4032b6b
- Add timestamp field to ProcessedGpsData with copyWith support - Add precision switching thresholds: 3.33 m/s (12 km/h) up, 2.22 m/s (8 km/h) down - Add PRECISION_SWITCH_FIRST_FIX_DELAY (5s) to prevent early switching - Add BACKGROUND_GRACE_PERIOD (7s) for lifecycle-aware GPS management - Mark GPS_GRACE_PERIOD as deprecated in favor of BACKGROUND_GRACE_PERIOD - Change GpsService.positionStream to createPositionStream() with dynamic accuracy - Keep deprecated positionStream getter for backward compatibility Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
40 lines
1.3 KiB
Dart
40 lines
1.3 KiB
Dart
class ProcessedGpsData {
|
|
final double speed; // Raw speed in m/s
|
|
final double heading; // Raw heading in degrees
|
|
final String displaySpeed; // Formatted speed text (with -- logic)
|
|
final String displayHeading; // Formatted heading text
|
|
final bool isSpeedValid; // True if from recent GPS
|
|
final bool isHeadingValid; // True if from recent GPS
|
|
final DateTime timestamp; // Timestamp for staleness detection
|
|
|
|
const ProcessedGpsData({
|
|
required this.speed,
|
|
required this.heading,
|
|
required this.displaySpeed,
|
|
required this.displayHeading,
|
|
required this.isSpeedValid,
|
|
required this.isHeadingValid,
|
|
required this.timestamp,
|
|
});
|
|
|
|
ProcessedGpsData copyWith({
|
|
double? speed,
|
|
double? heading,
|
|
String? displaySpeed,
|
|
String? displayHeading,
|
|
bool? isSpeedValid,
|
|
bool? isHeadingValid,
|
|
DateTime? timestamp,
|
|
}) {
|
|
return ProcessedGpsData(
|
|
speed: speed ?? this.speed,
|
|
heading: heading ?? this.heading,
|
|
displaySpeed: displaySpeed ?? this.displaySpeed,
|
|
displayHeading: displayHeading ?? this.displayHeading,
|
|
isSpeedValid: isSpeedValid ?? this.isSpeedValid,
|
|
isHeadingValid: isHeadingValid ?? this.isHeadingValid,
|
|
timestamp: timestamp ?? this.timestamp,
|
|
);
|
|
}
|
|
}
|