From f5b4af15daf2d1f4d858d8f3e352065ff84ad337 Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Fri, 14 Jul 2023 21:47:06 -0500 Subject: [PATCH] Update: FSS-000F (Simple Packet) Specification. I have decided that the endianness bit must be first. The String/Binary bit is now the second bit. The remaining 6 Control bits are left undefined. Do some cleanup up in the text. Improve the language. Make sure "italic" is used instead of "emphasis". --- specifications/fss-000f.txt | 61 +++++++++++++++++++++++++++++++-------------- 1 file changed, 42 insertions(+), 19 deletions(-) diff --git a/specifications/fss-000f.txt b/specifications/fss-000f.txt index 001bab4..7fc906b 100644 --- a/specifications/fss-000f.txt +++ b/specifications/fss-000f.txt @@ -3,52 +3,75 @@ # license: open-standard-license-1.0 # # This file (assumed to be named fss-000f.txt) can be more easily read using the following iki_read commands: -# iki_read fss-000f.txt +Q -w -WWW character "'" "'" code '"' '"' emphasis '"' '"' +# iki_read fss-000f.txt +Q -w -WWWW character "'" "'" code '"' '"' italic '"' '"' bold '"' '"' # # To read the "Featureless Settings Specification: 000f - Simple Packet" section of this file, use this command sequence: -# fss_basic_list_read fss-000f.txt +Q -cn "Featureless Settings Specification: 000f - Simple Packet" | iki_read +Q -w -WWW character "'" "'" code '"' '"' emphasis '"' '"' +# fss_basic_list_read fss-000f.txt +Q -cn "Featureless Settings Specification: 000f - Simple Packet" | iki_read +Q -w -WWWW character "'" "'" code '"' '"' italic '"' '"' bold '"' '"' # Featureless Settings Specification: 000f - Simple Packet: This is a network packet format that contains code:"FSS-000e (Payload)" within it. - The Simple Packet structure is described in blocks, of which are structured in bytes. + The bold:"Simple Packet" structure is described in blocks, of which are structured in bytes. There are only three blocks in this format\: 1) Control Block. 2) Size Block. 3) Payload Block. - The Control Block is the first block in the packet and is considered endianless. - There exists only a single byte within the Control Block. - Regardless of the endianness of the packet, the leftmost bit is always the italic:"string" or italic:"binary" bit. - The second bit following that bit represents the endianness bit. + The bold:"Control Block" is the first block in the packet and is considered endianless. + There exists only a single byte within the bold:"Control Block" (8-bits). + Regardless of the endianness of the packet, leftmost bit is always the endianness bit. + The second bit following that endianness bit represents the italic:"string" or italic:"binary" bit. - The italic:"string" or italic:"binary" bit, a value of 0 designates that the packet is in string format and a value of 1 designates that the packet is in binary format. - While the packet might be considered to be in string format, it is technically always in binary format due to the Control Block and Size Block. - This means that the bit designating the packet as a italic:"string" packet or a italic:"binary" packet is referring to whether or not the Payload Block is in italic:"string" format or is in italic:"binary" format. + Control Block Structure\: + code:" + [ Endianness Bit ] [ String / Binary Bit ] [ Remaining 6 bits (unused) ] + [ 0b0 ] [ 0b0 ] [ 0b000000 ] + " The endianness bit designates whether or not the packet is in big endian or little endian format. A bit value of 0 designates that this packet is in little endian and a value of 1 designates that this packet is in big endian format. - All binary data within this packet, following the Control Block, must respect this endianness bit (including the Size Block). + All italic:"binary" data within this packet, following the Control Block, must respect this endianness bit (including the bold:"Size Block"). + + The italic:"string" or italic:"binary" bit, a value of 0 designates that the packet is in string format and a value of 1 designates that the packet is in italic:"binary" format. + While the packet might be considered to be in string format, it is technically always in italic:"binary" format due to the bold:"Control Block" and bold:"Size Block". + This means that the italic:"binary" bit designating the packet as either a italic:"string" packet or a italic:"binary" packet is referring to whether or not the bold:"Payload Block" is in italic:"string" or italic:"binary" format. + The bold:"Payload Block" itself can contain italic:"binary" data even when in italic:"string" format as per code:"FSS-000e (Payload)". The remaining bits are not defined by this standard and are expected to be 0. Non-formal or local uses may utilize these remaining 6 bits as desired. - However, there may be additional standards that expand upon this and utilize these remaining Control bits. - Anything that utilizes these unused Control bits may add or remove additional Blocks after the Control Block as they see fit. + However, there may be additional standards that expand upon this and utilize these remaining bold:"Control" bits. + Anything that utilizes these unused bold:"Control" bits may add or remove additional bold:"Blocks" after the bold:"Control Block" as they see fit. + One possible use of the remaining bits is to designate a different variation of this bold:"Simple Packet" standard. + + Size Block Structure\: + code:" + [ Endianness Bit ] [ String / Binary Bit ] [ Remaining 6 bits (unused) ] + [ 0b0 ] [ 0b0 ] [ 0b000000 ] + " - The Size Block is an unsigned 32-bit integer representing the size of the entire packet, including the Control Block and Size Block. + The bold:"Size Block" is an unsigned 32-bit integer representing the size of the entire packet, including the bold:"Control Block" and bold:"Size Block". This size must exactly match the packet to be a valid packet. The size represents number of bytes in the file. - The Control Block is 1 byte long and the Size Block is 4 bytes long and so the maximum available size is (2^32)-6. + The bold:"Control Block" is 1 byte long and the bold:"Size Block" is 4 bytes long, therefore the maximum available size of the entire bold:"Simple Packet" structure is code:"(2^32)-6". + + Payload Block Structure\: + code:" + [ Payload Block ] + [ size: (2^32)-6 ] + " - The Payload Block is not defined by this standard of that that it exists and should be in code:"FSS-000e (Payload)" format. - The code:"FSS-000e (Payload)" may be represented in either string format or binary format. + The bold:"Payload Block" is not defined by this standard of that that it exists and should be in code:"FSS-000e (Payload)" format. + The code:"FSS-000e (Payload)" may be represented in either italic:"string" format or italic:"binary" format. The code:"FSS-000e (Payload)" may contain multiple italic:"header"(s) but may only contain a single italic:"payload". - With this in mind, it is recommended that only a single italic:"header" be supported in the Payload Block. + With this in mind, it is recommended that only a single italic:"header" be supported in the bold:"Payload Block". + The italic:"payload" bold:"Content" may be in either a italic:"binary" or italic:"string" format regardless of the italic:"binary" bit in the bold:"Simple Packet" bold:"Header Block". - See the file:"fss-000e.txt" specification file for details on the syntax rules for the Payload Block. + See the file:"fss-000e.txt" specification file for details on the syntax rules for the bold:"Payload Block". Example Packet Structure\: + code:" [ Control Block ] [ Size Block ] [ Payload Block ] [ 0b10000000 ] [ 0b00000000 0b00000000 0b00000100 0b11010010 ] [ size: 1229 (1234 - 5) ] + " -- 1.8.3.1