This mechanism automatically queues data into the correct thread where necessary, otherwise the method is invoked directly with low overhead.
At the same time remove the UDP socket event workaround. It is not a problem.
- Pervasive change to automatically connect to known board types
- Lots of additional changes along with this:
- More exposure of objects/properties to Qml
- Much restructuring in LinkManager and LinkManager clients
- Pervasive change to automatically connect to known board types
- Lots of additional changes along with this:
- More exposure of objects/properties to Qml
- Much restructuring in LinkManager and LinkManager clients
- Pervasive change to automatically connect to known board types
- Lots of additional changes along with this:
- More exposure of objects/properties to Qml
- Much restructuring in LinkManager and LinkManager clients
This is needed for Android since it needs to communicate with java apis
which require everything on the main thread. The additional thread was
not really needed since you can implement using a signal based approach
which ends up being the same thing.
Link ids were being used interchangeably with the mavlink channel for
the link. Link ids handed out as a numerically increasing integer. Once
the counter went past MAVLINK_COMM_NUM_BUFFERS all hell would break
loose and cause memory corruption.
The goal of this first installment is to organize the code a bit so it's more readable,
clean up a bit of left over cruft, and manage link configurations (and links in general).
There's also a partial fix for the databits and stopbits. I'm unsure how to deal with the logic
around the 'is_cdc' variable, as I can't really follow what it's for.
Plus a large number of other changes to allow for orderly shutdown of
objects without crashes or asserts. This is need for unit tests to
create/delete global state around every test.
Centralize all connecting and disconnecting of links through
LinkManager::[Connect|Disconnect]Link api. Connect/Disconnect no longer
allowed through LinkInterface. This allows creation of new
LinkManager::setConnections[Suspended|Allowed] methods to disallow
connections as needed.
This api doesn’t make any sense given the fact that LinkInterface
signals bytesReceived with the bytes in the signal. Also the reason why
it is never called!