26.07.08

Downloads

FileSizeModifiedAction
FD2-26.07.08.zip35.6 MBAug 13, 2026 20:14Download

Changelog - FD2

All notable changes for FD2.

Releases before 25.08.02 were reconstructed from repository history because project release tags and automated changelog generation did not yet exist. Their dates use the best available version-changing commit or release commit.

[Unreleased]

[26.07.07] - 2026-07-20

Added

  • [FD2/config] Add English, Spanish, and French localization to the configuration tool and help
  • [FD2/dispenser] Add a configurable drive-away force stop that requires the nozzle to be lowered before resume

Changed

  • [FD2/release] Exclude version-only entries from release notes
  • [FD2/config] Update configuration help for all current settings, protocols, validation, and workflows

Fixed

  • [FD2/Bennett] Report Bennett sale prices and totalizers correctly during completed-sale pickup
  • [FD2/PCC] Return large PCC sale totals without rejecting valid responses
  • [FD2/Conexxus] Keep Conexxus prompts within valid IDs and wait for definition confirmation before display
  • [FD2/Kraus] Correct Kraus startup totals, preset overrun detection, and deauthorization cleanup
  • [FD2/Bennett] Keep Bennett startup and payout cleanup running when optional paid-out status commands are unsupported
  • [FD2/AMP] Stabilize AMP authorization, payout reset, pricing, and retained-sale handling

[26.07.06] - 2026-07-15

Added

  • [FD2/price-signs] Add validated price delivery, display controls, and delivery status for supported price-sign protocols
  • [FD2/test-utility] Add OmegaJr diagnostics and price-sign testing workflows

Changed

  • [FD2/config] Add verified price-sign defaults and reject unsupported configuration combinations

Fixed

  • [FD2/dispenser] Keep pump-side polling stable while price commands add or remove dispensers

[26.07.05] - 2026-07-14

Added

  • [FD2/Conexxus] Add Conexxus printer discovery and last displayed message reporting
  • [FD2/POS] Add PCC printer properties and expanded error reporting commands

Changed

  • [FD2/comms] Share dispenser protocol behaviors across serial and DBOX transports

Fixed

  • [FD2/comms] Improve DBOX framing, response handling, and disconnect recovery
  • [FD2/AMP] Prevent AMP sales cleared by the POS from being reported again

[26.07.04] - 2026-07-09

Added

  • [FD2/IFSF] Implement IFSF XML POS handler support for authorization, fuel point control, live status responses, price changes, and price sign mode updates
  • [FD2/config] Add PAM5000 POS protocol defaults to the configuration tool

Changed

  • [FD2/POS] Clean backlog protocol handling across PCC, PAM, HyperPIB, serial defaults, and dispenser blend support

Fixed

  • [FD2/comms] Log dispenser connection state changes and tighten offline command handling

[26.07.03] - 2026-07-09

Changed

  • [FD2/build] Migrate the solution target framework and build requirement from .NET 9 to .NET 10

Fixed

  • [FD2/Gilbarco] Suppress repeated no-change end-of-transaction snapshots so stale FEOT data cannot block normal polling
  • [FD2/comms] Mark channel dispensers offline on DBOX transport disconnect and reject queued control commands while offline

[26.07.01] - 2026-07-02

Added

  • [FD2/emv] Add separate production and testing EMV default data bundles
  • [FD2/carwash] Add Ryko car wash startup and status support with shared result models
  • [FD2/transport] Add reusable serial transport behaviors for car wash integrations

Changed

  • [FD2/Conexxus] Refine Conexxus reader processing and startup behavior
  • [FD2/PCC] Update PCC handling for current reader and EMV flows
  • [FD2/integration] Reuse OLE bridge socket connections and normalize fueling-position command formatting

Fixed

  • [FD2/logging] Log FuelDirect socket fueling-position numbers with two digits
  • [FD2/Gilbarco] Require repeated over-limit reads before triggering overrun protection
  • [FD2/Gilbarco] Treat idle after active fueling as sale completion

[26.06.05] - 2026-06-30

Added

  • [FD2/integration] Add a legacy FuelDirect OLE bridge package for FD2 socket deployments
  • [FD2/Conexxus] Add Bennett and Wayne contactless integration, including startup configuration, application and key loading, reader status handling, and transaction completion
  • [FD2/Conexxus] Add a configurable manual magnetic-stripe fallback soft key with reader-side cancel and exit handling
  • [FD2Configuration/Conexxus] Add manual fallback channel settings for Conexxus reader channels

Changed

  • [FD2/install] Add installer packaging and simulator protocol support
  • [FD2/Conexxus] Load prompts early, display the reader startup message, separate contact and contactless application loading, and skip unsupported startup commands after repeated timeouts
  • [FD2/Conexxus] Reduce duplicate startup logging while preserving response details needed for reader validation
  • [FD2Configuration] Default load and save dialogs to the operating system's FuelDirect2 configuration directory

