diff --git a/README.md b/README.md index 970ec77..8a3c0c1 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ * [Alternative Linux Setup](#alternative-linux-setup) * [CSMA Usage](#csma-usage) * [Digital voice with Codec2](#digital-voice-with-codec2) +* [KISS command extensions](#kiss-command-extensions) * [Test Results](#test-results) # Introduction @@ -128,6 +129,25 @@ It is possible to use modem **in client mode** with other generic Linux AX25/APR - When using modem for voice communication `Loraprs::Service::CfgCsmaPersistence` must be set to maximum 255 value to disable CSMA, otherwise real time voice communication won't be guaranteed. Android codec2_talkie application automatically sets this parameter to 255 by using KISS P command code. - Also, it might be useful to disable CRC check for LoRa packets with `cfg.LoraEnableCrc` parameter equal to `false`. Some broken bits in one speech frame will cause audio being scrambled, it might be better then longer gap when complete packet is dropped. +# KISS command extensions +When `EnableKissExtensions` configuration parameter is set to `true` modem will send signal level reports through KISS command `0x30` and client application will be able to control modem by using KISS command `0x10`, payload are sent as big endian and defined as +``` + struct LoraSignalLevelEvent { + int16_t rssi; + int16_t snr; + } __attribute__((packed)); + + struct LoraControlCommand { + uint32_t freq; + uint32_t bw; + uint16_t sf; + uint16_t cr; + uint16_t pwr; + uint16_t sync; + uint8_t crc; + } __attribute__((packed)); +``` + # Test Results ![alt text](images/setup.png) - Antennas