Editing FlyByWireEGCS

Jump to navigation Jump to search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
 
{{Addon|
 
{{Addon|
1=[https://www.orbiter-forum.com/resources/fly-by-wire-0-9-1-beta.3339/ Fly-By-Wire] at Orbiter Forum/Resources|
+
1=[http://www.orbithangar.com/searchid.php?ID=3223 Fly-By-Wire on Orbithangar]|
2=Oliver 'Redburne' Pieper
+
2=[[User:Redburne|Oliver 'Redburne' Pieper]].  
3=0.9.1 beta
 
4=?
 
 
}}
 
}}
 
= About Fly-By-Wire =
 
= About Fly-By-Wire =
Line 9: Line 7:
 
== Purpose ==
 
== Purpose ==
  
Fly-By-Wire (FBW) complements or replaces Orbiter's support for Windows game controllers like joysticks, game pads, and HOTAS (Hands On Throttle And Stick) systems like the Saitek X52 or Thrustmaster Cougar.
+
Fly-By-Wire (FBW) complements or replaces Orbiter's support for game controllers like joysticks and HOTAS (Hands On Throttle And Stick) systems like the Saitek X52 or Thrustmaster Cougar.
 
+
With FBW, you can currently assign different axes on different game controllers to control main engine thrust, hover engine thrust, retro engine thrust, aileron, elevator, rudder (but not the nosewheel), elevator trim, and bot rotational and translational RCS thrusters.
With FBW, you can currently assign different axes on different game controllers to control
 
* main, hover, and retro engine thrust
 
* aileron, elevator, and rudder deflection (but not the nose wheel)
 
* elevator trim
 
* both rotational and translational RCS thrusters.
 
  
 
FBW is passive and will not interfere with vessel autopilots if the controllers are not moved.
 
FBW is passive and will not interfere with vessel autopilots if the controllers are not moved.
 
A word of warning: The add-on is work in progress. Flexibility, power, and maintainability of the source code currently take precedence over looks and ease of use (and, quite possibly, always will)!
 
  
 
== Change log ==
 
== Change log ==
 
=== Release 0.9 ===
 
* new input type "combined" (combine any two joystick inputs to act as one axis)
 
* use custom function (graph) to modify joystick input
 
** presets for identity, linear, exponential function
 
** mirror function (for symmetric controls)
 
** saving and loading of custom functions
 
* new "shared" mode for main and retro engine (control both with one joystick axis)
 
** audio feedback on mode change (main/idle/retro)
 
* latest SDL library (1.2.13) included
 
  
 
=== Release 0.8 ===
 
=== Release 0.8 ===
 
* code completely rewritten in C++ and Borland Delphi
 
* code completely rewritten in C++ and Borland Delphi
* no longer MFD based
+
* not longer MFD based
 
* configuration dialog on Orbiter launchpad, "Extra" tab, Fly-By-Wire/Configure
 
* configuration dialog on Orbiter launchpad, "Extra" tab, Fly-By-Wire/Configure
 
* visual input selection, showing all axes, all buttons, etc. on one panel
 
* visual input selection, showing all axes, all buttons, etc. on one panel
 
* for axes, upper, lower and central deadzones can be set
 
* for axes, upper, lower and central deadzones can be set
 
* provisional support for RCS
 
* provisional support for RCS
 
== Thanks and acknowledgements ==
 
 
* Thanks to Dr. Martin Schweiger for spending so much time working on Orbiter that his [http://www.medphys.ucl.ac.uk/~martins/ homepage] is still stuck in the 1990s ...
 
* Artyom "Artlav" Litvinovich's Pascal/OAPI interface (taken from his GPLed OGLA client) was a great time saver and gave me some valuable pointers (pun intended) for getting Delphi 6 and the Orbiter API to play along nicely.
 
* The guys and gals responsible for the [http://www.libsdl.org/ Simple DirectMedia Layer]
 
* [http://freesound.iua.upf.edu/usersViewSingle.php?id=37876 acclivity on the Freesound Project] had just the right sound effects.
 
* Tex for the new forum, Vash for the indespensable Orbit Hangar, and last but not least thanks to all the forum members reporting bugs and coming up with new ideas for Fly-By-Wire (some of the names can be found in the "Planned and/or requested features" section)!
 
  
 
= Download =
 
= Download =
Line 58: Line 31:
 
# Start Orbiter.
 
# Start Orbiter.
 
# Activate the module "Fly-By-Wire" on the "Modules" tab of the Orbiter Launchpad.
 
# Activate the module "Fly-By-Wire" on the "Modules" tab of the Orbiter Launchpad.
# It is recommended to disable Main Engine Control on the "Joystick" tab of the Orbiter Launchpad (i.e. set it to "<Keyboard only>") and use FBW to control the engines. It is not necessary to disable the joystick entirely. FBW will deactivate the axes when necessary.
+
# It is recommended to disable Main Engine Control on the "Joystick" tab of the Orbiter Launchpad (i.e. set it to "<Keyboard only>"). It is not necessary to disable the joystick entirely. FBW will deactivate the axes when necessary.
  
 
= Configuration =
 
= Configuration =
 
== Opening the configuration dialog ==
 
 
Unlike its predecessors, FBW v0.8+ no longer uses a MFD screen to for configuration, but adds an entry to the [[:Image:fbw_launchpad.png|Extra tab]] of the Orbiter Launchpad window. Double-click 'Configure' (or select it and press the Edit button) to open the configuration dialog.
 
 
== Choosing a game device ==
 
 
... to be written ...
 
 
== Selecting an input ==
 
 
=== Standard inputs ===
 
 
... to be written ...
 
 
=== Combined axis ===
 
 
... to be written ...
 
 
== Configure the input ==
 
 
... to be written ...
 
 
=== Set deadzones ===
 
 
... to be written ...
 
 
=== Use custom function ===
 
  
 
... to be written ...
 
... to be written ...
Line 101: Line 46:
 
;Input number: a game device usually consists of several inputs of the same type. They are numbered from 1 to n.
 
;Input number: a game device usually consists of several inputs of the same type. They are numbered from 1 to n.
  
= Files and folder structure =
+
= INI-File =
 
+
== General ==
== Current ==
+
FBW saves its settings in the file <pre><OrbiterDir>\Config\Fly-By-Wire.ini</pre>
  
<pre><OrbiterDir>\Modules\Plugin\FlyByWire.dll</pre>
+
This ini file is not meant to be modified directly. '''Edit it at your own risk!''' If all else fails, delete the file and FBW will create a new one.
This small DLL, written in C++, acts as an interface between Orbiter and the FBW core DLL (see below).
 
  
<pre><OrbiterDir>\Modules\FlyByWire\FlyByWireCore.dll</pre>
+
A file named "Fly-By-Wire.cfg" in the same directory is the configuration file of the older (up to 0.7) MFD version. Unless you are still using the MFD version of FBW, this file is obsolete and can be deleted.
The work horse of FBW. This DLL, written in Borland Delphi 6.0, contains the core functionality of Fly-By-Wire.
 
  
<pre><OrbiterDir>\FlyByWire\Current</pre>
+
== Input types ==
This folder contains ini files of the active FBW configuration.
+
==== Input types ====
  
<pre><OrbiterDir>\FlyByWire\Saved</pre>
+
<pre>
Currently, this folder only holds saved custom functions, but will - at a later time - also hold saved FBW configurations.
+
none              -- no input type selected
  
== Obsolete ==
+
axis              -- standard axis
 +
button            -- standard button
 +
hat              -- standard hat
 +
trackball x-axis  -- standard trackball, x-axis
 +
trackball y-axis  -- standard trackball, y-axis
  
<pre><OrbiterDir>\Config\Fly-By-Wire.cfg</pre>
+
; interpret single hat direction as standard button
This is the configuration file of the old (up to 0.7) FBW MFD version. Unless you are still using the MFD version of FBW, this file can be deleted.
+
hat C as button  -- "hat centered" as standard button
 +
hat N as button  -- "hat north" as standard button
 +
hat NE as button  -- ... and so on ...
 +
hat E as button
 +
hat SE as button
 +
hat S as button
 +
hat SW as button
 +
hat W as button
 +
hat NW as button
 +
; interpret hat axis as standard axis
 +
hat N-S as axis
 +
hat E-W as axis
 +
</pre>
  
 
= Planned and/or requested features =
 
= Planned and/or requested features =
Line 126: Line 85:
 
(not necessarily complete, and most certainly not in any specific order)
 
(not necessarily complete, and most certainly not in any specific order)
  
 +
* add a way to assign two buttons to emulate an axis [pattersoncr]
 +
* fully customizable axis response (plus presets for "linear", "exponential")
 +
* Main/Retro: additional button mode (toggle main/retro) [yagni01]
 +
* Main/Retro: split axis with a configurable center deadzone [lockingtoggle]
 
* automatic disengaging of controls if input and current setting differ by more than 5%, especially when switching vessels; automatic reengaging
 
* automatic disengaging of controls if input and current setting differ by more than 5%, especially when switching vessels; automatic reengaging
 
* separate axes for left and right (and center?) main engines [lockingtoggle]
 
* separate axes for left and right (and center?) main engines [lockingtoggle]
 
* RCS support:
 
* RCS support:
 +
** rotation and translation independent and simultaneous [many ...]
 
** different modes: normal (power), pulse, rate, rate change [yagni01, c3po, ...]
 
** different modes: normal (power), pulse, rate, rate change [yagni01, c3po, ...]
 
** hard-coded "vernier" setting of 10% max. power when CTRL is pressed [Hielor]
 
** hard-coded "vernier" setting of 10% max. power when CTRL is pressed [Hielor]
Line 138: Line 102:
 
* multiple setups
 
* multiple setups
 
** automatic switching based on vessel class [c3po]
 
** automatic switching based on vessel class [c3po]
 
== already implemented ==
 
 
* [v0.9] Main/Retro: split axis with a configurable center deadzone [lockingtoggle]
 
* [v0.9] add a way to assign two buttons to emulate an axis [pattersoncr]
 
* [v0.9] fully customizable axis response (plus presets for "linear", "exponential")
 
* [v0.9] Main/Retro: additional button mode (toggle main/retro) [yagni01]
 
* RCS support:
 
** [v0.9] rotation and translation independent and simultaneous [many ...]
 
  
 
= Known issues =
 
= Known issues =
  
 
== Rudder control/nosewheel ==
 
== Rudder control/nosewheel ==
Unfortunately, the Orbiter API makes it difficult for add-ons to set the control surfaces for atmospheric flight. To take control of the rudder, FBW has to deactivate manual rudder control (both by keyboard and by joystick) when the FBW rudder control is active. Otherwise, the manual control would constantly override FBW's changes, rendering it inoperational.
+
Unfortunately, the Orbiter API makes it difficult for add-ons to set the control surfaces for atmospheric flight. To take control of the rudder, FBW has to deactivate manual rudder control (by both keyboard and joystick) when the FBW rudder control is active. Otherwise, the manual control would constantly override FBW's changes, rendering it inoperational.
To complicate matters further, the Orbiter API does not support steering of the nose wheel. The nose wheel is still controlled by the usual Orbiter mechanism (i.e. the rudder keys or the standard joystick axis if Orbiter's joystick support is enabled). So, for technical reasons, FBW cannot support the nose wheel with the current Orbiter version.
+
To complicate matters further, the Orbiter API does not support steering of the nosewheel. The nosewheel is still controlled by the usual Orbiter mechanism (i.e. the rudder keys or the standard joystick axis if Orbiter's joystick support is enabled). So, for technical reasons, FBW cannot support the nosewheel with the current Orbiter version.
  
== Saitek X52 and X52 Pro ==
+
== Saitek X52 ==
 
Rotary 2 (the big one on top of the throttle lever) is not recognized and cannot be used. This is probably a deficiency of the underlying SDL library that is used to access the game device.
 
Rotary 2 (the big one on top of the throttle lever) is not recognized and cannot be used. This is probably a deficiency of the underlying SDL library that is used to access the game device.
 
== Saitek Pro Flight Rudder Pedals ==
 
 
At this time (August 30th 2009), I believe the problem with Saitek Rotary 2 axis also exist with this rudder pedals. Like the Rotary 2 axis, it is detected but Fly By Wire 0.9 does not show any movement on the screen when the controller is moved
 
  
 
= History =
 
= History =
Line 174: Line 125:
  
 
;FBW does not prompt me to save changes when exiting although I did modify some settings
 
;FBW does not prompt me to save changes when exiting although I did modify some settings
:Your final settings probably ended up being exactly the same as the one you initially had. FBW does not monitor user activity but simply compares the final settings with the ones it originally loaded. If you modify a control and later change your mind and set it to the old configuration, FBW will not recognize this as a change.
+
:Your final settings probably ended up being exactly the same as the one you initially had. FBW does not monitor user avtivity but simply compares the final settings with the ones it originally loaded. If you modify a control and later change your mind and set it to the old configuration, FBW will not recognize this as a change.
 
:If that is not the case, you have found a bug.
 
:If that is not the case, you have found a bug.
  
 
= License =
 
= License =
 
I have decided to not include the sources during beta development, but you can request a copy at any time, and I will gladly send it to you.
 
 
If you want a copy, please send an e-mail to pieper@viaregio.de
 
  
 
<pre>Fly-By-Wire is free software: you can redistribute it and/or modify
 
<pre>Fly-By-Wire is free software: you can redistribute it and/or modify
Line 196: Line 143:
 
along with Fly-By-Wire.  If not, see <http://www.gnu.org/licenses/>.</pre>
 
along with Fly-By-Wire.  If not, see <http://www.gnu.org/licenses/>.</pre>
  
= External links =
 
*[https://www.orbiter-forum.com/resources/fly-by-wire-0-9-1-beta.3339/ Fly-By-Wire] at Orbiter Forum/Resources.
 
  
[[Category:Articles]]
+
[[Category:Add-ons]][[Category: Miscellaneous add-ons]][[Category:Add-ons by Redburne]]
[[Category:Add-ons]]
 
[[Category:Miscellaneous add-ons]]
 
[[Category:Add-ons by Redburne]]
 

Please note that all contributions to OrbiterWiki are considered to be released under the GNU Free Documentation License 1.2 (see OrbiterWiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)

Template used on this page: