FreeCalypso > hg > freecalypso-tools
diff rvinterf/lowlevel/tchhide.c @ 899:a1065c17429c
rvinterf: implement TCH hiding mode and -v option for verbose
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 12 Dec 2022 22:15:25 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rvinterf/lowlevel/tchhide.c Mon Dec 12 22:15:25 2022 +0000 @@ -0,0 +1,50 @@ +/* + * One of several FreeCalypso extensions to RVTMUX is TCH bit access + * logical channel, and we would like to handle it specially in rvinterf + * because it's extremely chatty, sending a frame every 20 ms. If we + * were to output every TCH frame in our regular log, that log output + * becomes useless as everything else is drowned out. Therefore, we + * implement a hiding mode by default: we only count how many TCH packets + * were exchanged in between other messages of interest, and report these + * counts. + */ + +#include <stdio.h> + +extern void (*output_hook)(); + +unsigned tch_rx_count, tch_tx_count; + +static void +tch_report_hook() +{ + char msgbuf[80]; + + output_hook = 0; + if (tch_rx_count) { + sprintf(msgbuf, "TCH: received %u packet%s", tch_rx_count, + tch_rx_count != 1 ? "s" : ""); + output_line(msgbuf); + tch_rx_count = 0; + } + if (tch_tx_count) { + sprintf(msgbuf, "TCH: sent %u packet%s", tch_tx_count, + tch_tx_count != 1 ? "s" : ""); + output_line(msgbuf); + tch_tx_count = 0; + } +} + +void +tch_inc_count_rx() +{ + tch_rx_count++; + output_hook = tch_report_hook; +} + +void +tch_inc_count_tx() +{ + tch_tx_count++; + output_hook = tch_report_hook; +}