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

2.1 KiB

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.