Skip to content

Commit 6e261cf

Browse files
malysclaude
andcommitted
feat(diagnostic): exterior-light evidence row (CR-046)
The EXTERIOR_LIGHTS row shows and exports the six light properties raw (status, value, timestamp). Export once with a light off and once on: that pair is the proof that fills ExteriorLights.PROVEN, from EVTasker rather than EVProfile. Tracks EVHardware master. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent 8a6cc39 commit 6e261cf

9 files changed

Lines changed: 23 additions & 2 deletions

File tree

‎app/src/main/java/com/evsuite/tasker/debug/DiagnosticProbe.kt‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import android.content.Context
44
import com.evsuite.hardware.FirmwareInfo
55
import com.evsuite.hardware.FirmwareSupport
66
import com.evsuite.hardware.EVHardware
7+
import com.evsuite.hardware.ExteriorLights
78
import com.evsuite.hardware.VehicleWriteGate
89
import com.evsuite.hardware.saic.SaicCharging
910
import com.evsuite.hardware.saic.SaicClimate
@@ -97,6 +98,11 @@ object DiagnosticProbe {
9798
* open is what confirms it.
9899
*/
99100
GLASS_AND_LOCKS,
101+
/**
102+
* The six exterior-light properties, raw (CR-046). This row is the evidence that proves
103+
* a generation: export once with a light off, once on, and check the state follows.
104+
*/
105+
EXTERIOR_LIGHTS,
100106
}
101107

102108
data class Report(
@@ -287,6 +293,12 @@ object DiagnosticProbe {
287293
) +
288294
" glass-write=command 0..${SaicVehicleControl.WINDOW_COMMAND_MAX}"
289295
),
296+
EnvCheck(
297+
Env.EXTERIOR_LIGHTS,
298+
// Red until the generation is proven: the light entries stay hidden until then.
299+
ok = ExteriorLights.isProven(FirmwareInfo.getGeneration()),
300+
detail = EVHardware.probeExteriorLights().joinToString("\n")
301+
),
290302
)
291303
}
292304

‎app/src/main/java/com/evsuite/tasker/ui/DiagnosticFragment.kt‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,7 @@ class DiagnosticFragment : Fragment() {
312312
DiagnosticProbe.Env.LOCATION -> R.string.diag_env_location
313313
DiagnosticProbe.Env.WRITE_THRESHOLD -> R.string.diag_env_threshold
314314
DiagnosticProbe.Env.GLASS_AND_LOCKS -> R.string.diag_env_glass
315+
DiagnosticProbe.Env.EXTERIOR_LIGHTS -> R.string.diag_env_lights
315316
}
316317
)
317318

@@ -350,7 +351,8 @@ class DiagnosticFragment : Fragment() {
350351
DiagnosticProbe.Env.MESSAGING,
351352
DiagnosticProbe.Env.LOCATION,
352353
DiagnosticProbe.Env.WRITE_THRESHOLD,
353-
DiagnosticProbe.Env.GLASS_AND_LOCKS -> R.string.diag_bt_off
354+
DiagnosticProbe.Env.GLASS_AND_LOCKS,
355+
DiagnosticProbe.Env.EXTERIOR_LIGHTS -> R.string.diag_bt_off
354356
}
355357
)
356358

@@ -498,6 +500,7 @@ class DiagnosticFragment : Fragment() {
498500
DiagnosticProbe.Env.LOCATION,
499501
DiagnosticProbe.Env.WRITE_THRESHOLD,
500502
DiagnosticProbe.Env.GLASS_AND_LOCKS,
503+
DiagnosticProbe.Env.EXTERIOR_LIGHTS,
501504
)
502505
}
503506
}

