flybywiresim / aircraft

The A32NX & A380X Project are community driven open source projects to create free Airbus aircraft in Microsoft Flight Simulator that are as close to reality as possible.
https://flybywiresim.com
GNU General Public License v3.0
5.07k stars 1.1k forks source link

Please make CPDLC compatible with YourControls #6684

Open foxmike80 opened 2 years ago

foxmike80 commented 2 years ago

Aircraft Version

Experimental

Description

First, thank you so much for bringing CPDLC into this great work. It is just amazing to see how this project is developing, all your work is so much appreciated. I would like to suggest a possible way to make the new CPDLC feature usable with YourControls. A friend and I have done some testing and came up with the following observations and ideas:

Our test set-up: Both pilots used the latest experimental version and were connected using YourControls. Both planes used the same simbrief and hoppie ID. Simbrief was used to import the flight plan, then a PDC was sent using hoppie.

Results: ATC received the PDC twice as both planes sent the data. (We used hoppies CPDLC "Test" software to not annoy anybody). When ATC answered the request, only one plane received the message, however, on both planes the "ATC MSG" button illuminated.

Suggestion: A button could be integrated in the EFB to make one plane "observer". This plane then should be able to fetch the messages from hoppie's webpage and the corresponding callsign. So basically, this plane should just regularly check the table on hoppie's page to see if any new Message# shows up, fetch that data and display it.

If only one pilot then connects to the hoppie network, while the other is in "observer" mode, both planes should be able to "receive" - or fetch - the messages. Sending messages should still be possible for both planes, because the buttons are synced by YourControls and then only the plane that is connected would send the message.

Other observations: When printing messages (tested both METAR and CPDLC) it seemed to be totally random what got printed. One pilot got a METAR when the other got a CPDLC and in some cases one plane just got a blank sheet. Some things seem to be getting mixed up here.

References (optional)

image

The messages from 20:06 were received twice because both pilots were connected to the network.

If you need any reference or additional information (or testing), please let me know.

Additional info (optional)

No response

Discord Username (optional)

foxmike1080

svengcz commented 2 years ago

This is not possible at the moment.

Your idea works well for the use case to send data, but not to receive messages. Hoppie sends the buffered messages for a receiver only once and forgets the messages immediately. Due to this system design in hoppie will it be completely random who receives the messages.

This fits also to your explenation about printed messages. The pilots have different message lists. That's why it looks random what is printed, but both received lists are out of sync.

foxmike80 commented 2 years ago

I understand that only one plane will recieve the message that was sent by hoppie, therefore my suggestion to make one plane "observer" and fetch the data from the html table on hoppie's wepage. Since the ATC MSG button illumintes for both planes, this event could be used as a trigger for the "observer plane" to fetch the last row in that table of messages for the current FLT NBR in the MCDU. Say I'm DLH123 and my partner logs in as DLH123A in VATSIM as observer. Only my plane, the actual DLH123, is connected to hoppie and will therefore receive the message. My partner's plane DLH123A will then receive the information that a new message has been received (ATC MSG illiuminates) and then actively go to http://www.hoppie.nl/acars/system/callsign.html?network=VATSIM&callsign=DLH123 to fetch the latest message and also display that in the DCDU. Probably not the nicest workaround, but I guess it could work.

Godehardt2003 commented 2 years ago

I think it would be a simple solution to create a sim var that shows the current CPDLC display text. This could be synced by YourControls. Then if the FO is not connected to HOPPIE and presses a button the pressed button is synced to the captain and is then send...

aguther commented 2 years ago

I think it would be a simple solution to create a sim var that shows the current CPDLC display text. This could be synced by YourControls. Then if the FO is not connected to HOPPIE and presses a button the pressed button is synced to the captain and is then send...

LVARs do not support strings.

Godehardt2003 commented 2 years ago

LVARs do not support strings.

Maybe its possible to create a virtual LVAR like CPDLCContent1, CPDLCContent2... and everyone contains the ASCII number of one char. If it's possible to detect if CPDLCContentX does not exist (to detect the end)

svengcz commented 2 years ago

No, not really. This would be an unstable hack that can lead to inconsistencies between aircrafts. You see it sometimes with the COMPANY MSG. It should a robust solution.

foxmike80 commented 2 years ago

I'm just curious. Why is it not an option to fetch the data from hoppie's website? All the data is there. Is it not possible to get messages from an html table?

foxmike80 commented 2 years ago

...and yet another idea: @Godehardt2003 suggested to use LVARs to store the text of the message. Accoring to @aguther this is not possible as LVARs do not support strings. Couldn't there be an LVAR that stores hoppie's message ID. This could then be synced with the client and the client plane could read the message that belongs to that ID from hoppie's webpage or database.

image
svengcz commented 2 years ago

I'm just curious. Why is it not an option to fetch the data from hoppie's website? All the data is there. Is it not possible to get messages from an html table?

The problem is that it is not really efficient to parse external HTML pages. This feature is broken as soon as the layout is changed.

...and yet another idea: @Godehardt2003 suggested to use LVARs to store the text of the message. Accoring to @aguther this is not possible as LVARs do not support strings. Couldn't there be an LVAR that stores hoppie's message ID. This could then be synced with the client and the client plane could read the message that belongs to that ID from hoppie's webpage or database. image

Here is the problem that we do not know the message ID. This is not published via the interface. But the idea is not bad. Maybe an alternative solution based on message ideas could be a solution.

foxmike80 commented 2 years ago

If the data cannot be parsed from the website or hoppie's database, and LVARs do not allow to sync strings, can FBW's own Telex-system be (mis-)used to transmit the data from the "server" plane to the "client" plane?