Using the new multiplayer debug facility in 2017.2.x, my conclusion is that Flightgear's transponder and multiplayer transmission of transponder properties works as designed. Whether that meets the requirements of ATC clients is another question.
For these examples, I set the transponder mode to 1, which corresponds to Mode A+C, i.e. it will report squawk and altitude when interrogated, subject to the position of the transponder knob. As discussed above, I don't believe the aircraft needs to change this. It's a one-time setting that should go in -set.xml.
When looking at the hex dumps below, the rectangle highlighted in red shows these multiplayer properties:
- Code: Select all
1500 instrumentation/transponder/transmitted-id INT SHORTINT V1_1_PROP_ID
1501 instrumentation/transponder/altitude INT same V1_1_PROP_ID
1502 instrumentation/transponder/ident BOOL SHORTINT V1_1_PROP_ID
1503 instrumentation/transponder/inputs/mode INT SHORTINT V1_1_PROP_ID
Each property is prefixed with its ID, so 1500 appears as 00 00 05 dc, 1501 is 00 00 05 dd and so on.
Some hex translations will be helpful to understand the dump:
- Code: Select all
-9999 = ff ff d8 f1
1025 = 00 00 04 01
700 = 00 00 02 bc
knob-mode = OFF
knob-mode = SBY
knob-mode = ON
knob-mode = ALT
The transponder mode is quite clear in my mind now as a one-time configuration of the capability of the transponder. The position of the knob (knob-mode) changes the behaviour of the transponder in terms of what it transmits, but it should not change the mode property.
Note that a Mode-S transponder requires an alitimeter that generates the required altitude property "instrumentation/altimeter/mode-s-alt-ft". In my Beagle Pup, I don't have that property so I got a warning message in the console when I tried to use my transponder as a Mode-S device (setting mode=2). I also checked the ident button and it worked OK but I didn't make screenshots.
When I was testing with CaptB, we observed that ATC-Pie didn't display the values that were shown in my property tree and it continued to display altitude when my transponder was powered off at the circuit breaker. That's something for the ATC-Pie developers to look at I think. My understanding is that an ATC client should only look at the transmitted squawk code and altitude for a pure transponder implementation. If they are invalid (-9999), the transponder is not transponding that value and an ATC client would show "n/a" or similar. I haven't looked at the source code of ATC-Pie but my best guess would be that it is trying to interpret the mode property in a way that was not intended when the transponder instrument was written. Perhaps even a bit shift somewhere as the modes appeared to be two off? So Mode-A was 2 instead of 0, Mode-C was 3 instead of 1 and Mode-S was 4 instead of 2.
Something else I noted was that the radio dialog is not a live update, so the transponder information doesn't update when changing values in the cockpit or property tree. I don't think this is a big issue, just something to be aware of if trying to use the radio dialog for debugging.
I haven't tested OpenRadar with the above and my copy doesn't seem to be working at the moment.