Simulator listens for UDP input data at port 9876.
Data is for now comma separated. Not yet connected to the various sim
classes: accelsim, gyrosim, magsim.
Barometer measurements not yet supported.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
px4_task_t is negative for failure conditions. It was set mistakenly to
pthread_t (which is unsigned) for LInux.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
Converted px4_linux_tasks to C++ so the task struct can use a
string. Sometimes the name string was in the stack of the calling
function and goes out of scope.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
The name of the app was adc but should have been adcsim.
Added a barometer simulator.
This will allow ms56711_linux to depend on real devices and not
simulation.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
GCC 4.8 and higher implement 16 byte static data alignment on 64-bit.
This means that the 24-byte param_info_s variables are 16 byte aligned
by GCC and that messes up the assumption that the address of the second
parameter is at ¶m[0]+sizeof(param[0]).
When compiled with clang it is true, with gcc is is not true.
See https://llvm.org/bugs/show_bug.cgi?format=multiple&id=18006
The fix is needed for GCC >=4.8 only. Clang works fine without this.
Added __attribute__((aligned(16))) to first member of param_info_s.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
This is a bug and is unsafe. I am not going to change the code but
it needs to be changed to a cast to int or a <= as it is unsafe to
check for equality with 0.0F.
Disabled warning for GCC 4.9 for now.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
The list_tasks and list_devices commands will show
lists of running px4 threads and created virtual device nodes.
The list_builtins command was removes and the list of commands
will be shown if return is pressed.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
The MS5611_SIM class is supposed to simulate data from a real
ms5611. An externl simulator could provide an interface to
call to get data that would be returned from a transfer() call.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
The getopt command uses global variables and is not thread safe.
Created a minimal px4_getopt version that supports options with
or without an arg, and random placement of options on the command line.
This version modifies the order of the args in argv as does the
POSIX version of getopt.
This assumes that argv[0] is the program name. Nuttx may not support
that properly in task_spawn.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
The simulator satisfies the dependencies for an accelerometer
being present.
The accel code compiles but is not fully functional.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
The simulated device satisfies the factory pattern used by
MS5611 to create a specific I2C or SPI device instance.
For now the functions just return true, but should/could
return simulated data.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
I have not been able to unravel why nullptr is passed as the device
path to the constructor of ms5611_i2c.
This crashes the VDev code as it expects to create a virtual driver
with the device path passed as devname. It causes VDev to do a
strncmp with null.
Using /vdev/ms5611_i2c as the name for the now.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
The command shell was spewing debug infor about the command and
parameters. Removed the debug output.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
If PX4_I2C_SIMULATE is set to 1, then the actual I2C device will
not be opened and all transfers will succeed.
If PX4_I2C_SIMULATE is false and transfer() is called, then the
appropriate ioctl is make on the actual device.
if I2C::ioctl is called via px4_ioctl() then the command fails and
a warning is printed to use I2C::transfer
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
The parameter is not present in the linux implementation so removed
the documentation for the parameter.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
To avoid confusion when a real device and a virtual device is
being used, changed CDev to VDev for Linux.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
Added PX4_ISFINITE(x) to px4_defines.h to handle the differences on
NuttX and Linux.
This change also picked up some file renaming for virtual character devices
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
px4_errx kills the process, so if possible we want to end the thread
but not the process. Using warnx and return exits gracefully.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
The build will now fail if clang is not found. To force the use
of GCC, use:
make USE_GCC=1
The toolchain makefile was modified so it no longer checks for
various versions of clang if USE_GCC=1 is passed.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
__param_start and __param end need to be 8 byte aligned on
64bit machines. Changed linker script to 8 byte align __param
section.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
Disabled gcc warnings that are tripped by Eigen.
Removed signal code that is not needed in Linux port and was
causing gcc warnings.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
PX4 uses NuttX data structures throughout so those data structures
were preserved and used to implement high and low priority queues.
A unit test for the work queues was added.
The polling rate of the queues are set in px4_config.h in
CONFIG_SCHED_WORKPERIOD. The units are milliseconds.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>