A few minutes ago, I explained how in environment.cxx,
the model of the atmosphere could be extended up above
100,000 feet.

Everything I said was true, but it was not the whole
story.

As I have pointed out previously, the model of the
atmosphere in environment.cxx is bogus.  By that I
mean it contravenes the laws of physics.

The problems are *not* noticeable if you confine your
flying to
  -- sea-level airports, and/or
  -- ISA standard-day conditions of temperature and
   barometric pressure.


Meanwhile, I continue to try to make FlightGear usable
as a procedures trainer.  In particular, consider the
following small scenario:
   -- You are approaching an airport situated thousands
    of feet above sea level.
   -- There is non-ISA barometric pressure, even at nearby
    sea-level locations.
   -- There is non-ISA temperature.
   -- On approach, you tune up the AWOS (not ATIS)
    to get the relevant QNH i.e. "altimeter setting".
   -- Upon landing, you find that your altimeter
    agrees with field elevation, because the model
    of the air-column is correct, the altimeter is
    correct, and the ATIS algorithm is correct.

Relative to the current CVS FG, this requires major
modifications to several modules, including (but
definitely not limited to) Environment/environment.cxx,
Airports/apt_loader.cxx, and ATC/*.cxx, especially
ATC/atis.cxx.  (I fixed the altimeter months ago, and
this is reflected in the current CVS.)

If you want to have all these features, the easiest way is
to pull down a copy of the _Sport Model_ of FG.  (For details
on this, see the "git" section, below.  This is not meant to
be a fork, as explained below.)

Here is a partial list of the features current available
in the _Sport Model_.

   1:: Gremlins cause instruments and systems to fail at random times.
     The pilot gets to choose the MTBF.

   2:: On the HSI, the heading card stops turning when "directional
     gyro" is not serviceable.  (This is the hsi as used in the c182
     and many other light aircraft.)

   3:: On the HSI, the GS needle goes to the top (not the middle) when not
     serviceable.  The previous behavior was a pilot-killer.

   4:: On the HSI, the GS needle shows a flag (barber pole) when not 
serviceable.
     The previous behavior was a pilot-killer.

   5:: On the HSI, the CDI needle shows a flag when not serviceable.  The 
previous
     behavior was a pilot-killer.

   6:: On the plain Nav head, the GS needle shows a flag when not
     serviceable.  The previous behavior was a pilot-killer.

   7:: On the plain Nav, the head CDI needle shows a flag when not
     serviceable.  The previous behavior was a pilot-killer.

   8:: AWOS is available at AWOS locations.  (Previously only ATIS was
     implemented.)

   9:: ATIS phraseology now more nearly conforms to international standard METAR
     pattern, and therefore to usual FAA practice.(*)

Items marked with a (*) are fully implemented in the /text/ of the
ATIS message, but the voiced version of the message is degraded by
limitations of the FGFS built-in text-to-speech system.

   10:: ATIS now reports sky condition.(*)

   11:: ATIS now reports multiple layers of clouds, not just the lowest 
layer.(*)

   12:: ATIS now takes field elevation into account when calculating sky 
condition
     and ceiling.

   13:: ATIS now reports dewpoint.(*)

   14:: ATIS now can handle negative quantities (temperature and dewpoint).(*)

   15:: ATIS can now report report fractional-mile visibility.(*)

   16:: ATIS now uses magnetic (not true) wind directions, as it should.

   17:: ATIS generates correct runway number and suffix (nine right, one one 
left).

   18:: ATIS can be received on nav frequencies, not just comm.

   19:: Nothing bad happens if the same ATIS is tuned up on more than
     one receiver.

   20:: ATIS can be updated at times other than at the top of the hour.

   21:: ATIS listens for an "attention" signal, and responds changes in
    the weather by issuing a new ATIS message (somewhat like a "special
    observation").

   22:: ATIS volume now responds to radio volume setting.

   23:: Area-related services (i.e. approach radar) are handled more-nearly
    consistently with radio-frequency related services.

   24:: ATIS sequence-letter generation has been fixed.

   25:: ATIS messages are now in the property tree, so they can be read
     e.g. via the http interface.

   26:: The "clock" in the panel (as used in the default C172 and many
     other GA aircraft) can now be used as a resettable timer.  Among
     other uses, this is useful for timing approaches.

   27:: In the ambient pressure profile (which is the basis of aircraft
     altimetry), non-ISA temperature and pressure are supported, as
     required by the laws of physics.

   28:: The altimeter now works up to much higher altitudes.

   29:: Many enhancements to the X52 joystick interface.  See
     Docs/README.X52

   30:: The location-in-air popup can now be used without trashing your
     settings.  (Previously it trashed elevator trim, aileron trim,
     elevator trim, rudder trim, view angles, PoV position, landing
     gear, throttle setting, and who-knows-what-all else.)  See
     README.location-in-air

   31:: Since navaid 3-letter IDs are not unique, the navaid finder
     (used for initial positioning, as well as for location-in-air)
     will take you to the /nearest/ one, not some random one.

   32:: Navaid names may now be entered without regard to upper case
     or lower case.

   33:: The system implements more-realistic navaid service volumes,
     including expanded localizer volumes at selected stations.

   34:: The system implements false localizer courses abeam the
     antenna, as there are in real life.

   35:: There is a popup to show the position of flight controls and
     trim.  This is a workaround for use in the many aircraft that
     still lack usable trim indicators.

=========================

The remaining items are more of interest to programmers than to
pilots:

   36:: The --prop command-line option now defaults to giving things
     UNSPECIFIED type, not string type, so that the type can later be
     changed (once).

   37:: Some ATIS-related memory leaks have been fixed.

   38:: ATCmgr and the associated data structures have been reorganized
    so that
     -- we can have some number of radios other than 2
     -- information needed by ATC objects is stored where it is needed
        (in the objects) rather than in useless arrays in ATCmgr.

   39:: The code in ATCmgr has been made much shorter and more regular.

   40:: We use calculated (not guessed) length for some buffers.  Use
     automatic variables rather than "new" and "delete".

   41:: Fix some thread-unsafe code.


#################################################################
Git-related suggestions:

For quite a while I've been using git to keep track of FlightGear
files.  Using git instead of CVS is like having a sports car instead
of a skateboard.

   Git is super-convenient for testing and for experimenting with
   things.  You can very cheaply start a new branch, play around on
   that branch, compare files against the corresponding files on other
   branches ... and then reset the branch (or throw it away entirely)
   if you decide you don't like where it has gone.

   Git implements a truly distributed development model.  Everything,
   including the "repository", is fully distributed; your copy of the
   history is provably equivalent to my copy of the history.

      This stands in contrast to CVS, which permits concurrent
      development, but not really distributed development, because
      distributors are at the mercy of the single centralized
      repository.

   Git also features the notion of committing a group of files all at
   once, which is a much more logical way to think about things.

       This is in contrast to the CVS notion of committing files one by
       one.

If you want to go try this, the work required to get started will be
greatly lessened if you download the git repositories in their
already-packed form.  The FlightGear "source" tree is available via
the commands

   mkdir $top/fgs
   cd $top/fgs
   git-init
   time git-pull  http://www.av8n.com/repo/fgs/.git origin:origin
   ## less than a minute
   time git-pull  http://www.av8n.com/repo/fgs/.git sport:sport
   ## even less
   git branch    ## take a look
   git checkout sport
   git checkout -b myversion  ## or whatever you want to call it
   edit...as...desired
   time ./autogen.sh
   ./configure
   time make

What you have at this point in the "origin" branch is conceptually
equivalent to not just the current CVS version, but also every
previous version of every file, immediately available for your use
if/when you want them.  This includes all log messages.  Use
   git checkout origin
   git log
to see what I mean.

Meanwhile, in the "sport" branch, you have all the modifications
I've made, including the ATIS and AWOS features among others.  Use
   git checkout sport
   git log
to see what is in that branch.

The same procedure used for the "source" tree works for the "data" tree:
   mkdir $top/fgd
   cd $top/fgd
   time git-pull  http://www.av8n.com/repo/fgd/.git origin:origin
   ## 600 megabytes of network traffic, expands to 1.5 gigs on disk
   time git-pull  http://www.av8n.com/repo/fgd/.git sport:sport
   ## incrementally almost nothing
   git checkout sport
   git checkout -b myversion  ## or whatever you want to call it

For more info on how to use git, see
   http://www.kernel.org/pub/software/scm/git/docs/tutorial.html
   http://git.or.cz/gitwiki
   http://git.or.cz/gitwiki/GitFaq

###################

Notes:

   1) Every so often, I import changes so that the "origin" branch
    exactly tracks the current CVS.

   2) I then pull changes from the "origin" branch into the "sport"
    branch, so that it gets the new features also.  The idea is *not*
    to have a fork, where each branch has some features that the other
    lacks.  The idea is for the Sport Model to be an extension (not a
    fork) of the CVS version.

    While sitting on the sport branch (or any other branch) you can
    do "git diff origin --" to see exactly how this branch differs
    From the origin.  (More generally:  I find git diff to be
    wonderfully useful.)

   3) A standard recommendation is that you not edit the origin branch
    or the sport branch; leave them to be updated by git-pull and only
    git-pull.  Start your own branch, and do your editing there.  (You
    can easily pull in updates from other branches whenever you want.)

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Flightgear-devel mailing list
Flightgear-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flightgear-devel

Reply via email to