Yesterday I have implemented emulation of keep-alive messages on server side. This means that the keep-alive messages sent by the front panel roughly every 100 ms are no longer sent over the network; instead, they are generated in the servers main loop with 150 ms interval.
This has reduced the traffic significantly, not in term of bits per second but in terms of messages per second. The keep-alive messages are very short messages: 0xFE 0x0B 0x00 0xFD, however, they must arrive very quickly otherwise the radio will shut down. So it is neither feasible nor possible to send them over the network when the client side uses a mobile network. Emulating them at server side is the only way.
After removing the keep-alive message from the network traffic the only periodic messages that are left are display updates from the radio to the front panel sent few times per second or more often while updates take place. The only traffic from the panel to the radio is event-based, i.e. they come only when a button is pressed or a knob is being turned.
In order to get the keep-alive emulation work properly I had to reduce both the loop delay and as well as the select() call timeout. Actually, I had already reduced the loop delay prior to this exercise in order to fix the latency issue that showed up after I started collecting complete messages prior to sending them over the network.
Next item on the list is to get the power-on / power-off procedures working without having direct wire connections for the power button and the 8V line. This will probably be a good place to start using the Beaglebones instead of a PC.