Ahh, yes, this old debate. This is a difference of opinion among developers as to how the COM RECIEVE ALL
(sic) variable should work. I’ve given an in-depth explanation of my opinion here before, but I can’t seem to find my previous posts, so I’ll describe it again here.
I’m of the opinion that the COM RECIEVE ALL
variable should continue to work the way it always has in the past when simconnect only supported two COM radios. In those sims, if this variable is set to true, it means that both COM1 and COM2 are set to receive. Indeed, this variable is referred to as “COM RECEIVE BOTH” in many contexts, because that is a much more semantically correct name for what this variable actually means, and likely also because the value is set by pressing the “BOTH” button on the radio stack.
It has always worked this way because there were no COM1 RECEIVE or COM2 RECEIVE variables. So the only way to know which radios were set to receive is by looking at which one was set to transmit (only one could be set to transmit at a time, and the one that was set to transmit must also be set to receive) and by looking at whether or not COM RECIEVE ALL was set to true. So the logic has always been like this:
COM1 is set to receive if COM TRANSMIT:1
is true or COM RECIEVE ALL
is true.
COM2 is set to receive if COM TRANSMIT:2
is true or COM RECIEVE ALL
is true.
When MSFS came along, they added support for more than two radios, and they changed the effective meaning of the COM RECIEVE ALL variable. Now, its meaning actually matches its name. I fully understand this move … the developers are changing the variable’s behavior to match its name. That makes sense, but what they may not realize (or may not care about) is that it is actually a behavior change and breaks compatibility with existing apps. The variable should have been called “COM RECEIVE BOTH” all along, or maybe “COM RECEIVE 1 AND 2” or similar.
Note that MSFS also added individual variables for checking if each COM radio is set to receive, making the COM RECIEVE ALL variable unnecessary. This is why I think they should have kept the original meaning of the variable, and marked it as deprecated, in order to maintain backward compatibility with existing simconnect apps.
This all leaves me in a tricky spot, because vPilot works for all simconnect sims, not just MSFS, so I need to keep using the COM RECIEVE ALL variable. The fact that this variable now has different meaning depending on which sim vPilot is connected to, results in issues like the one being discussed in this thread.
There are a couple ways I could update vPilot to work around this issue and still maintain compatibility with all simconnect sims, but they result in messy, hard-to-maintain code. But I think I’m just going to have to bite the bullet and make the changes since it doesn’t look like the COM RECIEVE ALL variable is ever going to be returned to its original meaning and deprecated as it should be.
I’m extremely busy with real world work currently, so I can’t say when I’ll find time to make the changes. Until then, you have your workaround.