Commit Graph
59 Commits
Author SHA1 Message Date
Beat Küng e24bef1f70 fix AttPosEKF::FuseOptFlow: move fuse block into 'if (fuseOptFlowData)' block
if fuseOptFlowData == false, then K_LOS was not initialized, but it was
accessed in the next fuse block to update states variable.
2016-05-03 17:34:42 +02:00
Beat Küng 27d821ac9f fix position_estimator_inav_main: put terrain_estimator on the stack
This fixes a memory leak
2016-05-03 17:34:42 +02:00
Beat Küng 44a0981c14 fix px4_task_spawn_cmd: unlock mutex if pthread_create fails 2016-05-03 17:34:42 +02:00
Beat Küng 99a682e7a7 fix px4_task_spawn_cmd: memory leak, if one of the pthread_* calls fails 2016-05-03 17:34:42 +02:00
Beat Küng c942266aa6 fix airspeedsim: add missing return 2016-05-03 17:34:41 +02:00
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 4269db73a0 refactor semaphore: move into separate file 2016-04-29 11:15:15 +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 9a0cff2a00 vdev: add a SmartLock class that automatically unlocks when going out of scope 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 b855d76f28 fix gps: subscribe to topics in the gps thread instead of the shell thread
NuttX does not inherit file descriptors when creating new tasks.
2016-04-25 13:35:41 +02:00
Beat Küng 58a7db51c3 gps: add RTCM message rate to the 'gps status' command 2016-04-25 13:35:41 +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 afefa4d2a0 gps: use a max poll timeout of 50ms to check for orb msgs more often
Before this, I measured a max time spent in poll of 197ms. By checking at
least every 50ms we make sure to not lose any orb messages.
2016-04-25 09:48:24 +02:00
Beat Küng f62324c8a6 mavlink_receiver.cpp: use sizeof(gps_inject_data_topic.data) instead of hardcoded size 2016-04-25 09:48:24 +02:00
Beat Küng 6029551c63 gps & mavlink receiver: use C arrays instead of std::array<> 2016-04-25 09:48:24 +02:00
Beat Küng 4cf08ba580 gps handleInjectDataTopic: repeatedly check for new orb messages
Without that there were still lost messages, now it's all fine (tested
under Linux)
2016-04-25 09:48:24 +02:00
Beat Küng c8f2a7ea02 update gps submodule (fix coding style) 2016-04-25 09:48:24 +02:00
Beat Küng 1085f33f88 gps: remove the old driver files 2016-04-25 09:48:24 +02:00
Beat Küng 7ef718912a drv_gps.h: cleanup the file, remove unneeded stuff 2016-04-25 09:48:24 +02:00
Beat Küng 1013ae7d49 gps: major restructuring & extension of ubx driver: use a submodule for gps drivers
The gps drivers are now in a platform-independent submodule because they
are used in QGroundControl as well
2016-04-25 09:48:24 +02:00
Beat Küng b427f5c90d mavlink_receiver.cpp: fix coding style 2016-04-25 09:48:24 +02:00
Beat Küng 5b684a77f4 mavlink_receiver.cpp: remove __BEGIN_DECLS, __END_DECLS
This is the wrong usage of the macros and not needed at this place
2016-04-25 09:48:24 +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
Beat Küng 9259406a29 generate_listener.py: add a timeout of 2 seconds
abort if within 2s there is no new message published
2016-04-15 15:02:26 +02:00
Beat Küng 1269dfbc43 generate_listener.py: fix listener command
the loop variable i was increased even if no topic was updated. This means
less messages are outputed than specified.
2016-04-15 14:29:35 +02:00
Beat Küng dde7907da4 ubx gps driver: configure both USB & UART interfaces 2016-04-11 11:23:01 +02:00
Beat Küng 8c64e2b801 gps driver: fix 'gps stop' error 2016-04-11 11:23:01 +02:00
Beat Küng 0c966dc923 fix mtk+ubx gps driver: use px4_clock_settime instead of clock_settime 2016-04-11 11:23:01 +02:00
Beat Küng c495266c79 ubx gps driver: remove variable length member 'raw' from union
this causes only problems and is not supported by ANSI C. error caused:
fatal error: field '_buf' with variable sized type 'ubx_buf_t' not at the end of a struct or class is a GNU extension
2016-04-11 11:23:01 +02:00
Beat Küng 215aa78f30 fix coding style for gps drivers 2016-04-11 11:23:01 +02:00
Beat Küng 851340eccc ubx gps driver: add error handling when write(...) fails
this also fixes a compiler warning
2016-04-11 11:23:01 +02:00
Beat Küng 95c7534712 ashtech gps: fix compiler warning in configure
the warning is:
error: ignoring return value of ‘ssize_t write(int, const void*, size_t)’, declared with attribute warn_unused_result [-Werror=unused-result]
2016-04-11 11:23:01 +02:00
Beat Küng 21f403e12b gps: make sure the gps module compiles for POSIX & add it to the posix_sitl_default cmake
- Note that the simulator still uses gpssim by default
- now the gps module can be used in the SITL. this makes it possible to test
  the real gps HW under POSIX
  additional steps needed to use it:
  - in the rcS_jmavsim_iris, make sure to start the gps instead of gpssim:
    gps start -d /dev/ttyACM0 -s
  - disable the mavlink serial connection in simulator_mavlink.cpp,
    openUart(PIXHAWK_DEVICE, 115200);
- this also fixes a memory leak in the gps module
2016-04-11 11:23:01 +02:00
Beat Küng b724847154 ack: add .ackrc to ignore the Documentation directory
when using ack to search the code we want to avoid matches in the doc html
files
2016-04-11 11:23:01 +02:00
Beat Küng b3ed8b70d2 systemlib scheduling_priorities: include the more generic px4_tasks.h
this makes sure the header can also be used under POSIX
2016-04-11 11:23:01 +02:00
Beat Küng ec819737c1 systemlib: make err() & errx() work for POSIX 2016-04-11 11:23:01 +02:00
Beat Küng 458feb0a44 fix gpssim: properly handle the case where gpssim is not running 2016-04-11 11:23:01 +02:00
Beat Küng 77cda58d73 fix ashtech gps: _satellite_info can be nullptr 2016-04-11 11:23:01 +02:00
Beat Küng 7ff80463be fix completely wrong file permissions for log files & mavlink ftp (new mode 666) 2016-04-11 11:23:01 +02:00
Beat Küng d7ca0b1139 hrt_absolute_time: add comment, that time is in us 2016-04-11 11:23:00 +02:00
Beat Küng a12c79a115 romfs mixer files: remove executable bit of file permission 2016-04-11 11:23:00 +02:00
Beat Küng cf48f9ff12 doc: rename the README -> doxygen.README & remove reference to qgroundcontrol 2016-04-11 11:23:00 +02:00