User Tools

Site Tools


aircraft:tmd:inputs

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
aircraft:tmd:inputs [2019/07/20 16:36] – [input_event] jhaircraft:tmd:inputs [2022/07/19 21:02] (current) jh
Line 22: Line 22:
 E.g. you don't need to come up with different names for the graphics section than for the physics. Just re-use the same one everywhere. Much easier. E.g. you don't need to come up with different names for the graphics section than for the physics. Just re-use the same one everywhere. Much easier.
  
-E.g. In the GraphicObjects section you can **re-use the same name for the graphic object**, e.g. the hingedbodygraphics LandingLightSwitch can use the AngleID LandingLightSwitch.Output without problem. This speeds things up when you only need to copy paste. Sometimes you have to do more on the graphics side of things, then you could use the name with a "Graphics" at the end, e.g. "LandingLightSwitchGraphics" but you could also copy-paste the Geometry name, e.g. SwLdgLt... though this is not recommended as it is harder to decipher and generally costs more time because it can't be copy pasted to other places.+E.g. In the GraphicObjects section you can **re-use the same name for the graphic object**, e.g. the hingedbodygraphics LandingLightSwitch can use the InputID LandingLightSwitch.Output without problem. This speeds things up when you only need to copy paste. Sometimes you have to do more on the graphics side of things, then you could use the name with a "Graphics" at the end, e.g. "LandingLightSwitchGraphics" but you could also copy-paste the Geometry name, e.g. SwLdgLt... though this is not recommended as it is harder to decipher and generally costs more time because it can't be copy pasted to other places.
  
 **...Knob, ...Switch** **...Knob, ...Switch**
Line 79: Line 79:
             >             >
             <[input_button][ExampleButton][]             <[input_button][ExampleButton][]
-                <[string8][Input][Controls.Example]>+                <[string8][Message][Controls.Example]>
                 <[float64][InputValue][1.0]>                 <[float64][InputValue][1.0]>
                 <[string8][Events]       [ ButtonSoundIn.Trigger  ]>                 <[string8][Events]       [ ButtonSoundIn.Trigger  ]>
Line 107: Line 107:
                 <[string8][GeometryList][ ExampleButton ]>                 <[string8][GeometryList][ ExampleButton ]>
                 <[tmvector3d][Axis][ 1.0 0.0 0.0 ]>                 <[tmvector3d][Axis][ 1.0 0.0 0.0 ]>
-                <[uint32][AngleID][ExampleButton.Output]> +                <[uint32][InputID][ExampleButton.Output]> 
-                <[float64][Pos0][-0.001]> +                <[float64][Scaling][0.001]>
-                <[float64][Pos1][0.001]>+
             >             >
 </code> </code>
  
-''Pos0'' and ''Pos1'' determine the movement length, how far the button is pressed in. ''Pos0'' represents the value for input a theoretical ''-1.0'' and ''Pos1'' for an input of ''1.0''. The average between these two is the zero position.+''Scaling'' and ''Offset'' determine the movement length, how far the button is pressed in. ''Offset'' represents the zero position and ''Scaling'' defines the displacement.
  
-In the example the button moves by 0.001 meter or 1 mm. To increase the amount of translation change Pos0 and Pos1 to e.g. 0.002 for 2 mm+In the example the button moves by 0.001 meter or 1 mm. To increase the amount of translation change the Scaling parameter to e.g. 0.002 for 2 mm.
- +
-> This may be changed in the future to be less confusing.+
  
 === SoundObjects === === SoundObjects ===
Line 207: Line 204:
             >             >
             <[input_switch][ExamleSwitch][]             <[input_switch][ExamleSwitch][]
-                <[string8][Input][Controls.Examle]>+                <[string8][Message][Controls.Examle]>
                 <[float64][Value][1.0]>                 <[float64][Value][1.0]>
                 <[string8][Events]       [ SwitchSoundOn.Trigger  ]>                 <[string8][Events]       [ SwitchSoundOn.Trigger  ]>
Line 236: Line 233:
                 <[tmvector3d][Axis][ 0.0 -1.0 0.0 ]>                 <[tmvector3d][Axis][ 0.0 -1.0 0.0 ]>
                 <[tmvector3d][Pivot][ 0.0 0.0 0.0 ]>                 <[tmvector3d][Pivot][ 0.0 0.0 0.0 ]>
