Commit Graph
41 Commits
Author SHA1 Message Date
Mark Charlebois 5e95b83eff POSIX: Fixes for HRT implementation of simulated HW clock polling
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>
2015-06-02 16:55:34 +00:00
Mark Charlebois cced8ed69e POSIX: added hrt_queue for handling fast periodic events
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>
2015-06-02 16:55:33 +00:00
Lorenz Meier 9882b78383 Merge pull request #2248 from mcharleb/gyrosim-fix
Gyrosim: Fixed constant looping
2015-06-02 01:40:49 -07:00
Mark Charlebois ca88251124 Fixes for gcc 4.8
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>
2015-05-29 12:38:51 -07:00
Mark Charlebois 2d85578599 Gyrosim: Fixed constant looping
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>
2015-05-28 11:20:30 -07:00
Lorenz Meier be3551136a Airspeed sim: Use proper constant names 2015-05-27 21:16:59 +02:00
Mark Charlebois 1ca05aaa64 orb_advert_t changed to void * and checks changed to nullptr
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>
2015-05-27 14:42:49 -07:00
Mark Charlebois 180c8b0cb0 Missed another < 0 check
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-05-27 14:41:33 -07:00
Mark Charlebois a734fc96d1 extensive orb_advert_t fixes
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>
2015-05-27 14:41:33 -07:00
Lorenz Meier ee39d72747 Gyro sim: Add ringbuffer namespace 2015-05-25 10:00:52 +02:00
Lorenz Meier e9c2dc563f Baro sim: Add ringbuffer namespace 2015-05-25 10:00:31 +02:00
Lorenz Meier 5c535845ab Airspeedsim: Add ringbuffer namespace 2015-05-25 10:00:11 +02:00
Lorenz Meier 2d090ddde4 Accelsim: Add ringbuffer namespace 2015-05-25 09:59:45 +02:00
Mark Charlebois f1f562a94d POSIX: Fixed orb_advertise failure
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>
2015-05-21 15:35:11 -07:00
Mark Charlebois 062a547d07 POSIX: changes to support posix build on ARMv7
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-05-21 00:43:55 +00:00
Mark Charlebois ffdc9d629c POSIX: Improved logging
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>
2015-05-19 09:19:24 -07:00
Mark Charlebois 791d780bb8 BAROSIM: Fixed error in transfer function
The transfer function would previously return error if the receive
buffer length was 0. This appears to be a valid condition for
requesting a measurmement be taken but no data returned.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-05-18 13:29:20 -07:00
Mark Charlebois 8e346a06fb QuRT: enable uORB, and simulator
uORB, the simulator and simulated devices now run

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-05-13 18:03:08 -07:00
Mark Charlebois 3db5f3bb3b QuRT: toolchain changes
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>
2015-05-12 11:37:28 -07:00
Mark Charlebois a99f916bdf POSIX: Changed px4_debug.h to px4_log.h
Also changed use of printf to PX4_WARN or PX4_INFO in posix and
qurt tests.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-05-11 16:04:39 -07:00
Mark Charlebois 8dfb09418b QuRT: added #include<px4_time.h> to posix unit tests
QuRT does not define usleep and sleep, so they are stubbed out
for now.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-05-07 14:40:31 -07:00
Mark Charlebois 948b47bd33 Removed px4_killall
killall and px4_killall are not used in the codebase so it was removed.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-05-06 16:04:20 -07:00
Mark Charlebois 872e1ebda0 GCC fixes for warnings
GCC was more picky about prototypes for inlines being required.

The generate_listener.py script used incorrect printf formats and
was casting %f params to float, but printf casts all %f params to
double per the spec.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-05-06 11:45:23 -07:00
Mark Charlebois 5299f76706 POSIX: initialize before running script
The initialization functions were called after the script
commands were run causing a deadlock waiting for an
uninitialized semaphore.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-05-06 09:51:31 -07:00
Mark Charlebois e24405d374 POSIX: fixed hrt call and workqueue implementation
The HRT call processing normally happens via HW timer interrupt
handler. Since the POSIX port has no ISR handling, the HP work
queue is used.

