|
|
@ -163,6 +163,10 @@ void setup() { |
|
|
|
// probe boot parameters.
|
|
|
|
// probe boot parameters.
|
|
|
|
if (LoRa->preInit()) { |
|
|
|
if (LoRa->preInit()) { |
|
|
|
modem_installed = true; |
|
|
|
modem_installed = true; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if HAS_INPUT |
|
|
|
|
|
|
|
// Skip quick-reset console activation
|
|
|
|
|
|
|
|
#else |
|
|
|
uint32_t lfr = LoRa->getFrequency(); |
|
|
|
uint32_t lfr = LoRa->getFrequency(); |
|
|
|
if (lfr == 0) { |
|
|
|
if (lfr == 0) { |
|
|
|
// Normal boot
|
|
|
|
// Normal boot
|
|
|
@ -177,6 +181,8 @@ void setup() { |
|
|
|
// Unknown boot
|
|
|
|
// Unknown boot
|
|
|
|
} |
|
|
|
} |
|
|
|
LoRa->setFrequency(M_FRQ_S); |
|
|
|
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,8 +1001,14 @@ 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) { |
|
|
|
|
|
|
|
if (bt_state == BT_STATE_OFF) { |
|
|
|
|
|
|
|
bt_start(); |
|
|
|
|
|
|
|
bt_conf_save(true); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (bt_state != BT_STATE_CONNECTED) { |
|
|
|
bt_enable_pairing(); |
|
|
|
bt_enable_pairing(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
} else if (command == CMD_DISP_INT) { |
|
|
|
} else if (command == CMD_DISP_INT) { |
|
|
|
#if HAS_DISPLAY |
|
|
|
#if HAS_DISPLAY |
|
|
@ -1283,7 +1302,7 @@ void validate_status() { |
|
|
|
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() { |
|
|
|