Commit Graph

693 Commits

Author SHA1 Message Date
Beat Küng 825d754036 orb nuttx: add irqsave() guard around 64bit timestamp readout 2016-04-29 11:15:16 +02:00
Beat Küng 1ce5d795be orb: move SmartLock into global space and use it also for NuttX 2016-04-29 11:15:16 +02:00
Beat Küng 843e54f554 orb DeviceMaster posix: make destructor virtual 2016-04-29 11:15:15 +02:00
Beat Küng c6da90ac63 orb nuttx: fix threadding issue in uORB::DeviceNode::write
same issue as in posix code: 64bit values are not atomic in general.
2016-04-29 11:15:15 +02:00
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 aacfd8d553 orb: add some comments about locking 2016-04-29 11:15:15 +02:00
Beat Küng 5cf78da7d7 orb uORB::DeviceMaster::_flavor: make it const, it's never changed 2016-04-29 11:15:15 +02:00
Beat Küng c61a5acd59 orb DeviceNode::filp_to_sd: make this method static
Makes it easier to see that no class members are accessed
2016-04-29 11:15:15 +02:00
Beat Küng 1a57488ac6 orb: add a separate uORB::Manager::initialize() method
This fixes a race condition: uORB::Manager::get_instance() is used in a
multi-thread context, but the singleton initialization was not thread-safe.
Further, this avoids having to check for nullptr every time the singleton
is accessed.

uORB::Manager::initialize() is called when uorb is started. No one else
accesses the singleton before that point, because it is only used in the
orb_* methods, and in muorb. Both require uorb to be started already when
they are used.
2016-04-29 11:15:15 +02:00
Beat Küng 1827f78ab7 orb unit tests: use orb_unadvertise & create a separate test for it
Now 'uorb test' can be called multiple times.
2016-04-29 09:31:08 +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 acc40c8217 orb unittest: increase waiting time so that test does not fail on slow devices
This test failed on the pixracer because the subscriber thread was too slow
and thus orb messages got lost. This behavior is expected, but the test
should not fail because of that, so we increase the sleeping time.
2016-04-25 13:35:41 +02:00
Beat Küng 5cf351f585 orb: add gps_inject_data message & publish from mavlink 2016-04-25 09:48:24 +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 8fa18f412a uorb: add unit test that currently fails (simulation of a queue with a single topic)
This fails both on NuttX & Linux
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 934207b518 uORB: merge the files uORBManager_{nuttx,posix}.cpp, largely the same code 2016-04-19 11:12:35 +02:00
Beat Küng c598429547 uORB doc: remove redundant doc & update existing one (describe the _multi methods) 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
Beat Küng 9c360e9f88 uORB: fix node_open: *instance is read even though it's an output parameter
This fixes a subtle bug: the instance parameter of orb_advertise is an output
parameter and thus its value can be random. However in node_open this value
is accessed and thus the open(...) call could succeed even though it should
not. This can happen for example if a second advertiser of a topic calls
orb_advertise_multi with *instance=0.

The existing implementation worked only because *instance was initialized
with -1 in most cases.
2016-04-19 11:12:35 +02:00
Lorenz Meier 1da25db617 Add ADSB transponder report 2016-04-17 17:56:39 +02:00
James Goppert d45e5ca50e Added control state subscription. 2016-04-14 17:41:08 -04:00
James Goppert 967e4dd127 Modified cmake to use STACK_MAX and STACK_MAIN 2016-04-14 13:36:36 -04:00
Julian Oes 5ca5af5fcd commander: take main_state out of vehicle_status
This state is only commander internal. Therefore it doesn't need to be
in vehicle_status. Instead it is now in the commander_state message.
2016-04-11 18:01:48 +02:00
Jimmy Johnson bbc8eaefd7 Adding new follow target navigation and main states. New follow target
topic added. New follow fsm added to the navigator
2016-03-27 12:10:57 +02:00
Julian Oes 2d4179a35b mavlink: refactor mavlink_log
This moves the mavlink_log interface from ioctl to uORB and enables the
mavlink statusmessage output for Snapdragon. The API changes will lead
to changes in all modules that are using it.
2016-03-24 13:09:16 +01:00
Julian Oes 1b5210ca13 sensors/calibration: use params in DF wrappers
Instead of using a uORB topic with the calibration values published in
sensors and consumed by the DriverFramework driver wrappers, let's just
use the the params directly. This is quite a rough change and needs
definitely some cleanup and refactoring.
2016-03-24 13:08:31 +01:00
Julian Oes f24b2a701f sensors: first part of a calibration refactor
This adds uORB messages to publish calibration data by sensors which is
then consumed by the sensors. Currently this is only used on Snapdragon
and guarded by QURT ifdefs.
2016-03-24 13:08:30 +01:00
Nicolas 6ac641956a added posix and qurt apps to enable remote execution of shell commands on qurt side from posix shell
commands are sent via muOrb to qurt, where they are executed and printed (i.e. visibile on mini-dm)
2016-03-18 17:23:51 +01:00
tumbili e0a489a749 added ekf2 replay message 2016-02-27 11:51:05 +01:00
Julian Oes 2dd2c9143a uORB: astyle 2016-02-19 16:59:48 +01:00
Julian Oes e8402f0f78 uORB: fix off-by-one bug in topic count 2016-02-19 16:59:47 +01:00
Julian Oes 8fd4b80eed uORB: improve console output and status 2016-02-19 16:59:46 +01: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
Roman 67eed88767 added message for ekf2 innovations message 2016-01-22 14:24:36 +01:00
Andreas Antener e8e81650dc implemented command ACK 2015-12-28 15:21:50 +01:00
Lorenz Meier 73394acc68 Fix uORB auto publication 2015-12-24 15:46:00 +01:00
Lorenz Meier fd01d565fe Fix code style / typos in uORB 2015-12-24 10:31:06 +01:00
Lorenz Meier 36a556d107 Modify uORB API to allow cleaner in-app use 2015-12-24 10:30:48 +01:00
Lorenz Meier f0a4979da6 Merged master into driver_framework 2015-12-01 12:34:02 +01:00
Erik de Castro Lopo 4f7ab6f4f3 uORBManager: Make orb_check fail safely
The `orb_check` function takes a pointer to a `bool` which it then passes
to `px4_ioctl`. However, if the call to `px4_ioctl` fails, the bool
doesn't get updated (neither set nor cleared). Therefore, in `orb_check`
we explicitly set the bool to `false` before passing the pointer to
`px4_ioctl`.
2015-11-26 15:42:09 +11:00
tumbili 0a0a074194 use virtual attitude setpoint
Conflicts:
	src/modules/vtol_att_control/tailsitter.cpp
	src/modules/vtol_att_control/tiltrotor.cpp
	src/modules/vtol_att_control/vtol_att_control_main.cpp
	src/modules/vtol_att_control/vtol_att_control_main.h
	src/modules/vtol_att_control/vtol_type.h
2015-11-25 13:28:22 +01:00
Lorenz Meier d094a8f7bf uORB sub: Do not call orb_set_interval with zero 2015-11-22 13:59:24 +01:00