# OmegaJr 030.001.034 Release Notes These notes cover changes from OmegaJr firmware 030.001.033 through the current 030.001.034 branch as of August 13, 2026. ## Highlights - Hardened PCC command handling against oversized, malformed, and stale-buffer responses. - Added the OmegaJr firmware version and build date to the extended PCC version response. - Corrected preset conversion, pump-protocol BCD handling, error propagation, and hose validation. - Added host-side tests for shared pump math, BCD, bounds, and framing helpers. - Made Visual Studio Release builds explicitly identify themselves as Release builds. ## PCC and service interface - The extended PCC `K` version response now appends a second null-terminated string in the form `OJR FW 030.001.034 `. The existing PCC protocol-version string remains first. - Fixed stale data being appended to extended sale-read responses when the final requested field contained raw bytes. - Added bounds checking to the 100-byte PCC receive buffer. Oversized frames are discarded through their checksum and receive a NAK instead of overwriting adjacent channel state. - Added recovery for invalid PCC parser states so a damaged state value cannot leave a channel wedged until the next power cycle. - Added capacity checks to extended sale-read responses. Requests that would exceed the 400-byte response buffer now receive a NAK instead of being truncated or overflowing memory. - Widened PCC response counters and indexes to support the full response-buffer capacity without 8-bit wraparound. ## Pump handling and calculations - Reworked dollar-to-volume and volume-to-dollar preset conversion to use checked integer arithmetic. Zero PPG, invalid preset values, and overflow now return `SYSTEM_INVALID_DATA` instead of producing undefined or truncated results. - Added hose-range validation before storing totals, preventing invalid hose indexes from accessing data outside the hose array. - Corrected Nuovo Pignone integer-to-BCD conversion and removed its `sprintf`-based conversion path. - Preserved the actual Tokheim command failure code when a totals request fails, rather than silently replacing it with success or a generic result. - Protected Bennett blend-ratio calculation from a zero denominator and intermediate integer overflow. - Corrected Tatsuno product-to-hose validation so invalid mappings are disabled rather than used as array indexes. - Improved Donghwa numeric parsing by widening large ASCII values to 64 bits. - Added divide-by-zero handling to shared fixed-point and tax calculations. - Refactored shared Wayne/Dresser pump math and BCD conversion into host-tested helpers. The current implementation uses the least-significant-byte-first BCD order used on the Wayne wire protocol and clamps values above `999999` rather than silently truncating them. - Initialized the shared 32-bit pump receive result when no byte is available, avoiding an undefined output value. ## Build, diagnostics, and maintainability - Bumped the firmware version from `030.001.033` to `030.001.034` and replaced the versioned Release HEX artifact. - Changed the OmegaJr GCC build from blanket warning suppression to `-Wall -Werror -Wfatal-errors`, with the associated warning and dead-code cleanup. - Added host tests for pump preset math, hose bounds, BCD conversion, protocol framing, fixed-point calculations, and related shared helpers. - Consolidated OmegaJr and shared build documentation. - Visual Studio now passes `-BuildConfiguration Release` explicitly for Release builds and `-BuildConfiguration Debug` for Debug builds. - Generated firmware metadata annotates the device name with `(Release)` for Visual Studio Release builds. Automated build tests verify this marker. - Generated build outputs are excluded from source-dirty detection, so rebuilding tracked HEX artifacts does not incorrectly mark `omega_jr_app` as unversioned. ## Compatibility notes - PCC clients that parse the extended `K` response must allow the new second null-terminated firmware-identification string after the existing protocol-version string. - Oversized or malformed PCC requests that could previously produce truncated output or corrupt parser state are now rejected with a NAK. - Invalid preset, price, or hose data may now return an error where earlier firmware attempted a calculation or used an unchecked index. - No intentional persistent-configuration migration is required for OmegaJr 030.001.034. ## Included OmegaJr artifacts - Versioned image: `OmegaJr/omega_jr_app/build/windows/out/bin/OmegaJR.030.001.034.hex` - Standard image: `OmegaJr/omega_jr_app/build/windows/out/bin/OmegaJR.hex` - SHA-256 (both images): `2EF7FDD8A7F1078E1467DC54675FC466A6750CE7A521823FE0243D37E9EDC7A8` ## Embedded source manifest - `common_source`: `33980bdef82871b21296b4bc74048cbd40ba6b15` - `common_source_stm32`: `3f76fd041530f7bcd8441dde73c6672dc8f32c05` - `omega_jr_app`: `e9a6c7349b3d7ad757dccd6484a64154934bf481` - `omega_jr_main`: `85d67b9815f1ad39694ea6d2d882a988168db07d` - `port_interface`: `4276f984282e858bce3e5e86b666144496e95795` - `port_interface_stm32`: `d589c2d0ae891f37e5604bd90289fa7efd1fa30b` - `st_common`: `763ecd95f254861f54d0f7cad16b71498e6fcc7f` - `STM_libraries`: `01bcc8995018f1724b29c232b8a5fe16c7058a9f` ## Verification - OmegaJr 030.001.034 builds successfully through the Visual Studio/MSBuild `Release|Win32` configuration. - The generated firmware metadata contains the `(Release)` annotation. - The generated firmware metadata reports `unversioned_repos_ = 0` with no modified source components. - The OmegaJr build migration tests pass. - The firmware metadata dirty-output regression tests pass. ## Change range - Baseline: `30215b4` - OmegaJr 030.001.033 - Version 034 safety and correctness update: `31febab` - Current branch: `17e2930` Commits after `31febab` that only changed Mechanical Relay behavior are not presented as OmegaJr runtime changes. Rebuilt OmegaJr images from those commits may still differ in embedded shared-source revision metadata.