-                <[string8][AngleID][ExampleSwitch.Output]> +                <[string8][InputID][ExampleSwitch.Output]> 
-                <[float64][AngleMax][0.6]>+                <[float64][Scaling][0.6]>
             >             >
 </code> </code>
Line 277: Line 274:
 The typical chain consists of ''control_cylinder'', ''input_discrete'', ''output_free'', ''hingedbodygraphics'' and ''sound_multi''. The typical chain consists of ''control_cylinder'', ''input_discrete'', ''output_free'', ''hingedbodygraphics'' and ''sound_multi''.
  
-The setup is similar to the toggle switch only with minor differences like the use of ''input_discrete'' and ''output_free'' as well as different values for Scaling/AngleMax and an no ''toggle'' option.+The setup is similar to the toggle switch only with minor differences like the use of ''input_discrete'' and ''output_free'' as well as different values for Scaling and an no ''toggle'' option.
  
 === ControlObjects === === ControlObjects ===
Line 329: Line 326:
             >             >
             <[input_discrete][ExamleSwitch][]             <[input_discrete][ExamleSwitch][]
-                <[string8][Input][Controls.Example]>+                <[string8][Message][Controls.Example]>
                 <[tmvector2d][Range][ 0.0 2.0 ]>                 <[tmvector2d][Range][ 0.0 2.0 ]>
                 <[float64][Value][1.0]>                 <[float64][Value][1.0]>
Line 362: Line 359:
                 <[tmvector3d][Axis][ 0.0 -1.0 0.0 ]>                 <[tmvector3d][Axis][ 0.0 -1.0 0.0 ]>
                 <[tmvector3d][Pivot][ 0.0 0.0 0.0 ]>                 <[tmvector3d][Pivot][ 0.0 0.0 0.0 ]>
-                <[string8][AngleID][ExampleSwitch.Output]> +                <[string8][InputID][ExampleSwitch.Output]> 
-                <[float64][AngleMax][0.3]>+                <[float64][Scaling][0.3]>
             >             >
 </code> </code>
Line 431: Line 428:
             >             >
             <[input_discrete][ExamleSwitch][]             <[input_discrete][ExamleSwitch][]
-                <[string8][Input][Controls.Example]>+                <[string8][Message][Controls.Example]>
                 <[tmvector2d][Range][ 0.0 2.0 ]>                 <[tmvector2d][Range][ 0.0 2.0 ]>
                 <[float64][Value][1.0]>                 <[float64][Value][1.0]>
Line 464: Line 461:
                 <[tmvector3d][Axis][ 0.0 -1.0 0.0 ]>                 <[tmvector3d][Axis][ 0.0 -1.0 0.0 ]>
                 <[tmvector3d][Pivot][ 0.0 0.0 0.0 ]>                 <[tmvector3d][Pivot][ 0.0 0.0 0.0 ]>
-                <[string8][AngleID][ExampleSwitch.Output]> +                <[string8][InputID][ExampleSwitch.Output]> 
-                <[float64][AngleMax][0.3]>+                <[float64][Scaling][0.3]>
             >             >
 </code> </code>
Line 528: Line 525:
             >             >
             <[input_knob][ExampleKnob][]             <[input_knob][ExampleKnob][]
-                <[string8][Input][Controls.Example]>+                <[string8][Message][Controls.Example]>
                 <[float64][InputValue][1.0]>                 <[float64][InputValue][1.0]>
                 <[string8][Events][ KnobSound.Trigger ]>                 <[string8][Events][ KnobSound.Trigger ]>
Line 553: Line 550:
                 <[tmvector3d][Axis][ -1.0 0.0 0.0 ]>                 <[tmvector3d][Axis][ -1.0 0.0 0.0 ]>
                 <[tmvector3d][Pivot][ 0.0 0.0 0.0 ]>                 <[tmvector3d][Pivot][ 0.0 0.0 0.0 ]>
-                <[string8][AngleID][ExampleKnob.Output]> +                <[string8][InputID][ExampleKnob.Output]> 
-                <[float64][AngleMax][0.0872665]>+                <[float64][Message][0.0872665]>
             >             >
 </code> </code>
Line 612: Line 609:
  
 <code>            <[input_lever][ExampleLever][] <code>            <[input_lever][ExampleLever][]
