Mark device-flag confidence honestly (SAI confirmed, O2 probable)
The NO-SAI-NO-O2 reference map bundles SAI + O2 + airbox deletes, so it validates the three flag bytes as a GROUP but doesn't isolate O2 individually; no single-mod map exists and the x.a() device-layout branch for this ECU is too nested to trace. - SAI @ 0x53801: confirmed (code lc() -> Devices[0] via fe[33], + the delete map). - O2 @ 0x53818/0x53819: probable (2 O2 sensors declared off <-> 2 adjacent bytes cleared; 865 has no air-flap so airbox removal is fuel-only). Viewer now shows confirmed/probable badges and a warning that flags alone are not a tune: O2 delete forces open-loop and needs fuel enrichment, so prefer flashing a complete matching delete map over hand-toggling a stock one. See DEVICES.md.
This commit is contained in:
@@ -103,9 +103,9 @@ def _extract_romdefs(args) -> dict:
|
||||
# Validated against a NO-SAI-NO-O2 reference map (see research DEVICES.md).
|
||||
"deviceFe": 33,
|
||||
"devices": [
|
||||
{"name": "SAI (Secondary Air Injection)", "rel": 0x00},
|
||||
{"name": "O2 sensor", "rel": 0x17},
|
||||
{"name": "O2 sensor (2)", "rel": 0x18},
|
||||
{"name": "SAI (Secondary Air Injection)", "rel": 0x00, "confidence": "confirmed"},
|
||||
{"name": "O2 sensor 1", "rel": 0x17, "confidence": "probable"},
|
||||
{"name": "O2 sensor 2", "rel": 0x18, "confidence": "probable"},
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
@@ -128,13 +128,19 @@
|
||||
<div style="overflow:auto"><table id="tgrid" class="mono" style="font-size:11px"></table></div>
|
||||
<div class="card" id="tdevices" style="margin-top:16px;max-width:520px">
|
||||
<h3>Device flags <span class="badge">Map A</span></h3>
|
||||
<div class="note">Toggle emissions/hardware devices. Validated against a real
|
||||
NO-SAI-NO-O2 map. Uncheck to delete; then Export the edited map.</div>
|
||||
<div class="note">Emissions/hardware device flags (1=on, 0=off).
|
||||
<span style="color:var(--ok)">SAI = confirmed</span>;
|
||||
<span style="color:var(--target)">O2 = probable</span> (validated as a group vs a
|
||||
real NO-SAI-NO-O2 map, but not individually isolated).</div>
|
||||
<div id="tdevlist"></div>
|
||||
<div class="hint" style="margin-top:10px;color:var(--hot)"><b>⚠ Flags alone are not a tune.</b>
|
||||
Disabling O2 forces open-loop — the bike runs only on the base fuel map. On a stock map that
|
||||
can run lean/rough. A proper delete pairs flags-off with fuel enrichment. Prefer flashing a
|
||||
complete, matching delete map over hand-toggling a stock one.</div>
|
||||
<button id="tdevExport" class="chip" style="border-color:var(--ok);color:var(--ok);margin-top:10px">⭳ Export edited .hex</button>
|
||||
<span class="count" id="tdevdirty"></span>
|
||||
<div class="hint" style="margin-top:8px">Export re-encodes the map's distribution format.
|
||||
The separate ECU-flash checksum is applied by the flashing tool at write time.</div>
|
||||
<div class="hint" style="margin-top:8px">Export re-encodes the distribution format only; the ECU-flash
|
||||
checksum is applied by the flashing tool at write time.</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -381,7 +387,10 @@ else {
|
||||
const on=TA.rom[d.off]!==0;
|
||||
const row=document.createElement('label');
|
||||
row.className='item'; row.style.cursor='pointer';
|
||||
row.innerHTML=`<input type="checkbox" ${on?'checked':''}> <span>${d.name}
|
||||
const badge=d.confidence==='confirmed'
|
||||
? '<span class="badge" style="background:var(--ok)">confirmed</span>'
|
||||
: '<span class="badge">probable</span>';
|
||||
row.innerHTML=`<input type="checkbox" ${on?'checked':''}> <span>${d.name} ${badge}
|
||||
<span style="color:var(--dim)">· 0x${d.off.toString(16)} = ${TA.rom[d.off]}</span></span>`;
|
||||
row.querySelector('input').onchange=e=>{
|
||||
setDeviceByte(TA, d.off, e.target.checked?1:0);
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user