Commit Graph
100 Commits
Author SHA1 Message Date
Beat Küng f748c8d883 fix mavros launch scripts & use non-unified startup scripts
This is to not lose any existing functionality until we have everything
unified.
2018-08-08 21:09:39 +02:00
Beat Küng ec09379813 px4_daemon: fixes for clang-tidy
Also ignore the warning:
error: calling 'system' uses a command processor [cert-env33-c,-warnings-as-errors]
2018-08-08 21:09:39 +02:00
Beat Küng efb202106f bbblue: required changes for posix shell 2018-08-08 21:09:39 +02:00
Beat Küng d480d24a4c fix perf counter: use dprintf instead of printf 2018-08-08 21:09:39 +02:00
Beat Küng b306935de0 module base: use PX4_INFO_RAW instead of printf 2018-08-08 21:09:39 +02:00
Beat Küng 26f11cb9d7 commander: use PX4_INFO for status output 2018-08-08 21:09:39 +02:00
Beat Küng f1dc8f8f48 listener: use PX4_INFO_RAW instead of printf
Ensures that clients will get the output of the listener.
2018-08-08 21:09:39 +02:00
Beat Küng e6d71680ab px4_daemon server: fix packet reading
By reading sizeof(packet), it could have happened that 2 packets at once
were read, and the second one was then ignored.
This makes sure that only one packet at a time is read.

The other 2 changes are for efficiency.
2018-08-08 21:09:39 +02:00
Beat Küng 1f0655302c px4_daemon: fix locking
It was not enough to lock individual accesses to the maps.
For example it could happen that a thread was started and exited very
quickly, before the pthread_t item was inserted into the map, such
that when the cleanup method was called, the thread and pipe fd were not
found (and fd=0=stdin was closed).
2018-08-08 21:09:39 +02:00
Beat Küng 5b171bd614 px4_daemon: fixes for packet length computation
The enum change from uint8_t to an int avoids uninitialized bytes,
which led to valgrind warnings (no error though).
2018-08-08 21:09:39 +02:00
Beat Küng 7359f44835 fix px4_log.c: avoid potential buffer overflow
The buffer length given to snprintf() is unsigned, so we must check for
an overflow after each call.

This happend for very long printf's (module documentation)
2018-08-08 21:09:39 +02:00
Beat Küng d90ac975a7 posix shell: required updates for RPi, bepob, ocpoc, eagle & exxcelsior
- RPi works
- the rest is not tested, and requires a bit more
  (such as uploading the bin/ directory)
2018-08-08 21:09:39 +02:00
Beat Küng 2454ef9240 Tools/check_submodules.sh: remove unnecessary verbose message
This was printed for all submodules.
2018-08-08 21:09:39 +02:00
Beat Küng d05b268d19 posix shell: allow to run multiple instances 2018-08-08 21:09:39 +02:00
Beat Küng c0cac0594e file paths: add PX4_STORAGEDIR & use it where appropriate 2018-08-08 21:09:39 +02:00
Beat Küng 57a85fbc61 cleanup: remove unused files 2018-08-08 21:09:39 +02:00
Beat Küng 7822e5b5c3 posix shell: lots of cleanup and fixes
- move posix-configs/SITL/init/{rcS,10016_iris,6011_typhoon_h480} to ROMFS/px4fmu_common/init.d-posix
  allows for easier unification, only one symlink is required.
  - rcS: add AUTOCNF support. Update scripts to match with behavior of PX4
    master (parameter values, some sitl driver got removed)
- add alias to allow 'set variable value' syntax in scripts to px4-alias.sh
- use px4_getopt
- use separate argument for the test_data directory
- append PATH from within the px4 binary: this simplifies the usage
  w/o the sitl_run.sh script.
- add 'source px4-alias.sh' to all existing sitl startup scripts
- move sitl mixers to ROMFS/px4fmu_common/mixers-sitl
  makes it easier to use existing mixers and sitl-specific ones.
