The use of std::map and static initialization was an issue.
The code was refactored to not use static initialization.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
LL_APPEND is called just before the loop spins up but various error conditions can cause the task to exit before then.
When that happens Mavlink::start_helper calls delete on the instance which tries to prune it from the global list.
If this is the first Mavlink instance to attempt starting the list head is null and we hardfault in the Mavlink dtor.
Only call LL_DELETE after checking the list head for a null pointer.
Reworking toolchain and main.cpp for QuRT to a final link can be
done and the apps.h file is autogenerated.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
QuRT does not support UDP so moved the mavlink specific code
to a new file that is not built for the qurt target
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
The posix layer implementations should work on QuRT.
QuRT needs to provide a way for getting the current time.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
The inclusion of px4.h requires C++ features not supported in the
Hexagon toolchain. The features are not required so the required
headers are used instead.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
Most of the current POSIX builds will not use the UART and it
is just a unnecessary dependency to satisfy when running in a
test environment.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
px4_read, px4_write, and px4_opctl were not returning the correct
value on error. They were returning -errno vs -1.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
this runs the mpu6000 200usec faster than requested then detects and
disccards duplicates by comparing accel values. This avoids a nasty
aliasing issue due to clock drift between the stm32 and mpu6000
this runs the sampling of the accelerometer 200usec faster than
requested and then throw away duplicates using the accelerometer
status register data ready bit. This avoids aliasing due to drift in
the stm32 clock compared to the lsm303d clock
QuRT does not have a filesystem, so creating a virtual filesystem
that could be implemented as an in-memory file or a remote file
over fastRPC.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>