This with latency got me doing some digging around.
Oplink sends ppm as 8 channels of 9 bit data, making this 9 bytes in total 72 bits. Radio data header and crc at the end are another 120 bits. This makes for at least 190 bits of data for ppm, without any telemetry included. At 9600 com speed, but because of the half-duplex link, the actual radio data rate is set to double of that. Nice. But not so. Apparently, oplink frequency hopping function says this: "Divide time into 8ms blocks. Coordinator sends in first 2 ms, and remote send in 5th and 6th ms." So out of 8ms, the sending side gets to use 2ms for sending. That is 25% of the total time available. Effective rate of 9600 link (that is 19200 data rate) ? 4800 bps.
Am I wrong? At 4800 bps, it takes 39 milliseconds to send one ppm packet. Comparing this to ~20ms of CPPM, it is twice as slow.
All this is not including any telemetry at all. My best guess is that telemetry on the same link is going to bring the effective ppm data rate really low.
So it seems, when using PPMONLY mode, I would need to set com speed to at least 19200 to have CPPM speed. More for telemetry.
Am I correct here?
It's been a while since I wrote the code, and I think some of it has changed since I wrote it, but I think you're getting some things mixed up.
The 9600 bps sounds right, and if it's PPM only, it's unidirectional, so the uplink uses the entire bandwidth. The baud rate is set to closely match CPPM timing, so PPM packets should be sent over the link at about the same rate as they are read/produced at the ends, and the baud rate is no user modifiable in PPM only mode.
I believe the timing that you're referring to (the 8ms blocks) is when running in bi-directional mode. In order to not have both ends transmitting at the same time, time is divided up so that the coordinator has 2ms to start sending a packet. If the receiver doesn't start receiving a packet in that time, the receiver has 2ms in which to start sending a packet, and then there's 4ms buffer before the sequence starts over again. That helps to eliminate collisions where both radios are transmitting at the same time.
In PPM+telemetry mode, the PPM data is sent with each packet from the coordinator to the receiver as "sideband" data. The data rate needs to be higher, of course, to accommodate the telemetry, but I believe I adjusted the packet size to maintain about the same packet rate so that PPM packets would still arrive at about the same rate as the CPPM frames are received/sent. That's a part of the code that I think might have changed since I wrote it, but it's not critical.
Edit: I should also note that the baud rate that is set in the GUI is the com baud rate. The over-the-air baud rate is set automatically based on that, and it would be higher than the com baud rate to account for header information, etc and bidirectional traffic, but I don't think it's twice the com baud rate, with the assumption that the com data is likely asymmetric (telemetry downstream, but just PPM + ACKs upstream).