Important Notes - C SDKRequired Configuration ChangePlease also make this important configuration update in your project:
File: makefile.include
Change: Set MARSHALL_MSG_ARRAY_SIZE to 4
MARSHALL_MSG_ARRAY_SIZE = 4This ensures sufficient message buffer allocation for display control operations.• Do not modify any files in vpos (such as vmc_vend.c, vmc_link.c)• Using vmc_vend_event_on_ready ensures proper timing without arbitrary delays
Note:
- The device’s limitation is up to 12 objects per Layout.
- Use %c in the beginning of the label value to show a clock icon.
Display Control Related Commands

Updating the Screens
As can be seen in the PowerPoint above, once the Display Control command has been sent, the device would respond with a Display Status command, letting it know whether or not the device received said command and it’s validity.Starting a Transaction
Once a consumer has selected a product (screen) on the device, the device would respond with information the peripheral regarding which screen was selected, to which it should respond with a “Vend Request” with the relevant product code and price in order for the transaction process to begin.Possible Layouts- VPOST only (except for layouts 7,8 which are also relevant for Media)

Layouts Relevant for VPOSM Only:



Layout Examples
Layout ID 1

Layout ID 2

Layout ID 3

Layout ID 4

Layout ID 5

Layout ID 6

Layout ID 7

**Note: **You can have up to 6 values: values 4-6 would appear once you scroll down.
Layout ID 8

**Note: **You can have up to 6 values: values 4-6 would appear once you scroll down.
Layout ID 9- VPOSM only!

Layout ID 10- VPOSM Only

Layout ID 11- VPOSM Only

Nayax Core configurations
Important:This feature is supported only in “Always Idle” mode. This means that you need to have “Always Idle” configuration set up both on the device level (via Nayax Core) as well as have it be set to “true” on the peripheral level (via the SDK)You can see the flag’s location in the SDK Flagspage, under “Configurations flags”.
| Attribute Group | Attribute Name | Attribute Value |
|---|---|---|
| MDB | Cashless MDB address | Marshall VMC |
| MDB flags | 02 Preselection Enabled | |
| MDB Level 3 Optional Features | Enable “Always Idle” state | |
| Card Readers | Card Reader MDB Level | 3 |
| Transaction start method | Product | |
| Transaction Start Ignore List | Ignore None | |
| VPOS Read Source Enabled | All Read Sources Enabled (Default) | |
| VPOS Button Function | 01 External cancel | |
| Payment | Choose Product Timeout | > 0 |
| Default Credit | > 0 (highest product’s amount) | |
| EMV Price Table | C%100 | |
| Payment Flags | Allow Pre-Selection on Pre-Paid cards | |
| VMC | Session Time Out (minutes) | > 0 |
Updating the Screens via Nayax Core
A Nayax Core attribute has been introduced that allows operators to dynamically update text, prices, and configurations on selection screens- the screens that appear when the device is in idle mode, waiting for a consumer to select a product by selecting (touching) one of said screens. This attribute enables sending structured data from Nayax Core to the peripheral. This information is then processed and displayed on the Marshall selection screen. The attribute definition is as follows:| Attribute | Value |
|---|---|
| ID | 7700 |
| Name | Marshall Screens Info |
| Group | VMC |
| Maximum Length | 400 characters |
JSON Logic Recommendation
The JSON string should include necessary instructions for each selection screen. The format is flexible, allowing operators to specify only the required parameters. See the structure in the code block below:Example
See the JSON below. It is sending the instructions to update the display of an Air Vac machine.Packet CreationPackets are created automatically by the SDK or Nayax Core.