Fixed

  • [FD2/Gilbarco] Prevent Gilbarco stop requests during re-arm from sending authorization or resume commands
  • [FD2/Conexxus] Correct TLV parsing and contactless AID default-data handling so supported tap applications can load and proceed
  • [FD2/Conexxus] Prevent disconnected readers from repeatedly retrying failed startup sends
  • [FD2Configuration/Conexxus] Show manual fallback key ID and text fields only when manual fallback is enabled

[26.06.04] - 2026-06-22

Changed

  • [FD2/Tokico] Follow the same poll/select pattern as Tatsuno
  • [FD2/build] Add Release build code signing support for FD2 executables
  • [FD2/SMC] Reduce preliminary diagnostic logging after initial testing
  • [FD2/Gilbarco] Correct the deauthorization command sequence for NEL dispensers

Fixed

  • [FD2/build] Sign FD2 assemblies during Release builds so digital signature details appear on DLL outputs
  • [FD2/Tokheim] Improve authorization and price update compatibility with legacy Tokheim dispensers
  • [FD2/Tatsuno] Improve product-to-hose price and totals handling for legacy-compatible Tatsuno dispensers
  • [FD2/Gilbarco] Correct the extended-status request

[26.06.02] - 2026-06-11

Added

  • [FD2/Gilbarco] Add NEL dispenser validation to preserve the correct deauthorization sequence in edge cases

Changed

  • [FD2/Generic] Allow generic transports to use separate ports for multiple pump simulators

Fixed

  • [FD2/PCC] Correct !FE response construction and separate channels to reduce response length

[26.06.01] - 2026-06-02

Added

  • [FD2/AMP] Add the configuration path and use the correct headers

Changed

  • [FD2/Gilbarco] Apply hose locking consistently whether or not hose testing is configured

Fixed

  • [FD2/SMC] Correct the checksum calculation

[26.04.02] - 2026-04-10

Added

  • [FD2/Channel] Add a separate connection for file transfers
  • [FD2/Gilbarco] Require a valid sale-data read before completing a sale

Changed

  • [FD2/PCC] Build a set of binary packets for the *V command
  • [FD2/Bennett] Make status parsing more robust when the pump has not cleared its displays

[26.04.01] - 2026-04-07

Added

  • [FD2/Bennett] Add status-change messages
  • [FD2/Bennett] Add a state-of-charge query for hydrogen dispensers
  • [FD2/Channel] Add watchdog tolerance for Tatsuno recovery
  • [FD2/Tatsuno] Poll-only recovery flow for desync and startup conditions
  • [FD2/Tatsuno] Startup CRC handling for TEXT 00 reply
  • [FD2/Bennett] Startup configuration now sets non-sticky grade-bit behavior
  • [FD2/Tokheim] Full startup configuration validation with model, hose, and decimal verification
  • [FD2/Tokheim] Startup clears hose, MOP, and selection state for TCS family dispensers
  • [FD2/Tokheim] Stable sale read validation before completing end-of-transaction
  • [FD2/Tokheim] Explicit selection clear at end-of-sale to restore idle display state

Changed

  • [FD2/PCC] Update the PCC version number
  • [FD2/Wayne] Logging now follows CommonLogging pattern
  • [FD2/Tatsuno] Behavior now handles all polling, startup, and recovery
  • [FD2/Tatsuno] Startup sequence handled entirely in behavior (TEXT 00)
  • [FD2/Tatsuno] Command handling filters and repolls based on expected response types
  • [FD2/Tatsuno] Transport retries disabled; recovery maintained on active session
  • [FD2/Tatsuno] RX/TX logging aligned to logical payloads without extra chatter
  • [FD2/Bennett] End-of-transaction totals detection now validates across all hoses and avoids incorrect hose reassignment
  • [FD2/Bennett] Totals mode now falls back to legacy when totals are detected on unexpected hose
  • [FD2/Tokheim] Processing loop aligned with standard pump-side flow and logging behavior
  • [FD2/Tokheim] Authorization flow now validates status codes and enforces proper preconditions
  • [FD2/Tokheim] End-of-transaction flow now performs full completion sequence including AE/Deactivate handling
  • [FD2/Tokheim] Driveaway and stop logic refined to match active sale conditions and prevent false triggers

Fixed

  • [FD2/Tatsuno] Correct status-change logging
  • [FD2/Channel] Restore channel behavior
  • [FD2/Tatsuno] Price commands no longer fail when poll returns no data
  • [FD2/Tatsuno] ACK handling enforces proper select and data completion rules
  • [FD2/PCCProtocol] Multi-hose lock parsing now accepts hex nibbles and rejects invalid protocol values
  • [FD2/Bennett] Multi-hose lock parsing now normalizes packed decimal values and prevents hose conflicts
  • [FD2/Bennett] Sale hose now resets correctly when no sale is active on startup
  • [FD2/Tokheim] Multi-hose lock handling now prevents single-hose conflicts and normalizes mask usage
  • [FD2/Tokheim] Cross-hose totals detection now correctly rebinds sale hose and pricing

[26.03.04] - 2026-03-30

