Welcome to the forum for MobiFlight! Feel free to reach out to the community in case you have questions, issues or just want to share great ideas or details about your latest home cockpit project.
You like MobiFlight? Donate via PayPal and support the MobiFlight development. Thanks!
Code:
######################################################################################################### # # MCP Rotary Switch # ######################################################################################################### #MCP 10 DEGREE BANK ANGLE Command 0x6581 UINT8 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn _ 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn _ 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn _ 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn #MCP 15 DEGREE BANK ANGLE Command 0x6582 UINT8 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn _ 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn _ 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn _ 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn _ 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up #MCP 20 DEGREE BANK ANGLE Command 0x6583 UINT8 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn _ 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn _ 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn _ 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn _ 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up _ 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up #MCP 25 DEGREE BANK ANGLE Command 0x6584 UINT8 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up _ 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up _ 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up _ 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up _ 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn #MCP 30 DEGREE BANK ANGLE Command 0x6585 UINT8 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up _ 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up _ 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up _ 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up
For what it is worth, I was able to get my bank angle rotary switch to work for XP11. It is a bit of a hack though.
The XPUIPC Offset code is below.
How it works:
For bank angle 10-20 I send 4 'bank_angle_dn' commands and then either 0,1, or 2 'bank_angle_up' commands for the first 3 positions. For bank angle 25-30, I send 4 'bank_angle_up' commands followed by 0 or 1 'bank_angle_dn' command for these positions.
A similar solution may work for the EFIS switches, though I have not tried it.
Code:
######################################################################################################### # # MCP Rotary Switch # ######################################################################################################### #MCP 10 DEGREE BANK ANGLE Command 0x6581 UINT8 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn _ 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn _ 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn _ 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn #MCP 15 DEGREE BANK ANGLE Command 0x6582 UINT8 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn _ 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn _ 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn _ 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn _ 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up #MCP 20 DEGREE BANK ANGLE Command 0x6583 UINT8 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn _ 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn _ 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn _ 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn _ 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up _ 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up #MCP 25 DEGREE BANK ANGLE Command 0x6584 UINT8 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up _ 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up _ 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up _ 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up _ 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn #MCP 30 DEGREE BANK ANGLE Command 0x6585 UINT8 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up _ 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up _ 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up _ 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up
Cheers!
From Samhaho:
Would you please clarify how can you send multiple commands (you say "4 up and 2 dn", etc.)?
Code:
#MCP 25 DEGREE BANK ANGLE Command 0x6584 UINT8 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up _ 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up _ 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up _ 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up _ 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn
From Samhaho:
Can you share your Mobiflight config for the switch?
@Samhaho, within MobiFlight the inputs are configured as below:
From Samhaho:
Would you please clarify how can you send multiple commands (you say "4 up and 2 dn", etc.)?
The code below for the XPUIPCOffsets.cfg file is how this is accomplished.
Code:
#MCP 25 DEGREE BANK ANGLE Command 0x6584 UINT8 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up _ 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up _ 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up _ 1 0 laminar/B738/autopilot/bank_angle_up _ 0 1 laminar/B738/autopilot/bank_angle_up _ 1 0 laminar/B738/autopilot/bank_angle_dn _ 0 1 laminar/B738/autopilot/bank_angle_dn
This sets the UP dataref 4 times and then the DOWN dataref once. The 4 UP will always take you bank angle to 30 degrees no matter where the bank angle is currently set. Then the single DOWN will drop the max bank angle to 25 degrees. The same logic follows with the other 5 events.
From Samhaho:
Can you share your Mobiflight config for the switch?
I have 5 inputs configured, one for each of the bank angle settings, MCP_BANKANG_## (where ## is 10-30). Each of these pointed at their corresponding Command for triggering the appropriate event with XPUIPC.
On the On Press and On Release tabs for each of the inputs set the Action Type to FSUIPC - Offset.
Next, fill in the appropriate Offset for each switch position on both the On Press and On Release tabs.
Note: from my code: 0x6581 for MPC_BANKANG_10
Value Type: int
Size in Bytes: 1
Mask value with: 0xFF (default)
More Options, Set Value: 1 for the On Press and 0 for the On Release
Note: The Offset locations will need to be adjusted to work with your memory usage scheme.
Cheers
From samhaho:
Now I had noticed (it is not at all specific to the rotary switch) that setting the offset to 0 (on release) is necessary so the next value set will be different since the command is only executed if the value of the offset changes. However no need to associate any command to the value 0. Again this is true for all offsets and all commands and not specific to bank angle.
We can then simplify the offset definition. As example this is the offset of for bank angle 20 (4 up and 2 down):
#Bank_angle 20 - simplified - no need for comand to set 0 the value
Command 0x9452 UINT8 0 1 laminar/B738/autopilot/bank_angle_up _
0 1 laminar/B738/autopilot/bank_angle_up _
0 1 laminar/B738/autopilot/bank_angle_up _
0 1 laminar/B738/autopilot/bank_angle_up _
0 1 laminar/B738/autopilot/bank_angle_dn _
0 1 laminar/B738/autopilot/bank_angle_dn
This is tested and works fine.
Hi Guys....
THIS is a example of using "Commands". thats technical the counterpart of "EventID" in FSUIPC.
So a predefine Sequence we start by trigger it.
For sure it workes.... But let me say.... E.g. a 4 Pos Rorary is ther set "in the dark" 3 time via the Down event temporary to a fixed point ( whatever its in Pos 2,3,4 we say 3 times -1 to set it to 1 and then e.g. increment it X times up again to fit the final position )
this workes.... But this is not logical.
Question 1.....
Is there a SET event for each number.... Like
laminar/B738/autopilot/bank_angle_0 _
laminar/B738/autopilot/bank_angle_1 _
laminar/B738/autopilot/bank_angle_2 _
or so.... So we have a EVENT but this not set Down or Up.... It set to a specific Position ????
Question 2......
Is there alternate a "Value as a Dataref" that is writebale....
Like a Dataref that show Switch Position like 0,1,2,3 .... And we can also WRITE it.... Like SET Value of Datarex XXX to Value Y
*************
If these ways not exist, then your idea is correct and simply the only improvisional way we can go.
But if a alternate exist.... Then its more logical to handle this directly.
The explaned System is a impresive cool tricky solution.... But i think its not a good way if there is a better alternate !
#Bank angle rotary switch
#Bank angle 1-30 degrees; 2-25 degrees; 3-20 degrees; 4-15 degrees, 5-10 degrees
Command 0x9450 UINT8 0 1 laminar/B738/autopilot/bank_angle_up _
0 1 laminar/B738/autopilot/bank_angle_up _
0 1 laminar/B738/autopilot/bank_angle_up _
0 1 laminar/B738/autopilot/bank_angle_up _
0 1 laminar/B738/autopilot/bank_angle_up _
0 2 laminar/B738/autopilot/bank_angle_dn _
0 3 laminar/B738/autopilot/bank_angle_dn _
0 3 laminar/B738/autopilot/bank_angle_dn _
0 4 laminar/B738/autopilot/bank_angle_dn _
0 4 laminar/B738/autopilot/bank_angle_dn _
0 4 laminar/B738/autopilot/bank_angle_dn _
0 5 laminar/B738/autopilot/bank_angle_dn _
0 5 laminar/B738/autopilot/bank_angle_dn _
0 5 laminar/B738/autopilot/bank_angle_dn _
0 5 laminar/B738/autopilot/bank_angle_dn _
And the Mobiflight config is:
On press set to 1 for switch position 30 On Release set to 1
On press set to 2 for switch position 25 On Release set to 1
On press set to 3 for switch position 20 On Release set to 1
On press set to 4 for switch position 15 On Release set to 1
On press set to 5 for switch position 10 On Release set to 1