Compressed Text
In order to prevent channel congestion, it is crucial to limit the character set of messages. This allows for more frame compression. In resemblance to Morse code, the character set would contain only 26 Latin capital letters, the 10 digits, space and a few punctuation marks and symbols. Limiting the set to 42 characters makes it fit 6 times in the 256 character set of LoRa.
character subset |
# of characters |
---|---|
Latin capital letters |
26 |
digits |
10 |
space |
1 |
punctuation |
2 |
symbols |
3 |
TOTAL |
42 |
Base42
Base42 consist out of the following 42 ordered digits, starting with a space character:
digits = ' 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-./?@'
Encoding tttt
Perform input sanitisation.
Perform character replacement and filtering on the given string; only allow for characters of the 42 character set.
Treat the resulting text string as a Base42 encoding. Decode it first to an integer.
Then, encode this integer as a Base256
tttt
bytestring.
Decoding tttt
First, decode the given Base256
tttt
bytestring to an integer.Then, encode this integer as a Base42 string, corresponding to the text.
Caution
REFRAIN from adding any APRS comments! Adding more bytes to a LoRa frame only reduces the chances on successful reception. Rather, consider sending an occasional status report.