Added

  • [FD2/Gilbarco] Detect dispenser capabilities through startup command validation
  • [FD2/Bennett] Add startup feature probing with expanded and read-by-type commands, including alternative-fuel subtype support
  • [FD2/Bennett] Add structured parsing for dispenser status and specification error codes
  • [FD2/CommonLogging] Add options for consistent logging across protocols
  • [FD2/PMC] Add startup software and version validation
  • [FD2/PMC] Align end-of-sale handling with other pump-side protocols
  • [FD2/Transports] Add a REST API transport for API-based protocols
  • [FD2/AMP] Add an AMP protocol for AMP-compatible dispensers
  • [FD2/Transport] Add a byte queue for validating delayed loopback reception
  • [FD2/Transports] Separate transport behaviors to manage protocol-specific wire requirements

Changed

  • [FD2/Transports] Use models for transport selection
  • [FD2/Gilbarco] Improve command 6 mode detection
  • [FD2/Gilbarco] Standardize logging with readable errors and function names
  • [FD2/Bennett] Require totals-mode identification before completing startup configuration
  • [FD2/Bennett] Fail startup when paid-out or idle-state validation cannot resolve the dispenser configuration
  • [FD2/Gilbarco] Suppress status change 0 because it reports an error in the previous message rather than a dispenser status
  • [FD2/Wayne] Allow expected minor framing variations in dispenser communication

Fixed

  • [FD2/Kraus] Clear the stopped bit when a state transition becomes stuck
  • [FD2/Kraus] Configure the Kraus four-channel transport correctly
  • [FD2/SMC] Align the Develco SMC structure with known working implementations
  • [FD2/PMC] Accept 21- and 22-byte totals responses
  • [FD2/Gilbarco] Correct volume authorization in six-digit mode
  • [FD2/Gilbarco] Correct transport behavior when entering data mode
  • [FD2/Gilbarco] Recognize and parse all supported running-dollar response lengths
  • [FD2/Gilbarco] Correct the separated Gilbarco transport behavior

[26.02.02] - 2026-03-10

Fixed

  • [FD2/DboxTransport] Prevent a possible race condition during disconnect and reconnect
  • [FD2/Gilbarco] Retain the stop state when a dispenser reports handle-up or idle instead of status C

[26.02.01] - 2026-02-09

Changed

  • [FD2/Comms] Add initialization state to prevent startup from becoming stuck
  • [FD2/Comms] Wait until every dispenser has been checked and logged off before tearing down a channel
  • [FD2/Gilbarco] Refine hose-lock handling during fill-up authorization

[26.01.03] - 2026-01-28

Changed

  • [FD2/Gilbarco] Validate command acceptance with a status check and accept responses that report no error

Fixed

  • [FD2/Gilbarco] Correct preset handling when digit mode is invalid

[26.01.02] - 2026-01-21

Changed

  • [FD2/Comms] Make the watchdog more tolerant during startup
  • [FD2/Gilbarco] Use 64-bit values for meter data from seven-digit dispensers

[26.01.01] - 2026-01-14

Added

  • [FD2/Comms] Add a way to specify that no response is expected
  • [FD2/Docs] Add internal documentation
  • [FD2/Gilbarco] Add start-of-flow validation
  • [FD2/Global] Add cash or credit selection for fill-ups
  • [FD2/Bennett] Add serial baud-rate and parity settings for Bennett dispensers
  • [FD2/Bennett] Track sale start and completion for self-recovery
  • [FD2/Bennett] Filter commands that may not be supported by a dispenser model or version
  • [FD2/Bennett] Exit overrun protection when the dispenser is no longer off-hook

Changed

  • [FD2/PCC] Update the PCC version and date
  • [FD2/Comms] Give each transport type its own interface and implementation
  • [FD2/Gilbarco] Improve function-level logging
  • [FD2/Comms] Send complete frames instead of chunks
  • [FD2/Comms] Improve receive-buffer management
  • [FD2/PMC] Ignore empty replies to one-byte commands that may be missed by faster PMC processors
  • [FD2/Comms] Separate DBOX communication logic to match device behavior

Fixed

  • [FD2/Gilbarco] Ignore retained sale amounts during the first fuel-flow validation
  • [FD2/Logging] Correct internal logging
  • [FD2/Comms] Correct duplicated receive-drain logic
  • [FD2/Comms] Restore serial communication establishment
  • [FD2/Comms] Match legacy communication timing
  • [FD2/Bennett] Enforce the four-hose limit without querying nonexistent hoses

[25.11.02] - 2025-11-07

Added

  • [FD2/Wayne] Add sale PPU revalidation even when the hose remains correct throughout the sale
  • [FD2/Kraus] Add support for the four-channel board
  • [FD2/Wayne] Add validation before falling back to non-BCD mode

Fixed

  • [FD2/DispenserChannel] Initialize dispenser flags during setup

[25.11.01] - 2025-11-04

Added

  • [FD2/PCC] Support commands with or without an explicitly specified hose
  • [FD2/Kraus] Add sale-end lock states

