From 58bb9743942078e8bd50294aedcde31d84031908 Mon Sep 17 00:00:00 2001 From: yyc12345 Date: Sat, 10 Jan 2026 16:17:13 +0800 Subject: [PATCH] update protocol --- Document/PROTOCOL.md | 43 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/Document/PROTOCOL.md b/Document/PROTOCOL.md index 2c8cfac..90c2ce9 100644 --- a/Document/PROTOCOL.md +++ b/Document/PROTOCOL.md @@ -2,8 +2,26 @@ 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. +## Data Format + +If there is no specific description, the endian of data is **native endian**. +Because all data are transmitted in local machine, so we use native endian. + +During the transmission, you may faced with some weired types which is obviously don't have fixed size or not common. +I will introduce them in there about how to transmit them. + +### String + +When transmitting string, it will transmit an `usize` at first to indicate the length of string in **character**, NOT in **byte**. +Then we transmit the string itself without NULL terminator. +All transmitted string is UTF-8. + +### BSString + +Transmitting BSString is similar with String. +The only difference between String and BSString is that the char type of BSString is platform-dependent. +In Windows, it is `wchar_t` (aka. `u16`), and in POSIX, it is `char` (aka. `u8`). +So the encoding of BSString is UTF-16 on Windows and UTF-8 on POSIX. ## Command Protocol @@ -35,13 +53,22 @@ Trainer should attach some values following it to indicate some essential proper 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| +|Data Type|Mnemonic|Comment| +|:---|:---|:---| +|u8|HEADLESS|True for headless mode. `0` for false and any other value for true.| +|u8|PIXEL_KIND|The pixel kind of image| +|u32|WIDTH|The width of image| +|u32|HEIGHT|The height of image| +|BSString|ENGINE_NAME|The name of used engine.| +|u32|ENGINE_DEVICE|The index of device used by engine.| +|BSString|DELIVER_NAME|The name of used deliver.| +|u32|DELIVER_DEVICE|The index of device used by deliver.| +|BSString|OBJECT_LOADER_NAME|The name of used object loader.| +|BSString|OBJECT_LOADER_FILE|The path to file loaded by object loader.| +|BSString|ANIME_LOADER_NAME|The name of used anime loader.| +|BSString|ANIME_LOADER_FILE|The path to file loaded by anime loader.| -For the all possible values of "pixel kind" in above table, there is also a table: +For the all possible values of "PIXEL_KIND" in above table, there is also a table: |Value|Comment| |:---|:---|