#define CONFIG_H
#define MAJ_VERS 0x01
- #define MIN_VERS 0x05
+ #define MIN_VERS 0x06
#define MCU_328P 0x90
#define MCU_1284P 0x91
// MCU independent configuration parameters
const long serial_baudrate = 115200;
- const int rssi_offset = 164;
+ const int rssi_offset = 292;
const int lora_rx_turnaround_ms = 50;
uint8_t model = 0x00;
uint8_t hwrev = 0x00;
- int last_rssi = -164;
+ int last_rssi = -292;
+ uint8_t last_rssi_raw = 0x00;
size_t read_len = 0;
uint8_t seq = 0xFF;
uint8_t pbuf[MTU];
LOG_DEBUG = 6
LOG_EXTREME = 7
+ RSSI_OFFSET = 292
+
def __init__(self, callback, name, port, frequency = None, bandwidth = None, txpower = None, sf = None, cr = None, loglevel = -1, flow_control = True):
self.serial = None
self.loglevel = loglevel
self.r_stat_tx = ord(command_buffer[0]) << 24 | ord(command_buffer[1]) << 16 | ord(command_buffer[2]) << 8 | ord(command_buffer[3])
elif (command == KISS.CMD_STAT_RSSI):
- self.r_stat_rssi = ord(byte)
+ self.r_stat_rssi = ord(byte)-RSSI_OFFSET
elif (command == KISS.CMD_RANDOM):
self.r_random = ord(byte)
elif (command == KISS.CMD_ERROR):
return readRegister(REG_MODEM_STAT);
}
-int LoRaClass::packetRssi()
-{
- return (readRegister(REG_PKT_RSSI_VALUE) - (_frequency < 868E6 ? 164 : 157));
+uint8_t LoRaClass::packetRssiRaw() {
+ uint8_t pkt_rssi_value = readRegister(REG_PKT_RSSI_VALUE);
+ return pkt_rssi_value;
+}
+
+int LoRaClass::packetRssi() {
+ int pkt_rssi = (int)readRegister(REG_PKT_RSSI_VALUE);
+ // TODO: change this to look at the actual model code
+ if (_frequency < 820E6) pkt_rssi -= 7;
+ pkt_rssi -= 157;
+
+ return pkt_rssi;
}
float LoRaClass::packetSnr()
int parsePacket(int size = 0);
int packetRssi();
+ uint8_t packetRssiRaw();
float packetSnr();
long packetFrequencyError();
}
void kiss_indicate_stat_rssi() {
+ uint8_t packet_rssi_val = (uint8_t)(last_rssi+rssi_offset);
Serial.write(FEND);
Serial.write(CMD_STAT_RSSI);
- Serial.write((uint8_t)last_rssi+rssi_offset);
+ Serial.write(packet_rssi_val);
Serial.write(FEND);
}