Changed

  • [FD2/PCC] Define hose mappings when sending all hose prices in one message
  • [FD2/Conexxus] Separate connection management, processing, parsing, and command construction
  • [FD2/Conexxus] Refactor readers for asynchronous operation and separated responsibilities

Fixed

  • [FD2/Wayne] Interpret non-BCD pulse counts at three decimal places before truncating to the configured precision
  • [FD2/PCC] Correct parsing for new !F commands
  • [FD2/PCC] Handle missing dispensers and hoses safely

[25.10.03] - 2025-10-27

Added

  • [FD2/Dispenser] Add validation for hoses with pending price changes
  • [FD2/PCC] Add an option to receive all hose PPUs from the POS in one message
  • [FD2/PCC] Add commands to retrieve configuration and zipped logs
  • [FD2/Tatsuno] Add the legacy Tatsuno implementation
  • [FD2/Tokico] Add a specification-based Tokico implementation
  • [FD2/Kraus] Add stronger sale-completion validation
  • [FD2/PCC] Add channel-separated extended status for available dispensers
  • [FD2/Kraus] Force disarming when the dispenser reports collect
  • [FD2/ATG] Add INCON support through the TSA protocol
  • [FD2/SMC] Add the initial documented SMC pump-side implementation

Changed

  • [FD2/Tatsuno] Port legacy communication behavior

Fixed

  • [FD2/Kraus] Prevent duplicate sale-ready reporting after handle manipulation
  • [FD2/Kraus] Correct parsed-delta handling after handle manipulation
  • [FD2/Kraus] Correct end-of-sale behavior and edge-case handling
  • [FD2/Kraus] Pause and resend the preset when the dispenser reports pumping without a sale

Removed

  • [FD2/Licensing] Remove temporary-license creation during initial startup

[25.10.02] - 2025-10-15

Added

  • [FD2/Configuration] Add FuelDirect Socket to the configuration tool
  • [FD2/Wayne] Add an iGem2 detection command
  • [FD2/Wayne] Add variable-blend discovery and record blend ratios per dispenser
  • [FD2/DART] Add initial DART scaffolding and transport support

Changed

  • [FD2/Wayne] Query positions 0 through 6 when available-position discovery fails
  • [FD2/Wayne] Derive hose mapping from available positions to prevent blend-index misalignment

Removed

  • [FD2/Wayne] Remove unused functions

[25.10.01] - 2025-10-07

Added

  • [FD2/Kraus] Add overrun detection
  • [FD2/Kraus] Disarm, restore the preset, and re-arm after unstable handle movement

Fixed

  • [FD2/Kraus] Correct totals handling
  • [FD2/Kraus] Correct control handling
  • [FD2/Kraus] Improve dispenser communication reliability

[25.09.05] - 2025-10-03

Added

  • [FD2/Licensing] Add mapped error codes for more precise licensing diagnostics
  • [FD2/Wayne] Revalidate configuration when hoses are added after initial setup
  • [FD2/Wayne] Log the complete startup configuration process and failure reason
  • [FD2/Wayne] Add dynamic hose and grade translation
  • [FD2/Wayne] Add blend-slot discovery
  • [FD2/Wayne] Parse the valid-hose bitmask and populate available positions
  • [FD2/Wayne] Add hose and blend discovery during startup

Changed

  • [FD2/Wayne] Map single-hose locks consistently with multi-hose locks for SC82 dispensers
  • [FD2/Logging] Use a per-file semaphore to coordinate log writing
  • [FD2/dispenser] Refactor pump configuration for clearer control flow and tolerant blend queries
  • [FD2/Wayne] Resolve Wayne hose, internal hose, and blend indexes with fallbacks and logging
  • [FD2/Wayne] Normalize fixed- and variable-blend indexes consistently

Fixed

  • [FD2/Wayne] Correct the order of operations
  • [FD2/Logs] Include the version in previously unversioned logs
  • [FD2/dispenser] Correct hose-lift mapping so the lifted hose matches the physical position
  • [FD2/Wayne] Correct internal and Wayne hose-number offsets
  • [FD2/Wayne] Guard against invalid indexes and missing blend data
  • [FD2/Wayne] Deduplicate available positions and log invalid hose indexes

[25.09.04] - 2025-09-25

Added

  • [FD2/Generic] Add hose-lock and multi-hose-lock management to the pump simulator
  • [FD2/Docs] Add Wayne documentation
  • [FD2/PumpSim] Add multi-hose-lock support
  • [FD2/Conexxus] Add per-reader transaction tracing

Changed

  • [FD2/DispenserChannel] Normalize lines for VB6 compatibility
  • [FD2/Tokheim] Align status, arm, and flow checks with Wayne and legacy FuelDirect
  • [FD2/Kraus] Align status, arm, and flow checks with Wayne and legacy FuelDirect
  • [FD2/Folders] Move source files into related folders
  • [FD2/logs] Split Conexxus logs into per-remote-IP files
  • [FD2/startup] Decouple reader startup from heartbeats

