- Improvements: New APIs, expanded feature support, and performance enhancements.
- Fixes: Resolved bugs and reliability improvements.
Some features in this version require VPOS version 4.0.8.23-RC3 or newer.
Improvements
Improvements
Pre-authorization amount config
Added thepre_auth_amount_config (0x8c) vend sub-command, including the message class, decode/encode support, a factory method, and event handling in the public API. The demo application now includes a menu option to test pre-authorization amount configuration.External reader and display control
Added an external reader command and extended the display control API to support additional layouts.- The display control API signature now takes a
layout_tinstance directly. - The SDK version string now also reports the SDK language.
Multi-vend, multi-session, and pricing
Addedlong_price support, a 4-byte price capability relevant for VPOS Media.- Fixed the display of negative prices.
- Multi-session now works together with multi-vend in the same session.
- Added a
final_pricefield toonSessionInfo. - Real-time price changes are now supported in always-idle mode, even after the reader is already enabled.
- The SDK gained file-system management support, since VPOS now provides those services.
Transfer data and QR/third-party authorization
Site ID and brand name are now transferred to the machine through transfer data.- Added a brands-selection bit for the Japanese market.
- Added support for the QR-code card type and third-party authorization for QR-code readers.
- Added a technician-mode command to open the door remotely.
Vend and session API improvements
vend_request and close_session now return a boolean value, with a sanity check that price does not exceed the permitted amount (65k when long_price is disabled).- Machine sub type can now be set explicitly instead of being hard-coded.
vend_session_data_tnow exposes all nullable fields, so the caller can tell whether a value was assigned.- The VPOS serial number is now provided as a correctly arranged string instead of raw bytes.
Low-level serial and internal cleanup
The SDK no longer bundleslowlevel_serial.java directly. Instead, you inject a serial_port_i implementation (a certified FTDI and PC-port implementation is provided).- Removed a false warning on
vmc_vend_twhen no callback handler was registered, replacing it with a null check shared betweenmarshall_sdkandmarshall_master_sdk. - Optimized
eth_portlogging.
Fixes
Fixes
Link and retransmission reliability
Fixed a missed-ack issue that stopped keepalive and the related link-down issue.- Fixed a race condition between the rx and tx threads on
m_pending_tx_msgaccess. - Eliminated false retransmissions.
- Improved
vmc_linkbuffer management to prevent a possible retransmission and frame loss. - Fixed the
session_endtimeout expiring too soon, which previously causedreader_always_onto fire early.
Message encoding and decoding
Fixed several message encode/decode bugs:msg_remote_selection_tencode was an empty stub; now encodes all fields (funds available, payment media ID, payment type, payment data, item number, item options).msg_setup_max_min_prices_tencode was missing its sub-command byte and had a currency-code encoding typo; both are fixed.msg_expansion_tnow null-checks the body before decode/encode.msg_mdb_rsp_tdecode now correctly instantiatesmsg_ftl_retry_deny_t.- Fixed
fw_infostring copy, which could append garbage to the end of strings. - Fixed a
msg_alertstring decode error. - Fixed an encoding bug affecting multi-session multi-vend frames.
- Fixed incorrect session ID encoding in
vend_multi_close_sessionand multi-vend multi-session close. - Fixed a frame-size detection issue affecting varying Marshall message sizes.
- Fixed a typo in
marshall_func_code_transfer_data.
Vend and session safeguards
Fixed the reader state command so it also works in always-idle mode.- Added protection against vend, socket, and general actions being issued when there is no link.
- Fixed a bug where card info from a previous session was not cleared once a session completed.