Updated SNR indication method

This commit is contained in:
Mark Qvist 2020-05-21 12:41:39 +02:00
parent b30564c5fc
commit 19c4107c4e
5 changed files with 18 additions and 11 deletions

View File

@ -4,7 +4,7 @@
#define CONFIG_H #define CONFIG_H
#define MAJ_VERS 0x01 #define MAJ_VERS 0x01
#define MIN_VERS 0x0C #define MIN_VERS 0x0D
#define MCU_328P 0x90 #define MCU_328P 0x90
#define MCU_1284P 0x91 #define MCU_1284P 0x91
@ -88,7 +88,7 @@
int last_rssi = -292; int last_rssi = -292;
uint8_t last_rssi_raw = 0x00; uint8_t last_rssi_raw = 0x00;
int8_t last_snr = 0; uint8_t last_snr_raw = 0x00;
size_t read_len = 0; size_t read_len = 0;
uint8_t seq = 0xFF; uint8_t seq = 0xFF;
uint8_t pbuf[MTU]; uint8_t pbuf[MTU];

View File

@ -235,8 +235,11 @@ int LoRaClass::packetRssi() {
return pkt_rssi; return pkt_rssi;
} }
float LoRaClass::packetSnr() uint8_t LoRaClass::packetSnrRaw() {
{ return readRegister(REG_PKT_SNR_VALUE);
}
float LoRaClass::packetSnr() {
return ((int8_t)readRegister(REG_PKT_SNR_VALUE)) * 0.25; return ((int8_t)readRegister(REG_PKT_SNR_VALUE)) * 0.25;
} }

6
LoRa.h
View File

@ -1,5 +1,8 @@
// Copyright (c) Sandeep Mistry. All rights reserved. // Copyright (c) Sandeep Mistry. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information. // Licensed under the MIT license.
// Modifications and additions copyright 2018 by Mark Qvist
// Obviously still under the MIT license.
#ifndef LORA_H #ifndef LORA_H
#define LORA_H #define LORA_H
@ -29,6 +32,7 @@ public:
int parsePacket(int size = 0); int parsePacket(int size = 0);
int packetRssi(); int packetRssi();
uint8_t packetRssiRaw(); uint8_t packetRssiRaw();
uint8_t packetSnrRaw();
float packetSnr(); float packetSnr();
long packetFrequencyError(); long packetFrequencyError();

View File

@ -104,14 +104,14 @@ void receiveCallback(int packet_size) {
read_len = 0; read_len = 0;
seq = sequence; seq = sequence;
last_rssi = LoRa.packetRssi(); last_rssi = LoRa.packetRssi();
last_snr = LoRa.packetSnr(); last_snr_raw = LoRa.packetSnrRaw();
getPacketData(packet_size); getPacketData(packet_size);
} else if (isSplitPacket(header) && seq == sequence) { } else if (isSplitPacket(header) && seq == sequence) {
// This is the second part of a split // This is the second part of a split
// packet, so we add it to the buffer // packet, so we add it to the buffer
// and set the ready flag. // and set the ready flag.
last_rssi = (last_rssi+LoRa.packetRssi())/2; last_rssi = (last_rssi+LoRa.packetRssi())/2;
last_snr = (last_snr+LoRa.packetSnr())/2; last_snr_raw = (last_snr_raw+LoRa.packetSnrRaw())/2;
getPacketData(packet_size); getPacketData(packet_size);
seq = SEQ_UNSET; seq = SEQ_UNSET;
ready = true; ready = true;
@ -123,7 +123,7 @@ void receiveCallback(int packet_size) {
read_len = 0; read_len = 0;
seq = sequence; seq = sequence;
last_rssi = LoRa.packetRssi(); last_rssi = LoRa.packetRssi();
last_snr = LoRa.packetSnr(); last_snr_raw = LoRa.packetSnrRaw();
getPacketData(packet_size); getPacketData(packet_size);
} else if (!isSplitPacket(header)) { } else if (!isSplitPacket(header)) {
// This is not a split packet, so we // This is not a split packet, so we
@ -138,7 +138,7 @@ void receiveCallback(int packet_size) {
} }
last_rssi = LoRa.packetRssi(); last_rssi = LoRa.packetRssi();
last_snr = LoRa.packetSnr(); last_snr_raw = LoRa.packetSnrRaw();
getPacketData(packet_size); getPacketData(packet_size);
ready = true; ready = true;
} }
@ -166,6 +166,7 @@ void receiveCallback(int packet_size) {
// output directly over to the host // output directly over to the host
read_len = 0; read_len = 0;
last_rssi = LoRa.packetRssi(); last_rssi = LoRa.packetRssi();
last_snr_raw = LoRa.packetSnrRaw();
getPacketData(packet_size); getPacketData(packet_size);
// We first signal the RSSI of the // We first signal the RSSI of the

View File

@ -138,10 +138,9 @@ void kiss_indicate_stat_rssi() {
} }
void kiss_indicate_stat_snr() { void kiss_indicate_stat_snr() {
uint8_t packet_snr_val = (uint8_t)(last_snr+snr_offset);
Serial.write(FEND); Serial.write(FEND);
Serial.write(CMD_STAT_SNR); Serial.write(CMD_STAT_SNR);
escapedSerialWrite(packet_snr_val); escapedSerialWrite(last_snr_raw);
Serial.write(FEND); Serial.write(FEND);
} }