Instead of irq_save() and irq_restore() calls to disable/enable
interrupts, a mutex is used to protect each queue.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-05-05 00:27:14 -07:00
Mark Charlebois ed621a6a8d POSIX: Enabled hrt queued work to be run
In STM32, the ISR handler calls hrt_call_invoke(). There is no
interrupt timer inthe POSIX port so a work item is put on the
high priority work queue to expire at the next event (in ticks)
or at the next max delay interval.

Counter wrapping is likely still not handled properly in this code.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-05-04 16:09:00 -07:00
Mark Charlebois 5557ecf3d7 POSIX: Added airspeed simulator
This seems to be a dependency for the system to start up.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-04-30 13:16:03 -07:00
Mark Charlebois a209fdc8ef Added missing lock() unlock() to MuORB
The commented out lock and unlock were determined to be needed and added back.

The unit test for VDev was updated. It showed the race between the poll and a
write that only does a poll_notify().

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-04-29 17:04:30 -07:00
Mark Charlebois c832f4c55c Small fixes for debug macros
Fixed print format for __LINE__ to %d

Fixed if/else that breaks with the debug macro expansion. The if/else
needs to use braces to allow macro expansion.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-04-27 22:28:39 -07:00
Mark Charlebois 09718fa324 Revamped debug macros
Created px4_debug,h to define:

PX4_DBG
PX4_INFO
PX4_WARN
PX4_ERR

These enable OS specific mappings to be made, filtering, etc.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-04-27 21:58:54 -07:00
Mark Charlebois a284a7b6d9 POSIX: added separators between commands run from shell
Output a separator and the command called to make the ouput easier
to read.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-04-27 14:03:23 -07:00
Mark Charlebois 58a33dd26a Added simulated tone_alarm and enabled led for POSIX
Added simulated tone_alarm class and enabled led class for posix build.

The simulator implements the led_init, led_on, led_off, led_toggle calls.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-04-27 14:00:06 -07:00
Mark Charlebois 7fa33d0d2b posix: workqueue uses TICK scaling from px4_defines.h
px4_defines.h defines USEC2TICK(x) and TICKS_PER_USEC.

These are now used and allow tick scaling.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-04-27 13:48:54 -07:00
Mark Charlebois 3c957e57e7 Posix: fixed time scaling for work queues
In work queues, delay is in ticks. Needed to check elapsed time
in ticks not in milliseconds.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-04-27 13:17:28 -07:00
Mark Charlebois 7390f50b67 Posix: cleanup of bad file rename
Deleted obsolete file and fixed renaming of wqueue_start_posix.cpp

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-04-27 12:21:00 -07:00
Mark Charlebois d913ec8dc9 Changed device::px4_device_handle_t to device::file_t
This change allowed the _posix.cpp file changes to be merged
back into the original files.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-04-24 17:49:35 -07:00
Mark Charlebois 3336fce1f4 QuRT and POSIX changes
Partial commit of the changes for QuRT and related changes for POSIX

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-04-24 00:52:44 -07:00
Mark Charlebois 9ec7020e02 Make a local function static
platforms/posix/main.cpp had a local function that wasn't static.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-04-22 08:31:41 -07:00
Mark Charlebois 93dea668dc Posix: make simulated devices always pass self tests
To facilitate testing, the simulated devices always return OK for
self tests.

rc.S was also upated to set CAL_XXXY_ID to the devid so tests pass the
calibration check.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-04-21 23:29:07 -07:00
Mark Charlebois 19162ba5be Posix: Changed PreflightCheck to read Vdev
PreflightCheck was failing because it was trying to read actual
devices instad of virtual devices.

ADCSIM had a LINUXTEST ifdef that was removed.

posix_run.sh was using the wrong path

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-04-21 17:14:52 -07:00
Mark Charlebois f3b5076d70 Linux to posix conversion
Changed "linux" target to "posix". Most of the changes are shared with
QuRT and with OSX. The Linux specific parts are in for i2c which uses
<linux/i2c.h> and <linux/i2c-dev.h>.

There is also a check for __PX4_LINUX in mavlink for a tty ioctl that is
not supported.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-04-21 09:53:09 -07:00