From where is the 3D mouse used?


Comm folder:
============

LinkInterface is a QThread. Appears to describe an interface on the host system (TCP port, serial port, ....).
  Does it suppport multiple connections?
SerialLinkInterface: Extension of above
SerialLink: Implementation

XBeeLinkInterface: Extension of LinkInterface (but without other serial stuff than baudrate, is the rest assumed?)
XBeeLink: Implementation (with address resetting probably it's Series 1)

UDPLink: UDP implementation. Port is defaulted.

MAVLinkSimulationLink: Simulation/dummy implementation of LinkInterface. Does some file IO.
MAVLinkSimulationUAV:  Simulation/dummy basic (remote) UAV state (minus mission state) for MAVLinkSimulationLink.
MAVLinkSimulationWaypointPlanner: imulation/dummy basic (remote) UAV mission state for MAVLinkSimulationLink.


ProtocolInterface describes a protocol. Major method:
    virtual void receiveBytes(LinkInterface *link, QByteArray b) = 0;

MavlinkProtocol: MAVLink implementation of ProtocolInterface


Parameter: Identity of a parameter (the value types are not handled here. Oddly there is no type metainfo either)
ParameterList: Is pretty much what the name impiles.
QGCParamID: Wrapper if parameter text IDs, conversion to byte* and back

QGCHilLink: Link to a HIL external system
    QCGFlightGearLink, QGCJSBSimLink, QGCXPlaneLink : Implementations of QGCHilLink


QGCMAVLink: Nothing more than in include to raw mavlink.h


input folder:
=============
Some exotic input devices



uas folder:
===========
UAS.h: Local UAV model. Claims to support some sort of RPC. Uses some properties with notifications. Assumes MAVLink.
Some methods:
    int getUASID() const; // the systemId
    QList<LinkInterface*>* getLinks(); // it knows its links

    virtual void receiveMessage(LinkInterface* link, mavlink_message_t message);

    float receiveDropRate;      ///< Percentage of packets that were dropped on the MAV's receiving link (from GCS and other MAVs)
    float sendDropRate;         ///< Percentage of packets that were not received from the MAV by the GCS

Some fields:
    bool positionLock;          ///< Status if position information is available or not
    double localX;  // (what is this?)
    double localY;
    double localZ;
    double latitude;            ///< Global latitude as estimated by position estimator
    double longitude;           ///< Global longitude as estimated by position estimator
    double altitude;            ///< Global altitude as estimated by position estimator
    double satelliteCount;      ///< Number of satellites visible to raw GPS
    bool globalEstimatorActive; ///< Global position estimator present, do not fall back to GPS raw for position
    double latitude_gps;        ///< Global latitude as estimated by raw GPS
    double longitude_gps;       ///< Global longitude as estimated by raw GPS
    double altitude_gps;        ///< Global altitude as estimated by raw GPS

    and lots ans lots more...


*MAV.h: Implementations of UAS


QGCUASParamManager.h: A mixture of a widget and a parameter up/download state machine. Has a reference to its associated UAV.

UASWaypointManager: API to waypoint / mission control. Not a widget. Has a reference to its associated UAV.

UASManager.h: Singleton interface to all UASs on all interfaces. Maintains a single selected/active UAS.

Ideas to do
TCPLink
XBee Series2 implementation
Less stress on uplink
Get rid of hardcoded SystemId of 255
Quick View should print all altitudes (GPS, mix, ground and/or home), letting user see errors.
Console debugging is hopefully removed?