Fixed

  • [FD2/Conexxus] Handle disconnects and reconnects without excessive CPU usage
  • [FD2/FDSocket] Handle messages containing hose-lock and multi-hose-lock values
  • [FD2/Wayne] Correct arming and re-arming for non-BCD dispensers
  • [FD2/POS] Restore the previous connection behavior
  • [FD2/FDSocket] Correct multi-hose-lock management
  • [FD2/Wayne] Allow handle changes while a non-BCD dispenser is armed and paused
  • [FD2/Dispenser] Validate hose locks for BCD and non-BCD dispensers
  • [FD2/FDSocketHandler] Correct multi-hose locks, displayed prices, and dispenser-information mapping
  • [FD2/Wayne] Re-pause and re-arm non-BCD dispensers after a hose change
  • [FD2/GDM] Prevent deauthorization while fuel is flowing
  • [FD2/FDSocket] Align socket behavior with the original developer guide
  • [FD2/Conexxus] Disable fallback by default
  • [FD2/GRM] Remove sync-over-async startup behavior that could deadlock channel initialization
  • [FD2/queues] Correct dequeue and clear operations to target the intended queues

[25.09.01] - 2025-09-04

Fixed

  • [FD2/Startup] Add startup guards and precise failure logging
  • [FD2/Protocol] Add POS socket command builders

[25.08.03] - 2025-09-01

Added

  • [FD2/FuelDirectSocket] Add an OLE-compatible socket handler with pricing, authorization, sale payout, control, system-version, error-queue, and live-sale commands

Fixed

  • [FD2/Wayne] Preserve the correct sale price when the initially reported hose differs from the final sale hose

[25.08.02] - 2025-08-29

Added

  • [FD2/Docs] Add per-project changelog hooks, workflow, and initial structure

[25.08.01] - 2025-08-17

Maintenance release; no additional user-facing changes were identifiable from the available history.

[25.07.02] - 2025-08-11

Added

  • [FD2/Conexxus] Display an offline message and close the reader when its dispenser is unavailable

Changed

  • [FD2/POS] Begin asynchronous POS-channel processing and remove superseded socket code
  • [FD2/Bennett] Update protocol handling and supporting documentation

Fixed

  • [FD2/Pricing] Validate dispenser price changes before applying them

[25.07.01] - 2025-07-04

Fixed

  • [FD2/Wayne] Correct BCD value conversion used by Wayne sale processing
  • [FD2/Conexxus] Back off reader connection attempts to avoid aggressive retry loops

[25.06.02] - 2025-06-04

Changed

  • [FD2/Logging] Expand controller diagnostics for dispenser troubleshooting

[25.06.01] - 2025-06-02

Fixed

  • [FD2/Wayne] Re-establish lost communication automatically and retain the correct sale price
  • [FD2/Bennett] Preserve off-hook state and allow configured fallback reader behavior

[25.05.06] - 2025-05-15

Changed

  • [FD2/Dispenser] Debounce dispenser state transitions to reduce unstable input changes

[25.05.04] - 2025-05-07

Fixed

  • [FD2/FlowRate] Reset flow-rate state correctly between sales
  • [FD2/Gilbarco] Ignore a previous sale amount temporarily returned at the start of a new sale

[25.05.02] - 2025-05-06

Added

  • [FD2/Gilbarco] Store high- and low-feed data and support preset confirmation on compatible dispensers

Changed

  • [FD2/Authorization] Add protocol timing before sending authorization commands

Fixed

  • [FD2/Dispenser] Clear retained sale amounts on authorization so overrun protection does not stop a new sale incorrectly

[25.03.03] - 2025-03-17

Added

  • [FD2/Licensing] Add a recovery tool for clearing unusable local license data
  • [FD2/Wayne] Add configurable BCD sale reads with automatic pulse-count fallback

Changed

  • [FD2/Dispenser] Centralize additional hose details in the dispenser model
  • [FD2/Logging] Allow dispenser communication logging to be configured

Fixed

  • [FD2/Generic] Send deauthorization correctly and preserve cash or credit MOP selection
  • [FD2/Wayne] Correct volume calculation for affected calibration factors
  • [FD2/PCC] Correct grade locking and large totals handling

[25.03.01] - 2025-03-06

Added

  • [FD2/Gilbarco] Add NEL hydrogen dispenser support
  • [FD2/Licensing] Expand license validation and test coverage

Changed

  • [FD2/Dispenser] Move shared hose state and totals handling into the dispenser model
  • [FD2/Logging] Include fueling-position context consistently in dispenser logs

Fixed

  • [FD2/Updater] Correct update queries
  • [FD2/Everbrite] Correct price-sign decimal handling

[25.02.02] - 2025-02-23

Added

  • [FD2/Dispenser] Add structured hose information to dispenser diagnostics

Changed

  • [FD2/IFSF] Expand price-scheduling and list handling backed by the database

[25.02.01] - 2025-02-23

Added

  • [FD2/IFSF] Add database-backed scheduled price changes

