Commit Graph

24 Commits

Author SHA1 Message Date
Beat Küng 44012be8b6 orb posix: fix multi-threading issues
in detail:
- in the write method: the following are not necessarily atomic operations:
 	_last_update = hrt_absolute_time();
 	_generation++;
- appears_updated() was called with a lock held in some cases, but not
  in ioctl
- use the SmartLock class, so that unlock() is not needed before every
  return call. Makes it less error prone
2016-04-29 11:15:15 +02:00
Beat Küng 9da537c092 uorb: add uorb_unadvertise method
This is necessary when using multiple instances of a topic. However it does
not free the underlying resources, as it is assumed they will be used again
at a later point.
2016-04-29 09:31:08 +02:00
Beat Küng 80e05dd3a3 orb: fix memory leaks, forgotten unlock & wrong exit condition in advertisement
How can someone just add a FIXME for such a simple case?!
2016-04-19 11:12:36 +02:00
Beat Küng fdc10d212b orb: fix when orb_subscribe_multi is called before orb_advertise_multi
This fixes the previously introduced unit test. It fixes the case where
orb_subscribe_multi is called multiple times with different instances,
and no publisher advertised the topic yet. In this case all subscribers
got the same instance 0.
2016-04-19 11:12:36 +02:00
Beat Küng 9041b7e16d fix formatting style for uORB 2016-04-19 11:12:35 +02:00
Beat Küng e9019582cc uORB::DeviceMaster::ioctl: avoid operator[], since we already have the iterator
In the existing implementation, the map had to be searched twice.
2016-04-19 11:12:35 +02:00
Mark Charlebois f5211030dc Changes to improve performance
The work queue processing was causing too much overhead so a more
efficient check was implemented.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2016-02-19 16:59:45 +01:00
Mark Charlebois 3dbb4fb34f Backed out change to uORBDevices_posix.cpp
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2016-02-19 16:59:44 +01:00
Mark Charlebois 014f15d8b0 Rebase changes on upstream master
This brings in many of the changes from the PX4 fork on ATLFLight.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2016-02-19 16:59:43 +01:00
Mark Charlebois 9516e2559a Changes to improve performance
The work queue processing was causing too much overhead so a more
efficient check was implemented.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2016-02-19 16:59:43 +01:00
Mark Charlebois fa4434ad96 Backed out change to uORBDevices_posix.cpp
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2016-02-19 16:59:42 +01:00
Mark Charlebois 9f3bf8e9f4 Rebase changes on upstream master
This brings in many of the changes from the PX4 fork on ATLFLight.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2016-02-19 16:59:41 +01:00
Lorenz Meier 15e7b19991 uORB: Block on simulation delay for orb_check() calls as well 2016-02-05 16:36:43 +01:00
Mark Charlebois 6763039980 Code cleanup - Whitespace changes
These are only whitespace changes

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-07-01 09:10:30 -07:00
Mark Charlebois 14bf8bb277 POSIX: Critical fix for vdev_posix
Last fix for vdev_posix.cpp introduced a sleep from within
a HRT work item callback which blocks the HRT queue.

The code in uORBDevices_posix.cpp that handles message
throttling was commented out for posix. The code was re-enabled
and now seems to work.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-06-30 12:08:42 -07:00
Ban Siesta 3489c3de1c uORBDevices_posix: copied over fixes from uORBDevices_nuttx 2015-06-15 18:34:52 +02:00
Ban Siesta fee8449de3 uORBDevices: astyle 2015-06-15 18:34:51 +02:00
Mark Charlebois 4d28126e0a Nuttx: remove use of std::string, std::map, std::set
Nuttx complains about an unresolved _impure_ptr at link time.
This is a known issue when using STL templates in NuttX on ARM.

Created new ORBMap and ORBSet classes for NuttX.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-06-09 18:56:28 -07:00
Mark Charlebois cb231e89f6 QuRT: Changes to enable qurt target to build
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>
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 a452478ef9 More fixups for orb_advert_t changed to void *
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-05-27 14:42:49 -07:00
Mark Charlebois b990d9fa7e Missed a check for < 0
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-05-27 14:41:33 -07:00
Mark Charlebois eaef0db7d6 Logging fixes and enhancements
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>
2015-05-19 11:53:19 -07:00
Mark Charlebois e33a164ddb uORB: Major refactoring
uORB was refactored in order to support the MuORB changes required
for QURT. Those changes wil be added in a subsequent commit.

The files are split out by posix and nuttx so the changes are visible.
When this has been tested, the files can be re-merged and re-tested.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2015-05-05 10:52:15 -07:00