Claude/clarify project requirements qz5 io#934
Open
rohite1983 wants to merge 38 commits intonecolas:masterfrom
Open
Claude/clarify project requirements qz5 io#934rohite1983 wants to merge 38 commits intonecolas:masterfrom
rohite1983 wants to merge 38 commits intonecolas:masterfrom
Conversation
Session deliverable for branch claude/clarify-project-requirements-Qz5IO. The plan describes a separate personal/workshop Mercedes diagnostic app project; it is unrelated to normalize.css itself and lives here only as a durable record of the session. The actual implementation will happen in its own repository. https://claude.ai/code/session_01Fj9uqsN2XU94g88Y4qLXUa
The git bundle + tarball contain the M0 Avalonia solution scaffold for the separate Bench-mercedes project. They live here only as a sandbox-crossing delivery channel; see artifacts/README.md for how to import the bundle into the actual repo. https://claude.ai/code/session_01Fj9uqsN2XU94g88Y4qLXUa
Adds bench-mercedes-m1.bundle (full, 2 commits), bench-mercedes-m0-to-m1.bundle (incremental), and .tar.gz. Updates SESSION_STATE.md with M1 summary and M2 queue. https://claude.ai/code/session_01Fj9uqsN2XU94g88Y4qLXUa
User's Mac has SDK 10.0.202 and the project was pinned to 8.0.100 via global.json. Rather than have him install an older SDK, upgrade the project to .NET 10 (current LTS). - New full bundle: bench-mercedes-m1.1.bundle (M0+M1+M1.1) - New incremental: bench-mercedes-m1-to-m1.1.bundle (M1.1 on top of M1, for the user's already-pushed Bench-mercedes repo) - README + SESSION_STATE updated with pull-and-push instructions
Tiny follow-up to M1.1: two NuGet errors surfaced on the user's net10 restore. - NU1605 Serilog downgrade: bump direct pin 4.1.0 -> 4.2.0 so Serilog.Extensions.Hosting 9.0.0's transitive requirement is satisfied. - NU1903 Tmds.DBus.Protocol advisory: suppress NU1903 in the App csproj with a comment. The vulnerable package is transitive from Avalonia's Linux DBus integration; we target macOS + Windows so the code path is never loaded.
Follow-up to M1.2. .NET 10's analyzers + TreatWarningsAsErrors=true made IDE0011 (missing braces) and the GenerateDocumentationFile recommendation fatal. Adds braces everywhere, enables doc-file generation (CS1591 already suppressed), removes one unused using. After pulling this, 'dotnet build' and 'dotnet test' should go green on net10.
One-liner follow-up: IDE0005 flagged 'using MercedesDiag.Transport' in ConnectionService.cs. Dropped. Build should be green now.
Avalonia 11.2 Grid doesn't have ColumnSpacing/RowSpacing properties. Replaced with Margin on the grid children. Tests already passing (15/15); this is the last piece before the UI launches.
First slice of M2 (pre-2015 CAN support). Pure-logic layer, no hardware dependency - builds and tests anywhere. - IsoTpChannel with full SF/FF/CF + flow-control handling - IsoTpOptions (Mercedes 0xCC padding default) - 6 new unit tests on a fake ICanAdapter covering round-trip, reassembly, TX with FC, timeout, sequence mismatch, empty-payload rejection Total tests after this bundle: 21 (was 15). Next slices (separate bundles): - M2.1: KWP2000 client (pre-2012 Mercedes protocol) - M2.2: PCAN backend scaffolding (runtime needs Windows/Linux) - M2.3: J2534 backend + UI adapter selection (runtime Windows only)
- MercedesEcuCatalog.Common grown from 10 to 27 entries (adds HVAC, SRS, KG, EHPS, HU, COMAND, A20, STH, RSL, SAM-F, SAM-R, IC, PTS, TPM, ISM, EAS, EZS, CGW, DTR, VGS, TCM-9G, DDM, PDM, RDM-R, RDM-L). - MainWindowViewModel: new UseCustomTargetAddress toggle and TargetAddressHex string. ConnectAsync uses the typed hex when the toggle is on, else SelectedEcu.LogicalAddress. - MainWindow.axaml: CheckBox + hex TextBox below the ECU ComboBox; ComboBox disables while custom mode is on so the UI makes it obvious which address will be used. Bundle: artifacts/bench-mercedes-m2.0-to-m1.6.bundle (1024256..a1d6bca).
Bundle: artifacts/bench-mercedes-m1.6-to-m2.1fix.bundle (a1d6bca..713d67e).
Bundle: artifacts/bench-mercedes-m2.1fix-to-m2.2fix.bundle (713d67e..7c0b04f).
- KwpServices / KwpSession / KwpNrc / KwpDtcReportType / KwpEcuIdOptions - KwpDtcRecord with 4-hex-digit Pxxxx / Cxxxx / Bxxxx / Uxxxx formatter - KwpDtcParser tolerates responses with OR without the count byte - KwpClient: session, tester-present (subfn 0x01), ECU ID + VIN, read/write by local & common ID, read & clear DTCs, security seed/key, ECU reset - 11 unit tests via FakeDiagnosticChannel Bundle: artifacts/bench-mercedes-m2.2fix-to-m2.3.bundle (7c0b04f..20881c6). Expected test count after pull: 32 passing (15 M1 + 6 ISO-TP + 11 KWP).
Delivers M2.4 (commit 0495c83) on top of M2.3. Sidebar gains Adapter and Protocol dropdowns with conditional per-transport panels: DoIP (IP+port), CAN/PCAN (bitrate+TX+RX+extended+channel), J2534 (DLL path+device), SDconnect (host, not implemented). UDS and KWP sessions now share an IDiagnosticSession abstraction with a protocol-agnostic DtcEntry for the UI. PCAN and J2534 HAL backends still throw on OpenAsync — those land in M2.5 and M2.6. Ready for the user's bench test tomorrow with the ENET cable (DoIP path is unchanged).
…kend Delivers M2.5 and M2.6 (commits d290c84 + 033f39e) on top of M2.4. M2.5 — adapter auto-probe + live ECU discovery + UI polish: the sidebar gets a card look with a status dot; after a successful DoIP connect the app now scans known ECU addresses on the real vehicle and replaces the dropdown with only responders (marked with a '•'). Adapter dropdown shows per-platform availability + details (PCAN DLL probe on Win/Linux, macOS reports unavailable). Custom target gains a name field so it shows up as 'My gateway (0x007F)' in the status line. M2.6 — real PCAN-USB P/Invoke backend: Windows (PCANBasic.dll) + Linux (libpcanbasic.so), with a background RX pump into a bounded Channel<CanFrame> and platform-guarded entrypoints. macOS throws PlatformNotSupportedException up-front (no PEAK driver). J2534 backend still TBD — that lands in M2.7. Ready for bench testing tomorrow: DoIP path is enhanced (ECU scan), and if the user brings a PCAN-USB to the workshop the CAN path now has a real driver behind it.
One-line fix for CS0246 in MainWindowViewModel.cs — the DiscoverEcusAsync method casts the connected adapter to IDoipAdapter, which lives in MercedesDiag.Hal, not MercedesDiag.Hal.Doip. Apply on top of the M2.4→M2.6 bundle.
- M2.7 (932e9ba): 'Detect vehicle' broadcasts a DoIP UDP VehicleIdentificationRequest and auto-fills the vehicle IP/port and VIN from the car's announcement. All manual plumbing fields (IP, port, tester/ECU addresses, CAN bitrate, PCAN channel, CAN TX/RX IDs, J2534 DLL path, SDconnect host) move into a collapsed 'Advanced (manual overrides)' expander. Default sidebar shows a single TransportSummary line instead. - M2.8 (4bfe0f8): Replaces the throwing J2534Adapter stub with a real ICanAdapter over the SAE J2534 PassThru API. User-supplied DLL path is loaded at runtime via NativeLibrary.Load + Marshal.GetDelegateForFunctionPointer for StdCall bindings. On open, connects a raw-CAN channel at the requested bitrate, installs a pass-all filter, and pumps into a bounded Channel<CanFrame>. Windows-only. Updates SESSION_STATE.md with the M2.6fix..M2.8 history and adds bundle bench-mercedes-m2.6fix-to-m2.8.bundle.
User reported Tactrix OpenPort 2.0 was installed on the Windows PC
but the app still asked them to find op20pt32.dll. The SAE J2534-04
spec standardises the install-time registry location at
HKLM\SOFTWARE\PassThruSupport.04.04 — Tactrix, PEAK, DrewTech,
Mongoose etc. all register there.
- J2534DeviceEnumerator reads both 64-bit and 32-bit registry views
and returns {Name, Vendor, DllPath} for each installed device.
- AdapterProbeService.ProbeJ2534 now reports the device names in
its details string instead of 'point the DLL field at …'.
- MainWindowViewModel exposes J2534Devices + SelectedJ2534Device
with auto-populate of J2534DllPath; Re-probe re-enumerates.
- MainWindow.axaml shows a top-level Device dropdown when J2534 is
selected; the Advanced 'DLL path' field is relabelled as override.
Bundle bench-mercedes-m2.8-to-m2.9.bundle covers commit bac8ace.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.