- remove unused rcS_gazebo_delta_wing
2018-08-08 21:09:39 +02:00
Beat Küng 413c09e20e posix main: some cleanup & fixes
- argv[0] can have the form ./px4-commander
- create eeprom directory
- fix fpe signal handler
2018-08-08 21:09:39 +02:00
Beat Küng 6a49d78c4b logger: remove last references to SYS_LOGGER 2018-08-08 21:09:39 +02:00
Beat Küng 81f0b64ad3 gps: add SER_GPS1_BAUD param to configure the baudrate
The default is auto-detect, but some GPS devices might not like that, such
as the Trimble MB-Two.
2018-08-07 02:07:49 +02:00
Beat Küng db9d25505d gps: update submodule (fix sign of heading offset) 2018-08-07 02:07:49 +02:00
Beat Küng e989c80205 replay: fix potential invalid memory access
_subscriptions is a vector that is resized when needed. However there could
still be references to elements in the vector when the resize happens.
These references then become invalid.
Using a vector of pointers fixes that.
2018-08-06 07:15:51 +02:00
Beat Küng e4485fc8cf ekf2 replay: use correct timestamp for attitude publication 2018-08-06 07:15:51 +02:00
Beat Küng a6f93c30d9 Revert "Move px4io firmware update logic block to rc.io."
This reverts commit 0928112a80.
2018-08-03 10:46:12 -04:00
Beat Küng 79ba6b0d39 lsm303d: improve error output 2018-08-02 16:09:36 +02:00
Beat Küng 5437d55518 rc.sensors: try to start ist8310 on PX4FMU_V2
The Pixhack v3 comes with an external IST8310 in the GPS.
2018-08-02 16:09:36 +02:00
Beat Küng 8ef4f12b61 rc.sensors: fix BOARD_FMUV3, it was unset too early
It's used further down again.
2018-08-02 16:09:36 +02:00
Beat Küng bc9c25a376 fmu: fix safety button
- use the orb topic safety to check the safety state, because the actual
  safety state can come from the IO
- fix initialization if circuit breaker is set
2018-08-02 15:48:35 +02:00
Beat Küng 4c572577b2 px4io: unadvertise topics 2018-08-02 15:48:35 +02:00
Beat Küng 4b42cfaa6c simulator_mavlink: improve error output 2018-07-31 11:51:15 +02:00
Beat Küng 2c148f07bd cdev: delete the prev_pollset in unlocked state
Because it uses a semaphore.
2018-07-31 11:49:45 +02:00
Beat Küng 13f2315314 CDev: add DEVICE_POLL_DEBUG macro that removes all poll debug output from the build by default
Reduces 'uorb_tests latency_test' by about 1us
2018-07-30 23:06:32 +02:00
Beat Küng 99fd1f7213 CDev::poll_notify_one: remove checking the semaphore counter
The check is unnecessary. In the worst case the semaphore gets unlocked
twice, but it's not an issue because the waiter is only interested in the
first sem_post(), and the semaphore is then not used anymore.
2018-07-30 23:06:32 +02:00
Beat Küng 72773b75c3 CDev::poll: disable IRQs instead of using an expensive semaphore
poll() is one of the heavily used methods and thus needs to be optimized
as much as possible.

Test on Pixracer: uorb_tests latency_test
Before:
uORB note: ---------------- LATENCY TEST ------------------
INFO  [uorb_tests] mean:     40.4320 us
INFO  [uorb_tests] std dev:   1.3466 us
INFO  [uorb_tests] min:      39 us
INFO  [uorb_tests] max:      57 us
INFO  [uorb_tests] missed topic updates: 0
This Patch:
uORB note: ---------------- LATENCY TEST ------------------
INFO  [uorb_tests] mean:     31.3480 us
INFO  [uorb_tests] std dev:   1.4584 us
INFO  [uorb_tests] min:      30 us
INFO  [uorb_tests] max:      45 us
INFO  [uorb_tests] missed topic updates: 0
2018-07-30 23:06:32 +02:00
Beat Küng fbd553c528 uorb tests: improve & extend latency test output
- min/max
- std dev
- number of missed updates
2018-07-30 23:06:32 +02:00
Beat Küng 00ebffb0dd uorb tests: run at max priority & increase stack size
- running at max priority significantly decreases jitter for the latency
  test, providing more consistent results
