diff options
author | 2024-01-05 18:50:51 -0500 | |
---|---|---|
committer | 2024-01-05 18:52:32 -0500 | |
commit | dbb971abeaa2beff2a13e421f8cca83b3054db34 (patch) | |
tree | 049af6bf56c53534807f6cb5de9803dcb111c4e6 /lib/vehicle-signals | |
parent | da47b0611f7495fb9f4727449721c18c9a617217 (diff) |
Fix unit handling
Fix distance unit handling with respect to the VSS signal for that,
and add temperature unit support.
Bug-AGL: SPEC-5045
Change-Id: I9b25c36c36d19da55f1b9bff7f380c55d592d5d6
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Diffstat (limited to 'lib/vehicle-signals')
-rw-r--r-- | lib/vehicle-signals/vehicle_status_provider.dart | 48 | ||||
-rw-r--r-- | lib/vehicle-signals/vss_path.dart | 5 | ||||
-rw-r--r-- | lib/vehicle-signals/vss_provider.dart | 18 |
3 files changed, 48 insertions, 23 deletions
diff --git a/lib/vehicle-signals/vehicle_status_provider.dart b/lib/vehicle-signals/vehicle_status_provider.dart index 9518f59..0c53b2d 100644 --- a/lib/vehicle-signals/vehicle_status_provider.dart +++ b/lib/vehicle-signals/vehicle_status_provider.dart @@ -2,6 +2,9 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
+enum DistanceUnit { kilometers, miles }
+enum TemperatureUnit { celsius, fahrenheit }
+
class VehicleStatus {
VehicleStatus({
required this.speed,
@@ -14,7 +17,7 @@ class VehicleStatus { required this.isLowBeam,
required this.isHighBeam,
required this.isHazardLightOn,
- required this.travelledDistance,
+ required this.traveledDistance,
required this.isParkingOn,
required this.performanceMode,
required this.ambientAirTemp,
@@ -25,9 +28,9 @@ class VehicleStatus { required this.isTrunkLocked,
required this.isTrunkOpen,
required this.isBatteryCharging,
-
- // steering switches
- required this.vehicleDistanceUnit,
+ required this.distanceUnit,
+ required this.temperatureUnit,
+ // Steering wheel switches
required this.isSteeringCruiseEnable,
required this.isSteeringCruiseSet,
required this.isSteeringCruiseResume,
@@ -56,9 +59,11 @@ class VehicleStatus { final bool isCruiseControlActive;
final bool isCruiseControlError;
final bool isBatteryCharging;
- final double travelledDistance;
+ final double traveledDistance;
+ final DistanceUnit distanceUnit;
+ final TemperatureUnit temperatureUnit;
- final String vehicleDistanceUnit;
+ // Steering wheel switches
final bool isSteeringCruiseEnable;
final bool isSteeringCruiseSet;
final bool isSteeringCruiseResume;
@@ -86,10 +91,11 @@ class VehicleStatus { bool? isCruiseControlError,
bool? isCruiseControlActive,
bool? isBatteryCharging,
- double? travelledDistance,
+ double? traveledDistance,
double? cruiseControlSpeed,
- // Steering
- String? vehicleDistanceUnit,
+ DistanceUnit? distanceUnit,
+ TemperatureUnit? temperatureUnit,
+ // Steering wheel switches
bool? isSteeringCruiseEnable,
bool? isSteeringCruiseSet,
bool? isSteeringCruiseResume,
@@ -108,7 +114,9 @@ class VehicleStatus { isLowBeam: isLowBeam ?? this.isLowBeam,
isHighBeam: isHighBeam ?? this.isHighBeam,
isHazardLightOn: isHazardLightOn ?? this.isHazardLightOn,
- travelledDistance: travelledDistance ?? this.travelledDistance,
+ traveledDistance: traveledDistance ?? this.traveledDistance,
+ distanceUnit: distanceUnit ?? this.distanceUnit,
+ temperatureUnit: temperatureUnit ?? this.temperatureUnit,
isParkingOn: isParkingOn ?? this.isParkingOn,
performanceMode: performanceMode ?? this.performanceMode,
isTrunkLocked: isTrunkLocked ?? this.isTrunkLocked,
@@ -130,7 +138,6 @@ class VehicleStatus { isSteeringInfo: isSteeringInfo ?? this.isSteeringInfo,
isSteeringLaneWarning:
isSteeringLaneWarning ?? this.isSteeringLaneWarning,
- vehicleDistanceUnit: vehicleDistanceUnit ?? this.vehicleDistanceUnit,
);
}
}
@@ -155,7 +162,7 @@ class VehicleStatusNotifier extends StateNotifier<VehicleStatus> { isHighBeam: true,
isLowBeam: false,
isParkingOn: true,
- travelledDistance: 888,
+ traveledDistance: 888,
ambientAirTemp: 25,
cruiseControlSpeed: 60,
isCruiseControlActive: false,
@@ -164,13 +171,14 @@ class VehicleStatusNotifier extends StateNotifier<VehicleStatus> { isTrunkLocked: true,
isTrunkOpen: false,
isBatteryCharging: true,
+ distanceUnit: DistanceUnit.kilometers,
+ temperatureUnit: TemperatureUnit.celsius,
isSteeringCruiseEnable: false,
isSteeringCruiseSet: false,
isSteeringCruiseResume: false,
isSteeringCruiseCancel: false,
isSteeringInfo: false,
isSteeringLaneWarning: false,
- vehicleDistanceUnit: 'km',
);
void update({
double? speed,
@@ -192,10 +200,11 @@ class VehicleStatusNotifier extends StateNotifier<VehicleStatus> { bool? isCruiseControlActive,
bool? isCruiseControlError,
bool? isBatteryCharging,
- double? travelledDistance,
+ double? traveledDistance,
double? cruiseControlSpeed,
- //
- String? vehicleDistanceUnit,
+ DistanceUnit? distanceUnit,
+ TemperatureUnit? temperatureUnit,
+ // Steering wheel switches
bool? isSteeringCruiseEnable,
bool? isSteeringCruiseSet,
bool? isSteeringCruiseResume,
@@ -214,7 +223,7 @@ class VehicleStatusNotifier extends StateNotifier<VehicleStatus> { isLowBeam: isLowBeam,
isHighBeam: isHighBeam,
isHazardLightOn: isHazardLightOn,
- travelledDistance: travelledDistance,
+ traveledDistance: traveledDistance,
performanceMode: performanceMode,
isParkingOn: isParkingOn,
isTrunkOpen: isTrunkOpen,
@@ -225,14 +234,15 @@ class VehicleStatusNotifier extends StateNotifier<VehicleStatus> { isCruiseControlError: isCruiseControlError,
cruiseControlSpeed: cruiseControlSpeed,
isBatteryCharging: isBatteryCharging,
- //
+ distanceUnit: distanceUnit,
+ temperatureUnit: temperatureUnit,
+ // Steering wheel switches
isSteeringCruiseEnable: isSteeringCruiseEnable,
isSteeringCruiseSet: isSteeringCruiseSet,
isSteeringCruiseResume: isSteeringCruiseResume,
isSteeringCruiseCancel: isSteeringCruiseCancel,
isSteeringInfo: isSteeringInfo,
isSteeringLaneWarning: isSteeringLaneWarning,
- vehicleDistanceUnit: vehicleDistanceUnit,
);
}
}
diff --git a/lib/vehicle-signals/vss_path.dart b/lib/vehicle-signals/vss_path.dart index dae8a53..047ad18 100644 --- a/lib/vehicle-signals/vss_path.dart +++ b/lib/vehicle-signals/vss_path.dart @@ -32,7 +32,7 @@ class VSSPath { static const String vehicleHazardLightOn = "Vehicle.Body.Lights.Hazard.IsSignaling";
- static const String vehicleTravelledDistance = "Vehicle.TraveledDistance";
+ static const String vehicleTraveledDistance = "Vehicle.TraveledDistance";
static const String vehicleTrunkLocked = "Vehicle.Body.Trunk.Rear.IsLocked";
@@ -77,6 +77,9 @@ class VSSPath { static const String vehicleDistanceUnit =
"Vehicle.Cabin.Infotainment.HMI.DistanceUnit";
+ static const String vehicleTemperatureUnit =
+ "Vehicle.Cabin.Infotainment.HMI.TemperatureUnit";
+
static const String vehicleCurrLat = "Vehicle.CurrentLocation.Latitude";
static const String vehicleCurrLon = "Vehicle.CurrentLocation.Longitude";
diff --git a/lib/vehicle-signals/vss_provider.dart b/lib/vehicle-signals/vss_provider.dart index 7820a52..50a3b6b 100644 --- a/lib/vehicle-signals/vss_provider.dart +++ b/lib/vehicle-signals/vss_provider.dart @@ -35,6 +35,7 @@ class DashboardVssClient extends VssClient { VSSPath.vehicleCruiseControlActive, VSSPath.vehicleBatteryChargingStatus, VSSPath.vehicleDistanceUnit, + VSSPath.vehicleTemperatureUnit, VSSPath.steeringCruiseEnable, VSSPath.steeringCruiseSet, VSSPath.steeringCruiseResume, @@ -140,9 +141,9 @@ class DashboardVssClient extends VssClient { vehicleStatus.update(performanceMode: update.entry.value.string); } break; - case VSSPath.vehicleTravelledDistance: + case VSSPath.vehicleTraveledDistance: if (update.entry.value.hasFloat()) { - vehicleStatus.update(travelledDistance: update.entry.value.float); + vehicleStatus.update(traveledDistance: update.entry.value.float); } break; case VSSPath.vehicleTrunkLocked: @@ -182,7 +183,18 @@ class DashboardVssClient extends VssClient { break; case VSSPath.vehicleDistanceUnit: if (update.entry.value.hasString()) { - vehicleStatus.update(vehicleDistanceUnit: update.entry.value.string); + DistanceUnit unit = DistanceUnit.kilometers; + if (update.entry.value.string == "MILES") + unit = DistanceUnit.miles; + vehicleStatus.update(distanceUnit: unit); + } + break; + case VSSPath.vehicleTemperatureUnit: + if (update.entry.value.hasString()) { + TemperatureUnit unit = TemperatureUnit.celsius; + if (update.entry.value.string == "F") + unit = TemperatureUnit.fahrenheit; + vehicleStatus.update(temperatureUnit: unit); } break; |