hiq:components:cr-d-tgp_app:comm
Table of Contents
TGP communication protocol
Data model
- project consists of multiple pages
- each page contains a list of objects
- each object may have one or more associated parameters
- a parameter can be of type: bit, nibble, byte, integer, or long
- sending page command displays the page with objects and their values
- changing an object sends event with parameter index and new value
Message frame
- uart parameters: 115200 8n1
- integers are little endian (low byte first)
A0h | device | page | pp0_lo | pp0_hi | pp1_lo | pp1_hi | pp2_lo | pp2_hi | checksum |
---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
- A0h - page frame, cybro-to-display
- device - device receiving the message (00h-broadcast, 01h..FFh-device number)
- page - request to display specified page
- pp0..pp2 - parameters (optional)
- checksum - sum of all bytes before the checksum mod 256
A1h | device | event | ep0_lo | ep0_hi | ep1_lo | ep1_hi | ep2_lo | ep2_hi | checksum |
---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
- A1h - event frame, display-to-cybro
- device - device sending the message (00h-not defined, 01h..FFh-device number)
- event - event triggered by user
- ep0..ep2 - parameters (optional)
- checksum - sum of all bytes before the checksum mod 256
Parameter encoding
1x long | long0 = pp0 + pp1«16 |
---|---|
3x int | int0 = pp0, int1 = pp1, int2 = pp2 |
6x byte | byte0 = pp0lo, byte1 = pp0hi, byte2 = pp1lo, byte3 = pp1hi, byte4 = pp2lo, byte5 = pp2hi |
12x nib | nib0 = pp0n0, nib1 = pp0n1, nib2 = pp0n2, nib3 = pp0n3, nib4 = pp1n0, nib5 = pp1n1, … |
48x bit | bit0 = pp0b0, bit1 = pp0b1, bit2 = pp0b2, bit3 = pp0b3, bit4 = pp0b4, bit5 = pp0b5, … |
Any combination of types can be used.
Object specifications
page | event | |
---|---|---|
decimal number | enable, value | none |
multi-state indicator | enable, value | none |
push button | enable | 1 = press, 2 = release, 3 = long press |
toggle button | enable, value | value |
slider input | enable, value | value (on change, max 200ms) |
numeric input | enable, value | value (update on enter) |
Cybro-to-Display
page | pp0 | pp1 | pp2 | description |
---|---|---|---|---|
0 | 0 | 0 | 0 | none |
1 | 0 | 0 | 0 | ping, used to check the connection |
2 | parameter index | parameter value | 0 | generic write when the page has too many parameters |
10+ | project-specific pages |
Display-to-Cybro
event | ep0 | ep1 | ep2 | description |
---|---|---|---|---|
0 | 0 | 0 | 0 | none |
1 | 0 | 0 | 0 | ping, used to check the connection |
2 | page | 0 | 0 | page request |
10+ page | object index | object value | 0 | object change |
Example
A0 | 00 | page=22 | pp0=220 (setpoint) | pp1=-1 (disable) | pp2=-1 (disable) |
⇒ set page 22, setpoint 22.0°C, disable fan, disable ventilator
A1 | 00 | page=22 | ep0=0 (setpoint) | ep1=225 (value) |
⇒ setpoint changed to 22.5°C
hiq/components/cr-d-tgp_app/comm.txt · Last modified: by goran.kocjancic