Commit Graph

461 Commits

Author SHA1 Message Date
Matthias Grob 89892d0d17 px4io: discover PWM_MAIN_TRIMx parameters right away 2021-12-01 20:21:26 -05:00
Beat Küng 4ba84d56c9 logger: introduce optional topics
The current practice of adding topics to the default set isn't scalable,
as it affects all setups.
By making sure topics are advertised on init, logger can just discard
topics that don't exist. This does not work for all topics, so topics are
specifically marked as optional. It can be extended to more topics later
on though.

This reduces the list of topics by ~35 on a pixracer configured as quad,
and reduces RAM usage by ~1KB.
2021-11-15 09:02:03 -05:00
Daniel Agar 4247e1320b px4io: allow switching to rate ctrl wq 2021-10-20 09:56:42 -04:00
Beat Küng 8a2b310b83 topic_listener: avoid code generation, use existing metadata at runtime
This reduces flash size for v5 by ~110KB, the topic listener now only adds
about 1.2KB.
2021-10-20 08:10:05 +02:00
Beat Küng f1686b1abf px4io: add dynamic mixing support 2021-10-18 18:45:19 -04:00
Beat Küng 837a1066e0 px4io, pwm_out: update pwm default checking
The defaults changed in the previous commit for per-channel params,
so we make sure that the overall params are still used as long as the
per-channel params are default.
2021-10-18 18:45:19 -04:00
Beat Küng 5f0781b6e9 output modules: add param prefix argument to MixingOutput 2021-10-18 18:45:19 -04:00
Daniel Agar 089c962d92 px4io: moving mixing to FMU side
Using mixers on the IO side had a remote benefit of being able to
override all control surfaces with a radio remote on a fixed wing.
This ended up not being used that much and since the original design
10 years ago (2011) we have been able to convince ourselves that the
overall system stability is at a level where this marginal benefit,
which is not present on multicopters, is not worth the hazzle.

Co-authored-by: Beat Küng <beat-kueng@gmx.net>
Co-authored-by: Daniel Agar <daniel@agar.ca>
2021-09-25 19:15:05 -04:00
David Sidrane f01cab3be1 px4io:Ensure proper lifecycle of registration of cdev 2021-09-24 19:01:54 -04:00
Daniel Agar 70831a8e2c px4io: checkcrc warn on mismatch 2021-09-01 15:16:00 -04:00
Daniel Agar 8434da6f79 px4io: reduce upload retries 5 -> 2 2021-09-01 15:16:00 -04:00
Daniel Agar c6a6403ce2 px4io: increase stack 1500 -> 1536 bytes 2021-08-25 21:32:05 +02:00
murata e33d2141ec px4io: Changing the timeout time description (NFC) 2021-08-01 20:27:25 -04:00
Beat Küng 38ee923658 px4io: switch to events 2021-07-07 21:38:09 -04:00
Daniel Agar 9524e8ec03 drivers/px4io: mirror PWM_MAIN_OUT support 2021-07-05 21:23:04 -04:00
Beat Küng 894ecac8da px4io: ensure pwm params are loaded before any other module starts
The vtol module will read them later on.
2021-07-02 00:53:42 -04:00
David Sidrane 61f80c087a px4io:Fix Type 2021-06-16 17:07:47 +02:00
David Sidrane e7406bbd46 px4io:Use inttypes 2021-06-16 17:07:47 +02:00
David Sidrane 3747d0bc80 px4io:Fix types 2021-06-16 17:07:47 +02:00
Daniel Agar 284375efc3 px4io: only update PWM MAX/MIN/DIS/FAIL/REV once
- Updating PWM params on param change was interfering with VTOL
parameter settings (e.g. PWM_MIN is set by VTOL at init, and
was then overwritten here after an arbitrary param change).
2021-06-03 00:52:05 -04:00
Lorenz Meier aacbc04730 PX4IO: Robustify upgrade process
These changes remove the two code paths to updates (forceupdate and update) and try to reboot and bootload IO independent of its state, wether it is in bootloader mode already, safety switch is off or if it is in "nominal state" (running and safety on). This ensures that there are no conditions where user error or boot sequence can prevent a successful upgrade. The only state where an upgrade will not be done is if the system is fully armed.
2021-02-21 19:56:16 -05:00
Lorenz Meier 4984c19700 PX4 IO: Retry upgrades of IO
This adds robustness to system timing and bad link.
2021-02-20 11:07:53 +01:00
Lorenz Meier c04d23645c IO: Fix reverse mapping
The reverse mapping was off-by-one in the IO driver.
2021-02-13 15:21:10 -05:00
Daniel Agar d1a3590aac PWM: transition PWM_{MIN,MAX,DISARMED,RATE} -> PWM_MAIN 2021-02-01 08:53:33 +01:00
Daniel Agar 318c7e83b3 support up to PWM 14
- generate PWM_MAIN 1-14
 - generate PWM_AUX 1-8
 - generate PWM_EXTRA 1-8
 - px4io and pwm_out directly read configuration parameters
    - only available and active physical outputs are actually shown for configuration
 - overall saves flash despite adding many new parameters
