Print RX stats periodically instead of debug logging
This commit is contained in:
parent
112a8a1215
commit
7995f5bef0
|
@ -38,6 +38,12 @@ static bool m_running = true;
|
|||
|
||||
static double next_tx_switch_time = 0.0;
|
||||
|
||||
static struct {
|
||||
size_t preambles_found;
|
||||
size_t successful_decodes;
|
||||
size_t failed_decodes;
|
||||
} m_stats;
|
||||
|
||||
|
||||
static void block_tx_for(unsigned offset_ms)
|
||||
{
|
||||
|
@ -102,18 +108,21 @@ void cb_rx(rx_evt_t evt, uint8_t *packet_data, size_t packet_len)
|
|||
switch(evt)
|
||||
{
|
||||
case RX_EVT_CHECKSUM_ERROR:
|
||||
fprintf(stderr, "Received a message of %zu bytes, but decoding failed.\n", packet_len);
|
||||
//fprintf(stderr, "Received a message of %zu bytes, but decoding failed.\n", packet_len);
|
||||
//fprintf(stderr, "=== FAILED PAYLOAD ===\n");
|
||||
//hexdump(packet_data, packet_len);
|
||||
//fprintf(stderr, "=======================\n");
|
||||
m_stats.failed_decodes++;
|
||||
break;
|
||||
|
||||
case RX_EVT_PACKET_RECEIVED:
|
||||
fprintf(stderr, "A message of %zu bytes was decoded successfully.\n", packet_len);
|
||||
//fprintf(stderr, "A message of %zu bytes was decoded successfully.\n", packet_len);
|
||||
//fprintf(stderr, "=== DECODED PAYLOAD (%4zu bytes) ===\n", packet_len);
|
||||
//hexdump(packet_data, packet_len < 64 ? packet_len : 64);
|
||||
//fprintf(stderr, "====================================\n");
|
||||
|
||||
m_stats.successful_decodes++;
|
||||
|
||||
block_tx_for(TX_SWITCH_BACKOFF_END_OF_PACKET_MS);
|
||||
|
||||
ret = write(m_tunfd, packet_data, packet_len);
|
||||
|
@ -123,8 +132,9 @@ void cb_rx(rx_evt_t evt, uint8_t *packet_data, size_t packet_len)
|
|||
break;
|
||||
|
||||
case RX_EVT_PREAMBLE_FOUND:
|
||||
fprintf(stderr, "Found preamble!\n");
|
||||
//fprintf(stderr, "Found preamble!\n");
|
||||
block_tx_for(TX_SWITCH_BACKOFF_PREAMBLE_MS);
|
||||
m_stats.preambles_found++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -220,7 +230,7 @@ int main(void)
|
|||
|
||||
double old = get_hires_time();
|
||||
size_t total_samples = 0;
|
||||
double next_rate_print_time = old + 0.5;
|
||||
double next_stats_print_time = old + 0.5;
|
||||
|
||||
while(m_running) {
|
||||
double now = get_hires_time();
|
||||
|
@ -300,10 +310,16 @@ int main(void)
|
|||
total_samples += n_rf_samples;
|
||||
|
||||
double new = get_hires_time();
|
||||
if(new >= next_rate_print_time) {
|
||||
if(new >= next_stats_print_time) {
|
||||
double rate = total_samples / (new - old);
|
||||
fprintf(stderr, "\nEstimated rate: %.3f MS/s\n", rate / 1e6);
|
||||
next_rate_print_time += 0.5;
|
||||
fprintf(stderr, "Receiver statistics:\n");
|
||||
fprintf(stderr, " Preambles found: %8zd\n", m_stats.preambles_found);
|
||||
fprintf(stderr, " Successful decodes: %8zd (%6.2f %%)\n",
|
||||
m_stats.successful_decodes, m_stats.successful_decodes * 100.0f / m_stats.preambles_found);
|
||||
fprintf(stderr, " Failed decodes: %8zd (%6.2f %%)\n",
|
||||
m_stats.failed_decodes, m_stats.failed_decodes * 100.0f / m_stats.preambles_found);
|
||||
next_stats_print_time += 0.5;
|
||||
|
||||
total_samples = 0;
|
||||
old = new;
|
||||
|
|
Loading…
Reference in a new issue