Skip to content

community: add N20/N26 + S55 engine profiles (v0.7.0 plan PR #3) - #110

Merged
ohgeeceee merged 1 commit into
mainfrom
feat/v0.7.0-profiles
Jul 18, 2026
Merged

community: add N20/N26 + S55 engine profiles (v0.7.0 plan PR #3)#110
ohgeeceee merged 1 commit into
mainfrom
feat/v0.7.0-profiles

Conversation

@ohgeeceee

Copy link
Copy Markdown
Owner

Summary

Third and final PR from docs/v0.7.0_plan.md — closes the last two mainstream engine gaps:

  • community/profiles/n20.toml (new) — 22 params: 10 emissions-mandated OBD-II PIDs + 12 UDS DIDs (9 numeric + 3 enum), every UDS entry labeled [needs verification]. Covers F20–F48 x20i/x28i, F10 520i/528i, E89 28i (2011–16); N26 = SULEV twin, same DME layout.
  • community/profiles/s55.toml (new) — 25 params for F80 M3 / F82/F83 M4 / F87 M2 Competition: mirrored UDS DID set + fuel trims, rpm max raised to 7500, HPFP rail display range to 30 MPa (commented), and the first real [profile.theme] — BMW M tricolor (light-blue arc, red needle/hot arc, dark-blue rim).
  • community/profiles/README.md gains a shipping-profiles table (all 7 engines); README.md Live Data engine list updated; CHANGELOG entries under Unreleased.

Sourcing discipline: DID sets mirror the OBDb-sourced F-series set already shipped in b58/n55. ROADMAP_ISSUES Issue 4's stale 4506/411E/4015 "expected DIDs" exist in no shipped profile — deliberately unused, rejection documented in file headers. No code changes.

Test plan

  • tomllib parse + lint-toml.js clean (21 files, 0 problems)
  • cargo test — 97 lib + 1 integration green; cargo build warning-clean
  • node --test — 57 green
  • pytest — green (2 local test_forum_index.py failures are a shell-env artifact, pass with GIT_CONFIG_* unset)
  • Smoke test for merger: Diagnostics startup log registers n20 + s55; Live Data selector lists both; selecting S55 shows M-coloured gauges

Merge policy

Tier A under CLAUDE.md — pure profile data + docs, agent may self-merge when CI is green.

Closes the last item in docs/v0.7.0_plan.md.

Two new per-engine profile TOMLs fill the last mainstream BMW engine
gaps called out in docs/v0.7.0_plan.md PR #3 and ROADMAP_ISSUES Issue 4:

- n20.toml (22 params): F-series 2.0 turbo I4 (MEVD17.2). 10 emissions-
  mandated OBD-II PIDs (verified by design) + the 12-DID F-series
  OBDb-sourced UDS set mirrored from b58.toml. No N20-specific DID is
  documented in-repo, so every UDS entry carries [needs verification];
  oil temp and fuel-trim DIDs are deliberately omitted (no grounded
  source — same discipline as b58.toml).
- s55.toml (25 params): F80/F82/F87 M twin-turbo I6. n55.toml-derived
  set with rpm max raised to 7500, HPFP display range to 30.0 MPa,
  N55-family fuel-trim DIDs 1201/1202, and the same unverified local:10
  oil-temp placeholder with a track-use criticality note. Ships the
  first real [profile.theme] consumer: BMW M tricolor gauges
  (arc #00A1DE, arc_hot/needle #E2001A, dial_edge #003C71).

ROADMAP_ISSUES Issue 4's expected DIDs (4506/411E/4015) are a stale
v0.2.0-era planner expectation present in no shipped profile; they are
not used, and the headers say so. community/profiles/README.md gains a
shipping-profiles table (none existed); README.md engine list and
CHANGELOG.md updated. No code changes — TOML data + docs only.

Verified: tomllib parses both files; scripts/lint-toml.js clean
(21 files); cargo build warning-clean; cargo test 97+1 pass; node
--test 57 pass; pytest 149+2 env-artifact failures (GIT_CONFIG_*
shell injection — pass with vars unset).
@ecc-tools

ecc-tools Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

ECC bundle files are already tracked in this repository. Skipping generation of another bundle PR.

@ohgeeceee
ohgeeceee merged commit ba14141 into main Jul 18, 2026
10 of 11 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6c0c83624a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

label = "Oil temp [UNVERIFIED placeholder]"
unit = "°C"
target = 0x12
query = "local:10"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Remove KWP oil placeholder from the S55 profile

For the S55 profile's stated ENET/DoIP F80/F82/F87 context, this local: query is routed by read_live_data into protocol::read_local_ident, which sends KWP service 21 <id> and expects 61 <id> (src-tauri/src/protocol/mod.rs:213). On S55 cars that only expose live values through UDS DIDs, the oil request will fail and be silently skipped, so the profile will not show the oil-temperature gauge that the file calls track-critical; use a UDS DID after validation or omit this parameter instead of shipping a KWP-only placeholder.

Useful? React with 👍 / 👎.

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