1
0
Files
BasaltMeter/Document/PROTOCOL.md
2026-01-06 21:24:47 +08:00

60 lines
2.1 KiB
Markdown

# Protocol
This document introduce the protocol used between Basalt Presenter and Basalt Trainer.
If there is no specific description, the endian of data is **native endian**, and the alignment also is native.
Because all data are transmitted in local machine, so we use native layout.
## Command Protocol
Before introducing command protocol, it would be better to the priniciple,
that Presenter is the slave application, and Trainer is the master application.
Command protocol is tramsmitted by system named pipe.
The name of pipe is `\\.\pipe\ed0e3f1f-d214-4880-9562-640bce15e72e` on Windows
or `/tmp/ed0e3f1f-d214-4880-9562-640bce15e72e` on POSIX.
|Code|Direction|Comment|
|:---|:---|:---|
|`0x61`|Presenter<--Trainer|Handshake code (Are Presenter ready?)|
|`0x62`|Presenter-->Trainer|Handshake code (Presenter is ready).|
|`0x01`|Presenter-->Trainer|Data was ready. Please Trainer receive it.|
|`0x02`|Presenter<--Trainer|Data has been received. Please go into next loop.|
|`0x71`|Presenter-->Trainer|Actively Stop (Presenter request stop).|
|`0x71`|Presenter<--Trainer|Stop (Trainer agree the stop request, or trainer actively stop).|
### Handshake
At the beginning of execution,
Trainer send handshake code to Presenter first and then Presenter send another handshake code to Trainer back.
After this, both 2 applications start running.
When Trainer send handshake code,
Trainer should attach some values following it to indicate some essential properties of data
which instruct Representer how to generate data.
There is a table introduce these properties:
|Data Type|Comment|
|:---|:---|
|u8|The pixel kind of image|
|u32|The width of image|
|u32|The height of image|
For the all possible values of "pixel kind" in above table, there is also a table:
|Value|Comment|
|:---|:---|
|`0x01`|Grayscale represented by one float32|
|`0x02`|Grayscale represented by one u8|
|`0x03`|RGB represented by three float32|
|`0x04`|RGB represented by three u8|
## Data Protocol
### Pipe
For this kind deliver, it is tramsmitted by system named pipe.
The name of pipe is `\\.\pipe\ebe2a39d-75de-4cf4-933f-c50284149d63` on Windows
or `/tmp/ebe2a39d-75de-4cf4-933f-c50284149d63` on POSIX.