- stack size increase is required for the latency test
2018-07-30 23:06:32 +02:00
Beat Küng 1514ec3a5a top: use SCHED_PRIORITY_MAX instead of 255 to specify the priority 2018-07-30 23:06:32 +02:00
Beat Küng 1fb5353a60 rc: add unit test for CRSF RC
Also cleanup other RC unit tests
2018-07-28 15:23:09 +02:00
Beat Küng 6e24bbbaaf fmu: add CRSF RC and Telemetry support
- Telemetry is only enabled on omnibus, since on Pixhawk it seems we cannot
  write to the RC UART due to how the board is wired
- For the Telemetry the UART needs to be opened RW
2018-07-28 15:23:09 +02:00
Beat Küng 04dbd40723 rc lib: add CRSF Crossfire protocol (RC and Telemetry) 2018-07-28 15:23:09 +02:00
Beat Küng 74e4619042 rc lib: cleanup, move structs out of common_rc.h 2018-07-28 15:23:09 +02:00
Beat Küng 388b963dd8 refactor fmu: fix naming convention for raw_rc_count & raw_rc_values 2018-07-28 15:23:09 +02:00
Beat Küng 3816145d59 fmu: fix init & use of _control_subs
0 is a valid file descriptor, init (all) to -1 instead
2018-07-28 15:23:09 +02:00
Beat Küng 49fe19c20f uavcan_main: fix init & use of _control_subs
0 is a valid file descriptor
2018-07-28 15:23:09 +02:00
Beat Küng 442d4410ca pwm_out_sim: cleanup, avoid unnecessary & incorrect init of _control_subs
These need to be set to -1.
2018-07-28 15:23:09 +02:00
Beat Küng 382f989c9d ecl submodule: fix commit hash
The current commit hash points to a deleted branch.
2018-07-26 13:47:51 +02:00
Beat Küng 7753dd4b4e refactor uorb: inline orb_publish_auto
It is a very small core function that needs to be fast.
2018-07-23 22:32:17 +02:00
Beat Küng 875ee794ef sensors: do not advertise topics before we have valid data
Modules generally do not check for a valid timestamp, thus we need to avoid
publishing invalid data.

This is for example problematic in the attitude_estimator_q, if the
system has no mag: it will copy the (invalid) data and then fails to
initialize, as there is no more mag data coming in.
2018-07-23 22:32:17 +02:00
Beat Küng f4fef5efc8 attitude_estimator_q: cleanup output, remove unnecessary topic init 2018-07-23 22:32:17 +02:00
Beat Küng 97fe5f928a mavlink_orb_subscription: remove unneeded checks
not needed anymore after the previous commit
2018-07-23 22:32:17 +02:00
Beat Küng 2fe5e7735a uorb: allow an orb subscription to retrieve data that was published prior to subscribe 2018-07-23 22:32:17 +02:00
Beat Küng 3f615695b6 ROMFS: fix some cmake issues
- every incremental rebuild extended ${config_romfs_files_list}, the
  chached variable was never reset
- cmake -E copy_directory did not remove deleted files

