Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • doc/overview.dox

    r302 r444  
    1111 * Note, that to be able to understand the code most effectively, it
    1212 * is important to either use the application actively, or to read its
    13  * user documentation carefully. 
     13 * user documentation carefully.
    1414 *
    1515 * \section overview Overview
    1616 *
    17  * The application was written in 
     17 * The application was written in
    1818 * <a href="http://python.org">Python 2</a>. The Python wrapper
    1919 * <a href="http://gtk.org">Gtk+</a> toolkit was used for the graphical
     
    2323 * as the primary toolkit, while it has no reliable port for Windows
    2424 * yet. Therefore it was decided to support both Gtk+ 2 and 3
    25  * depending on the platform. For Gtk+ 2 the 
     25 * depending on the platform. For Gtk+ 2 the
    2626 * <a href="http://pygtk.org">PyGTK</a> wrapper is used, while for Gtk+
    2727 * 3 the <a href="https://live.gnome.org/PyGObject">PyGObject</a>
     
    3333 * <a href="http://www.schiratti.com/dowson.html">FSUIPC</a>
    3434 * interface. The author has created a Python mapping for it, which
    35  * has been submitted for inclusion into the SDK, so it will hopefully 
     35 * has been submitted for inclusion into the SDK, so it will hopefully
    3636 * appear in its next version. It is planned to support X-Plane in the
    3737 * near future (hopefully by the end of 2012) on both Linux and
     
    4545 * Gtk+ and Gtk+ itself. Since Python is an interpreted language,
    4646 * there is no need for any special build system.
    47  * 
     47 *
    4848 * Python and Gtk+ are readily available on most Linux distributions,
    4949 * but some links are probably useful for Windows users:
     
    5454 * \li To create install packages, you also need py2exe: <a href="http://www.py2exe.org/">http://www.py2exe.org</a>,
    5555 * \li as well as the Nullsoft Install System: http://nsis.sourceforge.net/Main_Page
    56  * 
     56 *
    5757 * The install package can be created by running the \c makeinst.bat
    5858 * file. It contains some absolute paths, so check those befure
     
    8181 *    thread. Instead, use \c gobject.idle_add to "inject" the
    8282 *    operation into the main thread.
    83  * -# To ensure the responsiveness of the GUI, only operations 
     83 * -# To ensure the responsiveness of the GUI, only operations
    8484 *    that take a short time should be executed in the GUI thread.
    8585 *
     
    9898 * simulator is to be supported, a class with the same (or at least
    9999 * sufficiently similar) public interface should be implemented.
    100  *             
     100 *
    101101 * The most important function of the program is the
    102102 * continuous monitoring of the aircraft's parameters and some other
    103103 * data. The monitoring is started using the \ref
    104104 * mlx.fsuipc.Simulator.startMonitoring "startMonitoring" function of
    105  * the simulator object. If started, it calls the \ref 
     105 * the simulator object. If started, it calls the \ref
    106106 * mlx.acft.Aircraft.handleState "handleState" function of the
    107107 * mlx.acft.Aircraft instance used. The mlx.acft module contains one
     
    114114 * smoothed values of IAS and VS, and then calls each "checker". A
    115115 * checker is an instance of a subclass of mlx.checks.StateChecker,
    116  * which checks a one or a few parameters that are important from some 
     116 * which checks a one or a few parameters that are important from some
    117117 * aspect of the correct execution of a flight. For example, a checker
    118  * may check if the \ref mlx.checks.StrobeLightsChecker 
     118 * may check if the \ref mlx.checks.StrobeLightsChecker
    119119 * "strobe lights" are switched on and off at the right stages of the
    120120 * flight. But some checkers simply log some \ref
    121121 * mlx.checks.AltimeterLogger "value" whenever it changes
    122122 * in an "interesting" way, or \ref mlx.checks.ACARSSender "send the
    123  * ACARS" periodically. 
     123 * ACARS" periodically.
    124124 *
    125125 * There is also a \ref mlx.checks.StageCheker "checker" which
    126126 * detects the changes in the stage of the flight, and calls the
    127127 * \ref mlx.acft.Aircraft.setStage "setStage" function of the
    128  * aircraft, if there is a change. It first calls the 
     128 * aircraft, if there is a change. It first calls the
    129129 * \ref mlx.flight.Flight "flight"'s \ref mlx.flight.Flight.setStage
    130130 * "setStage" function, which notifies the GUI and the \ref
     
    139139 * mlx.soundsched.SoundScheduler "sound scheduler" to check if some
    140140 * backround sound should be played. If the check list hotkey is
    141  * pressed, the \ref mlx.soundsched.ChecklistScheduler 
     141 * pressed, the \ref mlx.soundsched.ChecklistScheduler
    142142 * "checklist scheduler" is notified too.
    143143 *
    144144 * As mentioned, there is a \ref mlx.logger.Logger "logger" in the
    145145 * application, which contains the textual log lines as well as the
    146  * faults and their scores. 
     146 * faults and their scores.
    147147 *
    148148 * The business logic part contains many other components, but they
     
    151151 * modules for more information.
    152152 *
    153  * \subsection arch_gui GUI     
     153 * \subsection arch_gui GUI
    154154 *
    155155 * As mentioned, the GUI is implemented using Gtk+. This toolkit
     
    158158 * experience with Glade in an earlier project, it was decided to not
    159159 * use it. Instead, the GUI elements are created and handled by
    160  * hand-written code. 
     160 * hand-written code.
    161161 *
    162162 * The central class of the graphical user interface is
     
    165165 * connection to the simulator and creates the \ref mlx.flight.Flight
    166166 * "flight" and \ref mlx.flight.Aircraft "aircraft" objects as
    167  * needed. 
     167 * needed.
    168168 *
    169169 * To understand the operation of the GUI, one should be familiar with
    170170 * Gtk+, but otherwise it is pretty straighforward. See the
    171  * documentation of the relevant modules for more information.
     171 * documentation of the relevant modules for more information.
     172 *
     173 * \section newtype Adding a new aircraft type
     174 *
     175 * While new aircraft types will probably not be added too often, here
     176 * is a checklist about what should be modified when such a
     177 * requirement arises.
     178 *
     179 * First, it is worth to know what data you need to add the new type:
     180 *
     181 * \li the aircraft's type name and its ICAO code
     182 * \li the following weights: DOW, MZFW, MTOW, MLW
     183 * \li the flap settings and their speed limits
     184 * \li the speed limit for extending/retracting the gear (VLE)
     185 * \li the number and types of the fuel tanks
     186 * \li the type code the MAVA website uses to identify the type
     187 * \li if the plane has reversers, what is the operating limit speed,
     188 *     if any
     189 * \li does the plane support the notion of a takeoff derate, and if
     190 *     so, what data should be given
     191 * \li what lights does the plane have
     192 *
     193 * If you have the data, you can add the type by modifying the source
     194 * files as per the checklist below:
     195 *
     196 * -# \c src/mlx/const.py: look for the constants named AIRCRAFT_xxx.
     197 *    Add the new type at the end of the list of those constants, with
     198 *    a number 1 greater than the number of the last existing
     199 *    type. The part of the constant's name after the underscore (xxx
     200 *    above) should be the ICAO code of the aircraft type.
     201 * -# \c src/mlx/const.py: below this list of constants, you can find
     202 *    an array named \c aircraftTypes. Add the type constant to it.
     203 * -# \c src/mlx/const.py: further below you can find a dictionary
     204 *    mapping te aircraft type to the corresponding ICAO codes. Add
     205 *    the new type to it.
     206 * -# \c src/mlx/acft.py: add a new subclass of \ref
     207 *    mlx.acft.Aircraft. Its name should be the ICAO code. Check an
     208 *    existing aircraft and add the same variables containing the
     209 *    weights, the flap speed limits and the gear speed limit. There
     210 *    may be some other member variables or functions that should be
     211 * -# \c src/mlx/acft.py: there is a dictionary named \c _classes
     212 *    towards the end of the file. Add the type to it.
     213 * -# \c src/mlx/web.py: the \ref mlx.web.BookedFlight class contains
     214 *    two dictionaries, the mapping between the types and the values the MAVA
     215 *    website uses to identify the type. Add the appropriate values
     216 *    here.
     217 * -# \c src/mlx/fsuipc.py: add a subclass of \ref
     218 *    mlx.fsuipc.GenericAircraftModel for the new type named the ICAO
     219 *    code of the type followed by the word \c Model. Implement its
     220 *    constructor to supply the base class with the flaps notches
     221 *    (starting with 0), the array of constants describing the fuel
     222 *    tanks the model has, and the number of engines. Also implement
     223 *    the name of the model, which should be something like
     224 *    "FSUIPC/Generic ...". If necessary implement other functions or
     225 *    set other members.
     226 * -# \c src/mlx/fsuipc.py: add the new type and model class to the
     227 *    dictionary named \c _genericModels towards the end of the file.
     228 * -# \c src/mlx/fsuipc.py: if you have a model that has some
     229 *    non-generic characteristics, create a specific class for
     230 *    it. This class should be a subclass of the generic class
     231 *    created, and it should be registered at the bottom of the file,
     232 *    as the other models are.
     233 * -# \c src/mlx/gui/common.py: this file contains a dictionary called
     234 *    \c mlx.gui.common.aircraftNames. Add the new type it it. It
     235 *    contains the mapping from the type constants to their
     236 *    language-specific names. The string ID is "aircraft_" followed by
     237 *    the lower-cased ICAO code.
     238 * -# \c locale/hu/mlx.po, locale/en/mlx.po: the beginning of this
     239 *    file contains mapping from the string ID previously used to the
     240 *    actual name of the aircraft. Add the new type as appropriate.
     241 * -# \c dcdatagen.py: this program generates some source and message
     242 *    files related to the delay codes. Currently there are two
     243 *    tables, one for old-timer types and the other for the "modern" types.
     244 *    The file contains a list of lists called \c typeGroups. Add the
     245 *    type's ICAO code the appropriate list.
     246 *
     247 * When all the changes have been made, run \c make in the root
     248 * directory to update some source files.
    172249 */
    173  
Note: See TracChangeset for help on using the changeset viewer.