App 2.13.0: tyre pressures in bar; 5-minute average power

Tyre pressures show in bar by default; Settings → Display offers kPa
and psi as well. Display only: the car reports kPa and the server keeps
storing kPa.

A "Power, 5-min average" card under Power: the time-weighted mean
battery power over the last five minutes, standing included, from the
same samples as the 5-minute range.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QLJfZQZeAKAwSqViTmLzki
This commit is contained in:
2026-10-18 13:26:02 +02:00
co-authored by Claude Opus 5.5
parent 66fed48aae
commit 40906ec4a7
12 changed files with 159 additions and 8 deletions
@@ -0,0 +1,40 @@
package com.evsuite.abrp;
import java.util.Locale;
/**
* The unit tyre pressures are shown in. The car reports kPa; this only changes the display.
* Android-free, unit-tested.
*/
enum PressureUnit {
BAR("bar", "%.1f bar", 0.01),
KPA("kPa", "%.0f kPa", 1.0),
PSI("psi", "%.1f psi", 0.145038);
static final String PREF_KEY = "tire_pressure_unit";
static final PressureUnit DEFAULT = BAR;
final String label;
private final String pattern;
private final double perKpa;
PressureUnit(String label, String pattern, double perKpa) {
this.label = label;
this.pattern = pattern;
this.perKpa = perKpa;
}
/** A reading in this unit, or a dash for none. */
String format(Float kpa) {
if (kpa == null || kpa.isNaN() || kpa.isInfinite()) return "—";
return String.format(Locale.US, pattern, kpa * perKpa);
}
/** The stored choice; anything unknown falls back to bar. */
static PressureUnit fromPref(String name) {
for (PressureUnit u : values()) {
if (u.name().equals(name)) return u;
}
return DEFAULT;
}
}