User Tools

Site Tools


nyan:message_formats

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
nyan:message_formats [2023/11/15 11:38] – created rivernyan:message_formats [2023/11/26 11:15] (current) river
Line 2: Line 2:
  
 Some systems for serialising data that may be useful for sending messages over LoRa. Some systems for serialising data that may be useful for sending messages over LoRa.
 +  * Custom format. Most efficient on space but least flexible and most work to reimplement.
 +  * Protobufs - used by Meshtastic.
 +  * BSON - Binary JSON. "BSON can be com­pared to bin­ary inter­change for­mats, like Proto­col Buf­fers. BSON is more "schema-less" than Proto­col Buf­fers, which can give it an ad­vant­age in flex­ib­il­ity but also a slight dis­ad­vant­age in space ef­fi­ciency (BSON has over­head for field names with­in the seri­al­ized data)."
 +  * FlatBuffers - https://flatbuffers.dev/
 +  * https://en.wikipedia.org/wiki/Cap%27n_Proto
 +  * https://msgpack.org/index.html - used by LXMF / Reticulum
 +  * Direct use of NMEA2000 PGNs?
 +  * NMEA0183 strings?
 +  * BSON SignalK? Probably way too verbose I guess.
  
-Protobufs - used by Meshtastic.+===== Worklog / Deliberations =====
  
-BSON - Binary JSON. +==== 26 Nov 2023River ====
- +
-"BSON can be com­pared to bin­ary inter­change for­matslike Proto­col Buf­fers. BSON is more "schema-less" than Proto­col Buf­fers, which can give it an ad­vant­age in flex­ib­il­ity but also a slight dis­ad­vant­age in space ef­fi­ciency (BSON has over­head for field names with­in the seri­al­ized data)." +
- +
-FlatBuffers - https://flatbuffers.dev/ +
- +
-https://en.wikipedia.org/wiki/Cap%27n_Proto +
- +
-https://msgpack.org/index.html - used by LXMF / Reticulum+
  
 +I was tempted to go for a custom protocol because of very limited space, but after talking to someone about it last night I think I have been convinced protobufs or similar is the way to go. He said he worked with protobufs, as used by meshtastic, and with Reticulum, which uses a semi-custom protocol, and found meshtastic more pleasant to work with. Also, he is reïmplementing Reticulum in Rust, and such things are much easier where a protobuf library is already available. Also, it maybe possible to define the messages with protobufs, and still use that definition to serialise to a custom protocol.
  
 +Protobufs could also maintain compatibility with Meshtastic which could be useful if meshtastic becomes popular enough that nodes maybe encountered that can relay messages for us.
nyan/message_formats.1700048333.txt.gz · Last modified: 2023/11/15 11:38 by river

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki