Commit Graph
27 Commits
Author SHA1 Message Date
Mark Charlebois e4a8f32f1b QuRT: Added HRT workqueues as per POSIX
A high rate workqueue is required that acts like an interrupt handler
for a HW timer.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-06-11 18:13:36 -07:00
Mark Charlebois 18304a2a0d POSIX: Fixed px4_getpid() calls from shell context
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>
2015-06-11 11:36:58 -07:00
Mark Charlebois 7bb70313da POSIX: use px4_getpid()
The posix build only has one process so calling getpid() will not
provide the expected result.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-06-08 22:22:00 -07:00
Mark Charlebois 6cb26de74c Multi-uORB support changes - part 1
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>
2015-06-08 22:21:59 -07:00
Mark Charlebois e7abd78051 POSIX: Fixed output for list_topics, list_devices, etc
Removed extra carriage returns in output strings

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-06-08 22:20:17 -07:00
Mark Charlebois db5530e1b5 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-08 22:18:57 -07:00
Mark Charlebois acfd1ea519 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-08 22:15:55 -07:00
Mark Charlebois 122c52c731 POSIX: Fixes for ARMv7 build
uint64_t needs to use PRIu64 in printf.
Clang-3.5 found an error is variable types for a compare.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-06-02 16:55:39 +00:00
Mark Charlebois 325e063f18 POSIX: fixes for gcc
GCC complains about strict prototypes.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-06-02 16:55:39 +00:00
Mark Charlebois af45954690 POSIX: hrt_work_lock.h to hrt_work.h
The header file now contains all hrt workqueue related prototypes.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-06-02 16:55:38 +00:00
Mark Charlebois 6fd612a218 POSIX: fixed function prototype
Function was changed to be void but prototype was not updated

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-06-02 16:55:38 +00:00
Mark Charlebois b4152f3daa POSIX: Fixed output for list_topics, list_devices, etc
Removed extra carriage returns in output strings

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-06-02 16:55:37 +00:00
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
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 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 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 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 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 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 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 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 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