mirror of
https://github.com/markqvist/RNode_Firmware.git
synced 2025-06-08 06:52:55 -04:00
Cleanup
This commit is contained in:
parent
5ec063c939
commit
7ce2ed6155
2 changed files with 22 additions and 55 deletions
8
Config.h
8
Config.h
|
@ -96,13 +96,7 @@
|
||||||
long cw_wait_passed = 0;
|
long cw_wait_passed = 0;
|
||||||
int csma_cw = -1;
|
int csma_cw = -1;
|
||||||
|
|
||||||
////////////////////////////////////////
|
// LoRa settings
|
||||||
float csma_p_min = 0.15;
|
|
||||||
float csma_p_max = 0.333;
|
|
||||||
float csma_b_speed = 0.15;
|
|
||||||
uint8_t csma_p = 85;
|
|
||||||
////////////////////////////////////////
|
|
||||||
|
|
||||||
int lora_sf = 0;
|
int lora_sf = 0;
|
||||||
int lora_cr = 5;
|
int lora_cr = 5;
|
||||||
int lora_txp = 0xFF;
|
int lora_txp = 0xFF;
|
||||||
|
|
|
@ -519,9 +519,7 @@ void update_radio_lock() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool queueFull() {
|
bool queue_full() { return (queue_height >= CONFIG_QUEUE_MAX_LENGTH || queued_bytes >= CONFIG_QUEUE_SIZE); }
|
||||||
return (queue_height >= CONFIG_QUEUE_MAX_LENGTH || queued_bytes >= CONFIG_QUEUE_SIZE);
|
|
||||||
}
|
|
||||||
|
|
||||||
volatile bool queue_flushing = false;
|
volatile bool queue_flushing = false;
|
||||||
void flush_queue(void) {
|
void flush_queue(void) {
|
||||||
|
@ -561,10 +559,13 @@ void flush_queue(void) {
|
||||||
|
|
||||||
queue_height = 0;
|
queue_height = 0;
|
||||||
queued_bytes = 0;
|
queued_bytes = 0;
|
||||||
|
|
||||||
#if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52
|
#if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52
|
||||||
update_airtime();
|
update_airtime();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
queue_flushing = false;
|
queue_flushing = false;
|
||||||
|
|
||||||
#if HAS_DISPLAY
|
#if HAS_DISPLAY
|
||||||
display_tx = true;
|
display_tx = true;
|
||||||
#endif
|
#endif
|
||||||
|
@ -614,24 +615,20 @@ void update_airtime() {
|
||||||
uint16_t cb = current_airtime_bin();
|
uint16_t cb = current_airtime_bin();
|
||||||
uint16_t pb = cb-1; if (cb-1 < 0) { pb = AIRTIME_BINS-1; }
|
uint16_t pb = cb-1; if (cb-1 < 0) { pb = AIRTIME_BINS-1; }
|
||||||
uint16_t nb = cb+1; if (nb == AIRTIME_BINS) { nb = 0; }
|
uint16_t nb = cb+1; if (nb == AIRTIME_BINS) { nb = 0; }
|
||||||
airtime_bins[nb] = 0;
|
airtime_bins[nb] = 0; airtime = (float)(airtime_bins[cb]+airtime_bins[pb])/(2.0*AIRTIME_BINLEN_MS);
|
||||||
airtime = (float)(airtime_bins[cb]+airtime_bins[pb])/(2.0*AIRTIME_BINLEN_MS);
|
|
||||||
|
|
||||||
uint32_t longterm_airtime_sum = 0;
|
uint32_t longterm_airtime_sum = 0;
|
||||||
for (uint16_t bin = 0; bin < AIRTIME_BINS; bin++) {
|
for (uint16_t bin = 0; bin < AIRTIME_BINS; bin++) { longterm_airtime_sum += airtime_bins[bin]; }
|
||||||
longterm_airtime_sum += airtime_bins[bin];
|
|
||||||
}
|
|
||||||
longterm_airtime = (float)longterm_airtime_sum/(float)AIRTIME_LONGTERM_MS;
|
longterm_airtime = (float)longterm_airtime_sum/(float)AIRTIME_LONGTERM_MS;
|
||||||
|
|
||||||
float longterm_channel_util_sum = 0.0;
|
float longterm_channel_util_sum = 0.0;
|
||||||
for (uint16_t bin = 0; bin < AIRTIME_BINS; bin++) {
|
for (uint16_t bin = 0; bin < AIRTIME_BINS; bin++) { longterm_channel_util_sum += longterm_bins[bin]; }
|
||||||
longterm_channel_util_sum += longterm_bins[bin];
|
|
||||||
}
|
|
||||||
longterm_channel_util = (float)longterm_channel_util_sum/(float)AIRTIME_BINS;
|
longterm_channel_util = (float)longterm_channel_util_sum/(float)AIRTIME_BINS;
|
||||||
|
|
||||||
#if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52
|
#if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52
|
||||||
update_csma_parameters();
|
update_csma_parameters();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
kiss_indicate_channel_stats();
|
kiss_indicate_channel_stats();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -641,18 +638,13 @@ void transmit(uint16_t size) {
|
||||||
if (!promisc) {
|
if (!promisc) {
|
||||||
uint16_t written = 0;
|
uint16_t written = 0;
|
||||||
uint8_t header = random(256) & 0xF0;
|
uint8_t header = random(256) & 0xF0;
|
||||||
|
if (size > SINGLE_MTU - HEADER_L) { header = header | FLAG_SPLIT; }
|
||||||
if (size > SINGLE_MTU - HEADER_L) {
|
|
||||||
header = header | FLAG_SPLIT;
|
|
||||||
}
|
|
||||||
|
|
||||||
LoRa->beginPacket();
|
LoRa->beginPacket();
|
||||||
LoRa->write(header); written++;
|
LoRa->write(header); written++;
|
||||||
|
|
||||||
for (uint16_t i=0; i < size; i++) {
|
for (uint16_t i=0; i < size; i++) {
|
||||||
LoRa->write(tbuf[i]);
|
LoRa->write(tbuf[i]); written++;
|
||||||
|
|
||||||
written++;
|
|
||||||
|
|
||||||
if (written == 255 && isSplitPacket(header)) {
|
if (written == 255 && isSplitPacket(header)) {
|
||||||
if (!LoRa->endPacket()) {
|
if (!LoRa->endPacket()) {
|
||||||
|
@ -661,6 +653,7 @@ void transmit(uint16_t size) {
|
||||||
led_indicate_error(5);
|
led_indicate_error(5);
|
||||||
hard_reset();
|
hard_reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
add_airtime(written);
|
add_airtime(written);
|
||||||
LoRa->beginPacket();
|
LoRa->beginPacket();
|
||||||
LoRa->write(header);
|
LoRa->write(header);
|
||||||
|
@ -674,39 +667,19 @@ void transmit(uint16_t size) {
|
||||||
led_indicate_error(5);
|
led_indicate_error(5);
|
||||||
hard_reset();
|
hard_reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
add_airtime(written);
|
add_airtime(written);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// In promiscuous mode, we only send out
|
led_tx_on(); uint16_t written = 0;
|
||||||
// plain raw LoRa packets with a maximum
|
if (size > SINGLE_MTU) { size = SINGLE_MTU; }
|
||||||
// payload of 255 bytes
|
if (!implicit) { LoRa->beginPacket(); }
|
||||||
led_tx_on();
|
else { LoRa->beginPacket(size); }
|
||||||
uint16_t written = 0;
|
for (uint16_t i=0; i < size; i++) { LoRa->write(tbuf[i]); written++; }
|
||||||
|
|
||||||
// Cap packets at 255 bytes
|
|
||||||
if (size > SINGLE_MTU) {
|
|
||||||
size = SINGLE_MTU;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If implicit header mode has been set,
|
|
||||||
// set packet length to payload data length
|
|
||||||
if (!implicit) {
|
|
||||||
LoRa->beginPacket();
|
|
||||||
} else {
|
|
||||||
LoRa->beginPacket(size);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (uint16_t i=0; i < size; i++) {
|
|
||||||
LoRa->write(tbuf[i]);
|
|
||||||
|
|
||||||
written++;
|
|
||||||
}
|
|
||||||
LoRa->endPacket(); add_airtime(written);
|
LoRa->endPacket(); add_airtime(written);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
kiss_indicate_error(ERROR_TXFAILED);
|
} else { kiss_indicate_error(ERROR_TXFAILED); led_indicate_error(5); }
|
||||||
led_indicate_error(5);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void serialCallback(uint8_t sbyte) {
|
void serialCallback(uint8_t sbyte) {
|
||||||
|
@ -950,7 +923,7 @@ void serialCallback(uint8_t sbyte) {
|
||||||
}
|
}
|
||||||
kiss_indicate_promisc();
|
kiss_indicate_promisc();
|
||||||
} else if (command == CMD_READY) {
|
} else if (command == CMD_READY) {
|
||||||
if (!queueFull()) {
|
if (!queue_full()) {
|
||||||
kiss_indicate_ready();
|
kiss_indicate_ready();
|
||||||
} else {
|
} else {
|
||||||
kiss_indicate_not_ready();
|
kiss_indicate_not_ready();
|
||||||
|
@ -1390,7 +1363,7 @@ void validate_status() {
|
||||||
#define _S 12.5
|
#define _S 12.5
|
||||||
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_parameters() {
|
void update_csma_parameters() {
|
||||||
csma_p = (uint8_t)((1.0-(csma_p_min+(csma_p_max-csma_p_min)*csma_slope(airtime+csma_b_speed)))*255.0);
|
// TODO: Implement
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue