Skip to content

Screens

This page documents all available screens in the Nimbus CloudWash Payment Panel. Each screen can be triggered via the SWITCH_TO_SCREEN command.

Command Structure

All screen commands follow this structure:

FieldSizeValueDescription
type1 byte0x21 ('!')WRITE command (or 0x23 for WRITE_EXTENDED)
group1 byte0x01SWITCH_TO_SCREEN group
id1 byte0x01-0x07Screen ID (see below)
payload_len1 byte0x00-0xFFLength of payload in bytes (0x00 for extended)
payloadvariableOptional parameters (see each screen)
crc162 bytesCRC16 checksum (little-endian)

Note: For payloads longer than 255 bytes, use WRITE_EXTENDED type (0x23 / '#'). Set payload_len to 0x00 and follow with an 8-byte uint64 length field. See the Command Protocol page for details.

Parameter Format

Each parameter in the payload contains:

FieldSizeDescription
param_id2 bytesParameter identifier (little-endian)
len2 bytesLength of parameter data (little-endian)
datavariableParameter value

For detailed protocol information, see the Command Protocol page.


Screen 1: Select Type of Carwash

Screen ID: 0x01

The initial screen where users select the type of car wash service.

Select Type of Carwash

Parameters

Param IDNameTypeDefault Value
0LABELstring"SELECT TYPE OF CARWASH"

Binary Example

Switch to Screen 1 with default parameters:

Command Structure:
  type:        0x21  (WRITE)
  group:       0x01  (SWITCH_TO_SCREEN)
  id:          0x01  (SELECT_TYPE_OF_CARWASH)
  payload_len: 0x00  (no parameters, use defaults)
  payload:     (empty)
  crc16:       0x45FB (little-endian: FB 45)

Binary: 21 01 01 00 FB 45

Screen 2: Select Type of Payment

Screen ID: 0x02

Screen where users choose their payment method (card or QR code).

Select Type of Payment

Parameters

Param IDNameTypeDefault Value
0LABEL_STRINGstring"SELECT THE TYPE OF PAYMENT"
1PRICE_SUBTITLE_STRINGstring"deep clean + wax"
2PRICE_STRINGstring"€ 15"

Screen 3: Insert or Tap Your Card

Screen ID: 0x03

Prompt for contactless or chip card payment.

Insert or Tap Your Card

Parameters

Param IDNameTypeDefault Value
0LABEL_STRINGstring"INSERT OR TAP YOUR CARD"
1PRICE_STRINGstring"€ 15"
2SUBTITLE_STRINGstring"deep clean + wax"

Binary Example

Switch to Screen 3 with custom price "€ 25":

Command Structure:
  type:        0x21  (WRITE)
  group:       0x01  (SWITCH_TO_SCREEN)
  id:          0x03  (INSERT_OR_TAP_YOUR_CARD)
  payload_len: 0x0A  (10 bytes)
  payload:
    param_id:  0x01 0x00  (PRICE_STRING, little-endian)
    len:       0x05 0x00  (5 bytes, little-endian)
    data:      E2 82 AC 20 32 35  ("€ 25" in UTF-8)
  crc16:       0xC33C (little-endian: 3C C3)

Binary: 21 01 03 0A 01 00 05 00 E2 82 AC 20 32 35 3C C3

Screen 4: Processing Your Payment

Screen ID: 0x04

Loading screen shown while payment is being processed.

Processing Your Payment

Parameters

Param IDNameTypeDefault Value
0LABEL_STRINGstring"PROCESSING YOUR PAYMENT"
1SUBTITLE_STRINGstring"Please wait..."

Screen 5: Payment Was Declined

Screen ID: 0x05

Error screen shown when payment fails or is declined.

Payment Was Declined

Parameters

Param IDNameTypeDefault Value
0LABEL_STRINGstring"PAYMENT WAS DECLINED"
1SUBTITLE_STRINGstring"Let's try that again."

Screen 6: Scan QR Code for Payment Information

Screen ID: 0x06

QR code payment screen displaying a scannable code with payment details.

Scan QR Code for Payment Information

Parameters

Param IDNameTypeDefault Value
0LABEL_STRINGstring"SCAN THE CODE FOR PAYMENT\nINFORMATION"
1PRICE_STRINGstring"€ 15"
2SUBTITLE_STRINGstring"deep clean + wax"
3QR_DATA_BYTESbytes"https://nimbus-cloudwash.si/pay/00000" (no null terminator)

Binary Example

Switch to Screen 6 with custom QR code:

Command Structure:
  type:        0x21  (WRITE)
  group:       0x01  (SWITCH_TO_SCREEN)
  id:          0x06  (SCAN_QR_CODE_FOR_PAYMENT_INFORMATION)
  payload_len: 0x29  (41 bytes)
  payload:
    param_id:  0x03 0x00  (QR_DATA_BYTES, little-endian)
    len:       0x25 0x00  (37 bytes, little-endian)
    data:      68 74 74 70 73 3A 2F 2F ...  ("https://nimbus-cloudwash.si/pay/12345")
  crc16:       0x2617 (little-endian: 17 26)

Binary: 21 01 06 29 03 00 25 00 68 74 74 70 73 3A 2F 2F 6E 69 6D 62 75 73 2D 63 6C 6F 75 64 77 61 73 68 2E 73 69 2F 70 61 79 2F 31 32 33 34 35 17 26

Note: QR_DATA_BYTES does not require a null terminator since lv_qrcode_update() uses explicit length.


Screen 7: Payment Successful

Screen ID: 0x07

Success confirmation screen shown after successful payment.

Payment Successful

Parameters

Param IDNameTypeDefault Value
0LABEL_STRINGstring"PAYMENT SUCCESSFUL"
1SUBTITLE_STRINGstring"You may now start the car wash."

Implementation Reference

The screen definitions are located in Inc/communication/commands.h:21-104. Each screen is defined under the CMD::SWITCH_TO_SCREEN::ID namespace with its corresponding parameters enumeration.