Fixed

  • [FD2/Authorization] Reject a new authorization while the previous sale is still being processed
  • [FD2/PAM] Correct protocol parsing and command handling
  • [FD2/Wayne] Strengthen end-of-transaction validation

[25.01.03] - 2025-02-12

Fixed

  • [FD2/Authorization] Prevent authorization until the pending sale has completed processing

[25.01.02] - 2025-01-20

Fixed

  • [FD2/Logging] Prevent missing-decimal diagnostics from flooding logs and increasing memory use
  • [FD2/Gilbarco] Correct retained state during sale transitions
  • [FD2/Wayne] Correct sale-state validation

[25.01.01] - 2025-01-17

Added

  • [FD2Configuration/Readers] Add reader-channel configuration
  • [FD2/Startup] Enforce a single running controller instance

Fixed

  • [FD2/PCC] Correct F1 response construction and checksum generation
  • [FD2/Bennett] Apply totals validation consistently

[24.12.04] - 2024-12-19

Added

  • [FD2Configuration] Add an initial Windows configuration editor
  • [FD2Configuration/Readers] Begin reader configuration support
  • [FD2/Installer] Package controller configuration and shared utilities

Fixed

  • [FD2/Wayne] Correct slow-flow and non-BCD calculations
  • [FD2/Bennett] Clear stop state after overrun protection

[24.12.03] - 2024-12-08

Added

  • [FD2/VR350] Add Veeder-Root VR350 tank-gauge support
  • [FD2/PCC] Add ATG report responses

[24.12.02] - 2024-12-05

Changed

  • [FD2/Storage] Move controller data to the shared application-data location
  • [FD2/Licensing] Update license storage and recovery behavior

[24.12.01] - 2024-12-04

Added

  • [FD2/Database] Add asynchronous SQLite and MySQL support
  • [FD2/ATG] Add tank configuration and delivery retrieval

Changed

  • [FD2/build] Migrate the controller to .NET 9
  • [FD2/Wayne] Add slow-flow handling

Fixed

  • [FD2/Dispenser] Correct initial dispenser creation and loading

[24.11.10] - 2024-11-27

Changed

  • [FD2/Logging] Prefix channel logs with one consistent controller version
  • [FD2/PMC] Complete pending communication and diagnostic handling
  • [FD2/Wayne] Add an additional hose-shift validation

Fixed

  • [FD2/Comms] Read ASCII protocol data with the correct encoding

[24.11.08] - 2024-11-22

Added

  • [FD2/Configuration] Allow dispenser settings to inherit completely from channel defaults

Fixed

  • [FD2/Wayne] Preserve and log the sale hose while a hose transition is being resolved

[24.11.07] - 2024-11-20

Fixed

  • [FD2/PMC] Correct communication and end-of-transaction handling
  • [FD2/Bennett] Prevent the dispenser from remaining stuck in stopped state
  • [FD2/PCC] Restore missing protocol references

[24.11.06] - 2024-11-18

Fixed

  • [FD2/POS] Apply POS-channel decimal places correctly

[24.11.05] - 2024-11-18

Changed

  • [FD2/Dispenser] Rework end-of-transaction sale retrieval
  • [FD2/PMC] Update protocol state and totals handling

Fixed

  • [FD2/Dispenser] Retrieve the hose before finalizing a sale when no hose was previously available

[24.11.04] - 2024-11-13

Changed

  • [FD2/Logging] Include the controller version in runtime logs

Fixed

  • [FD2/Bennett] Re-establish communication after an extended outage
  • [FD2/Gilbarco] Avoid repeated stop processing when an armed dispenser has not started fueling

[24.11.02] - 2024-11-08

Changed

  • [FD2/Comms] Limit retry loops and cancel failed communication tasks cleanly
  • [FD2/POS] Improve socket connection lifecycle management

[24.10.05] - 2024-11-06

Fixed

  • [FD2/Bennett] Correct single-display dispenser handling
  • [FD2/Configuration] Load channel defaults before applying dispenser overrides

[24.10.04] - 2024-11-05

Changed

  • [FD2/Configuration] Store settings reliably and apply channel defaults before dispenser-level overrides
  • [FD2/Storage] Serialize dispenser JSON updates asynchronously

Fixed

  • [FD2/Licensing] Continue license validation when the expected local file is missing
  • [FD2/Bennett] Remove an incompatible extra totals check at end of sale

[24.10.02] - 2024-10-23

Added

  • [FD2/Gilbarco] Add protection against ghost sales
  • [FD2/Bennett] Add protection against ghost sales

Changed

  • [FD2/Licensing] Add redundant license storage and online time validation

Fixed

  • [FD2/Wayne] Validate totals during sale completion
  • [FD2/Conexxus] Clear reader keys correctly

[24.10.01] - 2024-10-04

Changed

  • [FD2/Bennett] Improve hose and grade mapping

Fixed

  • [FD2/Bennett] Correct grade handling

[24.09.02] - 2024-09-11

