@@ -14,16 +14,19 @@ import com.evsuite.hardware.AppLogger
1414import com.evsuite.hardware.EVHardware
1515import com.evsuite.hardware.FirmwareInfo
1616import com.evsuite.hardware.diag.CrashLogger
17+ import com.evsuite.hardware.telemetry.ConsumptionCalculator
1718import com.evsuite.hardware.telemetry.EnergySnapshot
1819import com.evsuite.hardware.telemetry.EnergyTripSession
1920import com.evsuite.hardware.telemetry.Provenanced
21+ import com.evsuite.hardware.telemetry.UnavailableReason
2022import java.util.Locale
2123import java.util.concurrent.Executors
2224
2325class MainActivity : AppCompatActivity () {
2426
2527 private lateinit var binding: ActivityMainBinding
2628 private lateinit var provenance: ProvenanceText
29+ private val consumption = ConsumptionCalculator ()
2730 /* * Ten binder reads and a disk read for the diagnostics report; not the main thread's work. */
2831 private val background = Executors .newSingleThreadExecutor { runnable ->
2932 Thread (runnable, " chargepilot-diagnostics" )
@@ -105,7 +108,17 @@ class MainActivity : AppCompatActivity() {
105108 }
106109
107110 private fun render (value : EnergySnapshot ) {
108- val readings = DashboardReadings .of(value, EnergyTripSession .current(value.timestampMs))
111+ val missingReason = if (value.firmware == FirmwareInfo .Gen .UNKNOWN ) {
112+ UnavailableReason .UNSUPPORTED_FIRMWARE
113+ } else {
114+ UnavailableReason .SIGNAL_ABSENT
115+ }
116+ val consumptionReading = consumption.add(value, missingReason)
117+ val readings = DashboardReadings .of(
118+ value,
119+ EnergyTripSession .current(value.timestampMs),
120+ consumptionReading.smoothedInstantaneous,
121+ )
109122 latestReadings = readings
110123 renderReadings(readings)
111124 binding.climateValue.text = climate(value)
@@ -138,11 +151,17 @@ class MainActivity : AppCompatActivity() {
138151 bind(binding.powerValue, R .string.label_power, readings.power, PATTERN_POWER , POWER_UNAVAILABLE )
139152 bind(binding.outsideTempValue, R .string.label_outside_temp, readings.outsideTemp, PATTERN_TEMP )
140153 bind(binding.batteryTempValue, R .string.label_battery_temp, readings.batteryTemp, PATTERN_TEMP )
154+ bind(
155+ binding.instantConsumptionValue,
156+ R .string.label_instant_consumption,
157+ readings.instantConsumption,
158+ PATTERN_CONSUMPTION ,
159+ )
141160 bind(binding.tripDistanceValue, R .string.label_distance, readings.tripDistance, PATTERN_DISTANCE )
142161 bind(binding.tripEnergyValue, R .string.label_energy_used, readings.tripEnergy, PATTERN_ENERGY )
143162 bind(binding.tripRegenValue, R .string.label_regenerated, readings.tripRegen, PATTERN_ENERGY )
144163 bind(
145- binding.tripConsumptionValue, R .string.label_consumption ,
164+ binding.tripConsumptionValue, R .string.label_trip_average_consumption ,
146165 readings.tripConsumption, PATTERN_CONSUMPTION ,
147166 )
148167 val recorded = provenance.renderWith(readings.tripDuration, transform = ::duration)
@@ -171,6 +190,7 @@ class MainActivity : AppCompatActivity() {
171190
172191 private fun renderUnavailable () {
173192 latestReadings = DashboardReadings .empty()
193+ consumption.reset()
174194 renderReadings(latestReadings)
175195 binding.climateValue.text = DASH
176196 binding.dataStatus.text = getString(R .string.status_waiting_for_vehicle)
@@ -235,10 +255,19 @@ class MainActivity : AppCompatActivity() {
235255 Triple (R .string.label_power, readings.power, PATTERN_POWER ),
236256 Triple (R .string.label_outside_temp, readings.outsideTemp, PATTERN_TEMP ),
237257 Triple (R .string.label_battery_temp, readings.batteryTemp, PATTERN_TEMP ),
258+ Triple (
259+ R .string.label_instant_consumption,
260+ readings.instantConsumption,
261+ PATTERN_CONSUMPTION ,
262+ ),
238263 Triple (R .string.label_distance, readings.tripDistance, PATTERN_DISTANCE ),
239264 Triple (R .string.label_energy_used, readings.tripEnergy, PATTERN_ENERGY ),
240265 Triple (R .string.label_regenerated, readings.tripRegen, PATTERN_ENERGY ),
241- Triple (R .string.label_consumption, readings.tripConsumption, PATTERN_CONSUMPTION ),
266+ Triple (
267+ R .string.label_trip_average_consumption,
268+ readings.tripConsumption,
269+ PATTERN_CONSUMPTION ,
270+ ),
242271 ).map { (label, value, pattern) ->
243272 provenance.describe(getString(label), value, provenance.render(value, pattern))
244273 }
0 commit comments