You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 5474f84
Browse filesBrowse the repository at this point in the historyBrowse files
-**Channel IDs come from EM Soft's variable list, and most are unconfirmed** - the `[chanN]`
510
+
value in the `.lg2` is an ID into EM Soft's logger variable list, which Emerald does not
511
+
document. Only IDs 1, 15, 20, 24, 26, 31, 32 and 41 are confirmed (issue #93, reporter's EM
512
+
Soft labels). The rest are original guesses. ID 1 is the K6 lambda input in mV (not TPS),
513
+
41 is TPS, 31 is the 0-15 load site (not injector duty). Confirm an ID against an EM Soft
514
+
screenshot before renaming it. A rename must also go into the `source_names` of
515
+
`adapters/emerald/emerald-lg.adapter.yaml` in the ClassicMiniDIY/OECUASpecs repo (fetched
516
+
by `build.rs` into the gitignored `spec/OECUASpecs/`); spec normalization matches on those
517
+
names. Its `internal_id` field documents the IDs but UltraLog does not read it.
518
+
-**MAP scaling depends on `[ValU]`** - the second `[ValU]` value is the logger's pressure unit:
519
+
`1` stores MAP in whole kPa, `2` in mbar. Hardcoding either one makes the other log read 10x
520
+
wrong. Unknown codes keep the mbar scaling.
521
+
-**ID 1 is named "Lambda Sensor Voltage" on purpose** - it is a 0-1 V narrowband input where
522
+
a higher reading is richer. The `"volt"` veto on `ChannelRole::Lambda` in
523
+
`channel_map.rs` depends on that word, so the table generators never map it as lambda.
524
+
-**Repeated names get the channel ID appended** - IDs 21/24 and 45/46 share a name, and name
525
+
lookups return the first match. `disambiguate_names` keeps the plain name on a
526
+
`CONFIRMED_IDS` entry (else the first by slot) and appends ` (ID n)` to the others, so a
527
+
formula bound to `Ignition Advance` does not change meaning with slot order.
528
+
-**The value column is the slot number, not the list position** - `[chanN]` reads bytes
529
+
`8 + (N-1)*2` of the record. `parse_lg2` drops slots outside 1-8 and repeated slots, so an
530
+
unreadable or missing `[chanN]` cannot shift later channels onto the wrong data.
531
+
-**Ign Adv (ID 24) offset is inferred** - `raw * 0.1 - 50` gives 5.5° at idle and 14-17° at
532
+
230 kPa boost. It is not from Emerald documentation.
533
+
507
534
**Haltech parser load-bearing behaviors** (`src/parsers/haltech.rs`, added for wall-clock-timestamped exports):
508
535
509
536
-**Last-known-value substitution** - Unparseable/blank fields are filled with the last successfully parsed value for that column (`0.0` before the first valid sample), matching the approach used in `parsers/ecumaster.rs`. This preserves column alignment instead of shifting subsequent columns when a field fails to parse.
@@ -646,7 +673,7 @@ Example log files are in `exampleLogs/` organized by ECU type:
646
673
-`exampleLogs/aim/` - AiM XRK/DRK files
647
674
-`exampleLogs/link/` - Link ECU LLG files
648
675
-`exampleLogs/woolich/` - Woolich Racing Tuned CSV exports
-`exampleLogs/emerald/` - Emerald K6/M3D `.lg1`/`.lg2` files (`EM Log MG ZS Turbo boost run` is the issue #93 log, `[ValU]` pressure unit kPa; the others use mbar)
650
677
-`exampleLogs/megasquirt/` - MegaSquirt TunerStudio CSV exports, plus a `_gps.mlg` fixture with synthetic GPS channels (generated by `examples/inject_fake_gps_mlg.rs`; the coordinates are a fake closed loop, not a real location)
-`exampleLogs/msl/` - TunerStudio MSL excerpt from issue #86 (RealDash logging a Speeduino; trimmed to 2000 data rows, keeping the leading no-GPS-fix rows where `GPS Date`/`GPS Time` are blank)
0 commit comments