Browse Source
Merge pull request #1477 from Cisien/dev
Expose a counter to track RadioLib receive errors
pull/1488/head
ripplebiz
4 months ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with
9 additions and
5 deletions
-
examples/simple_repeater/MyMesh.cpp
-
examples/simple_repeater/MyMesh.h
-
src/helpers/StatsFormatHelper.h
-
src/helpers/radiolib/RadioLibWrappers.cpp
-
src/helpers/radiolib/RadioLibWrappers.h
|
|
|
@ -226,7 +226,7 @@ int MyMesh::handleRequest(ClientInfo *sender, uint32_t sender_timestamp, uint8_t |
|
|
|
stats.n_direct_dups = ((SimpleMeshTables *)getTables())->getNumDirectDups(); |
|
|
|
stats.n_flood_dups = ((SimpleMeshTables *)getTables())->getNumFloodDups(); |
|
|
|
stats.total_rx_air_time_secs = getReceiveAirTime() / 1000; |
|
|
|
|
|
|
|
stats.n_recv_errors = radio_driver.getPacketsRecvErrors(); |
|
|
|
memcpy(&reply_data[4], &stats, sizeof(stats)); |
|
|
|
|
|
|
|
return 4 + sizeof(stats); // reply_len
|
|
|
|
|
|
|
|
@ -54,6 +54,7 @@ struct RepeaterStats { |
|
|
|
int16_t last_snr; // x 4
|
|
|
|
uint16_t n_direct_dups, n_flood_dups; |
|
|
|
uint32_t total_rx_air_time_secs; |
|
|
|
uint32_t n_recv_errors; |
|
|
|
}; |
|
|
|
|
|
|
|
#ifndef MAX_CLIENTS |
|
|
|
|
|
|
|
@ -42,13 +42,14 @@ public: |
|
|
|
uint32_t n_recv_flood, |
|
|
|
uint32_t n_recv_direct) { |
|
|
|
sprintf(reply, |
|
|
|
"{\"recv\":%u,\"sent\":%u,\"flood_tx\":%u,\"direct_tx\":%u,\"flood_rx\":%u,\"direct_rx\":%u}", |
|
|
|
"{\"recv\":%u,\"sent\":%u,\"flood_tx\":%u,\"direct_tx\":%u,\"flood_rx\":%u,\"direct_rx\":%u,\"recv_errors\":%u}", |
|
|
|
driver.getPacketsRecv(), |
|
|
|
driver.getPacketsSent(), |
|
|
|
n_sent_flood, |
|
|
|
n_sent_direct, |
|
|
|
n_recv_flood, |
|
|
|
n_recv_direct |
|
|
|
n_recv_direct, |
|
|
|
driver.getPacketsRecvErrors() |
|
|
|
); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
@ -105,6 +105,7 @@ int RadioLibWrapper::recvRaw(uint8_t* bytes, int sz) { |
|
|
|
if (err != RADIOLIB_ERR_NONE) { |
|
|
|
MESH_DEBUG_PRINTLN("RadioLibWrapper: error: readData(%d)", err); |
|
|
|
len = 0; |
|
|
|
n_recv_errors++; |
|
|
|
} else { |
|
|
|
// Serial.print(" readData() -> "); Serial.println(len);
|
|
|
|
n_recv++; |
|
|
|
|
|
|
|
@ -7,7 +7,7 @@ class RadioLibWrapper : public mesh::Radio { |
|
|
|
protected: |
|
|
|
PhysicalLayer* _radio; |
|
|
|
mesh::MainBoard* _board; |
|
|
|
uint32_t n_recv, n_sent; |
|
|
|
uint32_t n_recv, n_sent, n_recv_errors; |
|
|
|
int16_t _noise_floor, _threshold; |
|
|
|
uint16_t _num_floor_samples; |
|
|
|
int32_t _floor_sample_sum; |
|
|
|
@ -45,8 +45,9 @@ public: |
|
|
|
void loop() override; |
|
|
|
|
|
|
|
uint32_t getPacketsRecv() const { return n_recv; } |
|
|
|
uint32_t getPacketsRecvErrors() const { return n_recv_errors; } |
|
|
|
uint32_t getPacketsSent() const { return n_sent; } |
|
|
|
void resetStats() { n_recv = n_sent = 0; } |
|
|
|
void resetStats() { n_recv = n_sent = n_recv_errors = 0; } |
|
|
|
|
|
|
|
virtual float getLastRSSI() const override; |
|
|
|
virtual float getLastSNR() const override; |
|
|
|
|