mirror of
https://github.com/meshcore-dev/MeshCore.git
synced 2026-05-11 06:26:55 +00:00
c16bcd2fe3
This change counts when readData returns an err code other than RADIOLIB_ERR_NONE. In most cases this is going to be a CRC error. This counter is exposed in the `stats-packets` command, and in the repeater stats payload (4 additional bytes to the payload, which is now 56 bytes with this change. My incompetent robot claims the total payload size is 96 bytes (unverified but probably close).
56 lines
1.8 KiB
C++
56 lines
1.8 KiB
C++
#pragma once
|
|
|
|
#include "Mesh.h"
|
|
|
|
class StatsFormatHelper {
|
|
public:
|
|
static void formatCoreStats(char* reply,
|
|
mesh::MainBoard& board,
|
|
mesh::MillisecondClock& ms,
|
|
uint16_t err_flags,
|
|
mesh::PacketManager* mgr) {
|
|
sprintf(reply,
|
|
"{\"battery_mv\":%u,\"uptime_secs\":%u,\"errors\":%u,\"queue_len\":%u}",
|
|
board.getBattMilliVolts(),
|
|
ms.getMillis() / 1000,
|
|
err_flags,
|
|
mgr->getOutboundCount(0xFFFFFFFF)
|
|
);
|
|
}
|
|
|
|
template<typename RadioDriverType>
|
|
static void formatRadioStats(char* reply,
|
|
mesh::Radio* radio,
|
|
RadioDriverType& driver,
|
|
uint32_t total_air_time_ms,
|
|
uint32_t total_rx_air_time_ms) {
|
|
sprintf(reply,
|
|
"{\"noise_floor\":%d,\"last_rssi\":%d,\"last_snr\":%.2f,\"tx_air_secs\":%u,\"rx_air_secs\":%u}",
|
|
(int16_t)radio->getNoiseFloor(),
|
|
(int16_t)driver.getLastRSSI(),
|
|
driver.getLastSNR(),
|
|
total_air_time_ms / 1000,
|
|
total_rx_air_time_ms / 1000
|
|
);
|
|
}
|
|
|
|
template<typename RadioDriverType>
|
|
static void formatPacketStats(char* reply,
|
|
RadioDriverType& driver,
|
|
uint32_t n_sent_flood,
|
|
uint32_t n_sent_direct,
|
|
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_errors\":%u}",
|
|
driver.getPacketsRecv(),
|
|
driver.getPacketsSent(),
|
|
n_sent_flood,
|
|
n_sent_direct,
|
|
n_recv_flood,
|
|
n_recv_direct,
|
|
driver.getPacketsRecvErrors()
|
|
);
|
|
}
|
|
};
|