| Protocol Port | Description |
|---|
| 0 | Unreliable |
| 1 | Reliable |
The following version numbers are advertised during the connection request:
| Pia version | Version |
|---|
| 5.19 - 5.20 | 0 |
| 5.21 - 5.27 | 1 |
| 5.28 - 5.29 | 2 |
| 5.30 - 5.43 | 3 |
Join request
Up to 5.10:
| Type | Description |
|---|
| Uint8 | Message type (1) |
| Uint8 | Station index |
| Uint16 | Padding (always 0) |
| StationAddress | Station address |
| Uint32 | Ack id |
5.11 - 5.18:
| Type | Description |
|---|
| Uint8 | Message type (1) |
| Uint8 | Station index |
| Uint32 | Ack id |
Join response (success)
If the join response is too big to be sent in a single packet it is split into fragments.
Up to 3.10:
| Type | Description |
|---|
| Uint8 | Message type (2) |
| Uint8 | Number of stations in mesh, including joining station |
| Uint8 | Index of host station |
| Uint8 | Index of joining station |
| Uint8 | Number of fragments |
| Uint8 | Fragment index |
| Uint8 | Number of station info entries in current fragment (N) |
| Uint8 | Base index of station info in current fragment |
| StationInfo (xN) | Station info list |
| Uint32 | Ack id |
4.8 - 4.10:
| Type | Description |
|---|
| Uint8 | Message type (2) |
| Uint8 | Number of stations in mesh, including joining station |
| Uint8 | Index of host station |
| Uint8 | Index of joining station |
| Uint8 | Number of fragments |
| Uint8 | Fragment index |
| Uint8 | Number of station info entries in current fragment (N) |
| Uint8 | Base index of station info in current fragment |
| Uint8 | Maximum number of stations in first mesh |
| Uint8 | Maximum number of stations in second mesh |
| Uint16 | Padding |
| StationInfo (xN) | Station info list |
| Uint32 | Ack id |
5.18
| Type | Description |
|---|
| Uint8 | Message type (2) |
| Uint8 | Number of stations in mesh, including joining station |
| Uint8 | Index of host station |
| Uint8 | Index of joining station |
| Uint8 | Number of fragments |
| Uint8 | Fragment index |
| Uint8 | Number of station info entries in current fragment (N) |
| Uint8 | Base index of station info entries in current fragment |
| Uint8 | Maximum number of stations in first mesh |
| Uint8 | Maximum number of stations in second mesh |
| Uint8 | Maximum number of stations (total) |
| Uint8 | Padding |
| Uint32 | Update counter (incremented on each mesh update) |
| StationInfo (xN) | Station info list |
| Uint32 | Ack id |
Join response (denying)
| Offset | Size | Description |
|---|
| 0x0 | 1 | Message type (2) |
| 0x1 | 1 | Always 0 |
| 0x2 | 1 | Always 0xFF |
| 0x3 | 1 | Always 0xFF |
| 0x4 | 1 | Reason |
Leave request
| Offset | Size | Description |
|---|
| 0x0 | 1 | Message type |
| 0x1 | 1 | Station index |
| 0x2 | 2 | Padding |
| 0x4 | 8 | StationAddress |
Leave response
| Offset | Size | Description |
|---|
| 0x0 | 1 | Message type |
| 0x1 | 1 | Station index |
| 0x2 | 2 | Padding |
| 0x4 | 8 | StationAddress |
Destroy request
| Offset | Size | Description |
|---|
| 0x0 | 1 | Message type |
| 0x1 | 1 | Station index |
| 0x2 | 2 | Padding |
| 0x4 | 8 | StationAddress |
Destroy response
| Offset | Size | Description |
|---|
| 0x0 | 1 | Message type |
| 0x1 | 1 | Station index |
Update mesh
Because this message is sent through the reliable mesh protocol it does not need to be split into fragments like the join response.
| Offset | Size | Description |
|---|
| 0x0 | 1 | Message type |
| 0x1 | 1 | Number of stations |
| 0x2 | 1 | Host index |
| 0x3 | 1 | Always 0 |
| 0x4 | 4 | Update counter (incremented on each mesh update) |
| 0x8 | 1 | Number of fragments |
| 0x9 | 1 | Fragment index |
| 0xA | 1 | Number of station info entries in current fragment |
| 0xB | 1 | Base index of station info entries in current fragment |
| 0xC | | StationInfo entries |
StationInfo
Up to 5.9:
| Type | Description |
|---|
| StationConnectionInfo | Connection info |
| Uint8 | Station index |
| | Padding such that the size becomes a multiple of 4 bytes. |
5.10 - 5.18:
| Offset | Size | Description |
|---|
| 0x0 | 0x3E | StationLocation. If it takes up less than 0x3E bytes the remaining bytes are filled with 0’s. |
| 0x3E | 1 | Station index |
| 0x3F | 1 | Padding |