Beat Küng
08bfeb3dc7
mavlink: fix potential busy loop upon USB disconnect
...
When disconnecting USB poll returns successfully, but the read returns
-1 with ENOTCONN.
In addition this also ensures there's no busy loop when poll returns an
error.
MAVLink continues to work after reconnecting USB.
2020-04-06 12:42:10 -04:00
Beat Küng and Daniel Agar
dfb5b5d7d9
fix param import transition
...
* fix param import transition for MC_DTERM_CUTOFF
The previous implementation did not work, as there was a check for
param_find_no_notification() returning PARAM_INVALID for IMU_DGYRO_CUTOFF,
and therefore would not call param_modify_on_import().
This moves param_modify_on_import() before the check and makes it modify
the bson node directly.
* parameters: fix param import transition when testing is enabled
BUILD_TESTING is used for unit test builds, PX4_TESTING is used to enable additional test material within PX4
Co-authored-by: Daniel Agar <daniel@agar.ca >
2020-04-02 18:41:00 -04:00
Beat Küng
1f60a86d32
fix commander: need to copy all battery states in a cycle
...
Previously if in a cycle only a disconnected battery status updated, the
battery health state would switch to unhealthy during that time.
Fixes intermittent 'Arming denied! Check battery' preflight failures on
v5x with 1 power module connected.
2020-04-02 12:42:00 +02:00
Beat Küng
a556a44a57
i2c_spi_buses: print an error if a driver does not pass the I2C address
2020-03-30 15:55:24 -04:00
Beat Küng
82c7908a2d
fix ist8310: pass I2C address to I2CSPIDriver
...
since it is configurable.
2020-03-30 15:55:24 -04:00
Beat Küng
cc6ae7ad41
fix omnibus/f4sd: bmp280 start
2020-03-30 15:52:41 -04:00
Beat Küng
fc3b497b41
omnibus/f4sd: switch over mpu6000 driver
...
I'm seeing 'mpu6000: FIFO empty: 49 events' increasing, but that is
epxected as there's no DRDY.
2020-03-30 15:52:41 -04:00
Beat Küng
e5dd2e7a19
mag_compensation.py: some minor fixes + indentation
2020-03-27 11:07:50 +01:00
Beat Küng
2b360bfd48
rcS: fixes for SYS_USE_IO=0
...
rc.io is called from 2 places in rc.interface:
- if [ $OUTPUT_MODE = io -o $OUTPUT_MODE = uavcan_esc ]:
- 'set OUTPUT_MODE io' is only set within USE_IO=yes, so removing
the check in rc.io has no effect.
- in case of UAVCAN, we also want the IO for RC, now covered in the next
case.
- Further down ('Start IO for RC input if needed.').
This is intended to start IO for RC only, when fmu is already started.
However the previous check '$USE_IO = yes' in rc.io prevented that.
In addition we don't start rc_input in case of $USE_IO = no.
Fixes no RC on Pixhawk 2 with SYS_USE_IO=0.
2020-03-26 10:33:27 -04:00
Beat Küng
81dc73b752
fmu-v5_optimized: disable bl_update
...
to reduce FLASH usage
2020-03-24 09:46:20 -04:00
Beat Küng
7ea8dff8db
spi: do not deselect other chip-selects
...
And make sure on reset & init everything is deselected.
Reduces CPU load on a pixhawk cube by almost 1%.
2020-03-24 09:46:20 -04:00
Beat Küng
1612f4c2ed
SPI: disable SPI locking where possible
...
It's not possible for buses that run both NuttX and PX4 drivers, e.g.
Pixracer.
Reduces CPU load:
- v5x: 2.5%
- v3 (pixhawk cube): 4.4%
2020-03-24 09:46:20 -04:00
Beat Küng
6a41c9e417
refactor fxos8701cq: use driver base class
2020-03-24 09:46:20 -04:00
Beat Küng
5fa4cd1019
refactor fxas21002c: use driver base class
2020-03-24 09:46:20 -04:00
Beat Küng
b156fe5787
boards: remove deprecated SPI + I2C defines from board_config.h
...
chip-selects are deselected in stm32_spiinitialize()
2020-03-24 09:46:20 -04:00
Beat Küng
f4ab1b8a78
fix px4moduledoc: typo in 'External I2C bus(es)'
2020-03-24 09:46:20 -04:00
Beat Küng
2ca49cc718
differential_pressure drivers: add module subcategory documentation
2020-03-24 09:46:20 -04:00
Beat Küng
f74474dd55
fmuk66-v3: fix spi bus numbering passing to px4_spibus_initialize
...
Fixes an error on bootup ([boot] FAILED to initialize SPI port 0). Other
than that, everything was working.
2020-03-24 09:46:20 -04:00
Beat Küng
04cffce992
refactor aerofc_adc: use driver base class
2020-03-24 09:46:20 -04:00
Beat Küng
842f656143
mtd.cpp: remove use of PX4_I2C_BUS_ONBOARD
2020-03-24 09:46:20 -04:00
Beat Küng
ee49e500e7
refactor ist8308: use driver base class
2020-03-24 09:46:20 -04:00
Beat Küng
030ba24f53
refactor pca9685: use driver base class
2020-03-24 09:46:20 -04:00
Beat Küng
6588dd0861
refactor icm20948: use driver base class
2020-03-24 09:46:20 -04:00
Beat Küng
924f46ee28
refactor icm20608g: use driver base class
2020-03-24 09:46:20 -04:00
Beat Küng
c4a19c8852
refactor icm20689: use driver base class
2020-03-24 09:46:20 -04:00
Beat Küng
1df0fe03d7
refactor mpu6000: use driver base class
2020-03-24 09:46:20 -04:00
Beat Küng
571451942d
refactor mpu9250: use driver base class
2020-03-24 09:46:20 -04:00
Beat Küng
609eafd4cd
refactor l3gd20: use driver base class
2020-03-24 09:46:20 -04:00
Beat Küng
6cf4de9e02
refactor lsm303d: use driver base class
2020-03-24 09:46:20 -04:00
Beat Küng
3423809cd9
refactor ism330dlc: use driver base class
2020-03-24 09:46:20 -04:00
Beat Küng
2d6a9ae1fb
lsm9ds1: cleanup + consistency with other drivers
2020-03-24 09:46:20 -04:00
Beat Küng
00280d55c2
refactor rm3100: use driver base class
2020-03-24 09:46:20 -04:00
Beat Küng
2fa289bbad
lsm9ds1_mag: cleanup + consistency with other drivers
2020-03-24 09:46:20 -04:00
Beat Küng
74db018012
refactor lsm303agr: use driver base class
2020-03-24 09:46:20 -04:00
Beat Küng
4d511868e6
refactor lis3mdl: use driver base class
2020-03-24 09:46:20 -04:00
Beat Küng
785f18ebf8
refactor bmi160: use driver base class
2020-03-24 09:46:20 -04:00
Beat Küng
54da4997ad
refactor bmi088: use driver base class
2020-03-24 09:46:20 -04:00
Beat Küng
aad6fe6f03
refactor bma180: use driver base class
2020-03-24 09:46:20 -04:00
Beat Küng
17761acd49
refactor adis16497: use driver base class
2020-03-24 09:46:20 -04:00
Beat Küng
1f152d7d43
refactor adis16477: use driver base class
2020-03-24 09:46:20 -04:00
Beat Küng
d15fa82841
refactor adis16448: use driver base class
2020-03-24 09:46:20 -04:00
Beat Küng
7626be0485
refactor mpu9250: use driver base class
2020-03-24 09:46:20 -04:00
Beat Küng
6ad5357d1a
SPI+I2C: remove unused defines and printf's
2020-03-24 09:46:20 -04:00
Beat Küng
2f3174abb0
refactor icm20602: use driver base class
2020-03-24 09:46:20 -04:00
Beat Küng
1fe79818d9
fix IntrusiveQueue::remove: several bugs that led to improper state of the queue
...
We also have to set removeNode->next to null, as it is used to test if the
item is in the queue.
2020-03-21 12:00:09 -04:00
Beat Küng
336745f9f7
tfmini: reduce sampling rate from 10kHz to 143Hz
...
10kHz sampling seems excessive, given that the sensor is expected to output
at 100Hz.
Also don't reschedule immediately in case we have not received any data.
2020-03-21 12:00:09 -04:00
Beat Küng
40af5b0fbe
logger: fix initial subscribing to topics
...
write_all_add_logged_msg() requires at least some subscriptions to be added
initially, as this message is used to separate ULog header from data.
2020-03-20 11:21:32 +01:00
Beat Küng
d6bb5b3b9e
i2c spi buses: enforce drivers to set default SPI/I2C bus frequency
...
Not a lot of drivers use the global default, which is somewhat arbitrary.
2020-03-17 23:31:17 -04:00
Beat Küng
8ebde51648
refactor hmc5883: use driver base class
...
Removes the calibration on startup, as these values were overwritten by
the system calibration values anyway.
So the only difference is that if all calibration scales were equal to 1,
the driver startup would have failed.
2020-03-17 23:31:17 -04:00
Beat Küng
8f3ba81c4a
refactor atxxxx: use driver base class
...
and increase update rate to 20Hz
2020-03-17 23:31:17 -04:00
Beat Küng
20db735d77
refactor ak09916: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
47b329cc54
refactor bmm150: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
e4bf535595
refactor bst telemetry: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
fb6ce09dc4
refactor pcf8583: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
bb4ff04caf
refactor irlock: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
1710cd9648
refactor px4flow: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
b6119c71df
refactor paw3902: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
82f92b56db
batt_smbus: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
ec2de33547
lights: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
692d262e0e
refactor voxlpm: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
832ccd262e
refactor ina226: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
d6b9cfa3e2
pga460: fix documentation
2020-03-17 23:31:17 -04:00
Beat Küng
68ef14002a
differential_pressure drivers: allow multiple instances of each driver
...
- the device path needs to be removed, as startup fails if it already
exists
- sdp3x broadcasts a reset on startup, so do it only for the first I2C
address
2020-03-17 23:31:17 -04:00
Beat Küng
3b7b2dc871
differential_pressure sensors: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
0924ff7fcf
refactor vl53lxx: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
83b367f000
refactor teraranger: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
5a26f06f8a
fix sf0x: check if device port is given
...
otherwise we risk dereferencing a null pointer
2020-03-17 23:31:17 -04:00
Beat Küng
bbe15aa61a
refactor srf02: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
a6ddf0e4b9
refactor sf1xx: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
f743585160
refactor mb12xx: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
7e3f40d1c2
refactor mappydot: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
1b1e1ba31f
refactor ll40ls: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
df99555132
refactor ll40ls: split I2C and PWM into separate drivers
...
- there was almost nothing shared
- it will fit better into the updated I2C driver structure
2020-03-17 23:31:17 -04:00
Beat Küng
081ab729aa
refactor lps25h: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
dc5ffb43a3
refactor mpl3115a2: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
d81fedfcfa
refactor lps22hb: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
83a3deb9da
refactor dps310: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
985bb2adc9
refactor bmp388: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
aeadf54a74
refactor bmp280: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
dbb53044ce
refactor ms5611: use driver base class
...
Also: remove device type auto-detection as it will not work with
together with the new SPI board config (which specifies a specific
device type)
2020-03-17 23:31:17 -04:00
Beat Küng
22a38453ab
refactor bmi055: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
969a77f889
refactor mpu6000: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
be0a205438
refactor ist8310: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
3e71914fae
refactor lsm9ds1+lsm9ds1_mag: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
58f386a81c
refactor pmw3910: use driver base class
2020-03-17 23:31:17 -04:00
Beat Küng
2f4080f47b
i2cdetect: remove use of PX4_I2C_BUS_EXPANSION
2020-03-17 23:31:17 -04:00
Beat Küng
971897b9ed
mtd: switch to c++ and use px4_find_spi_bus
2020-03-17 23:31:17 -04:00
Beat Küng
f555fe309c
fmu-v5: change external i2c bus ordering to match with the label
2020-03-17 23:31:17 -04:00
Beat Küng
83b6f6456b
refactor I2CSPIInstance: store running instances in a global linked list
...
instead of a static per-driver array.
Reduces BSS RAM usage by a couple of 100 Bytes (linear increase with num
drivers).
Downsides:
- a bit more runtime overhead
- less isolation, locking required
- a bit more complex
2020-03-17 23:31:17 -04:00
Beat Küng
e7f04109d9
i2c spi init + custom methods: use WorkItemSingleShot
...
Use it for custom methods as well (like reset), and run by default on the
work queue, since they typically access the bus.
2020-03-17 23:31:17 -04:00
Beat Küng
8c41025565
px4_work_queue: add WorkItemSingleShot
...
To run a specific method on a work queue and wait for it to return.
2020-03-17 23:31:17 -04:00
Beat Küng
87cd20180c
i2c spi: add unittests for BusCLIArguments
2020-03-17 23:31:17 -04:00
Beat Küng
134413233a
i2c spi: extend BusCLIArguments to handle common driver arguments
2020-03-17 23:31:17 -04:00
Beat Küng
d1f5b23a5a
module docs: add PRINT_MODULE_USAGE_PARAMS_I2C_{SPI_DRIVER,ADDRESS}
...
For SPI/I2C driver default options
2020-03-17 23:31:17 -04:00
Beat Küng
f851f65f8d
i2c spi: add type to I2CSPIInstance
...
Needed to distinguish runtime instance types of the same driver (e.g.
bmi055 accel vs gyro).
2020-03-17 23:31:17 -04:00
Beat Küng
179c89b6bd
board configs: extend board_dma_map.h with a table
2020-03-11 22:08:37 -04:00
Beat Küng
335623e11d
SPI config: use enum to specify bus
2020-03-10 10:11:43 -04:00
Beat Küng
37846a177c
omnibusf4sd: disable landing_target_estimator
...
to reduce FLASH size
2020-03-10 10:11:43 -04:00
Beat Küng
e627fed117
fmu-v2: disable perf command and some airframes
...
to reduce FLASH size
2020-03-10 10:11:43 -04:00
Beat Küng
a2b2605443
param: fix param_get_cplusplus type check
2020-03-10 10:11:43 -04:00