remaining issue: removing a file from the ROMFS & px4_add_romfs_files()
does not trigger the px_romfs_pruner.py COMMANDs to be re-executed.
2018-07-23 18:23:46 +02:00
Beat Küng 3f03288a95 omnibus: add support for Hobbywing XRotor F4 G2
It has an ICM-20602 IMU
2018-07-23 11:04:17 +02:00
Beat Küng 6dda641cc0 omnibus-f4sd defconfig: change USB vendor & product strings to match with the bootloader
This fixes automatic upload. Since ed95dced0f the NuttX string
is used for device detection, but Linux uses the bootloader's USB vendor
and product strings.
So the NuttX strings must match with the ones from the bootloader.
2018-07-18 22:30:45 +02:00
Beat Küng c166ea9ed5 sensors: fix potential busy loop when a gyro driver is stopped
When a gyro driver is stopped, the topic is unadvertised and
orb_group_count() returns a smaller count. This can have the effect, that
we poll on a certain gyro fd, but since _gyro.subscription_count is reduced
we never do the orb_copy for that fd.

This cannot happen when armed. And only someone playing with the shell
can trigger it (sensor failures do not have that effect).
2018-07-18 08:10:13 +02:00
Beat Küng 891a09f488 sensors: make sure to do an orb_copy, even if a gyro is disabled
This makes sure that poll() never returns immediately.
accel & mag are only updated to keep the code in sync.
2018-07-18 08:10:13 +02:00
Beat Küng 28d70f5f79 logger: remove unneeded topics from the default set
Should some of these be of interest to someone, we should create a profile.
2018-07-18 08:10:13 +02:00
Beat Küng e1f2360560 gps: remove unused field _baudrate_changed & _mode_changed 2018-07-16 12:18:37 +02:00
Beat Küng 4d71686ac6 gps: add GPS_YAW_OFFSET param & properly initialize _baudrate 2018-07-16 12:18:37 +02:00
Beat Küng a947ad2506 gps: remove unused code & fix _mode_auto initialization 2018-07-16 12:18:37 +02:00
Beat Küng 43c2970fb9 vehicle_gps_position: add heading field 2018-07-16 12:18:37 +02:00
Beat Küng a8463a5226 gpssim: cleanup (remove unused fields) 2018-07-16 12:18:37 +02:00
Beat Küng 5ae1c658a9 Revert "Add heading to true north to GPS report"
This reverts commit 89e49166fa.
2018-07-16 12:18:37 +02:00
Beat Küng 5e3e486527 px4_posix.h: avoid defining PX4_F_RDONLY as O_RDONLY
- There is an assumption un uORB that PX4_F_RDONLY is not 0.
- But O_RDONLY is 0 on Linux. orb_exists passes 0 to px4_open, which in
  uORB::DeviceNode::open leads to an unnecessary allocation of
  SubscriberData()
- PX4_F_RDONLY is only used in combination with px4_open, never with open()

However even if it was wrong/unexpected, it did not cause any problems,
just the unnecessary allocation.
2018-07-13 11:30:23 +02:00
Beat Küng e1a7472738 MavlinkOrbSubscription::update: improve performance & fix corner case
- reorders operations, such that the most expensive one (orb_copy) is done
  only when really needed.
- corner case: when the topic was not advertised yet, orb_stat() would fail
  and then update() was called, which succeeds for the first advertisement.
  In that case the timestamp was incorrectly set to 0 and true was
  returned.
  The next call would again return true, because the timestamp was updated,
  but the topic data was still the same.

Reduces CPU load by ~2% on a Pixracer.
2018-07-12 21:31:38 +02:00
Beat Küng 060b130128 mavlink: add optional disable_sharing flag to add_orb_subscription
This is a more generic solution for 532a97041, and also enables it for
vehicle_command_ack's.

In addition it avoids using a timestamp for subscription update checking,
because it does not work well together with orb queuing.
2018-07-12 21:31:38 +02:00
Beat Küng 3f0a398a25 Omnibus F4 SD: fix UART4
- do not configure RSSI GPIO pin
- disable serial console on UART4
2018-07-10 19:39:50 +02:00
Beat Küng 93da0416fa frsky_telemetry: add a '-m <mode>' CLI param
Can be used to avoid auto-detection.

