Skip to content

feat(obd): W5-OBD-PR1 — Native Handshake + Supported PID Discovery#88

Open
selimmujdeci wants to merge 2 commits into
mainfrom
feat/w5-obd-pr1-native-handshake
Open

feat(obd): W5-OBD-PR1 — Native Handshake + Supported PID Discovery#88
selimmujdeci wants to merge 2 commits into
mainfrom
feat/w5-obd-pr1-native-handshake

Conversation

@selimmujdeci

Copy link
Copy Markdown
Owner

Amaç

performHandshake() Android tarafında hiç implement edilmemişti (grep kanıtı: CarLauncherPlugin.java'da eşleşme yok) → if (CarLauncher.performHandshake) guard'ı native'de hep false → el sıkışması gerçek araçta ASLA çalışmıyordu. VIN okunmuyor, desteklenen-PID bitmap keşfi yapılamıyordu.

Bu PR yalnız Native Handshake katmanını tamamlar. Poll zinciri regresyonsuz, fail-soft, atomik.

Değişiklikler

Native (Java)

  • ElmProtocol.performHandshakeRaw(): 0902 (VIN) + 0100; süreklilik-bit'i set ise 0120/0140/0160/0180/01A0. Desteklenmeyen blok hiç sorulmaz (NO-DATA fırtınası yok). HAM yanıt döner — parse yok (tek doğruluk kaynağı TS). safeSend ile her sorgu fail-soft, hiçbir exception dışarı sızmaz.
  • OBDManager / BleObdManager.performHandshake(): USER önceliği, tek atomik kuyruk görevi (araya poll komutu girmez).
  • CarLauncherPlugin.performHandshake(): ayrı thread → raw09..raw01A0 döner.

TS (pure, test edilebilir)

  • OBDHandshake: çok-bloklu bitmap parse (PID 1–192), readBlocks kanıtı, classifyHandshakeResponse (NO DATA / TIMEOUT / UNSUPPORTED ayrı — sessiz yutma yok), buildHandshakeResult fail-soft.
  • obdPidConfig.refinePidList: capability-güdümlü poll listesi. Zero-trust + fail-soft — kanıt yoksa taban AYNEN; okunan blokta desteklenmeyen PID elenir; PID 2F (yakıt) bitmap kanıtıyla oto-aktive (statik kara liste kalktı, varsayım yok).
  • obdService: handshake tüm blokları tüketir, capability'yi saklar (sonraki reconnect refinePidList kullanır), timeout türlerini loglar.

Test / CI (yerel)

  • 14 yeni test — bitmap parse, desteklenen/desteklenmeyen PID poll, 2F capability, VIN oku + fail-soft, exception yok, timeout türü ayrımı, saf/mutasyonsuz, regresyon güvencesi.
  • Full suite 3834 yeşil · tsc -b temiz · ESLint temiz · production build OK.

Çözülen blocker

  • ✅ Native performHandshake() implement edildi (VIN + supported-PID bitmap keşfi).
  • ✅ Timeout türleri ayrı raporlanıyor (NO DATA / TIMEOUT / UNSUPPORTED).
  • ✅ Fuel PID 2F statik kara liste → bitmap kanıtıyla oto-aktivasyon.

Kalan blocker

  • 🔴 Cihaz doğrulaması yapılmadı — gerçek araçta VIN okunması + bitmap keşfi + 2F oto-aktivasyonu henüz gözlemlenmedi. Ledger 🔴.

Ledger

🔴 — kabul ölçütü: gerçek araçta [OBD:Handshake] logu VIN/bitmap/2F destekli göstermeli; sonraki reconnect'te 2F poll'a girmeli.

🤖 Generated with Claude Code

performHandshake() Android tarafında implement edilmemişti → guard hep false,
handshake gerçek araçta ASLA çalışmıyordu. Bu PR native el sıkışması katmanını
tamamlar (yalnız handshake — poll zinciri regresyonsuz, fail-soft).

Native (Java):
- ElmProtocol.performHandshakeRaw(): 0902 (VIN) + 0100 → süreklilik-bit'i set
  ise 0120/0140/0160/0180/01A0. Desteklenmeyen blok HİÇ sorulmaz (NO-DATA
  fırtınası yok). HAM yanıt döner (parse YOK — tek doğruluk kaynağı TS).
  safeSend ile her sorgu fail-soft: hiçbir exception dışarı sızmaz.
- OBDManager/BleObdManager.performHandshake(): USER önceliği, tek atomik kuyruk
  görevi (araya poll komutu girmez).
- CarLauncherPlugin.performHandshake(): ayrı thread → raw09..raw01A0 döner.

TS (pure, test edilebilir):
- OBDHandshake: çok-bloklu bitmap parse (PID 1–192), readBlocks kanıtı,
  classifyHandshakeResponse (NO DATA / TIMEOUT / UNSUPPORTED ayrı — sessiz
  yutma yok), buildHandshakeResult tüm blokları birleştirir (fail-soft).
- obdPidConfig.refinePidList: capability-güdümlü poll listesi. Zero-trust +
  fail-soft: kanıt yoksa taban AYNEN; okunan blokta desteklenmeyen PID elenir;
  PID 2F (yakıt) bitmap kanıtıyla oto-aktive (statik kara liste kalktı).
- obdService: handshake tüm blokları tüketir, capability'yi saklar (sonraki
  reconnect refinePidList kullanır), timeout türlerini loglar.

Test: 14 yeni test (bitmap parse, desteklenen/desteklenmeyen PID, 2F capability,
VIN oku + fail-soft, exception yok, timeout ayrımı, saf/mutasyonsuz, regresyon).
Full suite 3834 yeşil · tsc temiz · lint temiz · production build OK.

Ledger: 🔴 — gerçek araçta VIN/bitmap keşfi henüz doğrulanmadı.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RhFEghmLgYKdggregKbRmb
@vercel

vercel Bot commented Jul 13, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
car-launcher-pro Ready Ready Preview, Comment Jul 13, 2026 3:20pm
carospro Ready Ready Preview, Comment Jul 13, 2026 3:20pm

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant