xpilot-project / xpilot

Open-source, cross-platform X-Plane pilot client for VATSIM.
https://xpilot-project.org
GNU General Public License v3.0
124 stars 34 forks source link

Avionics power switch required to be 'ON' to receive vatsim ATC using G1000 in XP12 #179

Closed IBAV8N closed 8 months ago

IBAV8N commented 1 year ago

I'm not sure if this is a question for Laminar or the xpilot team. The G1000 PFD1 unit in x-plane 12 is able to power up and communicate with the default ATC, as they would be able to in real life. When using the xpilot client and connected to vatsim, the avionics_on function within x-plane must be enabled to communicate with vatsim ATC. Does xpilot require that sim/cockpit/electrical/avionics_on == 1 to hear ATC? Tks.

IBAV8N commented 1 year ago

I'll make it simpler:

Does xpilot require that sim/cockpit/electrical/avionics_on == 1 to hear ATC? The default X-Plane ATC does not require this in the case of the G1000.

justinshannon commented 1 year ago

Yes, xPilot requires that dataref to == 1. Does the G1000 use a different dataref to indicate it’s powered on?

IBAV8N commented 1 year ago

sim/cockpit/electrical/battery_on ==1, sim/cockpit/electrical/battery_array_on[0]==1, and sim/cockpit/electrical/gpu_on==1 appear to be the only drefs involved. XP12 Planemaker now has an option to operate EFIS devices without the avionics switch being on. But you answered my question, thanks!

justinshannon commented 1 year ago

For my clarification, are you asking for these datarefs to be supported? Or did you sort out this issue on your end?

OldGroof commented 1 year ago

To add onto this, the X1000 uses the datarefs: "sim/cockpit2/radios/actuators/com[1/2]_power" to indicate whether the com radios are powered or not.

justinshannon commented 12 months ago

I've decided that I will not support any of these requested datarefs to avoid breaking radio functionality for other users.

While testing the use of the com[1/2]_power dataref, I learned that with the default C172, this dataref always has a value of 1, regardless if the radios/aircraft were powered on. I only tested with the C172, but I suspect this would also be true for other aircraft. This would cause the xPilot radios to always be powered on.

I will be adding a new dot command to allow the user to override the avionics_on dataref and force the xPilot radios to be powered on/off in the event that the aircraft they are flying doesn't support/use the avionics_power dataref to power the aircraft radios.

IBAV8N commented 11 months ago

For my clarification, are you asking for these datarefs to be supported? Or did you sort out this issue on your end?

Sorry for not checking back on this thread. I did plan for a gated workaround but a command will be much easier for me. Should be helpful for most XP12 aircraft developers using the G1000 as well. Thank you very much, Justin!

justinshannon commented 8 months ago

The new dot command is available in beta 53: .radios on|off

OldGroof commented 8 months ago

Would it not have been possible to have xpilot listen to both the avionics power and com[1/2] power datarefs and use an or statement to enable the radios in the client? Instead of relying on a command that can't be triggered from a plane's systems.

justinshannon commented 8 months ago

Would it not have been possible to have xpilot listen to both the avionics power and com[1/2] power datarefs and use an or statement to enable the radios in the client? Instead of relying on a command that can't be triggered from a plane's systems.

No, because as I mentioned in a previous comment, this wouldn't work for planes like the default C172.

IBAV8N commented 8 months ago

A dataref or command that allows us to intentionally enable this feature through the aircraft's code in x-plane would make this perfect.

OldGroof commented 8 months ago

Would it not have been possible to have xpilot listen to both the avionics power and com[1/2] power datarefs and use an or statement to enable the radios in the client? Instead of relying on a command that can't be triggered from a plane's systems.

No, because as I mentioned in a previous comment, this wouldn't work for planes like the default C172.

Surely having an or statement will work? avionics_power or com_1/2_power.

justinshannon commented 8 months ago

Would it not have been possible to have xpilot listen to both the avionics power and com[1/2] power datarefs and use an or statement to enable the radios in the client? Instead of relying on a command that can't be triggered from a plane's systems.

No, because as I mentioned in a previous comment, this wouldn't work for planes like the default C172.

Surely having an or statement will work? avionics_power or com_1/2_power.

I don’t think so. Going back to the example with the default C172, if I used an OR statement, it would still always have the radios powered on because com[1/2]_power will always return a value of 1.

OldGroof commented 8 months ago

Would it not have been possible to have xpilot listen to both the avionics power and com[1/2] power datarefs and use an or statement to enable the radios in the client? Instead of relying on a command that can't be triggered from a plane's systems.

No, because as I mentioned in a previous comment, this wouldn't work for planes like the default C172.

Surely having an or statement will work? avionics_power or com_1/2_power.

I don’t think so. Going back to the example with the default C172, if I used an OR statement, it would still always have the radios powered on because com[1/2]_power will always return a value of 1.

Well atm, just having the avionics switch on, enables the radios regardless of whether or not the battery is on? So there needs to be more checking for the radios?

justinshannon commented 8 months ago

Would it not have been possible to have xpilot listen to both the avionics power and com[1/2] power datarefs and use an or statement to enable the radios in the client? Instead of relying on a command that can't be triggered from a plane's systems.

No, because as I mentioned in a previous comment, this wouldn't work for planes like the default C172.

Surely having an or statement will work? avionics_power or com_1/2_power.

I don’t think so. Going back to the example with the default C172, if I used an OR statement, it would still always have the radios powered on because com[1/2]_power will always return a value of 1.

Well atm, just having the avionics switch on, enables the radios regardless of whether or not the battery is on? So there needs to be more checking for the radios?

I'm hesitant about implementing significant changes to how xPilot detects radio power status because the current method is effective for the majority of users.