Strangely on the Omnibus via UART4, the auto-detection for single-wire
S.Port did not work when connecting via battery (it works via USB) -
S.Port got detected instead.
Might be a board-specific issue.
2018-07-10 19:39:50 +02:00
Beat Küng 58c8c50174 frsky_telemetry: add scanning timeout parameter, and set it to 15s
This frees unused RAM in case frsky telemetry is not connected.
2018-07-08 23:24:17 +02:00
Beat Küng f3292c7741 frsky_telemetry: add S.Port single-wire support
If S.Port is connected via external inverter or an uninverted signal is
used, the UART needs to be put into half-duplex mode.

This can be used to get uninverted S.Port:
https://oscarliang.com/uninverted-sbus-smart-port-frsky-receivers/

It is not needed for the Pixracer FrSky port.
2018-07-08 23:24:17 +02:00
Beat Küng 1feccfcc81 frsky_telemetry: increase stack size by 52 bytes
As indicated in previous logs (268 bytes left).
2018-07-08 23:24:17 +02:00
Beat Küng 898eb95623 frsky_telemetry cleanup: remove err, use px4_getopt 2018-07-08 23:24:17 +02:00
Beat Küng ec137489be px4flow: add documentation for i2c_frame and i2c_integral_frame 2018-07-05 15:23:47 +00:00
Beat Küng 3aa1721450 px4flow: refactor f and f_integral into a class attribute 2018-07-05 15:23:47 +00:00
Beat Küng bb8e653469 mc_att_control: keep integral enabled based on land detector
Previously the rate controller disabled updating the integral below 20%
throttle. This is not ideal for several reasons:
- some racers already hover with 20% throttle.
- for acro it is important to always keep the integral enabled, it has a
  noticeable effect on flight performance.
2018-06-27 09:11:23 +00:00
Beat Küng bf1c11a33c commander: move comment to the right place
It's now the same way as in the ARM logic further down.
2018-06-27 10:41:21 +02:00
Beat Küng 02fc68a53e commander arming: disable stick (dis-)arming when arming switch/button is used
A reason for using switch arming in the first place is that you cannot
accidentally disarm in-air with the sticks during acrobatic flights.

It also adds a low-throttle arming requirement for switch arming.
2018-06-27 10:41:21 +02:00
Beat Küng db2b010630 commander arming: add a grace period of 5 seconds to allow re-arming w/o preflight checks
This changes the arming logic such that the preflight checks don't need
to be satisfied if arming happens < 5 seconds after the last disarming.
This allows to recover from accidental in-air disarming.
2018-06-27 10:41:21 +02:00
Beat Küng 8c3cf0167c commander arming_state_transition: respect fRunPreArmChecks properly
if fRunPreArmChecks was set to false, there were still cases where the
preflight checks could be called. This fixes that.

arming_state_transition() with fRunPreArmChecks=false is only called
when entering & leaving preflight calibration mode.
All other places use fRunPreArmChecks=true, which means there is no change
for these.
2018-06-27 10:41:21 +02:00
Beat Küng 469b5f98e2 commander Preflight::preflightCheck: transition condition_system_sensors_initialized only to true
- this matches the logic in arming_state_transition()
- if Commander::preflight_check was run in armed state and the checks
  failed, disarming was not possible anymore
  (because disarming checks for condition_system_sensors_initialized).
  That is currently not the case, but the existing logic is way too fragile.

