From 31438c5081e8ee5b520787a6e64b9372ec678886 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Thu, 4 Jan 2024 20:13:01 -0500 Subject: Configurable units fixes Notable changes: - Add pressure unit to the units model. - Add tire pressure unit configuration page under settings. - Rework the VSS client, provider, and the associated handling in the vehicle and audio state providers to make the signal updating code reusable for processing the result of VAL API get commands. - Add logic to get the initial values of the used VSS signals so the initial application state looks sane in demo scenarios. - Add VSS signal support to the units provider so that changes will be pushed out for e.g. IC use. - Fix pressure unit use in various widgets. - Fix up range calculation for dashboard to correctly account for units and the incoming VSS value being in meters. - Fix some unit naming inconsistencies around capitalization. Bug-AGL: SPEC-5031, SPEC-5032 Change-Id: I33ac735dfbe35283bd30c92aa157cbdb7af1837c Signed-off-by: Scott Murray --- lib/data/models/units.dart | 17 +++++++++++++---- lib/data/models/vehicle.dart | 16 ++++++++-------- 2 files changed, 21 insertions(+), 12 deletions(-) (limited to 'lib/data/models') diff --git a/lib/data/models/units.dart b/lib/data/models/units.dart index 9e71213..c299a12 100644 --- a/lib/data/models/units.dart +++ b/lib/data/models/units.dart @@ -4,32 +4,39 @@ enum DistanceUnit { kilometers, miles } enum TemperatureUnit { celsius, fahrenheit } +enum PressureUnit { kilopascals, psi } + @immutable class Units { final DistanceUnit distanceUnit; final TemperatureUnit temperatureUnit; + final PressureUnit pressureUnit; const Units( this.distanceUnit, this.temperatureUnit, + this.pressureUnit, ); const Units.initial() : distanceUnit = DistanceUnit.kilometers, - temperatureUnit = TemperatureUnit.celsius; + temperatureUnit = TemperatureUnit.celsius, + pressureUnit = PressureUnit.kilopascals; Units copyWith({ DistanceUnit? distanceUnit, TemperatureUnit? temperatureUnit, + PressureUnit? pressureUnit, }) { return Units( distanceUnit ?? this.distanceUnit, temperatureUnit ?? this.temperatureUnit, + pressureUnit ?? this.pressureUnit, ); } @override String toString() => - 'Units(distanceUnit: $distanceUnit, temperatureUnit: $temperatureUnit)'; + 'Units(distanceUnit: $distanceUnit, temperatureUnit: $temperatureUnit, pressureUnit: $pressureUnit)'; @override bool operator ==(Object other) { @@ -37,9 +44,11 @@ class Units { return other is Units && other.distanceUnit == distanceUnit && - other.temperatureUnit == temperatureUnit; + other.temperatureUnit == temperatureUnit && + other.pressureUnit == pressureUnit; } @override - int get hashCode => distanceUnit.hashCode ^ temperatureUnit.hashCode; + int get hashCode => + distanceUnit.hashCode ^ temperatureUnit.hashCode ^ pressureUnit.hashCode; } diff --git a/lib/data/models/vehicle.dart b/lib/data/models/vehicle.dart index ad76620..dfeae05 100644 --- a/lib/data/models/vehicle.dart +++ b/lib/data/models/vehicle.dart @@ -57,10 +57,10 @@ class Vehicle { fuelLevel = 0, isChildLockActiveLeft = false, isChildLockActiveRight = true, - frontLeftTire = 33, - frontRightTire = 31, - rearLeftTire = 31, - rearRightTire = 32, + frontLeftTire = 228, + frontRightTire = 214, + rearLeftTire = 214, + rearRightTire = 221, isAirConditioningActive = false, isFrontDefrosterActive = false, isRearDefrosterActive = false, @@ -79,10 +79,10 @@ class Vehicle { fuelLevel = 49, isChildLockActiveLeft = false, isChildLockActiveRight = true, - frontLeftTire = 33, - frontRightTire = 31, - rearLeftTire = 31, - rearRightTire = 32, + frontLeftTire = 228, + frontRightTire = 214, + rearLeftTire = 214, + rearRightTire = 221, isAirConditioningActive = false, isFrontDefrosterActive = false, isRearDefrosterActive = false, -- cgit 1.2.3-korg