return pkt_rssi_value;
}
-int LoRaClass::packetRssi() {
+int ISR_VECT LoRaClass::packetRssi() {
int pkt_rssi = (int)readRegister(REG_PKT_RSSI_VALUE) - RSSI_OFFSET;
int pkt_snr = packetSnr();
return pkt_rssi;
}
-uint8_t LoRaClass::packetSnrRaw() {
+uint8_t ISR_VECT LoRaClass::packetSnrRaw() {
return readRegister(REG_PKT_SNR_VALUE);
}
-float LoRaClass::packetSnr() {
+float ISR_VECT LoRaClass::packetSnr() {
return ((int8_t)readRegister(REG_PKT_SNR_VALUE)) * 0.25;
}
return size;
}
-int LoRaClass::available()
+int ISR_VECT LoRaClass::available()
{
return (readRegister(REG_RX_NB_BYTES) - _packetIndex);
}
-int LoRaClass::read()
+int ISR_VECT LoRaClass::read()
{
if (!available()) {
return -1;
}
}
-uint8_t LoRaClass::readRegister(uint8_t address)
+uint8_t ISR_VECT LoRaClass::readRegister(uint8_t address)
{
return singleTransfer(address & 0x7f, 0x00);
}
singleTransfer(address | 0x80, value);
}
-uint8_t LoRaClass::singleTransfer(uint8_t address, uint8_t value)
+uint8_t ISR_VECT LoRaClass::singleTransfer(uint8_t address, uint8_t value)
{
uint8_t response;
#endif
}
} else {
+ // In promiscuous mode, raw packets are
+ // output directly to the host
+ read_len = 0;
+
#if MCU_VARIANT != MCU_ESP32
- // In promiscuous mode, raw packets are
- // output directly to the host
- read_len = 0;
last_rssi = LoRa.packetRssi();
last_snr_raw = LoRa.packetSnrRaw();
getPacketData(packet_size);
kiss_write_packet();
#else
- read_len = 0;
getPacketData(packet_size);
packet_ready = true;
#endif
#if MCU_VARIANT == MCU_ESP32
if (packet_ready) {
+ portENTER_CRITICAL(&update_lock);
+ last_rssi = LoRa.packetRssi();
+ last_snr_raw = LoRa.packetSnrRaw();
+ portEXIT_CRITICAL(&update_lock);
+ kiss_indicate_stat_rssi();
+ kiss_indicate_stat_snr();
kiss_write_packet();
}
#endif