feat: developer tools page, auto-test orchestrator, BIP display, tests redesign
Bundles several feature streams that have been iterating on the working tree: - Developer Tools page (Debug-only via DEVELOPER_TOOLS symbol): hosts the identification card, manual KWP write + transaction log, ROM/EEPROM dump card with progress banner and completion message, persisted custom-commands library, persisted EEPROM passwords library. New service primitives: IKwpService.SendRawCustomAsync / ReadEepromAsync / ReadRomEepromAsync. Persistence mirrors the Clients XML pattern in two new files (custom_commands.xml, eeprom_passwords.xml). - Auto-test orchestrator (IAutoTestOrchestrator + AutoTestState): linear K-Line read -> unlock -> bench-on -> test sequence with snackbar UI and progress dialog VM, gated on dashboard alarms. - BIP-STATUS display: BipDisplayViewModel + BipDisplayView, RAM read at 0x0106 via IKwpService.ReadBipStatusAsync; status definitions in BipStatusDefinition. - Tests page redesign: TestSectionCard + PhaseTileView replacing the old TestPlanView/TestRunningView/TestDoneView/TestPreconditionsView/ TestSectionView controls and their VMs. - Pump command sliders: Fluent thick-track style with overhang thumb, click-anywhere-and-drag, mouse-wheel adjustment. - Window startup: app.manifest declares PerMonitorV2 DPI awareness, MainWindow installs a WM_GETMINMAXINFO hook in OnSourceInitialized and maximizes there (after the hook is in place) so the app fits the work area exactly on any display configuration. - Misc: PercentToPixelsConverter, seed_aliases.py one-shot pump-alias importer, tools/Import-BipStatus.ps1, kline_eeprom_spec.md and dump-functions reference docs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -43,6 +43,28 @@ namespace HC_APTBS.Services
|
||||
/// <summary>Persists a pump definition back to the database.</summary>
|
||||
void SavePump(PumpDefinition pump);
|
||||
|
||||
// ── Pump equivalence / alias lookup ───────────────────────────────────────
|
||||
|
||||
/// <summary>
|
||||
/// Returns the canonical pump ID whose <c><Aliases><KlineId></c>
|
||||
/// entries contain <paramref name="klinePumpId"/>, or <c>null</c> if no
|
||||
/// alias matches. Comparison is case-insensitive and trims whitespace.
|
||||
/// </summary>
|
||||
string? FindPumpIdByKlineAlias(string klinePumpId);
|
||||
|
||||
/// <summary>
|
||||
/// Returns the canonical pump ID whose <c><Aliases><ModelRef></c>
|
||||
/// entries equal <paramref name="modelRef"/> (case-insensitive, trimmed),
|
||||
/// or <c>null</c> if no alias matches.
|
||||
/// </summary>
|
||||
string? FindPumpIdByModelRef(string modelRef);
|
||||
|
||||
/// <summary>
|
||||
/// Persists a new K-Line alias under the given canonical pump.
|
||||
/// No-op if the canonical pump does not exist or if the alias is already present.
|
||||
/// </summary>
|
||||
void AddKlineAlias(string canonicalPumpId, string klineAlias);
|
||||
|
||||
// ── Clients ───────────────────────────────────────────────────────────────
|
||||
|
||||
/// <summary>Sorted client name → contact info dictionary.</summary>
|
||||
@@ -51,6 +73,26 @@ namespace HC_APTBS.Services
|
||||
/// <summary>Persists the client list to <c>clients.xml</c>.</summary>
|
||||
void SaveClients();
|
||||
|
||||
// ── Developer libraries (saved KWP commands + EEPROM passwords) ──────────
|
||||
|
||||
/// <summary>
|
||||
/// User-saved raw KWP custom commands, persisted in <c>custom_commands.xml</c>.
|
||||
/// Populated and edited by the Developer Tools page; not used by production paths.
|
||||
/// </summary>
|
||||
ObservableCollection<CustomCommand> CustomCommands { get; }
|
||||
|
||||
/// <summary>Persists <see cref="CustomCommands"/> to <c>custom_commands.xml</c>.</summary>
|
||||
void SaveCustomCommands();
|
||||
|
||||
/// <summary>
|
||||
/// User-saved EEPROM unlock passwords (zone + 16-bit key), persisted in
|
||||
/// <c>eeprom_passwords.xml</c>. Populated and edited by the Developer Tools page.
|
||||
/// </summary>
|
||||
ObservableCollection<EepromPassword> EepromPasswords { get; }
|
||||
|
||||
/// <summary>Persists <see cref="EepromPasswords"/> to <c>eeprom_passwords.xml</c>.</summary>
|
||||
void SaveEepromPasswords();
|
||||
|
||||
// ── Pump status definitions ───────────────────────────────────────────────
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user