The baro was not fully initialized when the sensors module tried to
open it. Added a sleep command and a sleep 2 to rc.S so the baro
is initialized by the time the sensors module tried to read it.
Fixed other noisy errors
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
When px4_getpid() was called from the shell, there was no opaque
thread ID to return. Added a special thread ID for the shell
context. This ID only works for px4_getpid() and cannot be used
for other px4_task_*() calls.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
QuRT doesn't support unlink and does not provide getpid().
The DSPAL layer provides access to usleep so an implementation is
no longer needed.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
This adds support for a dynamic build for QuRT and initial
Multi-uORB changes to enable communication between the DSP and
the application processor.
This part of the changes do not affect the POSIX build. This is
enablement for the QuRT build using Multi-uORB. The second part
of the changes will be added in a new module under src/modules.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
There is a race condition for the accel and mag polling rates.
Whichever one gets set first, the other will be uninitialized.
Set the mag polling rate to 1ms if uninitilized.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
The workqueues measure time in ticks which is typically 10ms.
Some interrupt events in Nuttx occur at about 1ms so a more
granular workqueue is needed for POSIX.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
uORBManager_posix.cpp did a stat to see if a file exists but the
file is actually a virtual file. Using stat was incorrect because
it required a stat buffer that was never used. The POSIX access
function is a better choice so I created a px4_access version to
handle virtual files.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
The macro was using a constant defined as a long instead on an
unsigned long. Made corresponsing changes to barosim.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
There is a race condition for the accel and mag polling rates.
Whichever one gets set first, the other will be uninitialized.
Set the mag polling rate to 1ms if uninitilized.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
The workqueues measure time in ticks which is typically 10ms.
Some interrupt events in Nuttx occur at about 1ms so a more
granular workqueue is needed for POSIX.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
The use of a non-static function without a declaration generates a
warning for gcc 4.8.
Clang-3.4 does not work when compiling for gprof. The executable always
generates a segv.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
Gyrosim would call measure continuously because the write_checked_reg
was failing. There is no need to check faked reg writes in the
simulator so that code was removed.
The delay that was added to the simulator to pace the gyrosim reads
was also removed now that the source of the problem was determined.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
The existing orb_advert_t use thoughout the code sometimes tries
to treat it as a file descriptor and there are checks for < 0
and ::close calls on orb_advert_t types which is an invalid use
of an object pointer, which is what orb_advert_t really is.
Initially I had changed the -1 initializations to 0 but it was
suggested that this should be nullptr. That was a good recommendation
but the definition of orb_advert_t had to change to void * because
you cannot initialize a uintptr_t as nullptr.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
The calls to orb_advertise were being mishandled throughout the code.
There were ::close() calls on memory pointers, there were checks
against < 0 when it is a pointer to a object and values larger than
0x7ffffffff are valid. Some places orb_advert_t variables were
being initialized as 0 other places as -1.
The orb_advert_t type was changed to uintptr_t so the pointer value
would not be wrapped as a negative number. This was causing a failure
on ARM.
Tests for < 0 were changed to == 0 since a null pointer is the valid
representation for error, or uninitialized.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
There were an insufficient number of devmap entries allocated and
when they ran out, new orb_advertise requests would fail.
Also added a new logging macro for the Linux build to show the
calling pthread if enabled.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
NuttX is still the default target and all NuttX configs can still
be built with:
make
Individual NuttX, POSIX, and QuRT configs can now be built more
easily by specifying the target and configs:
make posix posix_default
make qurt qurt_hello
make nuttx aerocore_default
Running make with just the target will make all the configs for
that target:
make nuttx
make qurt
make posix
The help is also target specific:
make nuttx help
make qurt help
make posix help
"make help" will still assume you want help for the NuttX target
Added a new QuRT config called qurt_hello as a sample config to
test buiding in different commands for separate configs.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
Made the logging macros generic so they can be used for multiple targets.
Fixed toolchain_native.mk so err.h is included from src/systemlib for posix.
Reduced debug output for uORB.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
Using %llu or %lu will break one of the build targets. The "right way"
to print a uint64_t is via the PRIU64 macro defined in C99.
This wasn't defined for the NuttX compiler so it was added to px4_defines.h
for NuttX.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
The ROS build included some files that used isfinite vs PX4_ISFINITE.
The AppState class also needed to be supported for ROS.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
The warnx and warn calls map to PX4_WARN.
Calls to errx or err genrtate a compile error.
The px4_log.h file implements a new log format:
For DEBUG and INFO:
<level> <msg>
For ERROR and WARN:
<level> <msg> (file filepath line linenum)
The verbosity can be changed by setting the macro to use
either linux_log or linux_log_verbose in px4_log.h
Signed-off-by: Mark Charlebois <charlebm@gmail.com>