The terminal tool obd_reader.py still carries its own copy of: the ELM327 link logic, the Ford 6.0 PID table (FORD_60_PIDS), DTC decode/parse, and the DTC database — all duplicated from the now-canonical obdcore package (link.py, profile.py / registry.py, store.py). Two sources of truth drift over time.
Goal
Migrate obd_reader.py to import from obdcore so the terminal tool and the GUI share one source of truth and the vehicle-profile system.
Acceptance
obd_reader.py uses obdcore.ElmLink + a loaded Profile (default profiles/ford-6.0-powerstroke.json) instead of its hardcoded ELM/FORD_60_PIDS/DTC tables.
All terminal modes still work unchanged: --crank, --dash [crank|vitals|full], --ford, --pid, --scan, --clear, --watch.
No behavior change for the user; the curses/ANSI dashboards keep working.
Notes
Medium priority — not blocking; the duplication is currently stable and correct (formulas already match). Do as an isolated-worktree task. Touches only obd_reader.py (+ possibly small additive helpers in obdcore).
## Problem
The terminal tool `obd_reader.py` still carries its own copy of: the ELM327 link logic, the Ford 6.0 PID table (`FORD_60_PIDS`), DTC decode/parse, and the DTC database — all duplicated from the now-canonical `obdcore` package (`link.py`, `profile.py` / `registry.py`, `store.py`). Two sources of truth drift over time.
## Goal
Migrate `obd_reader.py` to import from `obdcore` so the terminal tool and the GUI share one source of truth and the vehicle-profile system.
## Acceptance
- `obd_reader.py` uses `obdcore.ElmLink` + a loaded `Profile` (default `profiles/ford-6.0-powerstroke.json`) instead of its hardcoded `ELM`/`FORD_60_PIDS`/DTC tables.
- All terminal modes still work unchanged: `--crank`, `--dash [crank|vitals|full]`, `--ford`, `--pid`, `--scan`, `--clear`, `--watch`.
- No behavior change for the user; the curses/ANSI dashboards keep working.
## Notes
Medium priority — not blocking; the duplication is currently stable and correct (formulas already match). Do as an isolated-worktree task. Touches only `obd_reader.py` (+ possibly small additive helpers in `obdcore`).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Problem
The terminal tool
obd_reader.pystill carries its own copy of: the ELM327 link logic, the Ford 6.0 PID table (FORD_60_PIDS), DTC decode/parse, and the DTC database — all duplicated from the now-canonicalobdcorepackage (link.py,profile.py/registry.py,store.py). Two sources of truth drift over time.Goal
Migrate
obd_reader.pyto import fromobdcoreso the terminal tool and the GUI share one source of truth and the vehicle-profile system.Acceptance
obd_reader.pyusesobdcore.ElmLink+ a loadedProfile(defaultprofiles/ford-6.0-powerstroke.json) instead of its hardcodedELM/FORD_60_PIDS/DTC tables.--crank,--dash [crank|vitals|full],--ford,--pid,--scan,--clear,--watch.Notes
Medium priority — not blocking; the duplication is currently stable and correct (formulas already match). Do as an isolated-worktree task. Touches only
obd_reader.py(+ possibly small additive helpers inobdcore).