-                <[string8][Input][Controls.Example]>+                <[string8][Message][Controls.Example]>
                 <[string8][InputEnable][1.0]>                 <[string8][InputEnable][1.0]>
                 <[tmvector2d][Range][ 0.0 1.0 ]>                 <[tmvector2d][Range][ 0.0 1.0 ]>
Line 644: Line 641:
                 <[tmvector3d][Axis][ 0.0 -1.0 0.0 ]>                 <[tmvector3d][Axis][ 0.0 -1.0 0.0 ]>
                 <[tmvector3d][Pivot][ 0.0 0.0 0.0 ]>                 <[tmvector3d][Pivot][ 0.0 0.0 0.0 ]>
-                <[string8][AngleID][ExampleLever.Output]> +                <[string8][InputID][ExampleLever.Output]> 
-                <[float64][AngleMax][1.0]>+                <[float64][Scaling][1.0]>
             >             >
 </code> </code>
Line 654: Line 651:
  
 <code>            <[input_lever2][Throttle1Input][] <code>            <[input_lever2][Throttle1Input][]
-                <[string8][Input0][Controls.Throttle1]> +                <[string8][Message0][Controls.Throttle1]> 
-                <[string8][Input1][Controls.ThrustReverse1]>+                <[string8][Message1][Controls.ThrustReverse1]>
                 <[float64][StepSize0][1.0]>                 <[float64][StepSize0][1.0]>
                 <[float64][StepSize1][2.2222222]>                 <[float64][StepSize1][2.2222222]>
Line 668: Line 665:
  
 <code>            <[input_button_rocker][RudderTrimKnob][] <code>            <[input_button_rocker][RudderTrimKnob][]
-                <[string8][Input][Controls.RudderTrim]>+                <[string8][Message][Controls.RudderTrim]>
                 <[string8][EventsUp]         [ RockerSoundIn.Trigger  ]>                 <[string8][EventsUp]         [ RockerSoundIn.Trigger  ]>
                 <[string8][EventsDown]       [ RockerSoundIn.Trigger  ]>                 <[string8][EventsDown]       [ RockerSoundIn.Trigger  ]>
Line 677: Line 674:
  
 <code>            <[input_switch_rocker][DirectionalGyroCorrectionSwitch][] <code>            <[input_switch_rocker][DirectionalGyroCorrectionSwitch][]
-                <[string8][Input][Navigation.DirectionalGyroCorrection]>+                <[string8][Message][Navigation.DirectionalGyroCorrection]>
                 <[string8][EventsUp]         [ SwitchSound.Trigger ]>                 <[string8][EventsUp]         [ SwitchSound.Trigger ]>
                 <[string8][EventsDown]       [ SwitchSound.Trigger ]>                 <[string8][EventsDown]       [ SwitchSound.Trigger ]>
Line 686: Line 683:
  
 ===== Flight Controls ===== ===== Flight Controls =====
 +
 +==== input_default ====
 +
 +The input_default is used for all non-discrete (floating point) inputs.
 +
 +Typically these are found for light dimmers, trim inputs, etc. which are typically operated with a joystick or with a cockpit dimmer or trim-wheel, etc. but button inputs are also possible with this generic input.
 +
 +The ''Speed'' is how fast the input responds when a button is pressed and held. With a speed of 0.1 it takes 10 seconds to reach the full deflection 1.0.
 +
 +''Positions'' is the number of steps that are available when a button is pressed to increment the value. A single press of the button increases the value of the input_default by ( Range.max - Range.min ) /  ( Positions - 1 ). In the example below that is 0.0025 increment per button press, so rather fine trim adjustments can be made.
 +
 +<code>            <[input_default][RudderInput][]
 +                <[string8][Message][Controls.Yaw.Input]>
 +                <[tmvector2d][Range][ -1.0 1.0 ]>
 +            >
 +            <[input_default][PitchTrimInput][]
 +                <[string8][Message][Controls.Trim]>
 +                <[string8][InputEnable][1.0]>
 +                <[uint][Positions][801]>
 +                <[tmvector2d][Range][ -1.0 1.0 ]>
 +                <[float64][Value][0.0]>
 +                <[float64][Speed][0.1]>
 +            >
 +</code>
  
 ==== input_control ==== ==== input_control ====
Line 694: Line 715:
  
 <code>            <[input_control][ElevatorInput][] <code>            <[input_control][ElevatorInput][]
