mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-08-19 12:00:35 +08:00
Compare commits
64 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f23740a3c5 | |||
| 38af93085b | |||
| 64e00c41d4 | |||
| c8f2a29d67 | |||
| a5f58d321e | |||
| 7d7d707db9 | |||
| 28c34a0484 | |||
| a069a47d50 | |||
| a4040f7afd | |||
| f68ae39840 | |||
| 89974c46b9 | |||
| e29759d877 | |||
| 2c8a92c628 | |||
| 47fcdb1fdb | |||
| 5894f302b5 | |||
| 5cfe30fa2e | |||
| 2e0286e6bb | |||
| 0029a75ab0 | |||
| d2e931858d | |||
| 9686c81f7d | |||
| 88521b0145 | |||
| 199b5e7d48 | |||
| 9184038359 | |||
| 9894598b63 | |||
| 9312c772f1 | |||
| 764af19da4 | |||
| 9d02851893 | |||
| 90fe4b7a54 | |||
| 6d74b390d9 | |||
| d88f9353e8 | |||
| f7c4034f3c | |||
| 0ce4eae314 | |||
| 3c5bf497a3 | |||
| a6431ab8f0 | |||
| 019eaf7038 | |||
| dcf69144cb | |||
| 2cfe08b3b1 | |||
| 2d680dfd1a | |||
| 89f828fba7 | |||
| 17f5df2d3e | |||
| f6ced71d26 | |||
| 0f60e7debf | |||
| 064a602962 | |||
| 5ad8b84dec | |||
| ebb657bcf4 | |||
| 3e4031cf0f | |||
| 43bc6db99e | |||
| 298a8c4637 | |||
| 60a212f717 | |||
| c6098ef3dd | |||
| 8eca35111e | |||
| 72b1db4a63 | |||
| 43a04c9bca | |||
| ecc2ca7f98 | |||
| d59d16a6cd | |||
| ea29b45282 | |||
| 3fba7288af | |||
| eb69f15d3a | |||
| 37099f85b9 | |||
| e9b9176ce2 | |||
| ce6147f570 | |||
| 25c10eb124 | |||
| acdcc35392 | |||
| 6133ef0d63 |
@@ -410,10 +410,8 @@ pipeline {
|
||||
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "sd_bench -u -v"'
|
||||
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "sd_stress"'
|
||||
|
||||
// test dataman (stop mavlink & navigator first)
|
||||
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "mavlink stop-all"'
|
||||
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "navigator stop"'
|
||||
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "tests dataman" || true'
|
||||
// test dataman
|
||||
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "tests dataman"'
|
||||
|
||||
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "tests file" || true'
|
||||
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "uorb_tests"'
|
||||
@@ -497,6 +495,9 @@ pipeline {
|
||||
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "work_queue status"'
|
||||
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "uorb_tests"'
|
||||
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "uorb_tests latency_test" || true'
|
||||
|
||||
// test dataman
|
||||
sh './Tools/HIL/run_nsh_cmd.py --device `find /dev/serial -name *usb-*` --cmd "tests dataman"'
|
||||
}
|
||||
}
|
||||
stage("status") {
|
||||
|
||||
@@ -15,10 +15,10 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
config:
|
||||
- {latitude: "59.617693", longitude: "-151.145316", altitude: "48", build_type: "RelWithDebInfo", model: "iris" } # Alaska
|
||||
- {latitude: "-38.071235", longitude: "145.281220", altitude: "31", build_type: "AddressSanitizer", model: "standard_vtol" } # Australia
|
||||
- {latitude: "29.660316", longitude: "-82.316658", altitude: "30", build_type: "RelWithDebInfo", model: "tailsitter" } # Florida
|
||||
- {latitude: "47.397742", longitude: "8.545594", altitude: "488", build_type: "Coverage", model: "standard_vtol" } # Zurich
|
||||
- {model: "iris", latitude: "59.617693", longitude: "-151.145316", altitude: "48", build_type: "RelWithDebInfo" } # Alaska
|
||||
- {model: "standard_vtol", latitude: "-38.071235", longitude: "145.281220", altitude: "31", build_type: "AddressSanitizer" } # Australia
|
||||
- {model: "tailsitter" , latitude: "29.660316", longitude: "-82.316658", altitude: "30", build_type: "RelWithDebInfo" } # Florida
|
||||
- {model: "standard_vtol", latitude: "47.397742", longitude: "8.545594", altitude: "488", build_type: "Coverage" } # Zurich
|
||||
|
||||
container:
|
||||
image: px4io/px4-dev-simulation-focal:2021-09-08
|
||||
|
||||
@@ -477,6 +477,12 @@ else
|
||||
rc_input start $RC_INPUT_ARGS
|
||||
fi
|
||||
|
||||
# PPS capture driver (before pwm_out)
|
||||
if param greater -s PPS_CAP_ENABLE 0
|
||||
then
|
||||
pps_capture start
|
||||
fi
|
||||
|
||||
# Camera capture driver (before pwm_out)
|
||||
if param greater -s CAM_CAP_FBACK 0
|
||||
then
|
||||
|
||||
@@ -92,6 +92,7 @@ pca9685,CONFIG_DRIVERS_PCA9685=y
|
||||
pca9685_pwm_out,CONFIG_DRIVERS_PCA9685_PWM_OUT=y
|
||||
power_monitor/ina226,CONFIG_DRIVERS_POWER_MONITOR_INA226=y
|
||||
power_monitor/voxlpm,CONFIG_DRIVERS_POWER_MONITOR_VOXLPM=y
|
||||
pps_capture,CONFIG_DRIVERS_PPS_CAPTURE=y
|
||||
protocol_splitter,CONFIG_DRIVERS_PROTOCOL_SPLITTER=y
|
||||
pwm_input,CONFIG_DRIVERS_PWM_INPUT=y
|
||||
pwm_out_sim,CONFIG_DRIVERS_PWM_OUT_SIM=y
|
||||
|
||||
@@ -111,7 +111,7 @@ def parse_yaml_parameters_config(yaml_config, ethernet_supported):
|
||||
for key in param['values']:
|
||||
tags += '\n * @value {:} {:}'.format(key, param['values'][key])
|
||||
elif param['type'] == 'boolean':
|
||||
param_type = 'INT32'
|
||||
param_type = 'BOOL'
|
||||
tags += '\n * @boolean'
|
||||
elif param['type'] == 'int32':
|
||||
param_type = 'INT32'
|
||||
@@ -136,9 +136,6 @@ def parse_yaml_parameters_config(yaml_config, ethernet_supported):
|
||||
else:
|
||||
default_value = param['default']
|
||||
|
||||
if type(default_value) == bool:
|
||||
default_value = int(default_value)
|
||||
|
||||
# output the existing C-style format
|
||||
ret += '''
|
||||
/**
|
||||
|
||||
@@ -42,6 +42,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0030
|
||||
CONFIG_CDCACM_PRODUCTSTR="MindPX FMU v2.x"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -47,6 +47,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0061
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 ATL Mantis-EDU"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -14,6 +14,7 @@ CONFIG_DRIVERS_GPS=y
|
||||
CONFIG_DRIVERS_IMU_ANALOG_DEVICES_ADIS16448=y
|
||||
CONFIG_DRIVERS_IMU_INVENSENSE_ICM20948=y
|
||||
CONFIG_DRIVERS_IMU_INVENSENSE_MPU9250=y
|
||||
CONFIG_DRIVERS_LINUX_PWM_OUT=y
|
||||
CONFIG_DRIVERS_MAGNETOMETER_HMC5883=y
|
||||
CONFIG_DRIVERS_PWM_OUT_SIM=y
|
||||
CONFIG_DRIVERS_RC_INPUT=y
|
||||
@@ -23,6 +24,7 @@ CONFIG_MODULES_ATTITUDE_ESTIMATOR_Q=y
|
||||
CONFIG_MODULES_BATTERY_STATUS=y
|
||||
CONFIG_MODULES_CAMERA_FEEDBACK=y
|
||||
CONFIG_MODULES_COMMANDER=y
|
||||
CONFIG_MODULES_CONTROL_ALLOCATOR=y
|
||||
CONFIG_MODULES_DATAMAN=y
|
||||
CONFIG_MODULES_EKF2=y
|
||||
CONFIG_MODULES_ESC_BATTERY=y
|
||||
@@ -46,7 +48,6 @@ CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=y
|
||||
CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=y
|
||||
CONFIG_MODULES_MC_POS_CONTROL=y
|
||||
CONFIG_MODULES_MC_RATE_CONTROL=y
|
||||
CONFIG_MODULES_CONTROL_ALLOCATOR=y
|
||||
CONFIG_MODULES_NAVIGATOR=y
|
||||
CONFIG_MODULES_RC_UPDATE=y
|
||||
CONFIG_MODULES_ROVER_POS_CONTROL=y
|
||||
|
||||
@@ -42,6 +42,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0016
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 Crazyflie v2.0"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -41,6 +41,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0016
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 Crazyflie v2.0"
|
||||
CONFIG_CDCACM_RXBUFSIZE=300
|
||||
|
||||
@@ -29,6 +29,7 @@ CONFIG_BOARD_LOOPSPERMSEC=22114
|
||||
CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x004c
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 BL CUAV Nora"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -46,6 +46,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x004c
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 CUAV Nora"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -29,6 +29,7 @@ CONFIG_BOARD_LOOPSPERMSEC=22114
|
||||
CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x004c
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 BL CUAV X7Pro"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -46,6 +46,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x004c
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 CUAV X7Pro"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -29,6 +29,7 @@ CONFIG_BOARD_LOOPSPERMSEC=79954
|
||||
CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x1016
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 BL CubePilot CubeOrange"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -47,6 +47,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x1016
|
||||
CONFIG_CDCACM_PRODUCTSTR="CubeOrange"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -46,6 +46,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x1016
|
||||
CONFIG_CDCACM_PRODUCTSTR="CubeOrange"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -48,6 +48,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x1012
|
||||
CONFIG_CDCACM_PRODUCTSTR="CubeYellow"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -14,6 +14,8 @@ CONFIG_DRIVERS_GPS=y
|
||||
CONFIG_DRIVERS_IMU_ANALOG_DEVICES_ADIS16448=y
|
||||
CONFIG_DRIVERS_IMU_INVENSENSE_ICM20948=y
|
||||
CONFIG_DRIVERS_IMU_INVENSENSE_MPU9250=y
|
||||
CONFIG_DRIVERS_IMU_ST_LSM9DS1=y
|
||||
CONFIG_DRIVERS_LINUX_PWM_OUT=y
|
||||
CONFIG_DRIVERS_MAGNETOMETER_HMC5883=y
|
||||
CONFIG_DRIVERS_MAGNETOMETER_LSM9DS1_MAG=y
|
||||
CONFIG_DRIVERS_PWM_OUT_SIM=y
|
||||
@@ -24,6 +26,7 @@ CONFIG_MODULES_ATTITUDE_ESTIMATOR_Q=y
|
||||
CONFIG_MODULES_BATTERY_STATUS=y
|
||||
CONFIG_MODULES_CAMERA_FEEDBACK=y
|
||||
CONFIG_MODULES_COMMANDER=y
|
||||
CONFIG_MODULES_CONTROL_ALLOCATOR=y
|
||||
CONFIG_MODULES_DATAMAN=y
|
||||
CONFIG_MODULES_EKF2=y
|
||||
CONFIG_MODULES_ESC_BATTERY=y
|
||||
@@ -47,7 +50,6 @@ CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=y
|
||||
CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=y
|
||||
CONFIG_MODULES_MC_POS_CONTROL=y
|
||||
CONFIG_MODULES_MC_RATE_CONTROL=y
|
||||
CONFIG_MODULES_CONTROL_ALLOCATOR=y
|
||||
CONFIG_MODULES_NAVIGATOR=y
|
||||
CONFIG_MODULES_RC_UPDATE=y
|
||||
CONFIG_MODULES_ROVER_POS_CONTROL=y
|
||||
|
||||
@@ -41,6 +41,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0016
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 FreeFly RTK GPS"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -29,6 +29,7 @@ CONFIG_BOARD_LOOPSPERMSEC=22114
|
||||
CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x004b
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 BL Holybro Durandal Vx"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -46,6 +46,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x004b
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 DurandalV1"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -46,6 +46,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0016
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 KakuteF7"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -47,6 +47,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x004E
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 PIX32V5"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -29,6 +29,7 @@ CONFIG_BOARD_LOOPSPERMSEC=22114
|
||||
CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x004b
|
||||
CONFIG_CDCACM_PRODUCTSTR="Matek H743-slim"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -45,6 +45,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0036
|
||||
CONFIG_CDCACM_PRODUCTSTR="MatekH743-slim"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -46,6 +46,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0xa32f
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 FMU ModalAI FCv1"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -29,6 +29,7 @@ CONFIG_BOARD_LOOPSPERMSEC=95150
|
||||
CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0xa330
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 BL ModalAI FCv2"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -46,6 +46,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0xa330
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 FMU ModalAI FCv2"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -46,6 +46,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x008D
|
||||
CONFIG_CDCACM_PRODUCTSTR="mRoControlZeroF7"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -46,6 +46,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x008D
|
||||
CONFIG_CDCACM_PRODUCTSTR="mRoControlZeroF7"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -29,6 +29,7 @@ CONFIG_BOARD_LOOPSPERMSEC=95150
|
||||
CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x1023
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 BL mRo ControlZeroH7 OEM"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -46,6 +46,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x1024
|
||||
CONFIG_CDCACM_PRODUCTSTR="mRoControlZeroH7 OEM"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -29,6 +29,7 @@ CONFIG_BOARD_LOOPSPERMSEC=95150
|
||||
CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x1023
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 BL mRo ControlZeroH7"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -46,6 +46,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x1023
|
||||
CONFIG_CDCACM_PRODUCTSTR="mRoControlZeroH7"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -29,6 +29,7 @@ CONFIG_BOARD_LOOPSPERMSEC=95150
|
||||
CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x1017
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 BL mRo Pixracer Pro"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -46,6 +46,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x1017
|
||||
CONFIG_CDCACM_PRODUCTSTR="mRoPixracerPro"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -46,6 +46,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0088
|
||||
CONFIG_CDCACM_PRODUCTSTR="mRo x2.1-777"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -43,6 +43,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0021
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 AUAV X2.1"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -30,6 +30,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0001
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 OmnibusF4SD"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -42,6 +42,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0011
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 FMU v2.x"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -43,6 +43,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0011
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 FMU v2.x"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -43,6 +43,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0012
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 FMU v4.x"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -43,6 +43,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0013
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 FMU v4.x PRO"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -47,6 +47,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0032
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 FMU v5.x"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -48,6 +48,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0032
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 FMU v5.x"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -47,6 +47,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0032
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 FMU v5.x"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -48,6 +48,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0032
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 FMU v5.x"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -49,6 +49,7 @@ CONFIG_C99_BOOL8=y
|
||||
CONFIG_CAN_EXTID=y
|
||||
CONFIG_CAN_FIFOSIZE=32
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0032
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 FMU v5.x"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -46,6 +46,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0033
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 FMU v5X.x"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -29,6 +29,7 @@ CONFIG_BOARD_LOOPSPERMSEC=95150
|
||||
CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0036
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 BL FMU v6U.x"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -46,6 +46,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0036
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 FMU v6U.x"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -29,6 +29,7 @@ CONFIG_BOARD_LOOPSPERMSEC=95150
|
||||
CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0035
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 BL FMU v6X.x"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -46,6 +46,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0035
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 FMU v6X.x"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -47,6 +47,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x004b
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 SP RACING H7 EXTREME"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -42,6 +42,7 @@ CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0012
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 FMU UVify Core"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
|
||||
@@ -49,7 +49,11 @@ add_custom_target(metadata_airframes
|
||||
set(generated_params_dir ${PX4_BINARY_DIR}/generated_params_metadata)
|
||||
file(GLOB_RECURSE yaml_config_files ${PX4_SOURCE_DIR}/src/modules/*.yaml
|
||||
${PX4_SOURCE_DIR}/src/drivers/*.yaml ${PX4_SOURCE_DIR}/src/lib/*.yaml)
|
||||
list(FILTER yaml_config_files EXCLUDE REGEX ".*/pwm_out_sim/") # avoid param duplicates
|
||||
|
||||
# avoid param duplicates
|
||||
list(FILTER yaml_config_files EXCLUDE REGEX ".*/pwm_out_sim/")
|
||||
list(FILTER yaml_config_files EXCLUDE REGEX ".*/linux_pwm_out/")
|
||||
|
||||
add_custom_target(metadata_parameters
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${PX4_BINARY_DIR}/docs
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${generated_params_dir}
|
||||
|
||||
@@ -118,6 +118,7 @@ set(msg_files
|
||||
orbit_status.msg
|
||||
parameter_update.msg
|
||||
ping.msg
|
||||
pps_capture.msg
|
||||
position_controller_landing_status.msg
|
||||
position_controller_status.msg
|
||||
position_setpoint.msg
|
||||
|
||||
@@ -4,4 +4,6 @@ uint64 timestamp_utc # UTC timestamp
|
||||
uint32 seq # Image sequence number
|
||||
bool feedback # Trigger feedback from camera
|
||||
|
||||
uint32 ORB_QUEUE_LENGTH = 2
|
||||
|
||||
# TOPICS camera_trigger
|
||||
@@ -0,0 +1,2 @@
|
||||
uint64 timestamp # time since system start (microseconds) at PPS capture event
|
||||
uint64 rtc_timestamp # Corrected GPS UTC timestamp at PPS capture event
|
||||
@@ -6,7 +6,7 @@ uint64 timestamp_sample # the timestamp of the raw data (microse
|
||||
|
||||
bool xy_valid # true if x and y are valid
|
||||
bool z_valid # true if z is valid
|
||||
bool v_xy_valid # true if vy and vy are valid
|
||||
bool v_xy_valid # true if vx and vy are valid
|
||||
bool v_z_valid # true if vz is valid
|
||||
|
||||
# Position in local NED frame
|
||||
|
||||
@@ -92,9 +92,10 @@ bool geofence_violated
|
||||
uint8 failure_detector_status # Bitmask containing FailureDetector status [0, 0, 0, 0, 0, FAILURE_ALT, FAILURE_PITCH, FAILURE_ROLL]
|
||||
|
||||
# see SYS_STATUS mavlink message for the following
|
||||
uint32 onboard_control_sensors_present
|
||||
uint32 onboard_control_sensors_enabled
|
||||
uint32 onboard_control_sensors_health
|
||||
# lower 32 bits are for the base flags, higher 32 bits are or the extended flags
|
||||
uint64 onboard_control_sensors_present
|
||||
uint64 onboard_control_sensors_enabled
|
||||
uint64 onboard_control_sensors_health
|
||||
|
||||
|
||||
uint8 ARM_DISARM_REASON_TRANSITION_TO_STANDBY = 0
|
||||
|
||||
@@ -30,7 +30,7 @@ bool circuit_breaker_vtol_fw_arming_check # set to true if for VTOLs arming in
|
||||
bool offboard_control_signal_lost
|
||||
|
||||
bool rc_signal_found_once
|
||||
bool rc_input_blocked # set if RC input should be ignored temporarily
|
||||
bool rc_calibration_in_progress
|
||||
bool rc_calibration_valid # set if RC calibration is valid
|
||||
bool vtol_transition_failure # Set to true if vtol transition failed
|
||||
bool usb_connected # status of the USB power supply
|
||||
|
||||
@@ -261,7 +261,7 @@ private:
|
||||
int32_t _val;
|
||||
};
|
||||
|
||||
//external version
|
||||
// external version
|
||||
template<px4::params p>
|
||||
class Param<int32_t &, p>
|
||||
{
|
||||
@@ -318,7 +318,7 @@ class Param<bool, p>
|
||||
{
|
||||
public:
|
||||
// static type-check
|
||||
static_assert(px4::parameters_type[(int)p] == PARAM_TYPE_INT32, "parameter type must be int32_t");
|
||||
static_assert(px4::parameters_type[(int)p] == PARAM_TYPE_BOOL, "parameter type must be bool");
|
||||
|
||||
Param()
|
||||
{
|
||||
@@ -331,18 +331,10 @@ public:
|
||||
const bool &reference() const { return _val; }
|
||||
|
||||
/// Store the parameter value to the parameter storage (@see param_set())
|
||||
bool commit() const
|
||||
{
|
||||
int32_t value_int = (int32_t)_val;
|
||||
return param_set(handle(), &value_int) == 0;
|
||||
}
|
||||
bool commit() const { return param_set(handle(), &_val) == 0; }
|
||||
|
||||
/// Store the parameter value to the parameter storage, w/o notifying the system (@see param_set_no_notification())
|
||||
bool commit_no_notification() const
|
||||
{
|
||||
int32_t value_int = (int32_t)_val;
|
||||
return param_set_no_notification(handle(), &value_int) == 0;
|
||||
}
|
||||
bool commit_no_notification() const { return param_set_no_notification(handle(), &_val) == 0; }
|
||||
|
||||
/// Set and commit a new value. Returns true if the value changed.
|
||||
bool commit_no_notification(bool val)
|
||||
@@ -364,38 +356,83 @@ public:
|
||||
update();
|
||||
}
|
||||
|
||||
bool update()
|
||||
{
|
||||
int32_t value_int;
|
||||
int ret = param_get(handle(), &value_int);
|
||||
|
||||
if (ret == 0) {
|
||||
_val = value_int != 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
bool update() { return param_get(handle(), &_val) == 0; }
|
||||
|
||||
param_t handle() const { return param_handle(p); }
|
||||
private:
|
||||
bool _val;
|
||||
};
|
||||
|
||||
// external version
|
||||
template<px4::params p>
|
||||
class Param<bool &, p>
|
||||
{
|
||||
public:
|
||||
// static type-check
|
||||
static_assert(px4::parameters_type[(int)p] == PARAM_TYPE_BOOL, "parameter type must be bool");
|
||||
|
||||
Param(bool &external_val)
|
||||
: _val(external_val)
|
||||
{
|
||||
param_set_used(handle());
|
||||
update();
|
||||
}
|
||||
|
||||
bool get() const { return _val; }
|
||||
|
||||
const bool &reference() const { return _val; }
|
||||
|
||||
/// Store the parameter value to the parameter storage (@see param_set())
|
||||
bool commit() const { return param_set(handle(), &_val) == 0; }
|
||||
|
||||
/// Store the parameter value to the parameter storage, w/o notifying the system (@see param_set_no_notification())
|
||||
bool commit_no_notification() const { return param_set_no_notification(handle(), &_val) == 0; }
|
||||
|
||||
/// Set and commit a new value. Returns true if the value changed.
|
||||
bool commit_no_notification(bool val)
|
||||
{
|
||||
if (val != _val) {
|
||||
set(val);
|
||||
commit_no_notification();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void set(bool val) { _val = val; }
|
||||
|
||||
void reset()
|
||||
{
|
||||
param_reset_no_notification(handle());
|
||||
update();
|
||||
}
|
||||
|
||||
bool update() { return param_get(handle(), &_val) == 0; }
|
||||
|
||||
param_t handle() const { return param_handle(p); }
|
||||
private:
|
||||
bool &_val;
|
||||
};
|
||||
|
||||
template <px4::params p>
|
||||
using ParamFloat = Param<float, p>;
|
||||
using ParamBool = Param<bool, p>;
|
||||
|
||||
template <px4::params p>
|
||||
using ParamInt = Param<int32_t, p>;
|
||||
|
||||
template <px4::params p>
|
||||
using ParamExtFloat = Param<float &, p>;
|
||||
using ParamFloat = Param<float, p>;
|
||||
|
||||
|
||||
template <px4::params p>
|
||||
using ParamExtBool = Param<bool &, p>;
|
||||
|
||||
template <px4::params p>
|
||||
using ParamExtInt = Param<int32_t &, p>;
|
||||
|
||||
template <px4::params p>
|
||||
using ParamBool = Param<bool, p>;
|
||||
using ParamExtFloat = Param<float &, p>;
|
||||
|
||||
} /* namespace do_not_explicitly_use_this_namespace */
|
||||
|
||||
|
||||
@@ -268,7 +268,7 @@ WorkQueueManagerRun(int, char **)
|
||||
// On posix system , the desired stacksize round to the nearest multiplier of the system pagesize
|
||||
// It is a requirement of the pthread_attr_setstacksize* function
|
||||
const unsigned int page_size = sysconf(_SC_PAGESIZE);
|
||||
const size_t stacksize_adj = math::max(PTHREAD_STACK_MIN, PX4_STACK_ADJUSTED(wq->stacksize));
|
||||
const size_t stacksize_adj = math::max((int)PTHREAD_STACK_MIN, PX4_STACK_ADJUSTED(wq->stacksize));
|
||||
const size_t stacksize = (stacksize_adj + page_size - (stacksize_adj % page_size));
|
||||
#endif
|
||||
|
||||
|
||||
@@ -99,19 +99,11 @@ int uORB::DeviceMaster::advertise(const struct orb_metadata *meta, bool is_adver
|
||||
*instance = group_tries;
|
||||
}
|
||||
|
||||
/* driver wants a permanent copy of the path, so make one here */
|
||||
const char *devpath = strdup(nodepath);
|
||||
|
||||
if (devpath == nullptr) {
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
/* construct the new node, passing the ownership of path to it */
|
||||
uORB::DeviceNode *node = new uORB::DeviceNode(meta, group_tries, devpath);
|
||||
uORB::DeviceNode *node = new uORB::DeviceNode(meta, group_tries, nodepath);
|
||||
|
||||
/* if we didn't get a device, that's bad, free the path too */
|
||||
/* if we didn't get a device, that's bad */
|
||||
if (node == nullptr) {
|
||||
free((void *)devpath);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
|
||||
@@ -42,6 +42,10 @@
|
||||
#include "uORBCommunicator.hpp"
|
||||
#endif /* ORB_COMMUNICATOR */
|
||||
|
||||
#if defined(__PX4_NUTTX)
|
||||
#include <nuttx/mm/mm.h>
|
||||
#endif
|
||||
|
||||
static uORB::SubscriptionInterval *filp_to_subscription(cdev::file_t *filp) { return static_cast<uORB::SubscriptionInterval *>(filp->f_priv); }
|
||||
|
||||
// round up to nearest power of two
|
||||
@@ -71,7 +75,7 @@ static inline uint8_t round_pow_of_two_8(uint8_t n)
|
||||
|
||||
uORB::DeviceNode::DeviceNode(const struct orb_metadata *meta, const uint8_t instance, const char *path,
|
||||
uint8_t queue_size) :
|
||||
CDev(path),
|
||||
CDev(strdup(path)), // success is checked in CDev::init
|
||||
_meta(meta),
|
||||
_instance(instance),
|
||||
_queue_size(round_pow_of_two_8(queue_size))
|
||||
@@ -82,7 +86,15 @@ uORB::DeviceNode::~DeviceNode()
|
||||
{
|
||||
delete[] _data;
|
||||
|
||||
CDev::unregister_driver_and_memory();
|
||||
const char *devname = get_devname();
|
||||
|
||||
if (devname) {
|
||||
#if defined(__PX4_NUTTX) && !defined(CONFIG_BUILD_FLAT)
|
||||
kmm_free((void *)devname);
|
||||
#else
|
||||
free((void *)devname);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
|
||||
Submodule platforms/nuttx/NuttX/nuttx updated: d4c06e9dfb...378032a44b
@@ -62,7 +62,8 @@ typedef enum io_timer_channel_mode_t {
|
||||
IOTimerChanMode_Trigger = 5,
|
||||
IOTimerChanMode_Dshot = 6,
|
||||
IOTimerChanMode_LED = 7,
|
||||
IOTimerChanMode_Other = 8,
|
||||
IOTimerChanMode_PPS = 8,
|
||||
IOTimerChanMode_Other = 9,
|
||||
IOTimerChanModeSize
|
||||
} io_timer_channel_mode_t;
|
||||
|
||||
|
||||
@@ -149,8 +149,8 @@ static int io_timer_handler7(int irq, void *context, void *arg);
|
||||
#define rFCTRL20(_tim) REG(_tim, 0, IMXRT_FLEXPWM_FCTRL20_OFFSET) /* Fault Control 2 Register */
|
||||
|
||||
|
||||
// NotUsed PWMOut PWMIn Capture OneShot Trigger Dshot LED Other
|
||||
io_timer_channel_allocation_t channel_allocations[IOTimerChanModeSize] = { UINT16_MAX, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
// NotUsed PWMOut PWMIn Capture OneShot Trigger Dshot LED PPS Other
|
||||
io_timer_channel_allocation_t channel_allocations[IOTimerChanModeSize] = { UINT16_MAX, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
|
||||
typedef uint8_t io_timer_allocation_t; /* big enough to hold MAX_IO_TIMERS */
|
||||
|
||||
|
||||
@@ -109,6 +109,7 @@ int kinetis_gpiosetevent(uint32_t pinset, bool risingedge, bool fallingedge, boo
|
||||
|
||||
#define _PX4_MAKE_GPIO(pin_ftmx, io) ((((uint32_t)(pin_ftmx)) & ~(_PIN_MODE_MASK | _PIN_OPTIONS_MASK)) |(io))
|
||||
#define PX4_MAKE_GPIO_INPUT(gpio) _PX4_MAKE_GPIO(gpio, GPIO_PULLUP)
|
||||
#define PX4_MAKE_GPIO_EXTI(gpio) _PX4_MAKE_GPIO(gpio, PIN_INT_BOTH | GPIO_PULLUP)
|
||||
#define PX4_MAKE_GPIO_OUTPUT_SET(gpio) _PX4_MAKE_GPIO(gpio, GPIO_HIGHDRIVE)
|
||||
#define PX4_MAKE_GPIO_OUTPUT_CLEAR(gpio) _PX4_MAKE_GPIO(gpio, GPIO_LOWDRIVE)
|
||||
|
||||
|
||||
@@ -66,7 +66,8 @@ typedef enum io_timer_channel_mode_t {
|
||||
IOTimerChanMode_Trigger = 5,
|
||||
IOTimerChanMode_Dshot = 6,
|
||||
IOTimerChanMode_LED = 7,
|
||||
IOTimerChanMode_Other = 8,
|
||||
IOTimerChanMode_PPS = 8,
|
||||
IOTimerChanMode_Other = 9,
|
||||
IOTimerChanModeSize
|
||||
} io_timer_channel_mode_t;
|
||||
|
||||
|
||||
@@ -152,8 +152,8 @@ static int io_timer_handler7(int irq, void *context, void *arg);
|
||||
|
||||
#define CnSC_PWMIN_INIT 0 // TBD
|
||||
|
||||
// NotUsed PWMOut PWMIn Capture OneShot Trigger Dshot LED Other
|
||||
io_timer_channel_allocation_t channel_allocations[IOTimerChanModeSize] = { UINT16_MAX, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
// NotUsed PWMOut PWMIn Capture OneShot Trigger Dshot LED PPS Other
|
||||
io_timer_channel_allocation_t channel_allocations[IOTimerChanModeSize] = { UINT16_MAX, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
|
||||
typedef uint8_t io_timer_allocation_t; /* big enough to hold MAX_IO_TIMERS */
|
||||
|
||||
|
||||
@@ -62,7 +62,8 @@ typedef enum io_timer_channel_mode_t {
|
||||
IOTimerChanMode_Trigger = 5,
|
||||
IOTimerChanMode_Dshot = 6,
|
||||
IOTimerChanMode_LED = 7,
|
||||
IOTimerChanMode_Other = 8,
|
||||
IOTimerChanMode_PPS = 8,
|
||||
IOTimerChanMode_Other = 9,
|
||||
IOTimerChanModeSize
|
||||
} io_timer_channel_mode_t;
|
||||
|
||||
|
||||
@@ -150,8 +150,8 @@ static int io_timer_handler7(int irq, void *context, void *arg);
|
||||
|
||||
#define CnSC_PWMIN_INIT 0 // TBD
|
||||
|
||||
// NotUsed PWMOut PWMIn Capture OneShot Trigger Dshot LED Other
|
||||
io_timer_channel_allocation_t channel_allocations[IOTimerChanModeSize] = { UINT16_MAX, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
// NotUsed PWMOut PWMIn Capture OneShot Trigger Dshot LED PPS Other
|
||||
io_timer_channel_allocation_t channel_allocations[IOTimerChanModeSize] = { UINT16_MAX, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
|
||||
typedef uint8_t io_timer_allocation_t; /* big enough to hold MAX_IO_TIMERS */
|
||||
|
||||
|
||||
@@ -75,7 +75,8 @@ typedef enum io_timer_channel_mode_t {
|
||||
IOTimerChanMode_Trigger = 5,
|
||||
IOTimerChanMode_Dshot = 6,
|
||||
IOTimerChanMode_LED = 7,
|
||||
IOTimerChanMode_Other = 8,
|
||||
IOTimerChanMode_PPS = 8,
|
||||
IOTimerChanMode_Other = 9,
|
||||
IOTimerChanModeSize
|
||||
} io_timer_channel_mode_t;
|
||||
|
||||
|
||||
@@ -103,6 +103,7 @@ __BEGIN_DECLS
|
||||
#define px4_arch_gpiosetevent(pinset,r,f,e,fp,a) stm32_gpiosetevent(pinset,r,f,e,fp,a)
|
||||
|
||||
#define PX4_MAKE_GPIO_INPUT(gpio) (((gpio) & (GPIO_PORT_MASK | GPIO_PIN_MASK)) | (GPIO_INPUT|GPIO_PULLUP))
|
||||
#define PX4_MAKE_GPIO_EXTI(gpio) (((gpio) & (GPIO_PORT_MASK | GPIO_PIN_MASK)) | (GPIO_EXTI|GPIO_INPUT|GPIO_PULLUP))
|
||||
#define PX4_MAKE_GPIO_OUTPUT_CLEAR(gpio) (((gpio) & (GPIO_PORT_MASK | GPIO_PIN_MASK)) | (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR))
|
||||
#define PX4_MAKE_GPIO_OUTPUT_SET(gpio) (((gpio) & (GPIO_PORT_MASK | GPIO_PIN_MASK)) | (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET))
|
||||
|
||||
|
||||
@@ -114,7 +114,7 @@ public:
|
||||
ArchPX4IOSerial();
|
||||
ArchPX4IOSerial(ArchPX4IOSerial &) = delete;
|
||||
ArchPX4IOSerial &operator = (const ArchPX4IOSerial &) = delete;
|
||||
~ArchPX4IOSerial();
|
||||
virtual ~ArchPX4IOSerial();
|
||||
|
||||
virtual int init();
|
||||
virtual int ioctl(unsigned operation, unsigned &arg);
|
||||
@@ -159,7 +159,6 @@ private:
|
||||
/**
|
||||
* Performance counters.
|
||||
*/
|
||||
perf_counter_t _pc_dmasetup;
|
||||
perf_counter_t _pc_dmaerrs;
|
||||
|
||||
/**
|
||||
|
||||
@@ -149,8 +149,8 @@ static int io_timer_handler7(int irq, void *context, void *arg);
|
||||
/* The transfer is done to 4 registers starting from TIMx_CR1 + TIMx_DCR.DBA */
|
||||
#define TIM_DMABURSTLENGTH_4TRANSFERS 0x00000300U
|
||||
|
||||
// NotUsed PWMOut PWMIn Capture OneShot Trigger Dshot LED Other
|
||||
io_timer_channel_allocation_t channel_allocations[IOTimerChanModeSize] = { UINT16_MAX, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
// NotUsed PWMOut PWMIn Capture OneShot Trigger Dshot LED PPS Other
|
||||
io_timer_channel_allocation_t channel_allocations[IOTimerChanModeSize] = { UINT16_MAX, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
|
||||
typedef uint8_t io_timer_allocation_t; /* big enough to hold MAX_IO_TIMERS */
|
||||
|
||||
|
||||
@@ -58,13 +58,7 @@ ArchPX4IOSerial::ArchPX4IOSerial() :
|
||||
_current_packet(nullptr),
|
||||
_rx_dma_status(_dma_status_inactive),
|
||||
_completion_semaphore(SEM_INITIALIZER(0)),
|
||||
#if 0
|
||||
_pc_dmasetup(perf_alloc(PC_ELAPSED, "io_dmasetup ")),
|
||||
_pc_dmaerrs(perf_alloc(PC_COUNT, "io_dmaerrs "))
|
||||
#else
|
||||
_pc_dmasetup(nullptr),
|
||||
_pc_dmaerrs(nullptr)
|
||||
#endif
|
||||
_pc_dmaerrs(perf_alloc(PC_COUNT, MODULE_NAME": DMA errors"))
|
||||
{
|
||||
}
|
||||
|
||||
@@ -99,7 +93,6 @@ ArchPX4IOSerial::~ArchPX4IOSerial()
|
||||
/* and kill our semaphores */
|
||||
px4_sem_destroy(&_completion_semaphore);
|
||||
|
||||
perf_free(_pc_dmasetup);
|
||||
perf_free(_pc_dmaerrs);
|
||||
}
|
||||
|
||||
@@ -202,7 +195,6 @@ ArchPX4IOSerial::ioctl(unsigned operation, unsigned &arg)
|
||||
if (count >= 5000) {
|
||||
syslog(LOG_INFO, "==== test 1 : %u failures ====\n", fails);
|
||||
perf_print_counter(_pc_txns);
|
||||
perf_print_counter(_pc_dmasetup);
|
||||
perf_print_counter(_pc_retries);
|
||||
perf_print_counter(_pc_timeouts);
|
||||
perf_print_counter(_pc_crcerrs);
|
||||
@@ -241,7 +233,6 @@ ArchPX4IOSerial::_bus_exchange(IOPacket *_packet)
|
||||
|
||||
/* start RX DMA */
|
||||
perf_begin(_pc_txns);
|
||||
perf_begin(_pc_dmasetup);
|
||||
|
||||
/* DMA setup time ~3µs */
|
||||
_rx_dma_status = _dma_status_waiting;
|
||||
@@ -288,8 +279,6 @@ ArchPX4IOSerial::_bus_exchange(IOPacket *_packet)
|
||||
//rCR1 |= USART_CR1_TE;
|
||||
rCR3 |= USART_CR3_DMAT;
|
||||
|
||||
perf_end(_pc_dmasetup);
|
||||
|
||||
/* compute the deadline for a 10ms timeout */
|
||||
struct timespec abstime;
|
||||
clock_gettime(CLOCK_REALTIME, &abstime);
|
||||
@@ -309,6 +298,8 @@ ArchPX4IOSerial::_bus_exchange(IOPacket *_packet)
|
||||
if (ret == OK) {
|
||||
/* check for DMA errors */
|
||||
if (_rx_dma_status & DMA_STATUS_TEIF) {
|
||||
// stream transfer error, ensure all DMA is also stopped before exiting early
|
||||
_abort_dma();
|
||||
perf_count(_pc_dmaerrs);
|
||||
ret = -EIO;
|
||||
break;
|
||||
@@ -319,6 +310,7 @@ ArchPX4IOSerial::_bus_exchange(IOPacket *_packet)
|
||||
_current_packet->crc = 0;
|
||||
|
||||
if ((crc != crc_packet(_current_packet)) || (PKT_CODE(*_current_packet) == PKT_CODE_CORRUPT)) {
|
||||
_abort_dma();
|
||||
perf_count(_pc_crcerrs);
|
||||
ret = -EIO;
|
||||
break;
|
||||
|
||||
@@ -68,13 +68,7 @@ ArchPX4IOSerial::ArchPX4IOSerial() :
|
||||
_current_packet(nullptr),
|
||||
_rx_dma_status(_dma_status_inactive),
|
||||
_completion_semaphore(SEM_INITIALIZER(0)),
|
||||
#if 0
|
||||
_pc_dmasetup(perf_alloc(PC_ELAPSED, "io_dmasetup ")),
|
||||
_pc_dmaerrs(perf_alloc(PC_COUNT, "io_dmaerrs "))
|
||||
#else
|
||||
_pc_dmasetup(nullptr),
|
||||
_pc_dmaerrs(nullptr)
|
||||
#endif
|
||||
_pc_dmaerrs(perf_alloc(PC_COUNT, MODULE_NAME": DMA errors"))
|
||||
{
|
||||
}
|
||||
|
||||
@@ -109,7 +103,6 @@ ArchPX4IOSerial::~ArchPX4IOSerial()
|
||||
/* and kill our semaphores */
|
||||
px4_sem_destroy(&_completion_semaphore);
|
||||
|
||||
perf_free(_pc_dmasetup);
|
||||
perf_free(_pc_dmaerrs);
|
||||
}
|
||||
|
||||
@@ -214,7 +207,6 @@ ArchPX4IOSerial::ioctl(unsigned operation, unsigned &arg)
|
||||
if (count >= 5000) {
|
||||
syslog(LOG_INFO, "==== test 1 : %u failures ====\n", fails);
|
||||
perf_print_counter(_pc_txns);
|
||||
perf_print_counter(_pc_dmasetup);
|
||||
perf_print_counter(_pc_retries);
|
||||
perf_print_counter(_pc_timeouts);
|
||||
perf_print_counter(_pc_crcerrs);
|
||||
@@ -256,7 +248,6 @@ ArchPX4IOSerial::_bus_exchange(IOPacket *_packet)
|
||||
|
||||
/* start RX DMA */
|
||||
perf_begin(_pc_txns);
|
||||
perf_begin(_pc_dmasetup);
|
||||
|
||||
/* DMA setup time ~3µs */
|
||||
_rx_dma_status = _dma_status_waiting;
|
||||
@@ -307,8 +298,6 @@ ArchPX4IOSerial::_bus_exchange(IOPacket *_packet)
|
||||
//rCR1 &= ~USART_CR1_TE;
|
||||
//rCR1 |= USART_CR1_TE;
|
||||
|
||||
perf_end(_pc_dmasetup);
|
||||
|
||||
/* compute the deadline for a 10ms timeout */
|
||||
struct timespec abstime;
|
||||
clock_gettime(CLOCK_REALTIME, &abstime);
|
||||
@@ -328,8 +317,8 @@ ArchPX4IOSerial::_bus_exchange(IOPacket *_packet)
|
||||
if (ret == OK) {
|
||||
/* check for DMA errors */
|
||||
if (_rx_dma_status & DMA_STATUS_TEIF) {
|
||||
// stream transfer error, ensure TX DMA is also stopped before exiting early
|
||||
stm32_dmastop(_tx_dma);
|
||||
// stream transfer error, ensure all DMA is also stopped before exiting early
|
||||
_abort_dma();
|
||||
perf_count(_pc_dmaerrs);
|
||||
ret = -EIO;
|
||||
break;
|
||||
@@ -340,6 +329,7 @@ ArchPX4IOSerial::_bus_exchange(IOPacket *_packet)
|
||||
_current_packet->crc = 0;
|
||||
|
||||
if ((crc != crc_packet(_current_packet)) || (PKT_CODE(*_current_packet) == PKT_CODE_CORRUPT)) {
|
||||
_abort_dma();
|
||||
perf_count(_pc_crcerrs);
|
||||
ret = -EIO;
|
||||
break;
|
||||
|
||||
@@ -106,13 +106,7 @@ ArchPX4IOSerial::ArchPX4IOSerial() :
|
||||
_current_packet(nullptr),
|
||||
_rx_dma_status(_dma_status_inactive),
|
||||
_completion_semaphore(SEM_INITIALIZER(0)),
|
||||
#if 0
|
||||
_pc_dmasetup(perf_alloc(PC_ELAPSED, "io_dmasetup ")),
|
||||
_pc_dmaerrs(perf_alloc(PC_COUNT, "io_dmaerrs "))
|
||||
#else
|
||||
_pc_dmasetup(nullptr),
|
||||
_pc_dmaerrs(nullptr)
|
||||
#endif
|
||||
_pc_dmaerrs(perf_alloc(PC_COUNT, MODULE_NAME": DMA errors"))
|
||||
{
|
||||
}
|
||||
|
||||
@@ -147,7 +141,6 @@ ArchPX4IOSerial::~ArchPX4IOSerial()
|
||||
/* and kill our semaphores */
|
||||
px4_sem_destroy(&_completion_semaphore);
|
||||
|
||||
perf_free(_pc_dmasetup);
|
||||
perf_free(_pc_dmaerrs);
|
||||
}
|
||||
|
||||
@@ -252,7 +245,6 @@ ArchPX4IOSerial::ioctl(unsigned operation, unsigned &arg)
|
||||
if (count >= 5000) {
|
||||
syslog(LOG_INFO, "==== test 1 : %u failures ====\n", fails);
|
||||
perf_print_counter(_pc_txns);
|
||||
perf_print_counter(_pc_dmasetup);
|
||||
perf_print_counter(_pc_retries);
|
||||
perf_print_counter(_pc_timeouts);
|
||||
perf_print_counter(_pc_crcerrs);
|
||||
@@ -294,7 +286,6 @@ ArchPX4IOSerial::_bus_exchange(IOPacket *_packet)
|
||||
|
||||
/* start RX DMA */
|
||||
perf_begin(_pc_txns);
|
||||
perf_begin(_pc_dmasetup);
|
||||
|
||||
/* DMA setup time ~3µs */
|
||||
_rx_dma_status = _dma_status_waiting;
|
||||
@@ -354,8 +345,6 @@ ArchPX4IOSerial::_bus_exchange(IOPacket *_packet)
|
||||
//rCR1 &= ~USART_CR1_TE;
|
||||
//rCR1 |= USART_CR1_TE;
|
||||
|
||||
perf_end(_pc_dmasetup);
|
||||
|
||||
/* compute the deadline for a 10ms timeout */
|
||||
struct timespec abstime;
|
||||
clock_gettime(CLOCK_REALTIME, &abstime);
|
||||
@@ -375,8 +364,8 @@ ArchPX4IOSerial::_bus_exchange(IOPacket *_packet)
|
||||
if (ret == OK) {
|
||||
/* check for DMA errors */
|
||||
if (_rx_dma_status & DMA_STATUS_TEIF) {
|
||||
// stream transfer error, ensure TX DMA is also stopped before exiting early
|
||||
stm32_dmastop(_tx_dma);
|
||||
// stream transfer error, ensure all DMA is also stopped before exiting early
|
||||
_abort_dma();
|
||||
perf_count(_pc_dmaerrs);
|
||||
ret = -EIO;
|
||||
break;
|
||||
@@ -387,6 +376,7 @@ ArchPX4IOSerial::_bus_exchange(IOPacket *_packet)
|
||||
_current_packet->crc = 0;
|
||||
|
||||
if ((crc != crc_packet(_current_packet)) || (PKT_CODE(*_current_packet) == PKT_CODE_CORRUPT)) {
|
||||
_abort_dma();
|
||||
perf_count(_pc_crcerrs);
|
||||
ret = -EIO;
|
||||
break;
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
# config for a quad
|
||||
# modified from ../rpi/px4.config
|
||||
|
||||
param load
|
||||
param select eeprom/parameters
|
||||
param import
|
||||
|
||||
param set CBRK_SUPPLY_CHK 894281
|
||||
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
# config for fixed wing (FW)
|
||||
# modified from ./px4.config, switch att/pos_control & mixer
|
||||
|
||||
param load
|
||||
param select eeprom/parameters
|
||||
param import
|
||||
|
||||
param set CBRK_SUPPLY_CHK 894281
|
||||
|
||||
|
||||
@@ -3,10 +3,8 @@
|
||||
# (px4-alias.sh is expected to be in the PATH)
|
||||
. px4-alias.sh
|
||||
|
||||
if [ -f eeprom/parameters ]
|
||||
then
|
||||
param load
|
||||
fi
|
||||
param select eeprom/parameters
|
||||
param import
|
||||
|
||||
# system_power not implemented
|
||||
param set CBRK_SUPPLY_CHK 894281
|
||||
|
||||
@@ -3,10 +3,8 @@
|
||||
# (px4-alias.sh is expected to be in the PATH)
|
||||
. px4-alias.sh
|
||||
|
||||
if [ -f eeprom/parameters ]
|
||||
then
|
||||
param load
|
||||
fi
|
||||
param select eeprom/parameters
|
||||
param import
|
||||
|
||||
# system_power not implemented
|
||||
param set CBRK_SUPPLY_CHK 894281
|
||||
|
||||
@@ -5,10 +5,9 @@
|
||||
|
||||
# navio config for a quad
|
||||
|
||||
if [ -f eeprom/parameters ]
|
||||
then
|
||||
param load
|
||||
fi
|
||||
param select eeprom/parameters
|
||||
param import
|
||||
|
||||
param set CBRK_SUPPLY_CHK 894281
|
||||
param set SYS_AUTOSTART 4001
|
||||
param set MAV_TYPE 2
|
||||
|
||||
@@ -5,10 +5,9 @@
|
||||
|
||||
# navio config for FW
|
||||
|
||||
if [ -f eeprom/parameters ]
|
||||
then
|
||||
param load
|
||||
fi
|
||||
param select eeprom/parameters
|
||||
param import
|
||||
|
||||
param set CBRK_SUPPLY_CHK 894281
|
||||
param set SYS_AUTOSTART 2100
|
||||
param set MAV_TYPE 1
|
||||
|
||||
@@ -7,10 +7,9 @@
|
||||
# connect to it with jMAVSim:
|
||||
# ./Tools/jmavsim_run.sh -q -i <IP> -p 14577 -r 250
|
||||
|
||||
if [ -f eeprom/parameters ]
|
||||
then
|
||||
param load
|
||||
fi
|
||||
param select eeprom/parameters
|
||||
param import
|
||||
|
||||
param set CBRK_SUPPLY_CHK 894281
|
||||
param set SYS_AUTOSTART 1001
|
||||
param set MAV_TYPE 2
|
||||
|
||||
@@ -5,10 +5,9 @@
|
||||
|
||||
# navio config for simple testing
|
||||
|
||||
if [ -f eeprom/parameters ]
|
||||
then
|
||||
param load
|
||||
fi
|
||||
param select eeprom/parameters
|
||||
param import
|
||||
|
||||
param set CBRK_SUPPLY_CHK 894281
|
||||
param set SYS_AUTOSTART 4001
|
||||
param set MAV_TYPE 2
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
* @boolean
|
||||
* @group Sensors
|
||||
*/
|
||||
PARAM_DEFINE_INT32(SENS_EN_BATT, 0);
|
||||
PARAM_DEFINE_BOOL(SENS_EN_BATT, 0);
|
||||
|
||||
/**
|
||||
* Capacity/current multiplier for high-current capable SMBUS battery
|
||||
|
||||
@@ -30,13 +30,20 @@
|
||||
# POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
set(PARAM_PREFIX PWM_MAIN)
|
||||
|
||||
if(CONFIG_BOARD_IO)
|
||||
set(PARAM_PREFIX PWM_AUX)
|
||||
endif()
|
||||
|
||||
px4_add_module(
|
||||
MODULE drivers__camera_capture
|
||||
MAIN camera_capture
|
||||
COMPILE_FLAGS
|
||||
-DPARAM_PREFIX="${PARAM_PREFIX}"
|
||||
SRCS
|
||||
camera_capture.cpp
|
||||
DEPENDS
|
||||
arch_io_pins
|
||||
)
|
||||
# vim: set noet ft=cmake fenc=utf-8 ff=unix :
|
||||
)
|
||||
|
||||
@@ -43,12 +43,6 @@
|
||||
|
||||
#include <board_config.h>
|
||||
|
||||
#ifdef BOARD_WITH_IO
|
||||
# define PARAM_PREFIX "PWM_AUX"
|
||||
#else
|
||||
# define PARAM_PREFIX "PWM_MAIN"
|
||||
#endif
|
||||
|
||||
#define commandParamToInt(n) static_cast<int>(n >= 0 ? n + 0.5f : n - 0.5f)
|
||||
|
||||
namespace camera_capture
|
||||
@@ -76,13 +70,13 @@ CameraCapture::CameraCapture() :
|
||||
|
||||
// get the capture channel from function configuration params
|
||||
param_t p_ctrl_alloc = param_find("SYS_CTRL_ALLOC");
|
||||
int32_t ctrl_alloc = 0;
|
||||
bool ctrl_alloc = false;
|
||||
|
||||
if (p_ctrl_alloc != PARAM_INVALID) {
|
||||
param_get(p_ctrl_alloc, &ctrl_alloc);
|
||||
}
|
||||
|
||||
if (ctrl_alloc == 1) {
|
||||
if (ctrl_alloc) {
|
||||
_capture_channel = -1;
|
||||
|
||||
for (unsigned i = 0; i < 16 && _capture_channel == -1; ++i) {
|
||||
@@ -111,7 +105,7 @@ void
|
||||
CameraCapture::capture_callback(uint32_t chan_index, hrt_abstime edge_time, uint32_t edge_state, uint32_t overflow)
|
||||
{
|
||||
_trigger.chan_index = chan_index;
|
||||
_trigger.edge_time = edge_time;
|
||||
_trigger.hrt_edge_time = edge_time;
|
||||
_trigger.edge_state = edge_state;
|
||||
_trigger.overflow = overflow;
|
||||
|
||||
@@ -124,7 +118,7 @@ CameraCapture::gpio_interrupt_routine(int irq, void *context, void *arg)
|
||||
CameraCapture *dev = static_cast<CameraCapture *>(arg);
|
||||
|
||||
dev->_trigger.chan_index = 0;
|
||||
dev->_trigger.edge_time = hrt_absolute_time();
|
||||
dev->_trigger.hrt_edge_time = hrt_absolute_time();
|
||||
dev->_trigger.edge_state = 0;
|
||||
dev->_trigger.overflow = 0;
|
||||
|
||||
@@ -150,19 +144,20 @@ CameraCapture::publish_trigger()
|
||||
|
||||
// MODES 1 and 2 are not fully tested
|
||||
if (_camera_capture_mode == 0 || _gpio_capture) {
|
||||
trigger.timestamp = _trigger.edge_time - uint64_t(1000 * _strobe_delay);
|
||||
trigger.timestamp = _trigger.hrt_edge_time - uint64_t(1000 * _strobe_delay);
|
||||
trigger.seq = _capture_seq++;
|
||||
_last_trig_time = trigger.timestamp;
|
||||
|
||||
publish = true;
|
||||
|
||||
} else if (_camera_capture_mode == 1) { // Get timestamp of mid-exposure (active high)
|
||||
if (_trigger.edge_state == 1) {
|
||||
_last_trig_begin_time = _trigger.edge_time - uint64_t(1000 * _strobe_delay);
|
||||
_last_trig_begin_time = _trigger.hrt_edge_time - uint64_t(1000 * _strobe_delay);
|
||||
|
||||
} else if (_trigger.edge_state == 0 && _last_trig_begin_time > 0) {
|
||||
trigger.timestamp = _trigger.edge_time - ((_trigger.edge_time - _last_trig_begin_time) / 2);
|
||||
trigger.timestamp = _trigger.hrt_edge_time - ((_trigger.hrt_edge_time - _last_trig_begin_time) / 2);
|
||||
trigger.seq = _capture_seq++;
|
||||
_last_exposure_time = _trigger.edge_time - _last_trig_begin_time;
|
||||
_last_exposure_time = _trigger.hrt_edge_time - _last_trig_begin_time;
|
||||
_last_trig_time = trigger.timestamp;
|
||||
publish = true;
|
||||
_capture_seq++;
|
||||
@@ -170,12 +165,12 @@ CameraCapture::publish_trigger()
|
||||
|
||||
} else { // Get timestamp of mid-exposure (active low)
|
||||
if (_trigger.edge_state == 0) {
|
||||
_last_trig_begin_time = _trigger.edge_time - uint64_t(1000 * _strobe_delay);
|
||||
_last_trig_begin_time = _trigger.hrt_edge_time - uint64_t(1000 * _strobe_delay);
|
||||
|
||||
} else if (_trigger.edge_state == 1 && _last_trig_begin_time > 0) {
|
||||
trigger.timestamp = _trigger.edge_time - ((_trigger.edge_time - _last_trig_begin_time) / 2);
|
||||
trigger.timestamp = _trigger.hrt_edge_time - ((_trigger.hrt_edge_time - _last_trig_begin_time) / 2);
|
||||
trigger.seq = _capture_seq++;
|
||||
_last_exposure_time = _trigger.edge_time - _last_trig_begin_time;
|
||||
_last_exposure_time = _trigger.hrt_edge_time - _last_trig_begin_time;
|
||||
_last_trig_time = trigger.timestamp;
|
||||
publish = true;
|
||||
}
|
||||
@@ -189,6 +184,25 @@ CameraCapture::publish_trigger()
|
||||
return;
|
||||
}
|
||||
|
||||
pps_capture_s pps_capture;
|
||||
|
||||
if (_pps_capture_sub.update(&pps_capture)) {
|
||||
_pps_hrt_timestamp = pps_capture.timestamp;
|
||||
_pps_rtc_timestamp = pps_capture.rtc_timestamp;
|
||||
}
|
||||
|
||||
|
||||
if (_pps_hrt_timestamp > 0) {
|
||||
// Last PPS RTC time + elapsed time to the camera capture interrupt
|
||||
trigger.timestamp_utc = _pps_rtc_timestamp + (trigger.timestamp - _pps_hrt_timestamp);
|
||||
|
||||
} else {
|
||||
// No PPS capture received, use RTC clock as fallback
|
||||
timespec tv{};
|
||||
px4_clock_gettime(CLOCK_REALTIME, &tv);
|
||||
trigger.timestamp_utc = ts_to_abstime(&tv) - hrt_elapsed_time(&trigger.timestamp);
|
||||
}
|
||||
|
||||
_trigger_pub.publish(trigger);
|
||||
}
|
||||
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
#include <uORB/Publication.hpp>
|
||||
#include <uORB/Subscription.hpp>
|
||||
#include <uORB/topics/camera_trigger.h>
|
||||
#include <uORB/topics/pps_capture.h>
|
||||
#include <uORB/topics/vehicle_command.h>
|
||||
#include <uORB/topics/vehicle_command_ack.h>
|
||||
|
||||
@@ -103,11 +104,12 @@ private:
|
||||
|
||||
// Subscribers
|
||||
uORB::Subscription _command_sub{ORB_ID(vehicle_command)};
|
||||
uORB::Subscription _pps_capture_sub{ORB_ID(pps_capture)};
|
||||
|
||||
// Trigger Buffer
|
||||
struct _trig_s {
|
||||
uint32_t chan_index;
|
||||
hrt_abstime edge_time;
|
||||
hrt_abstime hrt_edge_time;
|
||||
uint32_t edge_state;
|
||||
uint32_t overflow;
|
||||
} _trigger{};
|
||||
@@ -130,6 +132,9 @@ private:
|
||||
hrt_abstime _last_trig_time{0};
|
||||
uint32_t _capture_overflows{0};
|
||||
|
||||
hrt_abstime _pps_hrt_timestamp{0};
|
||||
uint64_t _pps_rtc_timestamp{0};
|
||||
|
||||
// Signal capture callback
|
||||
void capture_callback(uint32_t chan_index, hrt_abstime edge_time, uint32_t edge_state, uint32_t overflow);
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ PARAM_DEFINE_FLOAT(CAM_CAP_DELAY, 0.0f);
|
||||
* @group Camera Control
|
||||
* @reboot_required true
|
||||
*/
|
||||
PARAM_DEFINE_INT32(CAM_CAP_FBACK, 0);
|
||||
PARAM_DEFINE_BOOL(CAM_CAP_FBACK, 0);
|
||||
|
||||
/**
|
||||
* Camera capture timestamping mode
|
||||
@@ -84,4 +84,4 @@ PARAM_DEFINE_INT32(CAM_CAP_MODE, 0);
|
||||
* @group Camera Control
|
||||
* @reboot_required true
|
||||
*/
|
||||
PARAM_DEFINE_INT32(CAM_CAP_EDGE, 0);
|
||||
PARAM_DEFINE_INT32(CAM_CAP_EDGE, 0);
|
||||
|
||||
@@ -30,10 +30,18 @@
|
||||
# POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
set(PARAM_PREFIX PWM_MAIN)
|
||||
|
||||
if(CONFIG_BOARD_IO)
|
||||
set(PARAM_PREFIX PWM_AUX)
|
||||
endif()
|
||||
|
||||
px4_add_module(
|
||||
MODULE drivers__camera_trigger
|
||||
MAIN camera_trigger
|
||||
COMPILE_FLAGS
|
||||
-DPARAM_PREFIX="${PARAM_PREFIX}"
|
||||
SRCS
|
||||
camera_trigger.cpp
|
||||
interfaces/src/camera_interface.cpp
|
||||
|
||||
@@ -59,6 +59,7 @@
|
||||
#include <uORB/Publication.hpp>
|
||||
#include <uORB/Subscription.hpp>
|
||||
#include <uORB/topics/camera_trigger.h>
|
||||
#include <uORB/topics/pps_capture.h>
|
||||
#include <uORB/topics/vehicle_command.h>
|
||||
#include <uORB/topics/vehicle_command_ack.h>
|
||||
#include <uORB/topics/vehicle_local_position.h>
|
||||
@@ -173,6 +174,8 @@ private:
|
||||
bool _turning_on{false};
|
||||
matrix::Vector2f _last_shoot_position{0.f, 0.f};
|
||||
bool _valid_position{false};
|
||||
hrt_abstime _pps_hrt_timestamp{0};
|
||||
uint64_t _pps_rtc_timestamp{0};
|
||||
|
||||
//Camera Auto Mount Pivoting Oblique Survey (CAMPOS)
|
||||
uint32_t _CAMPOS_num_poses{0};
|
||||
@@ -186,6 +189,7 @@ private:
|
||||
|
||||
uORB::Subscription _command_sub{ORB_ID(vehicle_command)};
|
||||
uORB::Subscription _lpos_sub{ORB_ID(vehicle_local_position)};
|
||||
uORB::Subscription _pps_capture_sub{ORB_ID(pps_capture)};
|
||||
|
||||
orb_advert_t _trigger_pub{nullptr};
|
||||
|
||||
@@ -197,10 +201,8 @@ private:
|
||||
param_t _p_min_interval;
|
||||
param_t _p_distance;
|
||||
param_t _p_interface;
|
||||
param_t _p_cam_cap_fback;
|
||||
|
||||
trigger_mode_t _trigger_mode{TRIGGER_MODE_NONE};
|
||||
int32_t _cam_cap_fback{0};
|
||||
|
||||
camera_interface_mode_t _camera_interface_mode{CAMERA_INTERFACE_MODE_GPIO};
|
||||
CameraInterface *_camera_interface{nullptr}; ///< instance of camera interface
|
||||
@@ -263,7 +265,6 @@ CameraTrigger::CameraTrigger() :
|
||||
_p_activation_time = param_find("TRIG_ACT_TIME");
|
||||
_p_mode = param_find("TRIG_MODE");
|
||||
_p_interface = param_find("TRIG_INTERFACE");
|
||||
_p_cam_cap_fback = param_find("CAM_CAP_FBACK");
|
||||
|
||||
param_get(_p_activation_time, &_activation_time);
|
||||
param_get(_p_interval, &_interval);
|
||||
@@ -272,10 +273,6 @@ CameraTrigger::CameraTrigger() :
|
||||
param_get(_p_mode, (int32_t *)&_trigger_mode);
|
||||
param_get(_p_interface, (int32_t *)&_camera_interface_mode);
|
||||
|
||||
if (_p_cam_cap_fback != PARAM_INVALID) {
|
||||
param_get(_p_cam_cap_fback, (int32_t *)&_cam_cap_fback);
|
||||
}
|
||||
|
||||
switch (_camera_interface_mode) {
|
||||
#ifdef __PX4_NUTTX
|
||||
|
||||
@@ -317,10 +314,7 @@ CameraTrigger::CameraTrigger() :
|
||||
// Advertise critical publishers here, because we cannot advertise in interrupt context
|
||||
camera_trigger_s trigger{};
|
||||
|
||||
if (!_cam_cap_fback) {
|
||||
_trigger_pub = orb_advertise(ORB_ID(camera_trigger), &trigger);
|
||||
|
||||
}
|
||||
_trigger_pub = orb_advertise_queue(ORB_ID(camera_trigger), &trigger, camera_trigger_s::ORB_QUEUE_LENGTH);
|
||||
}
|
||||
|
||||
CameraTrigger::~CameraTrigger()
|
||||
@@ -832,23 +826,33 @@ CameraTrigger::engage(void *arg)
|
||||
return;
|
||||
}
|
||||
|
||||
pps_capture_s pps_capture;
|
||||
|
||||
if (trig->_pps_capture_sub.update(&pps_capture)) {
|
||||
trig->_pps_hrt_timestamp = pps_capture.timestamp;
|
||||
trig->_pps_rtc_timestamp = pps_capture.rtc_timestamp;
|
||||
}
|
||||
|
||||
// Send camera trigger message. This messages indicates that we sent
|
||||
// the camera trigger request. Does not guarantee capture.
|
||||
camera_trigger_s trigger{};
|
||||
|
||||
timespec tv{};
|
||||
px4_clock_gettime(CLOCK_REALTIME, &tv);
|
||||
trigger.timestamp_utc = (uint64_t) tv.tv_sec * 1000000 + tv.tv_nsec / 1000;
|
||||
if (trig->_pps_hrt_timestamp > 0) {
|
||||
// Current RTC time (RTC time captured by the PPS module + elapsed time since capture)
|
||||
trigger.timestamp_utc = trig->_pps_rtc_timestamp + hrt_elapsed_time(&trig->_pps_hrt_timestamp);
|
||||
|
||||
} else {
|
||||
// No PPS capture received, use RTC clock as fallback
|
||||
timespec tv{};
|
||||
px4_clock_gettime(CLOCK_REALTIME, &tv);
|
||||
trigger.timestamp_utc = ts_to_abstime(&tv);
|
||||
}
|
||||
|
||||
trigger.seq = trig->_trigger_seq;
|
||||
trigger.feedback = false;
|
||||
trigger.timestamp = hrt_absolute_time();
|
||||
|
||||
// Publish only if _cam_cap_fback is disabled, otherwise, it is published over camera_capture driver
|
||||
if (!trig->_cam_cap_fback) {
|
||||
orb_publish(ORB_ID(camera_trigger), trig->_trigger_pub, &trigger);
|
||||
|
||||
}
|
||||
orb_publish(ORB_ID(camera_trigger), trig->_trigger_pub, &trigger);
|
||||
|
||||
// increment frame count
|
||||
trig->_trigger_seq++;
|
||||
|
||||
@@ -35,12 +35,6 @@
|
||||
#include <px4_platform_common/log.h>
|
||||
#include <board_config.h>
|
||||
|
||||
#ifdef BOARD_WITH_IO
|
||||
# define PARAM_PREFIX "PWM_AUX"
|
||||
#else
|
||||
# define PARAM_PREFIX "PWM_MAIN"
|
||||
#endif
|
||||
|
||||
void CameraInterface::get_pins()
|
||||
{
|
||||
// Set all pins as invalid
|
||||
@@ -49,14 +43,13 @@ void CameraInterface::get_pins()
|
||||
}
|
||||
|
||||
param_t p_ctrl_alloc = param_find("SYS_CTRL_ALLOC");
|
||||
int32_t ctrl_alloc = 0;
|
||||
bool ctrl_alloc = false;
|
||||
|
||||
if (p_ctrl_alloc != PARAM_INVALID) {
|
||||
param_get(p_ctrl_alloc, &ctrl_alloc);
|
||||
}
|
||||
|
||||
if (ctrl_alloc == 1) {
|
||||
|
||||
if (ctrl_alloc) {
|
||||
unsigned pin_index = 0;
|
||||
|
||||
for (unsigned i = 0; i < 16 && pin_index < arraySize(_pins); ++i) {
|
||||
|
||||
@@ -38,4 +38,4 @@
|
||||
* @group Sensors
|
||||
* @boolean
|
||||
*/
|
||||
PARAM_DEFINE_INT32(SENS_EN_ETSASPD, 0);
|
||||
PARAM_DEFINE_BOOL(SENS_EN_ETSASPD, 0);
|
||||
|
||||
@@ -38,4 +38,4 @@
|
||||
* @group Sensors
|
||||
* @boolean
|
||||
*/
|
||||
PARAM_DEFINE_INT32(SENS_EN_MS4525, 0);
|
||||
PARAM_DEFINE_BOOL(SENS_EN_MS4525, 0);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user