‎app/src/main/res/values-de/strings.xml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,7 @@
274274
<string name="diag_reason_no_handsfree">Freisprechtelefon nicht lesbar</string>
275275
<string name="paste_header">**Passwort:** `%1$s` · verfällt eine Stunde nach dem Hochladen.\n\nKostenlos gehostet von [April](https://www.april.org) auf %2$s. Wenn Ihnen das einen Werkstattbesuch erspart hat, [spenden Sie etwas](https://www.april.org/adherer).</string>
276276
<string name="diag_env_glass">Fenster und Verriegelung</string>
277+
<string name="diag_env_lights">Außenbeleuchtung</string>
277278
<string name="editor_trigger">Läuft bei</string>
278279
<string name="physical_press_short">Kurzer Druck</string>
279280
<string name="physical_press_long">Langer Druck</string>

‎app/src/main/res/values-es/strings.xml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,7 @@
274274
<string name="diag_reason_no_handsfree">teléfono manos libres ilegible</string>
275275
<string name="paste_header">**Contraseña:** `%1$s` · caduca una hora después del envío.\n\nAlojado gratuitamente por [April](https://www.april.org) en %2$s. Si esto te ha ahorrado un viaje al taller, [haz una donación](https://www.april.org/adherer).</string>
276276
<string name="diag_env_glass">Ventanillas y bloqueo</string>
277+
<string name="diag_env_lights">Luces exteriores</string>
277278
<string name="editor_trigger">Se ejecuta</string>
278279
<string name="physical_press_short">Pulsación corta</string>
279280
<string name="physical_press_long">Pulsación larga</string>

‎app/src/main/res/values-fr/strings.xml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,7 @@
291291
<string name="diag_reason_no_handsfree">téléphone mains-libres illisible</string>
292292
<string name="paste_header">**Mot de passe :** `%1$s` · expire une heure après l’envoi.\n\nHébergé gracieusement par [April](https://www.april.org) sur %2$s. Si cela vous a évité un passage au garage, [faites un don](https://www.april.org/adherer).</string>
293293
<string name="diag_env_glass">Vitres et verrouillage</string>
294+
<string name="diag_env_lights">Feux extérieurs</string>
294295
<string name="editor_trigger">Se déclenche</string>
295296
<string name="physical_press_short">Appui court</string>
296297
<string name="physical_press_long">Appui long</string>

‎app/src/main/res/values-it/strings.xml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,7 @@
274274
<string name="diag_reason_no_handsfree">telefono vivavoce illeggibile</string>
275275
<string name="paste_header">**Password:** `%1$s` · scade un’ora dopo l’invio.\n\nOspitato gratuitamente da [April](https://www.april.org) su %2$s. Se ti ha evitato un giro dal meccanico, [fai una donazione](https://www.april.org/adherer).</string>
276276
<string name="diag_env_glass">Finestrini e blocco</string>
277+
<string name="diag_env_lights">Luci esterne</string>
277278
<string name="editor_trigger">Si attiva</string>
278279
<string name="physical_press_short">Pressione breve</string>
279280
<string name="physical_press_long">Pressione lunga</string>

‎app/src/main/res/values-pt/strings.xml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,7 @@
274274
<string name="diag_reason_no_handsfree">telefone mãos-livres ilegível</string>
275275
<string name="paste_header">**Palavra-passe:** `%1$s` · expira uma hora após o envio.\n\nAlojado gratuitamente pela [April](https://www.april.org) em %2$s. Se isto lhe poupou uma ida à oficina, [faça um donativo](https://www.april.org/adherer).</string>
276276
<string name="diag_env_glass">Vidros e trancamento</string>
277+
<string name="diag_env_lights">Luzes exteriores</string>
277278
<string name="editor_trigger">Executa</string>
278279
<string name="physical_press_short">Pressão curta</string>
279280
<string name="physical_press_long">Pressão longa</string>

‎app/src/main/res/values/strings.xml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,7 @@
291291
<string name="diag_reason_no_handsfree">hands-free phone unreadable</string>
292292
<string name="paste_header">**Password:** `%1$s` · expires one hour after upload.\n\nHosted free of charge by [April](https://www.april.org) on %2$s. If this saved you a trip to the garage, [make a donation](https://www.april.org/adherer).</string>
293293
<string name="diag_env_glass">Windows and locks</string>
294+
<string name="diag_env_lights">Exterior lights</string>
294295
<string name="editor_trigger">Runs at</string>
295296
<string name="physical_press_short">Short press</string>
296297
<string name="physical_press_long">Long press</string>

0 commit comments

Comments
 (0)