|
| 1 | +# Public energy-signal candidates |
| 2 | + |
| 3 | +Reviewed 2026-08-28 for CP-004. This review uses only public AOSP catalogues and the |
| 4 | +project's existing runtime read seam. It does not use proprietary artifacts or non-public |
| 5 | +property catalogues. |
| 6 | + |
| 7 | +## Safety and validation boundary |
| 8 | + |
| 9 | +Every entry below is read-only and starts with `validated: no`. A public property number proves |
| 10 | +only that AOSP assigned a number and semantics; it does not prove that an MG4 VHAL implements or |
| 11 | +publishes it. No candidate may enter `EnergySnapshot`, a production fallback or a stable UI until |
| 12 | +CP-003 records availability, unit, scale, sign and update cadence for every supported firmware |
| 13 | +generation. An unavailable or non-finite read stays null. |
| 14 | + |
| 15 | +## Public catalogue findings |
| 16 | + |
| 17 | +| Signal | Public declaration | Type / area / unit / mode | AOSP coverage | EVSuite disposition | validated | |
| 18 | +|---|---|---|---|---|---| |
| 19 | +| `EV_CURRENT_BATTERY_CAPACITY` (`291504909`, `0x1160030D`) | [AOSP snapshot `c80b787`](https://android.googlesource.com/platform/packages/services/Car/+/c80b787d499243d120c2738eb68e7c0520c7238d/car-lib/src/android/car/VehiclePropertyIds.java) | Float / global / Wh / on-change / read-only | Public post-AAOS 9 API; the declaration requires Car UDC with Android 13 or later | Highest-value new candidate: status-aware probe in unstable evidence capture only | no | |
| 20 | +| `EV_BATTERY_AVERAGE_TEMPERATURE` (`291504910`, `0x1160030E`) | [AOSP change `5b96f99`](https://android.googlesource.com/platform/packages/services/Car/+/5b96f99271e9209774a312c8f0fc1279dccf0678/car-lib/src/android/car/VehiclePropertyIds.java) | Float / global / °C / continuous / read-only | Added to the public API in December 2023 | Already read by the CP-001 baseline as nullable battery temperature; CP-004 adds no duplicate candidate | no | |
| 21 | +| `EV_BATTERY_INSTANTANEOUS_CHARGE_RATE` (`291504908`, `0x1160030C`) | [Android 9 AOSP snapshot `8686c86`](https://android.googlesource.com/platform/packages/services/Car/+/8686c86b38a590712412fea2dd083181aceba4f2/car-lib/src/android/car/VehiclePropertyIds.java) | Float / global / mW / continuous / read-only | Android 9 public catalogue | Existing CP-001 battery-power input; its live scale and sign still require CP-003 evidence | no | |
| 22 | + |
| 23 | +All cited files are Copyright Android Open Source Project and licensed Apache-2.0 at the cited |
| 24 | +commit. The review records public declarations, not copied implementation code. Vehicle coverage |
| 25 | +remains unknown for SWI68, SWI69, SWI131, SWI132, SWI133 and SWI165 until CP-003 runs on each one. |
| 26 | + |
| 27 | +## Explicit negative results |
| 28 | + |
| 29 | +| Requested quantity | Public catalogue result | Consequence | |
| 30 | +|---|---|---| |
| 31 | +| HVAC, compressor or PTC electrical power | No Android 9 or reviewed later public vehicle property. `HVAC_POWER_ON` is only a boolean subsystem state. | Climate energy can only be estimated from validated pack power and controlled trials. | |
| 32 | +| Battery-heater power | No public power or energy property found. Battery temperature is a temperature, not heater consumption. | No direct measurement candidate. | |
| 33 | +| DC-DC or accessory load | No public power or energy property found. | No direct measurement candidate. | |
| 34 | +| Cumulative battery discharge | No public cumulative counter found. `EV_BATTERY_LEVEL` is current stored energy. | Integrate validated instantaneous power, retaining uncertainty and gaps. | |
| 35 | +| Cumulative regeneration | No public cumulative counter found. Later regenerative-braking properties describe a state, not recovered energy. | Integrate only after CP-003 proves the power sign convention. | |
| 36 | +| Per-trip energy | No public per-trip energy property found. | EVSuite trip totals remain derived from validated samples. | |
| 37 | + |
| 38 | +The search deliberately stops here: sweeping arbitrary property ids would produce ambiguous data |
| 39 | +and broaden the runtime surface without provenance. |
| 40 | + |
| 41 | +## Probe wiring |
| 42 | + |
| 43 | +`EV_CURRENT_BATTERY_CAPACITY` is read through the same status-aware reflected |
| 44 | +`CarPropertyManager.getProperty` path as existing telemetry. The read is explicitly branched over |
| 45 | +the supported firmware generations and returns null for unknown firmware, unavailable status, |
| 46 | +negative values, exceptions and non-finite values. It is exposed only by |
| 47 | +`EnergyTelemetryReader.readEvidence()` and recorded as |
| 48 | +`candidate.evCurrentBatteryCapacityWh`; ordinary `read()` and `EnergySnapshot` are unchanged. |
0 commit comments