Skip to content

Commit 613f594

Browse files
committed
Fix Custom mode for SWI68 SWI 165
1 parent 78e32ba commit 613f594

2 files changed

Lines changed: 14 additions & 15 deletions

File tree

‎app/src/main/java/com/mg4/control/model/CustomDriveScale.kt‎

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ package com.mg4.control.model
1010
* la puissance y réutilise l'échelle des modes de conduite (Éco = 2) ;
1111
* - [Family.VSM_68] : méthodes `setElectricPowertrainLevel` / `setSteeringLevel` /
1212
* `setBrakePedalLevel` du SDK SAIC, qui écrivent les propriétés `0x2140a18c` à `0x2140a18e`.
13-
* Le service véhicule SWI68 borne ces trois valeurs à 0..3 ; l'échelle 1/2/3 retenue ici reste
14-
* une hypothèse, que la sonde `MG4_CUSTOM` confirmera en voiture (surtout pour la pédale, qui
15-
* vaut 1/0/2 sur les deux autres familles).
13+
* Échelles LUES dans l'écran d'origine (DrivingSettingsViewModel des Réglages véhicule SWI68 et
14+
* SWI165, position du sélecteur → valeur) : puissance et direction 1/2/3, pédale 1/0/2 — donc
15+
* les mêmes qu'en SWI133, seule la voie d'accès change.
1616
*/
1717
object CustomDriveScale {
1818

@@ -26,19 +26,18 @@ object CustomDriveScale {
2626
return when (setting) {
2727
Setting.POWER -> index + if (family == Family.A9) 2 else 1
2828
Setting.STEERING -> index + 1
29-
Setting.PEDAL -> if (family == Family.VSM_68) index + 1 else PEDAL_VALUES[index]
29+
Setting.PEDAL -> PEDAL_VALUES[index]
3030
}
3131
}
3232

3333
/** Index correspondant à une valeur lue, ou null si elle est hors échelle (équipement absent). */
3434
fun index(setting: Setting, value: Int, family: Family): Int? = when (setting) {
3535
Setting.POWER -> (value - if (family == Family.A9) 2 else 1).takeIf { it in 0..2 }
3636
Setting.STEERING -> (value - 1).takeIf { it in 0..2 }
37-
Setting.PEDAL -> if (family == Family.VSM_68) (value - 1).takeIf { it in 0..2 }
38-
else PEDAL_VALUES.indexOf(value).takeIf { it >= 0 }
37+
Setting.PEDAL -> PEDAL_VALUES.indexOf(value).takeIf { it >= 0 }
3938
}
4039

41-
/** Pédale, familles VPM_133 et A9 : confort = 1, normal = 0, sport = 2. */
40+
/** Pédale, les trois familles : confort = 1, normal = 0, sport = 2 (Normal vaut ZÉRO). */
4241
private val PEDAL_VALUES = intArrayOf(1, 0, 2)
4342

4443
private fun IntArray.indexOf(value: Int): Int = indices.firstOrNull { this[it] == value } ?: -1

‎app/src/test/java/com/mg4/control/model/CustomDriveScaleTest.kt‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class CustomDriveScaleTest {
1717
private val indexes = 0..2
1818

1919
@Test
20-
fun `puissance - ancien SDK 1-2-3, A9 2-3-4, SWI68 1-2-3`() {
20+
fun `puissance - 1-2-3 partout sauf A9 en 2-3-4`() {
2121
assertEquals(listOf(1, 2, 3), indexes.map { CustomDriveScale.value(Setting.POWER, it, Family.VPM_133) })
2222
assertEquals(listOf(2, 3, 4), indexes.map { CustomDriveScale.value(Setting.POWER, it, Family.A9) })
2323
assertEquals(listOf(1, 2, 3), indexes.map { CustomDriveScale.value(Setting.POWER, it, Family.VSM_68) })
@@ -32,12 +32,12 @@ class CustomDriveScaleTest {
3232
}
3333

3434
@Test
35-
fun `pedale - Normal vaut ZERO sauf sur SWI68-165`() {
36-
// Relevé dans le smali SWI133 et le dispatch A9 : confort=1, normal=0, sport=2.
37-
assertEquals(listOf(1, 0, 2), indexes.map { CustomDriveScale.value(Setting.PEDAL, it, Family.VPM_133) })
38-
assertEquals(listOf(1, 0, 2), indexes.map { CustomDriveScale.value(Setting.PEDAL, it, Family.A9) })
39-
// SWI68/165 : service véhicule borné à 0..3 ; échelle supposée 1/2/3, à confirmer par la sonde.
40-
assertEquals(listOf(1, 2, 3), indexes.map { CustomDriveScale.value(Setting.PEDAL, it, Family.VSM_68) })
35+
fun `pedale - Normal vaut ZERO sur les trois familles`() {
36+
// Relevé dans les écrans d'origine (SWI133, dispatch A9, DrivingSettingsViewModel SWI68/165).
37+
Family.entries.forEach { family ->
38+
assertEquals("famille $family", listOf(1, 0, 2),
39+
indexes.map { CustomDriveScale.value(Setting.PEDAL, it, family) })
40+
}
4141
}
4242

4343
@Test
@@ -64,7 +64,7 @@ class CustomDriveScaleTest {
6464
assertNull(CustomDriveScale.index(Setting.POWER, -1, Family.VPM_133))
6565
assertNull(CustomDriveScale.index(Setting.POWER, 1, Family.A9)) // A9 commence à 2
6666
assertNull(CustomDriveScale.index(Setting.PEDAL, 3, Family.VPM_133)) // pédale : 1/0/2 seulement
67-
assertNull(CustomDriveScale.index(Setting.PEDAL, 0, Family.VSM_68)) // SWI68 : 1/2/3
67+
assertNull(CustomDriveScale.index(Setting.PEDAL, 4, Family.VSM_68))
6868
assertNull(CustomDriveScale.index(Setting.STEERING, 255, Family.VSM_68))
6969
}
7070
}

0 commit comments

Comments
 (0)