Changed

  • [FD2/Gilbarco] Strengthen hose-test state handling

Fixed

  • [FD2/Generic] Report sale volume correctly
  • [FD2/PCC] Handle ten-digit extended values

[24.09.01] - 2024-09-09

Fixed

  • [FD2/PCC] Remove an invalid R marker from read-price responses
  • [FD2/PCC] Handle the documented E authorization field

[24.08.04] - 2024-08-29

Added

  • [FD2/PriceSigns] Add tested PWM, Gilbarco Passport, Bever, Verifone-compatible, Everbrite, Novyc, and Numeritex drivers
  • [FD2/Startup] Enforce a single application instance by application identifier
  • [FD2/Security] Add one-way protection for reader track data

Fixed

  • [FD2/Bennett] Detect dispenser decimal places
  • [FD2/Readers] Return failure for unfinished amount-setting commands

[24.08.03] - 2024-08-22

Changed

  • [FD2/Conexxus] Move reader connections to managed thread-pool workers
  • [FD2/POS] Move socket clients to managed workers to avoid unbounded connection threads

Fixed

  • [FD2/Dispenser] Create a missing hose when a queued command races dispenser creation
  • [FD2/PCC] Use dispenser defaults when request decimal places are omitted
  • [FD2/PCC] Format read-price commands correctly

[24.08.02] - 2024-08-14

Added

  • [FD2/PriceSigns] Add the price-sign simulator and generic price-sign protocol

Fixed

  • [FD2/Wayne] Correct sale-in-progress handling for affected Colombian installations

[24.08.01] - 2024-08-01

Changed

  • [FD2/Bennett] Refactor totals parsing and complete the initial dispenser implementation
  • [FD2/Gilbarco] Require detected decimal settings instead of relying on defaults
  • [FD2/Wayne] Correct decimal detection order

Added

  • [FD2/Bennett] Add overrun protection

[24.07.02] - 2024-07-31

Added

  • [FD2/Bennett] Complete CL and RS-485 dispenser support
  • [FD2/PumpSimulator] Add Bennett simulator bindings

Fixed

  • [FD2/Dispenser] Add an additional guard before clearing sale amounts for a new sale

[24.07.01] - 2024-07-05

Changed

  • [FD2/Bennett] Distinguish cash and credit price tiers

Fixed

  • [FD2/Bennett] Correct tier selection and end-of-sale reauthorization

[24.06.04] - 2024-06-27

Added

  • [FD2/Gilbarco] Auto-detect enhanced protocol support and optional command 6 and 7 data
  • [FD2/Gilbarco] Read decimal settings through special-function commands
  • [FD2/Wayne] Read decimal settings from the dispenser
  • [FD2/Dispenser] Detect preset overflow and force a stop

Fixed

  • [FD2/Authorization] Stop the authorization sequence after any protocol step times out

[24.06.03] - 2024-06-13

Fixed

  • [FD2/Gilbarco] Recover startup when a dispenser remains armed after power loss

[24.06.02] - 2024-06-12

Added

  • [FD2/Licensing] Detect and report bootleg installations
  • [FD2/FlowRate] Add shared and Bennett flow-rate reporting
  • [FD2/Gilbarco] Add configurable leading-digit handling

Changed

  • [FD2/Gilbarco] Select totals commands from BCD capability and simplify pulse-count handling

Fixed

  • [FD2/Gilbarco] Correct price and totals sequencing, running-volume calculation, stop/resume loops, and zero-sale completion
  • [FD2/DriveAway] Avoid false drive-away state after preset completion or an explicit stop
  • [FD2/Bennett] Correct startup communication and sale-state handling

[24.03.13] - 2024-03-13

Added

  • [FD2/IFSF] Add simulator commands and automated protocol test cases
  • [FD2/Pricing] Add feed-stock pricing and dispenser price verification

Changed

  • [FD2/Authorization] Distinguish cash and credit pricing through authorization

Fixed

  • [FD2/Logging] Include MOP and hose context consistently

[24.03.01] - 2024-03-04

Added

  • [FD2/Installer] Add controller installation and update packaging
  • [FD2/Conexxus] Add the initial production reader integration
  • [FD2/Bennett] Add CL and RS-485 communication with totals support
  • [FD2/Tokheim] Add the initial Tokheim pump-side implementation
  • [FD2/IFSF] Add mode, product, configuration, limit, and price-management commands
  • [FD2/PriceSigns] Add initial Bever, PWM, Gilbarco, and other sign protocols
  • [FD2/EMV] Add Global Payments and Datawire integration foundations
  • [FD2/PAM1000] Add pump totals, authorization, stop, and dispenser-type handling
  • [FD2/ATG] Add Veeder-Root and HyperPIB command foundations
  • [FD2/Mannatec] Add the Mannatec dispenser protocol

Changed

  • [FD2/Gilbarco] Improve hose-price validation and Ethernet timing
  • [FD2/Wayne] Request totals for all sale payouts
  • [FD2/build] Migrate FD2 to .NET 8