-                <[string8][Input][Controls.Pitch.Input]>+                <[string8][Message][Controls.Pitch.Input]>
                 <[tmvector2d][Range][ -1.0 1.0 ]>                 <[tmvector2d][Range][ -1.0 1.0 ]>
                 <[float64][Value][0.0]>                 <[float64][Value][0.0]>
Line 700: Line 721:
 </code> </code>
  
-===== Digital States =====+===== Other Inputs =====
  
 ==== input_binary ==== ==== input_binary ====
Line 709: Line 730:
  
 <code>            <[input_binary][BinaryState][] <code>            <[input_binary][BinaryState][]
-                <[string8][Input][Controls.State]>+                <[string8][Message][Controls.State]>
             >             >
             <[input_binary][BinaryState][]             <[input_binary][BinaryState][]
-                <[string8][Input][Controls.State]>+                <[string8][Message][Controls.State]>
                 <[string8][InputEnable][1.0]>                 <[string8][InputEnable][1.0]>
                 <[float64][Value][0.0]>                 <[float64][Value][0.0]>
Line 731: Line 752:
  
 <code>            <[input_discrete][SeatbeltSignsSwitch][] <code>            <[input_discrete][SeatbeltSignsSwitch][]
-                <[string8][Input][Controls.SeatbeltSigns]>+                <[string8][Message][Controls.SeatbeltSigns]>
                 <[string8][InputEnable][1.0]>                 <[string8][InputEnable][1.0]>
                 <[string8][Range][ 0.0 2.0 ]>                 <[string8][Range][ 0.0 2.0 ]>
Line 739: Line 760:
             >             >
             <[input_discrete][NDPilotInformation][]             <[input_discrete][NDPilotInformation][]
-                <[string8][Input][NavigationDisplayPilot.Information]>+                <[string8][Message][NavigationDisplayPilot.Information]>
                 <[string8][Range][ 0.0 5.0 ]>                 <[string8][Range][ 0.0 5.0 ]>
                 <[float64][Value][5.0]>                 <[float64][Value][5.0]>
Line 753: Line 774:
  
 <code>            <[input_discrete_cyclic][ECAMPageManuallyTuned][] <code>            <[input_discrete_cyclic][ECAMPageManuallyTuned][]
-                <[string8][Input][ECAM.Page]>+                <[string8][Message][ECAM.Page]>
                 <[string8][InputEnable][ClockOn.Output]>                 <[string8][InputEnable][ClockOn.Output]>
                 <[string8][Range][ 0.0 11.0 ]>                 <[string8][Range][ 0.0 11.0 ]>
Line 768: Line 789:
  
 <code>            <[input_discrete_momentary][MagnetosSwitch][] <code>            <[input_discrete_momentary][MagnetosSwitch][]