2021-01-30 15:55:53 +01:00
Daniel Agar 75f02d64b6 delete unused PWM_SERVO_SET_SBUS_RATE 2021-01-25 10:55:57 -05:00
Daniel Agar 2b0a047f0c delete unused DSM_BIND_POWER_UP 2021-01-25 10:55:57 -05:00
Daniel Agar 439c573242 delete unused PWM_SERVO_SET_TRIM_PWM 2021-01-25 10:55:57 -05:00
JacobCrabill 8e8497ff77 heater: px4io: Add support for heaters on IO MCU 2021-01-17 12:03:53 +01:00
Daniel Agar 967d35a6b6 rate limit most parameter_update subscriptions
- parameter updates can be quite expensive because they trigger nearly all modules to reload all of their parameters immediately
 - limit modules from updating faster than once per second
2021-01-10 21:09:15 -05:00
Lorenz Meier 2d1551e5bf PX4IO: Acknowledge binding 2020-12-31 13:22:52 +01:00
Lorenz Meier 44bdd5456f PX4IO: Bind if not armed
DSM binding was disabled before if safety was off, which on a lot of multicopters is today the default. The logic is now checking instead for wether the system is armed.
2020-12-31 13:22:52 +01:00
FengShun eac9a6b68b Replace PublicationQueued with Publication to automatically configure ORB_QUEUE_LENGTH 2020-10-26 13:01:13 +01:00
Daniel Agar 27f23ac290 move initial sensor priority to parameters and purge ORB_PRIORITY
- CAL_ACCx_EN -> CAL_ACCx_PRIO
 - CAL_GYROx_EN -> CAL_GYROx_PRIO
 - CAL_MAGx_EN -> CAL_MAGx_PRIO
2020-08-21 10:12:13 -04:00
Daniel Agar 9b12647ac4 px4io: delete broken test and unnecessary limit
- delete broken px4io test and if_test
 - delete px4io limit (a fixed 400 Hz limit was always set at boot)
