# OBD Native Dashboard

Application Android native conçue pour smartwatch (480x480, 2.6") utilisée comme dashboard voiture OBD-II pour véhicules Ford.

## Fonctionnalités

- **Dashboard configurable** : système de grille multi-pages avec layouts 1x1, 2x1, 1x2, 2x2
- **6 widgets** : température huile, turbo (boost), RPM, vitesse, température eau, voltage batterie
- **6 styles de gauge** : anneau, arc, barre, digital, dual, segment — avec zones warning/danger
- **Connexion ELM327** : USB, Bluetooth, WiFi, ou mode simulation
- **Profils véhicule** : Fiesta ST Mk7/Mk8, Focus ST/RS Mk3, Puma ST
- **Mode édition** : long press pour ajouter/supprimer/reconfigurer les widgets et pages
- **Launcher Android** : intégré comme launcher (HOME), avec accès aux apps installées
- **Écran auto** : allumage/extinction automatique de l'écran selon l'état de charge (pour usage voiture)
- **DPI personnalisable** : densité d'affichage ajustable dans les réglages

## Architecture

```
app/src/main/java/com/example/obdwsbridge/
├── model/          # Modèles de données (BridgeConfig, DashPage, CellConfig, WidgetType, GaugeStyle, etc.)
├── obd/            # Communication OBD (Elm327Client, ObdPoller, ConnectionFactory)
├── prefs/          # Persistence SharedPreferences (AppPrefs)
├── ui/             # Vues custom (GaugeView, GridPagerAdapter, VerticalPagerAdapter)
├── DashboardActivity.kt     # Écran principal (vertical pager : gauges → apps → réglages)
├── GaugeConfigActivity.kt   # Configuration d'un widget (type, style, unité, range)
├── SetupActivity.kt         # Assistant de configuration initiale
├── ObdBridgeService.kt      # Service foreground (connexion OBD + broadcast des données)
├── ScreenAdminReceiver.kt   # Device admin pour extinction écran
└── MainActivity.kt          # Routeur initial (setup ou dashboard)
```

## Stack technique

- **Langage** : Kotlin
- **UI** : XML layouts + ViewBinding (pas de Compose)
- **Pager** : ViewPager2 vertical (pages) + horizontal (grilles de widgets)
- **Gauges** : Canvas custom (GaugeView) avec animations ValueAnimator
- **Sérialisation** : kotlinx-serialization pour les snapshots OBD
- **USB** : usb-serial-for-android (mik3y)
- **Min SDK** : 26 — **Target SDK** : 34

## Build

```bash
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
export ANDROID_HOME="$HOME/Library/Android/sdk"

./gradlew assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk
```

## Notes

- Tout est natif Android, pas de WebSocket ni serveur HTTP.
- Les PIDs Ford avancés (Mode 22) dépendent du véhicule/ECU.
- L'app est conçue pour être le launcher par défaut sur une smartwatch dédiée.