-                <[string8][Input][Controls.Magnetos]>+                <[string8][Message][Controls.Magnetos]>
                 <[tmvector2d][Range][ 0.0 4.0 ]>                 <[tmvector2d][Range][ 0.0 4.0 ]>
                 <[float64][Value][3.0]>                 <[float64][Value][3.0]>
                 <[string8][EventsUp][ MagnetoSwitchSound.Trigger ]>                 <[string8][EventsUp][ MagnetoSwitchSound.Trigger ]>
                 <[string8][EventsDown][ MagnetoSwitchSound.Trigger ]>                 <[string8][EventsDown][ MagnetoSwitchSound.Trigger ]>
 +            >
 +</code>
 +
 +
 +==== input_cyclic ====
 +
 +The input_cyclic is an input that loops back around to the beginning when it reaches the end of the ''Range''.
 +
 +  * ''Input'' is the message name
 +  * ''InputEnable'' can be used to disable the input, e.g. if the input is digital and electric power is lost
 +  * ''Range'' is the minimum and maximum value of the input
 +  * ''StepSize'' is the increment when a single step is added, e.g. ''0.0174532'' or 1 degree.
 +  * ''Value'' is the initial position
 +
 +<code>            <[input_cyclic][NAV1Course][]
 +                <[string8][Message][Navigation.SelectedCourse1]>
 +                <[string8][InputEnable][1.0]>
 +                <[tmvector2d][Range][ 0.0 6.283185 ]>
 +                <[uint][StepSize][0.0174532]>
 +                <[uint][Value][1.570796]>
 +            >
 +</code>
 +
 +==== input_pair ====
 +
 +This is the typical frequency input that can be found in all kinds of aircraft. The frequency input has two values at the same time, an active and a standby value. The standby value is adjustable and can be set without having an immediate impact. Then the frequency is transferred (swapped) to the active frequency and the previously active frequency is now the standby frequency.
 +
 +  * ''Input'' is the message name for the standby value
 +  * ''InputSwap'' is the transfer button message
 +  * ''InputEnable'' can disable the input, e.g. when electrical power is not available
 +  * ''Range'' is the minimum and maximum value for both values
 +  * ''Positions'' is the number of increments within the Range. When the step increment is known (e.g. 50 kHz) and the limits of the Range are known (e.g. 108 MHz to 118 MHz) the Positions is just: ( Range.max - Range.min ) / step + 1, e.g. ( 118000000.0 - 108000000.0 ) / 50000.0 + 1 = 200 + 1 = 201.
 +  * ''StepLarge'' is the number of small steps that make a coarse step. E.g. 20 x 50 kHz = 1 MHz or 40 x 25 kHz = 1 MHz
 +  * ''Active'' and ''Standby'' are the initial two values
 +
 +For optional automatic frequency tuning (autotuning):
 +  * ''InputExternal'' is an autotuning input from the ''flight_management'' or ''autotuning'' class.
 +  * ''Manual'' is the initial condition weather or not autotuning is on (1.0 if manual control)
 +
 +<code>            <[input_pair][NAV1Frequency][]
 +                <[string8][Message]    [Navigation.NAV1StandbyFrequency]>
 +                <[string8][MessageSwap][Navigation.NAV1FrequencySwap]>
 +                <[tmvector2d][Range][ 108000000.0 118000000.0 ]>
 +                <[float64][Active]  [116000000.0]>
 +                <[float64][Standby] [114100000.0]>
 +                <[uint][Positions][201]>
 +                <[float64][StepLarge][20.0]>
 +            >
 +            <[input_pair][NAV1Frequency][]
 +                <[string8][Message]      [Navigation.NAV1StandbyFrequency]>
 +                <[string8][MessageSwap]  [Navigation.NAV1FrequencySwap]>
 +                <[string8][InputExternal][AutoTuning.OutputNAV1]>
 +                <[string8][InputEnable]  [1.0]>
 +                <[tmvector2d][Range][ 108000000.0 118000000.0 ]>
 +                <[float64][Active]  [116000000.0]>
 +                <[float64][Standby] [114100000.0]>
 +                <[uint][Positions][201]>
 +                <[float64][StepLarge][20.0]>
 +                <[float64][Manual][0.0]>
             >             >
 </code> </code>
Line 787: Line 867:
  
 <code>            <[input_event][Button_Pressed][] <code>            <[input_event][Button_Pressed][]
-                <[string8][Input][Controls.Button]>+                <[string8][Message][Controls.Button]>
                 <[string8][Events][ DEV0.Trigger ]>                 <[string8][Events][ DEV0.Trigger ]>
             >             >
             <[input_event][Button_Pressed][]             <[input_event][Button_Pressed][]
-                <[string8][Input][Controls.Button]>+                <[string8][Message][Controls.Button]>
                 <[float64][InputValue][1.0]>                 <[float64][InputValue][1.0]>
                 <[string8][Events][ DEV0.Trigger ]>                 <[string8][Events][ DEV0.Trigger ]>
Line 799: Line 879:
 ==== input_active ==== ==== input_active ====
  
-<code> +Outputs 1.0 to the tmd as long as a lever is grabbed or a button is depressed.
-</code>+
  
-==== input_cyclic ====+> Typically this is only used to make a light illuminate as long as a button is pressed or to give visual feedback that a control is grabbed. Don't use this for every single button in combination with an event_edge, this should be done with the ''input_event'' class instead.
  
-<code>+<code>            <[input_active][ButtonDepressed][] 
 +                <[string8][Message][Controls.Button]> 
 +                <[float64][InputValue][1.0]> 
 +            >
 </code> </code>
  
-==== input_pair ==== 
- 
-<code> 
-</code> 
- 
-==== input_default ==== 
- 
-<code> 
-</code> 
- 
-==== input_scratchpad ==== 
- 
-<code> 
-</code> 
aircraft/tmd/inputs.1563633413.txt.gz · Last modified: 2019/07/20 16:36 by jh