Radio setup (input device)
-
Hi,
on the Spad.next discord channel, I found this interesting XML (at the bottom of my post) made by a user. When imported into Spad.next, it made it possible to very easily program my Logitech radio panel to control the KNS-81.
Then my questions :)
i) Are these events something that could be published in your documentation in the future? I only own your Bonanza and Baron so far, but I guess there are a lot of functions in your other planes that I'll need to map once I get them.
ii) I would also hope to be able to map the KNS-81 displays to the Flight Radio Panel, any hint on how to find the data?
XML:
<BaseEvent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" BoundTo="RADIOPANEL_LOWER_SELECTOR_DME" xmlns="http://www.fsgs.com/SPAD">
<EventDefinitions>
<EventDefinition Trigger="TUNER_INNER_CLOCKWISE">
<EventActions>
<EventActionControl TargetDataDefinition="MSFS:BKSQ Bonanza KNS81 Rt Knob SmInc" />
</EventActions>
</EventDefinition>
<EventDefinition Trigger="TUNER_INNER_COUNTERCLOCKWISE">
<EventActions>
<EventActionControl TargetDataDefinition="MSFS:BKSQ Bonanza KNS81 Rt Knob SmDe" />
</EventActions>
</EventDefinition>
<EventDefinition Trigger="TUNER_OUTER_CLOCKWISE">
<EventActions>
<EventActionControl TargetDataDefinition="MSFS:BKSQ Bonanza KNS81 Rt Knob BigInc" />
</EventActions>
</EventDefinition>
<EventDefinition Trigger="TUNER_OUTER_COUNTERCLOCKWISE">
<EventActions>
<EventActionControl TargetDataDefinition="MSFS:BKSQ Bonanza KNS81 Rt Knob BigDe" />
</EventActions>
</EventDefinition>
<EventDefinition Trigger="ACTIVATESHORT">
<EventActions>
<EventActionControl TargetDataDefinition="MSFS:BKSQ Bonanza KNS81 Data" />
</EventActions>
</EventDefinition>
</EventDefinitions>
<Options>
<Option Key="TUNER_INNER_SENSITIVITY" Value="100" />
<Option Key="TUNER_OUTER_SENSITIVITY" Value="100" />
<Option Key="TUNER_MULTIPLY_1" Value="1" />
<Option Key="TUNER_MULTIPLY_2" Value="2" />
<Option Key="TUNER_MULTIPLY_3" Value="3" />
</Options>
</BaseEvent> -
Nothing there relates to my code, but if it works, it works!
Here are the events/variables that are needed to control my KNS81:
H:KNS81_bigInc
H:KNS81_smallInc
L:var_rnavKnobPulled
H:KNS81_modeInc
H:KNS81_modeDec
H:KNS81_wptInc
H:KNS81_wptDec
L:var_RNAV_VOLUME
H:KNS81_useButton
H:KNS81_returnButton
L:var_RNAV_DMERADIALMODE
L:var_RNAV_CHECKMODE
H:KNS81_dataButtonI've included more and more information on hardware input and output with each aircraft, and the upcoming Dukes will be the most complete yet, with a section dedicated to this in the manual. Unfortunately, not everything can be output (each and every segment that's illuminated on the EDM 760 engine monitor, for example, but I will try to cover almost everything I can think of for the Dukes.
The entire state of the KNS80/81 is visible to hardware, but the DME information is. These are:
L:var_RNAV_BEARING
L:var_RNAV_CDI
L:var_RNAV_TOFROM
L:var_RNAV_DMEHOLD
L:var_RNAV_DME
L:var_RNAV_DMESPEEDI hope that helps get you started. Please let me know if there is anything else I can do for you!
-
The "events" posted only work if the user has the same Client Events loaded. Underneath those "names" when run it will send out the H Events you have listed. It's just that the user that made them decided to name them as he did an that's why they show up like that. Usually it is recommended to make the client events the exact same syntax as the H event so it is easier to locate and stay consistent when searching.
-
Thank you very much for the list! And looking much forward to your next aircrafts.
When it comes to mapping the displays for the KNS, one of them is easy, but not sure about the other 3:
*of course, the mapping of the NAV FRQ display this way is not ideal, as it's only shows the active frequency on the KNS, but it illustrates what I'm trying to achieve.
-
The entire state of the KNS80/81 is visible to hardware, but the DME information is. Here is the DME information that's displayed on the screen:
L:var_RNAV_DME
L:var_RNAV_DMESPEEDI know this isn't the most user friendly solution, but here is some code that you can add to KNS81.js to add the functionality you're looking for:
After the line: "diffAndSetText(this.waypointNumber, this.displayChannel);"
ADD: SimVar.SetSimVarValue("L:var_RNAV_WAYPOINT_NUMBER", "number", this.displayChannel);After the line: "diffAndSetText(this.distanceNumber, (this.memoryOffsets[this.displayChannel - 1].toFixed(1)));"
ADD:
SimVar.SetSimVarValue("L:var_RNAV_RADIAL_NUMBER", "number", this.radialFormat(this.memoryRadials[this.displayChannel - 1]));
SimVar.SetSimVarValue("L:var_RNAV_DISTANCE_NUMBER", "number", (this.memoryOffsets[this.displayChannel - 1].toFixed(1)));Then, you can use these for the rest of the numbers:
L:var_RNAV_WAYPOINT_NUMBER
L:var_RNAV_RADIAL_NUMBER
L:var_RNAV_DISTANCE_NUMBERI hope that improves your experience!
EDIT: Oh, and just use the standby COM3 frequency for your current setup. That will always match what's shown on the display.
-
This is very interesting, but I'm only able to get the Waypoint-number to work. I'm pretty sure I entered the code as you instructed correctly.
-
BTW: Standby COM3 frequency, shows the same as Standby COM1...
-
Sorry, I meant NAV3 standby. That should definitely work. Here's the entire block of code I've created for you. Paste this in KNS81.js, overwriting the very similar block of code, starting with "diffAndSetText(this.waypointNumber, this.displayChannel);" and ending before "switch(this.dataEntryMode){". Give that a try, and let me know how it goes. I'll include this in my future aircraft and updates so that others can do the same.
diffAndSetText(this.waypointNumber, this.displayChannel); SimVar.SetSimVarValue("L:var_RNAV_WAYPOINT_NUMBER", "number", this.displayChannel); diffAndSetText(this.frequencyNumber, this.freqFormat(this.getStandbyFrequency())); if(!SimVar.GetSimVarValue("L:var_RNAV_CHECKMODE", "bool")){ diffAndSetText(this.radialNumber, this.radialFormat(this.memoryRadials[this.displayChannel - 1])); diffAndSetText(this.distanceNumber, (this.memoryOffsets[this.displayChannel - 1].toFixed(1))); SimVar.SetSimVarValue("L:var_RNAV_RADIAL_NUMBER", "number", this.memoryRadials[this.displayChannel - 1]); SimVar.SetSimVarValue("L:var_RNAV_DISTANCE_NUMBER", "number", this.memoryOffsets[this.displayChannel - 1]); } else{ if(SimVar.GetSimVarValue("NAV SIGNAL:"+this.navSourceIndex, "number")){ diffAndSetText(this.radialNumber, this.radialFormat((this.actualVorRadialDegrees + 180) % 360 )); SimVar.SetSimVarValue("L:var_RNAV_RADIAL_NUMBER", "number", (this.actualVorRadialDegrees + 180) % 360); } else{ diffAndSetText(this.radialNumber, "---.-"); SimVar.SetSimVarValue("L:var_RNAV_RADIAL_NUMBER", "number", 0) } if(SimVar.GetSimVarValue("NAV SIGNAL:"+this.navSourceIndex, "number") && SimVar.GetSimVarValue("NAV HAS DME:"+this.navSourceIndex, "Bool")){ diffAndSetText(this.distanceNumber, this.actualDmeRange.toFixed(1)); SimVar.SetSimVarValue("L:var_RNAV_DISTANCE_NUMBER", "number", this.actualDmeRange); } else{ diffAndSetText(this.distanceNumber, "---.-"); SimVar.SetSimVarValue("L:var_RNAV_DISTANCE_NUMBER", "number", 0); } }
-
Fantastic! This is so nice. Only issue now is getting the NAV frequency to display correctly, as in Spad.next I actually can't find a value for standby NAV3, although active NAV3 shows up.
I'm trying to do some research on their Discord.
-
NAV3 standby was added to their database after I made a request.
-