LucianoDev 9a593e4ff2 fix: stop UI freeze when selecting a pump that needs immobilizer unlock
Phase 2 TestUnlock handshake was synchronous (Thread.Sleep x 8 = 4 s) and
the continuation after Phase 1 marshalled back to the WPF dispatcher via
the captured SynchronizationContext, so the eight 500 ms sleeps froze the
UI right before unlock completed.

- UnlockService.RunTestUnlockSequence -> async RunTestUnlockSequenceAsync
  with Task.Delay(500, ct) and ConfigureAwait(false)
- Add ConfigureAwait(false) on every internal await in UnlockService so
  continuations no longer hop to the UI thread (Task.WhenAll, Task.Delay,
  connectedTcs, TryFastUnlockAsync, fast-unlock settle delay)
- CancellationToken now propagates through Phase 2, so the snackbar Cancel
  button can interrupt the handshake within 500 ms instead of waiting out
  all eight Thread.Sleeps

Includes the companion observer in IUnlockService / UnlockService
(PumpUnlocked event, IsPumpUnlocked, StartObserver/StopObserver) that
the Phase 1 wait now races against — lets any source of unlock (fast
unlock, external manual, CAN flood finally working) short-circuit the
600 s timer as soon as the CAN TestUnlock parameter confirms it.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-22 14:36:45 +02:00
2026-04-11 12:45:18 +02:00
2026-04-11 12:45:18 +02:00
2026-04-11 12:45:18 +02:00
2026-04-11 12:45:18 +02:00

HC_APTBS

WPF desktop application for controlling a VP44 diesel injection pump test bench.

Features

  • CAN bus communication — reads/writes bench sensors (temperature, RPM, flow) via PCAN-Basic at 500 kbps
  • K-Line / KWP2000 — communicates with the VP44 pump ECU via FTDI USB adapter at 9600 bps
  • Automated test sequences — runs multi-phase tests with PID temperature control
  • PDF reports — generates test result reports with QuestPDF

Requirements

  • Windows 10/11 (x64)
  • .NET 10 SDK (version pinned in global.json)
  • Hardware: PCAN-USB adapter, FTDI USB-to-serial adapter

Build

dotnet build -r win-x64

Native DLLs (PCANBasic.dll, ftd2xx.dll) are bundled in Resources/Native/ and copied to output automatically.

Stack

Layer Technology
UI WPF / XAML
MVVM CommunityToolkit.Mvvm
DI Microsoft.Extensions.DependencyInjection
Charts LiveCharts2 (SkiaSharp)
PDF QuestPDF 2025.3.2
CAN PCAN-Basic (P/Invoke)
K-Line FTDI D2XX (P/Invoke)

Project Structure

Infrastructure/
  Pcan/          — CAN bus adapter, OEM legitimation, sensor decoding
  Kwp/           — FTDI interface, KWP/KW1281 protocol, 5-baud slow-init
  Logging/       — Daily rotating log files
Services/Impl/   — Test orchestration, KWP operations, config persistence, PDF
ViewModels/      — MVVM view models (ObservableProperty / RelayCommand)
Views/           — Pure XAML views
Models/          — Domain models and test definitions
Description
No description provided
Readme 79 MiB
Languages
C# 98.7%
PowerShell 0.8%
Python 0.5%