Add modem comm timeout error code

master
Mark Qvist 5 months ago
parent c55d907045
commit 22372855b3
  1. 55
      RNode_Firmware.ino

@ -163,20 +163,26 @@ void setup() {
// probe boot parameters. // probe boot parameters.
if (LoRa->preInit()) { if (LoRa->preInit()) {
modem_installed = true; modem_installed = true;
uint32_t lfr = LoRa->getFrequency();
if (lfr == 0) { #if HAS_INPUT
// Normal boot // Skip quick-reset console activation
} else if (lfr == M_FRQ_R) { #else
// Quick reboot uint32_t lfr = LoRa->getFrequency();
#if HAS_CONSOLE if (lfr == 0) {
if (rtc_get_reset_reason(0) == POWERON_RESET) { // Normal boot
console_active = true; } else if (lfr == M_FRQ_R) {
} // Quick reboot
#endif #if HAS_CONSOLE
} else { if (rtc_get_reset_reason(0) == POWERON_RESET) {
// Unknown boot console_active = true;
} }
LoRa->setFrequency(M_FRQ_S); #endif
} else {
// Unknown boot
}
LoRa->setFrequency(M_FRQ_S);
#endif
} else { } else {
modem_installed = false; modem_installed = false;
} }
@ -573,7 +579,14 @@ void transmit(uint16_t size) {
} }
} }
LoRa->endPacket(); add_airtime(written); if (!LoRa->endPacket()) {
kiss_indicate_error(ERROR_MODEM_TIMEOUT);
kiss_indicate_error(ERROR_TXFAILED);
led_indicate_error(5);
hard_reset();
}
add_airtime(written);
} else { } else {
// In promiscuous mode, we only send out // In promiscuous mode, we only send out
// plain raw LoRa packets with a maximum // plain raw LoRa packets with a maximum
@ -988,7 +1001,13 @@ void serialCallback(uint8_t sbyte) {
bt_start(); bt_start();
bt_conf_save(true); bt_conf_save(true);
} else if (sbyte == 0x02) { } else if (sbyte == 0x02) {
bt_enable_pairing(); if (bt_state == BT_STATE_OFF) {
bt_start();
bt_conf_save(true);
}
if (bt_state != BT_STATE_CONNECTED) {
bt_enable_pairing();
}
} }
#endif #endif
} else if (command == CMD_DISP_INT) { } else if (command == CMD_DISP_INT) {
@ -1282,8 +1301,8 @@ void validate_status() {
#define _S 10.0 #define _S 10.0
float csma_slope(float u) { return (pow(_e,_S*u-_S/2.0))/(pow(_e,_S*u-_S/2.0)+1.0); } float csma_slope(float u) { return (pow(_e,_S*u-_S/2.0))/(pow(_e,_S*u-_S/2.0)+1.0); }
void update_csma_p() { void update_csma_p() {
csma_p = (uint8_t)((1.0-(csma_p_min+(csma_p_max-csma_p_min)*csma_slope(airtime)))*255.0); csma_p = (uint8_t)((1.0-(csma_p_min+(csma_p_max-csma_p_min)*csma_slope(airtime)))*255.0);
} }
#endif #endif
void loop() { void loop() {

Loading…
Cancel
Save