Fixed

  • [FD2/Wayne] Correct BCD presets, totals, staggered-sale processing, and deauthorization without a sale
  • [FD2/Gilbarco] Correct blender pricing, authorization, totals, and end-of-sale processing

[23.11.10] - 2023-12-07

Added

  • [FD2/Conexxus] Add the initial Conexxus reader implementation
  • [FD2/Wayne] Add validated Wayne protocol support and supporting documentation
  • [FD2/Updater] Add package download and extraction

Changed

  • [FD2/Dispenser] Make queued dispenser additions and removals safe across controller loops

Fixed

  • [FD2/Mechanical] Remove invalid hoses and correct communication logging

[23.11.05] - 2023-11-08

Changed

  • [FD2/Logging] Add dispenser-thread and access-lock lifecycle diagnostics

Fixed

  • [FD2/Gilbarco] Correct multi-hose locking
  • [FD2/Gilbarco] Prevent stopped hose tests from reauthorizing a dispenser

[23.11.04] - 2023-11-07

Changed

  • [FD2/Logging] Support three-digit global fueling-position identifiers
  • [FD2/Storage] Remove unused dispenser JSON files after configuration changes
  • [FD2/PCC] Serialize dispenser access for pump-control commands

Fixed

  • [FD2/GUI] Return pump information for positions above the first channel
  • [FD2/Gilbarco] Correct deauthorization with the handle down and sale retrieval on later channels
  • [FD2/PCC] Set F1 hose bits only while the hose is off-hook

[23.11.03] - 2023-11-06

Changed

  • [FD2/DBOX] Preserve receive ordering in communication logs
  • [FD2/PCC] Return numeric MOP values in sale reports
  • [FD2/Logging] Use millisecond timestamps and global dispenser identifiers

Fixed

  • [FD2/Gilbarco] Preserve sale hose, prevent false resume logging, retain drive-away state, and parse totals prices correctly

[23.11.02] - 2023-11-02

Changed

  • [FD2/Gilbarco] Include PPU details in totals logs and expect the correct one-byte status response

[23.11.01] - 2023-11-02

Added

  • [FD2/Gilbarco] Add totals, hose-test, special-function, unit-type, drive-away, and flow diagnostics

Fixed

  • [FD2/Dispenser] Prevent concurrent pump creation or deletion from blocking the POS
  • [FD2/Gilbarco] Correct cash fill-up MOP selection and reauthorization after deauthorization

[23.10.05] - 2023-11-01

Added

  • [FD2/PCC] Add the F1 dispenser-status command

Changed

  • [FD2/Gilbarco] Retry communication before declaring a dispenser offline

Fixed

  • [FD2/GUI] Resolve pump information by fueling position
  • [FD2/Storage] Fall back to the backup when the primary JSON file is empty
  • [FD2/Gilbarco] Correct drive-away detection for presets and sale startup

[23.10.04] - 2023-10-31

Added

  • [FD2/Bennett] Add the initial Bennett pump-side implementation
  • [FD2/Logging] Add default communication logs and move logs and JSON files under PIE_Data
  • [FD2/Dispenser] Add serialized dispenser access for POS commands

Changed

  • [FD2/Gilbarco] Request all-hose totals once, enable hose testing by default, and speed single-byte polling

Fixed

  • [FD2/Gilbarco] Correct volume presets, unit-type detection, and totals polling during active sales

[23.10.01] - 2023-10-19

Added

  • [FD2/Gilbarco] Add the Gilbarco pump-side protocol, pricing, hose tests, special functions, and DBOX communication
  • [FD2/PMC] Add PMC dispenser support and preset configuration
  • [FD2/Mechanical] Add the mechanical pump-side protocol
  • [FD2/Wayne] Add the initial Wayne pump-side implementation
  • [FD2/PCC] Add extended POS commands and multi-hose-lock authorization

Changed

  • [FD2/Dispenser] Centralize channel defaults and poll only dispensers that can communicate
  • [FD2/DBOX] Match legacy per-protocol timeouts and log invalid received data

Fixed

  • [FD2/Gilbarco] Correct authorization hose selection, byte order, totals parsing, and running sale values
  • [FD2/PMC] Correct preset-mode and volume-preset handling

[23.08.01] - 2023-08-08

Added

  • [FD2/Generic] Add a complete generic dispenser lifecycle for simulation
  • [FD2/CommonLogging] Add shared dispenser-event logging and optional console output
  • [FD2/HyperPIB] Add the initial HyperPIB handler skeleton

Fixed

  • [FD2/Generic] Correct authorization without a lifted handle and repeated deauthorization handling
  • [FD2/PCC] Apply configured sale-report limits

[23.07.01] - 2023-07-14

Added

  • [FD2/Core] Add the initial headless FD2 controller and GUI shell
  • [FD2/PCC] Add the initial PCC POS protocol handler
  • [FD2/PAM] Add the initial PAM POS protocol handler
  • [FD2/Configuration] Add XML configuration loading
  • [FD2/PumpSimulator] Add the initial pump simulator project