Martin Spott wrote:

Well, I prefer you to understand it as well-meant lobbying, driven by
the strong feeling that FG needs this - not for me but for others who
could do much more by connecting an external FDM to FG than I ever
could.
Just have a look at the CIGI "Interface Control Document", they do care
very much about defining the low-level protocol. Although CIGI isn't
adequate for being used as FDM interface for FlightGear I find it very
interesting to see how they approach the goal to offer a reliable
interface to the developer.

When I became aware of FG I first started looking for something like a
"remote FDM interface definition", but I was put off by the "simply
copy the struct" way that I would have had to go. As I was quite
uneducated in mangling other people's C++ code I grounded my project
after a while. As you know I'm not the only one who felt offended by
the mentioned 'interface'. Other people who actually _did_ interface to
FG decided not to follow the ongoing changes and stick to old FG
versions as long as there is no 'official' interface definition that
they can expect to be stable and platform independent.

Now as you aim to interface to a quite unrelated FDM I had the hope an
interface definition that matches the forementioned attributes might
evolve as a side effect.

Well there is always a struggle between designing the perfect module or interface and getting things done. Too much designing and you can design something that can't be built in a finite/human time frame. With no design effort or advance thought, you end up with a big mess. So there needs to be a balance between the two ... obviously we want to get things done, but obviously we want to avoid big messes.

There is a proposal on the table for a flexible binary structure similar to the "generic" protocol, but binary. But as far as I know, no one has started any coding.

But, an FDM interface needs to do more than shove a datastructure back and forth. There needs to be some higher level communication to tell the remote FDM when it should reset it self or when it should trim for in air or on the ground, and what trim conditions are requested (i.e. start in air at 4500' MSL, 98 kts, 10 degree flaps, gear up, in a 20 degree right banking turn.)

There are also very important and difficult timing issues to consider with a remote FDM. How those are handled can have a *huge* impact on the latency and smoothness of flightgear rendering.

The other issue to consider is we could create the worlds most super whiz bang remote FDM interface, but you must remember that 99% of the time, people are trying to interface to remote FDM code that already exists. These people typically aren't going to want to spend months implimenting the other end of our super feature rich protocol, and the more complicated we get, the less they'll want to write the other end of it.

As you suggest, passing a C struct over the net has some disadvantages, but it is simple, it is easy to code, it is efficient, and can be made to work very well. Most people doing this stuff are doing it on the same machine, or between similar machines. If endianness does pose a problem, these people are usually smart enough to quickly discover that and the fix is pretty easy (maybe a bit tedious but easy.)

There are always a lot of factors that influence people's design decisions, and don't be too quick to rule out simple, easy, robust, quick to code ....

As I'm sure you know there is room for many different interfaces within the FlightGear umbrella, so if anyone wants to do something better (or maybe I should say something with a different feature set and different strengths and weaknesses) we all would welcome it. In open-source, good ideas tend to succeed and grow, bad ideas tend to die on the vine ... but no one wants to stand in the way of anyone trying out a new idea ... that is one of FlightGear's core values.

Curt.

--
Curtis Olson        http://www.flightgear.org/~curt
HumanFIRST Program  http://www.humanfirst.umn.edu/
FlightGear Project  http://www.flightgear.org
Unique text:        2f585eeea02e2c79d7b1d8c4963bae2d


_______________________________________________
Flightgear-devel mailing list
[email protected]
http://mail.flightgear.org/mailman/listinfo/flightgear-devel
2f585eeea02e2c79d7b1d8c4963bae2d

Reply via email to