Alternative solution: check if armed in Preflight::preflightCheck, and
only transition to false if disarmed (but also respect the re-arming
grace period).
2018-06-27 10:41:21 +02:00
Beat Küng 0ac1ef12c7 gpssim: unadvertise gps topics 2018-06-26 15:51:17 +02:00
Beat Küng ddde968a6f mavlink: allow resetting streams to their default via 'mavlink stream' command 2018-06-25 12:19:56 +02:00
Beat Küng ec15fc333b mavlink: add 'mavlink status streams' command
Displays all enabled streams and their configured rates.
Example output:
instance #1:
        Name                Rate Config (current) [Hz] Message Size (if active) [B]
        HEARTBEAT                       1.00 (1.000)    21
        STATUSTEXT                     20.00 (6.320)
        COMMAND_LONG                  unlimited
        ALTITUDE                        1.00 (0.316)
        ATTITUDE                       25.00 (7.900)    40
        ATTITUDE_TARGET                10.00 (3.160)    49
        ESTIMATOR_STATUS                1.00 (0.316)    44
        EXTENDED_SYS_STATE              1.00 (0.316)    14
        GLOBAL_POSITION_INT            10.00 (3.160)    40
        GPS_RAW_INT                     1.00 (0.316)    62
        HOME_POSITION                   0.50 (0.158)
        RC_CHANNELS                     5.00 (1.580)
        SERVO_OUTPUT_RAW_0              1.00 (0.316)    49
        SYS_STATUS                      5.00 (1.580)    43
        SYSTEM_TIME                     1.00 (0.316)    24
        VFR_HUD                        25.00 (7.900)    32
        WIND_COV                        2.00 (0.632)
2018-06-25 12:19:56 +02:00
Beat Küng 84841236cb mavlink: allow resetting mavlink streams to default via MAV_CMD_SET_MESSAGE_INTERVAL
This implementation does not need more resources.
It's not super efficient in terms of runtime, but it's also not something
that is called often.
2018-06-25 12:19:56 +02:00
Beat Küng 333fd9cf45 mavlink: improve status output
- add datarate
- add UDP remote port
- add partner IP
2018-06-25 12:19:56 +02:00
Beat Küng f59412ba65 mavlink: only enable HIL_ACTUATOR_CONTROLS in hil if link has enough bandwidth
Plus correct return value.
Iridium links are below that.
2018-06-25 12:19:56 +02:00
Beat Küng 4553992760 mavlink: refactor get_client_source_address() to return a reference instead of a pointer 2018-06-25 12:19:56 +02:00
Beat Küng 6a7751496b df_ms5611_wrapper: fix initialization of error_count & device_id 2018-06-20 08:28:33 +02:00
Beat Küng d1343b0ccb calibration_routines: fix 'Command denied during calibration' error message
The uorb subscribe logic got changed for queued topics with
https://github.com/PX4/Firmware/pull/9436, meaning an orb_subscribe will
return past messages as well now.

This lead to an error 'Command denied during calibration' for the previously
received calibration start command.
2018-06-18 15:06:58 +02:00
Beat Küng ff365cad08 rtl: change "RTL: land at home" message from critical to info 2018-06-15 15:53:28 +02:00
Beat Küng 04db56638e ecl: update submodule
contains:
- https://github.com/PX4/ecl/pull/460
- https://github.com/PX4/ecl/pull/462
2018-06-15 15:53:28 +02:00
Beat Küng 229b1274d0 fix camera_trigger gpio: _pins[i] == 0 is valid
Because _pins[i] is set from parameter value - 1
2018-06-14 15:03:39 -04:00
Beat Küng b66f0f36a5 ros tests: add an interactive flag & disable the PX4 shell for ROS tests (#9672) 2018-06-14 12:37:47 -04:00
Beat Küng 036b59f3de posix main: convert c to a char when extending add_string 2018-06-13 16:19:34 +02:00
Beat Küng f241e49ebf voted_sensors_update: initialize _last_magnetometer & _last_airdata 2018-06-13 16:19:34 +02:00
Beat Küng 20f2303e8a test_mixer: fix resource leak (unclosed dp) 2018-06-13 16:19:34 +02:00
Beat Küng 76c94b08f1 PositionControl: use constant references instead of pass-by-value for structs 2018-06-13 16:19:34 +02:00
Beat Küng 5cc450c7cb srf02: fix resource leak (unclosed fd) 2018-06-13 16:19:34 +02:00
Beat Küng ab94bf1d60 batt_smbus: initialize _last_report 2018-06-13 16:19:34 +02:00
Beat Küng 4eda0ed782 posix main shell: fix getchar() return value and check for EOF to avoid busy loop 2018-06-13 16:19:34 +02:00