2020-07-30 10:29:07 -04:00
Daniel Agar 81f57bccb6 px4io: servorail_status -> px4io_status and log all flags 2020-07-21 09:56:13 -04:00
Daniel Agar c6aafed9d0 px4io: only publish safety at 1 Hz or immeidately on change 2020-07-17 17:27:15 -04:00
Daniel Agar 1c0925a189 Hex/Proficnc Cube Orange support
Co-authored-by: Jacob Dahl <dahl.jakejacob@gmail.com>
Co-authored-by: Jacob Crabill <jacob@flyvoly.com>
2020-05-23 18:31:46 -04:00
Daniel Agar 05886e053f mavlink_log_info: always print to console and merge with mavlink_and_console_log_info 2020-05-12 08:53:51 +02:00
Daniel Agar 466b5db36f uORB::Publication improvements and cleanup (#14784)
- create common uORB::PublicationBase
 - uORB::PublicationQueued types are now type aliases
 - ORB_PRIO use enum type everywhere to avoid accidental misuse
 - PX4Accelerometer/PX4Gyroscope/etc driver libs explicitly advertise on construction, unadvertise on destruction. This is a workaround for any potential issues that might appear when accel/gyro cdev and uORB indexing doesn't align.
2020-05-04 11:09:30 -04:00
Matthias Grob 2baa5ca4d7 minor build fixes and ignored warnings for GCC 9 (#14159)
- px4io task_main_trampoline add return
 - iridiumsbd main_loop_helper add return
 - drivers/uavcan ignore Wcast-align, Wdeprecated-copy, and Waddress-of-packed-member for now
 - flashparams ignore Wvla-larger-than
 - test_time fix printf type
2020-04-02 10:24:36 -04:00
Beat Küng 116a094e31 commander: fix broken 'commander arm/disarm' CLI
Regression from https://github.com/PX4/Firmware/pull/13613.

VEHICLE_CMD_COMPONENT_ARM_DISARM from CLI would enter the
ARMING_STATE_IN_AIR_RESTORE logic. This was never intended for disarming
(and leads to state machine transition failures), and IMO it is also not
intended for commands from CLI.
2020-02-20 10:06:07 -05:00
BazookaJoe1900 c78572b471 px4io: fix array regs[] size (#14135)
may cause memory override if _max_controls larger then _max_actuators
2020-02-13 13:01:12 +01:00
Beat Küng 5e3796324c px4io: fix argv index & avoid empty 'unknown argument: ' warning 2020-02-13 03:49:16 -08:00
Daniel Agar de4f594937 DriverFramework purge
The bulk of this change was tightly coupled and needed to be deleted in one pass. Some of the smaller changes were things that broke as a result of the initial purge and subsequently fixed by further eradicating unnecessary platform differences. Finally, I deleted any dead code I came across in the related files I touched while going through everything.

 - DriverFramework (src/lib/DriverFramework submodule) completely removed
 - added dspal submodule in qurt platform (was brought in via DriverFramework)
 - all df wrapper drivers removed
 - all boards using df wrapper drivers updated to use in tree equivalents
 - unused empty arch/board.h on posix and qurt removed
 - unused IOCTLs removed (pub block, priv, etc)
 - Integrator delete methods only used from df wrapper drivers
 - commander: sensor calibration use "NuttX version" everywhere for now
 - sensors: update to px4_{open, read, close} instead of DevMgr wrapper (adc open for analog differential pressure)
 - battery_status: update to px4_{open, read, close} instead of DevMgr wrapper (adc open for analog differential pressure)
 - cdev cleanup conflicting typedefs and names with actual OS (pollevent_t, etc)
 - load_mon and top remove from linux boards (unused)
 - delete unused PX4_MAIN_FUNCTION
 - delete unused getreg32 macro
 - delete unused SIOCDEVPRIVATE define
 - named each platform tasks consistently
 - posix list_devices and list_topics removed (list_files now shows all virtual files)
2020-01-13 14:07:03 -05:00
Daniel Agar 284c9afe32 px4iofirmware delete unused i2c and hx_stream 2019-11-23 18:58:43 -05:00
Daniel Agar 75da6e351b mixer: organize by type 2019-11-22 16:48:10 -05:00
Daniel Agar c8211dee28 drv_mixer.h - delete unused MIXERIOCGETOUTPUTCOUNT 2019-11-22 15:00:25 -05:00
Daniel Agar 79dc676c8f mixer: move MixerGroup out of Mixer hierarchy and delete mixer.h header 2019-11-22 15:00:25 -05:00
Nik Langrind c34b7019a4 Fix mistake in previoust commit, which could the "hil" argument to
be ignored if px4io were to be started with two or more optional arguments
2019-11-19 08:31:31 +01:00