Compare commits

...

220 Commits

Author SHA1 Message Date
Hamish Willee 2b8db472ff geofence_params.c 2023-07-20 10:01:46 +10:00
Junwoo Hwang a37e3e7b06 Compile Targets Actions: Buildalso on stable, beta, release branches (#21866) 2023-07-19 19:17:04 +02:00
Matthias Grob ce8dd2ba48 deploy_all: add git ownership workaround
See
a6d2c2cf5e
2023-07-19 19:09:13 +02:00
Matthias Grob 0c2a8266bc CI: use the same container versions consistently
I updated all versions to the newest one that's used anywhere.
Then at least the straing can be found with full text search.
It's another step towards understanding and unifying the CI environment.
2023-07-19 07:46:45 -07:00
Matthias Grob 39ab1f5809 generate_board_targets: use current version of each container
to consistently use container versions and fix the beaglebone build
in metadata deployment CI.
2023-07-19 07:46:45 -07:00
Matthias Grob 013856fac1 generate_board_targets: explicitly specify build containers
in order to have the right container version for each toolchain
currently for the metadata deployment GitHub actions build.
2023-07-19 07:46:45 -07:00
Daniel Agar ec9dce2e89 Update world_magnetic_model to latest Tue Jul 18 11:14:09 UTC 2023
* Update world_magnetic_model to latest Tue Jul 18 11:14:09 UTC 2023
* [AUTO COMMIT] update change indication


Co-authored-by: PX4 BuildBot <bot@px4.io>
2023-07-18 14:29:08 -04:00
PX4 BuildBot 70826c5af4 update all px4board kconfig 2023-07-18 14:28:21 -04:00
PX4 BuildBot db591f25a6 boards: update all NuttX defconfigs 2023-07-18 14:27:37 -04:00
PX4 BuildBot 3f1740cb46 Update submodule sitl_gazebo-classic to latest Tue Jul 18 17:04:39 UTC 2023
- sitl_gazebo-classic in PX4/Firmware (a3f398943e): https://github.com/PX4/PX4-SITL_gazebo-classic/commit/0d53638452e6da4371c12599e1a649608361811e
    - sitl_gazebo-classic current upstream: https://github.com/PX4/PX4-SITL_gazebo-classic/commit/c8ac7ff39b694832a3eee6ab568058c145f42c6f
    - Changes: https://github.com/PX4/PX4-SITL_gazebo-classic/compare/0d53638452e6da4371c12599e1a649608361811e...c8ac7ff39b694832a3eee6ab568058c145f42c6f

    c8ac7ff 2023-07-18 Martina Rivizzigno - Add gimbal device id to mavlink messages DeviceAttitudeStatus and DeviceInformation (#994)
2023-07-18 14:26:35 -04:00
Daniel Agar b4687c27fe Jenkinsfile-compile board updates 2023-07-18 13:53:32 -04:00
Ramon Roche a3f398943e ci: update macos runner 2023-07-18 11:45:41 -04:00
Martina Rivizzigno 7f78ae449a update submodule mavlink to latest Thu Jul 6 10:14:36 2023
* remove MAV_PROTOCOL_CAPABILITY_SET_ACTUATOR_TARGET because removed from message def Auterion/mavlink@1c9949e
2023-07-18 11:37:32 -04:00
Beat Küng 8b780f2a96 airframes/x500_v2: move motors from AUX to MAIN 2023-07-18 11:13:16 -04:00
henrykotze b405a1aa49 advertise esc_status where is publishes
- esc_status is an optional logging topic resulting in it not being
logged if it doesn't get advertise -> Add advertise where applicable
2023-07-18 09:23:36 +02:00
Daniel Agar 45968c614e airspeed_selector: fix aspd typos 2023-07-17 20:37:46 -04:00
Daniel Agar c0a56ce268 airspeed_selector: fix groundspeed typos 2023-07-17 20:37:46 -04:00
bresch f5fd369ce8 [AUTO COMMIT] update change indication 2023-07-17 13:43:18 +02:00
bresch 1128ada90a ekf2: use correct AlphaFilter for 3D rotations 2023-07-17 13:43:18 +02:00
bresch 15bb8c0f2e AlphaFilter: add unit tests for Rot3 filtering 2023-07-17 13:43:18 +02:00
bresch c6aa82441f AlphaFilter: add quaternion specialization
Filtering 3D rotations require special care as they live on a curved space.
2023-07-17 13:43:18 +02:00
Silvan Fuhrer 88c5565a29 Commander: remove COM_ARM_ARSP_EN
Since we changed the threshold for allowing arming from TRIM/2 to AIRSPEED_MAX
is is very unlikely that one needs to disable this check.

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-07-17 10:35:02 +02:00
Silvan Fuhrer decf1ac0a8 Commander/Nav params: clean up descriptions
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-07-17 10:35:02 +02:00
Silvan Fuhrer 351f2a8287 VTOL: remove VT_B_DEC_FF
Experience from tuning different VTOL backtransitions showed only having a
I controller is beneficial over a combined FF/I breaking controller.

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-07-17 10:35:02 +02:00
Silvan Fuhrer 8fe5ce4f65 VTOL: param description clean up
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-07-17 10:35:02 +02:00
Beat Küng 327b7e611e boards/px4/fmu-v5/test: disable modules to reduce flash 2023-07-14 07:51:01 +02:00
Beat Küng 4a18baa4bd boards/mamba-f405-mk2: disable ekf components to reduce flash 2023-07-14 07:51:01 +02:00
Matthias Grob 83b832fdce ManualControl: fix case where mode switches unintentionally in air
Case: A vehicle is already operating but has no stick input or another
source than RC. When RC stick input is switched to either because it gets
first time available or as a fallback to joystick then the mode was
immediately changed to the switch position. This can lead to loss of
control e.g. when the vehicle is flying far away and the
mode switch of the RC is in some fully manual piloted mode.

I added tests to cover the cases where RC mode initialization is expected
and also unexpceted because the vehicle is already armed.
2023-07-13 12:00:35 +02:00
Matthias Grob 2235c40e28 ManualControl: add functional test for switch behavior
Using the established interface processInput() function.
2023-07-13 12:00:35 +02:00
Matthias Grob 877f37d79e ManualControlSelector: add parentheses in condition for clarity 2023-07-13 12:00:35 +02:00
Matthias Grob b19b0d0163 ManualControl: separate switches logic function + reset fix
Fix the previous switches initialized flag getting reset when no RC was
present or in use. This was found during functional testing.
2023-07-13 12:00:35 +02:00
Matthias Grob 3b2b60adde ManualControl: put input processing in separate testable function 2023-07-13 12:00:35 +02:00
Matthias Grob 8dc73c4621 ManualControl: correct manual control input subscription name 2023-07-13 12:00:35 +02:00
Matthias Grob 258fc786dc ManualControl: put parameter update into separate function 2023-07-13 12:00:35 +02:00
Matthias Grob 17535c288c ManualControl: correct CMake module definition
modules__ instead of module__ prefix
The module depends on the hysteresis library and probably because
it compiles with the still prevalent global includes the dependency
is not declared.
2023-07-13 12:00:35 +02:00
Matthias Grob 632596c1ea FlightTask: correct header comments 2023-07-13 12:00:35 +02:00
Matthias Grob 618724b409 Functional gtests: remove unnecessary subscription updates
A new subscription is updated on instanciation and no additional
update needs to be called for processing the first sample.
2023-07-13 12:00:35 +02:00
Sergei Grichine f000238987 SensorGps.msg: switch to double precision for lat/lon/alt
To match https://github.com/PX4/PX4-GPSDrivers/pull/132 - adding high precision RTK lat/lon/alt components
2023-07-13 07:50:09 +02:00
henrykotze f82785a322 CAN Filters for STM32H7 & bus-off handling 2023-07-12 11:56:37 -04:00
Loic Fernau f8c9be087b drivers: rework NXP UWB driver (#21124)
* UWB driver rework that uses 2 UWB MKBoards - 1 as Controller (Initiator), one as Controllee (Anchor)

Co-authored-by: NXPBrianna <108274268+NXPBrianna@users.noreply.github.com>
2023-07-12 11:44:23 -04:00
Matthias Grob 715a1ff701 Jenkins, docker_run.sh: use Debian 11 armhf container
also for the other linux target builds. It's a follow up to
e5503480e3
I wasn't aware that there are multiple different
container versions used for almost the same build.
2023-07-11 17:49:36 +02:00
bresch 9ebfed010f mag_cal: increase uncertainty of calibration parameters
in air bias estimation is usually really accurate and should be weighted
more heavily compared to the calibration parameters that are often
more approximate given the worse magnetic environment near the ground.
2023-07-11 11:33:53 -04:00
bresch 9e2e888f5e ekf2-bias_cal: reduce required stability period
For the mag, 30s of bias learning is a lot, given that it is only active
during turns and that it usually converges in < 5 seconds
2023-07-11 11:33:53 -04:00
bresch 2f52926972 mag_cal: fix mag bias estimate to mag cal
- since last_us is set to 0 every time the bias is not observable, the
  total time was also reset -> needed 30 consecutive seconds in mag 3D
  to be declared "stable"
- after landing, the mag_aligned_in_flight flag is reset. Using this for
  bias validity makes it invalid before we have a chance to save it to
  the calibration.
2023-07-11 11:33:53 -04:00
alexklimaj 69aa8689c0 Revert "rover_pos_control: thrust normalization for joystick input (#20885)"
This reverts commit 22f7d913bd.
2023-07-11 08:25:50 -07:00
bresch f5edff2647 ekf2 - preflt checks: scale flow innovation checks
Opt flow raw innovations can be really large on ground due to the small
distance to the ground (vel = flow / dist). To make the pre-flight check
more meaningful, scale it with the current distance.
2023-07-11 08:18:32 -07:00
bresch 672b29d555 ekf2: report dist bottom also when using flow for terrain
Terrain height can be estimated using a range finder and/or optical flow
2023-07-11 08:18:32 -07:00
alexklimaj 03528a6200 Add EKF2_OF_QMIN_GND to handle 0 optical flow quality when on ground 2023-07-11 08:18:06 -07:00
alexklimaj bca0be47bc Apply code review changes from @dagar 2023-07-11 08:18:06 -07:00
Eric Katzfey 9511248514 Removed the huge HAGL fuse timeout increase 2023-07-11 08:18:06 -07:00
Eric Katzfey f5d9ac4526 Cleaned up some comments and debug code 2023-07-11 08:18:06 -07:00
mjturi-mai 56c794108d actual fixes for velocity estimate errors and bad rng fusion 2023-07-11 08:18:06 -07:00
Matthias Grob 2dcb525cd9 RCUpdateTest: RC switch correct corner case test value
Co-authored-by: Junwoo Hwang <junwoo091400@gmail.com>
2023-07-11 15:58:48 +02:00
Matthias Grob 42fa41e601 rc_update: fix on-off-switch with negative threshold values 2023-07-11 15:58:48 +02:00
Matthias Grob 1fa5136e30 RCUpdateTest: add unit test for return switch 2023-07-11 15:58:48 +02:00
Matthias Grob 392d445783 RCUpdateTest: fix unit test parameters + restoring state after test
Channel values stay over one unit test but some tests assumed they are
reset each time. Reset the channel after these mode button tests.

Parameters survive between unit tests presumably as long as
the bianry runs. Reset them if a test requires that.
2023-07-11 15:58:48 +02:00
Matthias Grob e127ada07b rc_update: extend ModuleParams::updateParams() for local parameter updates 2023-07-11 15:58:48 +02:00
Matthias Grob 87c697a0d6 rc_update: switch back to protected scope and use fixture for testing 2023-07-11 15:58:48 +02:00
Silvan Fuhrer 81764c43a1 EKF2: use timestamp from argument of PublishEvPosBias() (#21822)
* EKF2: use timestamp from argument of PublishEvPosBias()

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>

* Update src/modules/ekf2/EKF2.cpp

Co-authored-by: Mathieu Bresciani <brescianimathieu@gmail.com>

---------

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
Co-authored-by: Mathieu Bresciani <brescianimathieu@gmail.com>
2023-07-11 11:07:39 +02:00
Matthias Grob 02ab5e0704 drv_pwm_output: remove unused PWM_ defines 2023-07-10 18:58:37 +02:00
Matthias Grob e776aca9ef UUV: stop motors when commanding zero speed 2023-07-10 18:58:37 +02:00
Matthias Grob 6b7aed3d44 Boats: stop motors when commanding zero speed 2023-07-10 18:58:37 +02:00
Matthias Grob 95a35c972d Rovers: stop motors when commanding zero speed 2023-07-10 18:58:37 +02:00
Matthias Grob 0be6069b83 TiltrotorVTOL: allow stopping front tilted motors in fast forward flight 2023-07-10 18:58:37 +02:00
Matthias Grob 66b451e61f TailsitterVTOL: allow explicitly stop forward motor with zero thrust 2023-07-10 18:58:37 +02:00
Matthias Grob 5568afbb12 StandardVTOL: explicitly stop forward motor with zero thrust 2023-07-10 18:58:37 +02:00
Matthias Grob 6b7b34a71a FixedWing: explicitly stop forward motor with zero thrust
This allows PWM and all other output methods to configure
stopped, idling and full thrust points and use them consistently.
The fact that a fixed wing motor can be stopped when zero thrust
is demanded is explicit and could in principle even be disabled.
The mechanism is the same as for a standard VTOL stopping the
multicopter motors in the fixed wing flight phase.
2023-07-10 18:58:37 +02:00
Matthias Grob 2a077181d9 ActuatorEffectiveness: add function to delectively stop motors with zero thrust 2023-07-10 18:58:37 +02:00
Matthias Grob a8bf47e606 Set default minimum and maximum PWM for motors
This allows to consistently define:
Motor stopped - disarmed PWM
Motor idling - minimum PWM
Motor at full thrust - maximum PWM

Any allocation can then distinctly decide if
a motor should be running or not depending
on the context and also explicitly command that.
2023-07-10 18:58:37 +02:00
xianglunkai 646f711b1a fake_magnetometer: add dpends=fake_magnetometer 2023-07-06 22:43:13 -04:00
Beat Küng 0d6cb46c83 lightware_laser_i2c: add SF30/D 2023-07-06 22:42:39 -04:00
bresch afa085da7f geofence: fix altitude change fence check
When asking for an altitude change only, the current position needs to
be used, otherwise the geofence check is be skipped
2023-07-06 22:39:39 -04:00
Julian Oes 745fa3720e fmu-v6x: build battery status
This is required to process data from the ADS1115 ADC and enables the
params BATx_I_CHANNEL and BATx_V_CHANNEL.

Testing is required whether this actually works on Pixhawk 6X though.

Signed-off-by: Julian Oes <julian@oes.ch>
2023-07-07 13:40:58 +12:00
Vincent Poon e18da100ed Add ADC_ADS1115 Parameter to FMUv6x Default Build
Adding ADC_ADS1115 Parameter to FMUv6x Default Build to allow FMUv6X user to use ADS1115 with Analog Power Modules.
2023-07-07 13:40:58 +12:00
Antonio Sanjurjo C c1cb48c2ea EKF2 cleanup. Use MAX_NUM_x constants instead of hard-coded numbers
Signed-off-by: Antonio Sanjurjo C <74329840+antonio-sc66@users.noreply.github.com>
2023-07-06 09:36:27 +02:00
Patrick José Pereira 39e04d9712 lib: matrix: SquareMatrix: Deal with the special case of M=1
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
2023-07-06 08:24:33 +02:00
Patrick José Pereira 724f5a97a9 platform: posix: px4: Add missing ctsdint include for uint8_t
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
2023-07-06 08:24:33 +02:00
Julian Oes a6502c9f2b ROMFS: auto try RGBLED is31fl3195
This is required to auto-start the is31fl3195 driver if connected.

Signed-off-by: Julian Oes <julian@oes.ch>
2023-07-05 20:49:39 +12:00
Thomas Stastny dccfcb85c1 (Mission) FeasibilityChecker: remove duplicate line 2023-07-04 11:17:23 +02:00
Silvan Fuhrer a617e9c54b Navigator RTL: run find_RTL_destination() only on_inactive
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-07-04 09:36:22 +02:00
Silvan Fuhrer f275085e84 Navigator: Loiter: always establish new Loiter with center at current pos
When switching into Hold mode establish a Loiter around current position,
even if we were before already loitering (eg in Mission mode).

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-07-04 09:35:40 +02:00
Mathieu Bresciani 288e3ae74a EKF2: vision attitude error filter (#21791)
* ekf2-ev: filter q_error for frame correction
* ekf2: filter EV attitude error centrally
2023-07-03 11:13:59 -04:00
Andrew Brahim 24665f10f2 VL53L1X: fix scheduling (#21787)
* should be 50 Hz instead of 50,000 Hz

Signed-off-by: dirksavage88 <dirksavage88@gmail.com>
2023-07-03 10:49:53 -04:00
Matthias Grob a36c922fc0 ActuatorEffectivenessHelicopterTest: adapt to new constructor 2023-07-03 16:21:27 +02:00
Beat Küng 77d6c722a7 helicopter: add tail servo support
as a separate CA_AIRFRAME, as the UI cannot switch between servo/motor.
2023-07-03 16:21:27 +02:00
Beat Küng bae413a332 v6x: start mavlink on TELEM2 for skynode
Equivalent to v5x
2023-07-03 16:20:41 +02:00
Igor Mišić abe0ca1307 boards/holybro/kakutef7: enable gps, osd, top, dmesg. Disable uxrce_dds 2023-07-03 11:22:33 +02:00
Igor Mišić f5193bb155 boards/holybro/kakutef7: enable rc serial singlewire 2023-07-03 11:22:33 +02:00
Igor Mišić 2307d4aa22 boards/holybro/kakutef7: remove px4_platform_config
kakutef7 doesn't use manifest
2023-07-03 11:22:33 +02:00
Harrison Gieraltowski 018ec97c41 mavlink_log_handler: handle _next_entry (#21784) 2023-07-03 10:30:07 +02:00
Igor Mišić bfa72a1bee rc.board_arch_defaults: add the silent flag for EKF2_MULTI_IMU 2023-07-03 10:08:26 +02:00
Matthias Grob b7e2a9c320 FlightTaskAltitude: remove duplicate, deprecated yaw stick handling 2023-07-03 09:52:47 +02:00
Matthias Grob 4d465533b5 FlightTaskManualAcceleration: remove duplicate yaw stick handling
It's already instanciated and ran by FlightTaskManualAltitude
which FlightTaskManualAcceleration inherits from.
2023-07-03 09:52:47 +02:00
Matthias Grob 03183ccacf mc_pos_control_params: remove forgotten trailing zeroes 2023-07-03 09:52:47 +02:00
Junwoo Hwang 0196241c10 stale action: Configure again (#21785)
Having newline between I think didn't apply the PR stale days setting of
30 properly (it was using 45)

And it seemd that unless I set the days-before-close to -1
intentionally, it would still close the Issue/PRs, as the default value
is 7 already.

Also updated version of the stale action to v8
2023-06-30 19:12:16 +02:00
Junwoo Hwang 3557644010 Stale action re-configure (still just debug mode) (#21783)
* Remove old stale bot yaml file

* Remove slack svg file (unused)

* Stale action: Only apply stale label, and no other actions

Respecting the opinion on
https://github.com/PX4/PX4-Autopilot/commit/fa9ac6ecf651232f3105ca124a2d2c54ab8620d0,
it seems reasonable to disable commenting feature, and just keep the
action only applying the `stale` label. This will reduce the noise /
email spams / ping pong fight with the stale bot (Action)
2023-06-30 17:18:43 +02:00
Junwoo Hwang 46b09acf0b Update Issue templates (#21779)
- Remove unnecessary text rendering, which made clicking log links
  harder
- Re adjust markdown elements to make it easier to read / intuitive when
  creating an issue
2023-06-30 16:45:05 +02:00
Silvan Fuhrer 4348dcce2a Navigator: loiter: remove unnecessary _loiter_pos_set (#21776)
* Navigator: loiter: remove unnecessary _loiter_pos_set

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>

* Navigator: loiter: remove commented line

---------

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
Co-authored-by: Matthias Grob <maetugr@gmail.com>
2023-06-30 15:40:20 +02:00
Matthias Grob a6d2c2cf5e Github Actions: add workaround for dubious ownership errors
until I figure out what a better solution
would look like.
See
https://github.com/actions/runner/issues/2033
2023-06-27 17:17:31 +02:00
Matthias Grob e5503480e3 GitHub Actions: use Debian 11 to build linux targets
This solves the CI problem related to the required cmake version
described here:
https://github.com/PX4/PX4-Autopilot/pull/21737#pullrequestreview-1489844308

See https://github.com/PX4/PX4-containers/pull/332
for the container changes.
2023-06-27 17:17:31 +02:00
Peter van der Perk e739afe362 MR-CANHUBK3 ADAP board support, add ADC support 2023-06-27 07:24:07 -04:00
Silvan Fuhrer e34993969b tiltrotor: expose tilting duration of backtransition in param
Instead of hard-coding the tilting duration (from FW to MC tilt),
expose it as a parameter (VT_BT_TILT_DUR). The default is the same
as the hard-coded value previously (1s).
Slower tilting mechanisms need a higher value here, while for smaller
ones a too high value results in unnecessary delays till the motors
are in hover configuration.

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-06-27 10:11:41 +02:00
Silvan Fuhrer 05489f9ecf tiltrotor: reduce BACKTRANS_THROTTLE_UPRAMP_DUR_S to 0.5s
This reduces the motor ramp up time after a transitions is declared over.

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-06-27 10:11:41 +02:00
Silvan Fuhrer c26b699f8a tiltrotor: reduce BACKTRANS_THROTTLE_DOWNRAMP_DUR_S from 1 to 0.5s
This affects how soon after a backtransition the vehicle has the
full hover controller running again. Specifically it reduces the
duration of the ramp down of the motors prior to tilting them.

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-06-27 10:11:41 +02:00
Ramon Roche 98d8935034 drivers/barometer/invensense/icp201xx: increase delay after configuration (#21765)
- fixes wrong altitude reporting
2023-06-26 14:16:06 -04:00
bresch 8d1b0e45fa opt-requirements: bump SymForce version 2023-06-26 14:10:54 -04:00
bresch eb70c9f6f3 ekf2: update auto-generated code to SymForce 0.9.0 2023-06-26 14:10:54 -04:00
bresch fdf7867a3e ekf2: update derivation to SymForce 0.9.0 2023-06-26 14:10:54 -04:00
bresch c99f56f010 wind_estimator: update generated code to Symforce 0.9.0 2023-06-26 14:10:54 -04:00
bresch 73e5ff109c wind_estimator: update derivation to use SymForce 0.9.0 2023-06-26 14:10:54 -04:00
Matthias Grob 7e79d65aa4 mc_pos_control_params: clarify maximum vertical velocity parameters 2023-06-26 17:01:20 +02:00
Matthias Grob 439670444f mc_pos_control_params: more gain & velocity decimals, more clear wording 2023-06-26 17:01:20 +02:00
Matthias Grob a6a913bf25 mc_pos_control: remove trailing zeroes 2023-06-26 17:01:20 +02:00
Matthias Grob 54a351639c mc_pos_control: improve parameter metadata
- Adapted descriptions to be more clear
- Adjusted some limits and decimals
2023-06-26 17:01:20 +02:00
Matthias Grob d00ad1b815 mc_pos_control: separate parameter metadata into multiple files
because the original file was almost 1k lines and
the order of parameters more historical than after topic.
2023-06-26 17:01:20 +02:00
Matthias Grob 20d0661e87 HealthAndArmingChecks: disallow arming via parameter
COM_ARMABLE is set to "Disabled" will prevent arming.
 This allows to set the parameter when ground demoing a drone or
 if it's in maintenance for safety reasons.
2023-06-22 13:17:47 +02:00
Matthias Grob 173407581b HealthAndArmingChecks: reorder CMakeLists alphabetically 2023-06-22 13:17:47 +02:00
Sean Murphy 7ed90c6d0c ekf2: process_logdata_ekf.py fix reject_mag* and imu_coning* key errors 2023-06-21 21:08:43 -04:00
Josh Henderson a07d10704b ROMFS : POSIX Airframes reserve space for custom models 2023-06-21 21:06:07 -04:00
Matthias Grob 18d89e4bc1 lightware_lase_serial: fix pointer for enabling serial mode
const char *data = "www\r\n";
Defines a cstring of 6 bytes: 'w', 'w', 'w', '\r', '\n', '\0'

type of data: char const*
type of &data: char const**

So when we call
write(_fd, &data, strlen(data));
then strlen(data) == 5
and we send the 4 byte memory address of data
+ some additional random byte.

Correct is
write(_fd, data, strlen(data));
where char const* gets casted to const void * and we pass
the pointer to the content of data.

The fundamental problem here is write() not being typesafe.
2023-06-21 15:59:12 +02:00
Thomas Debrunner fd267fb9a5 param save: Add a blocking API for param saves to be used from shell. 2023-06-21 08:19:52 +02:00
Silvan Fuhrer 18f0311161 Navigator: Mission: improve survey mission resume
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-06-20 14:38:03 +02:00
Silvan Fuhrer 24b1ef93b2 Mission: reset mission on landing only if last item was reached
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-06-20 14:38:03 +02:00
Silvan Fuhrer c6870006c7 Navigator: move disable camera trigger on mission inactivation to seperate function
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-06-20 14:38:03 +02:00
Daniel Agar d9ae2ed7ac ekf2: regenerate yaw estimator symforce
- remove underscore uppercase variable naming that can be problematic
2023-06-19 21:00:25 -04:00
Silvan Fuhrer 2a48c1cb18 boards: disable gyro fft module for v4 to safe flash
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-06-19 16:22:42 -04:00
Beat Küng 65ad6afb08 Micro-XRCE-DDS-Client: update submodule
Go get https://github.com/eProsima/Micro-XRCE-DDS-Client/pull/359.
2023-06-19 16:05:36 -04:00
Silvan Fuhrer 4632fbd600 FWRateController: use param find for VT_DIFTHR_EN as pure FW build doesn't have VTOL module built
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-06-19 10:59:20 +02:00
Matthias Grob 69aebe650b FixedwingRateControl: rework VTOL differential thrust saturation
Co-authored-by: Silvan Fuhrer <silvan@auterion.com>
2023-06-19 10:59:20 +02:00
Matthias Grob 53b9e66c66 RateControl: allow setting individual saturation flags
This helps for more complicated cases where certain axes are controlled
through and get feedback from a different allocator.
2023-06-19 10:59:20 +02:00
Beniamino Pozzan 957a06a780 Fix enum for COM_RC_IN_MODE in failsafe
add enum RcInMode

Signed-off-by: Beniamino Pozzan <beniamino.pozzan@phd.unipd.it>
2023-06-19 08:04:43 +02:00
Niklas Hauser 8fe65c6722 Driver: Refactor MCP23009 GPIO expander into uORB driver 2023-06-19 07:58:21 +02:00
Konrad 3303323971 mavlink stream: Heartbeat system status should neglect the actuator_armed.lockdown flag in HIL, since this is always enabled for HIL. 2023-06-16 14:21:32 +02:00
Matthias Grob 053d3020b0 esc_calibration: handle timeout wraps better
Co-authored-by: Beat Küng <beat-kueng@gmx.net>
2023-06-16 12:05:47 +02:00
Matthias Grob cfb24869e9 esc_calibration: allow to calibrate ESCs without battery detection
Before this the ESC calibration aborts if battery detection doesn't work.
The problem is if the user still connects the battery as he gets instructed
and the calibration aborts then the ESCs are in calibration mode and
after abortion calibrate to the wrong value.

Also I realized there's no additional safety by aborting the calibration
if the battery cannot be detected during the timeout because a pixhawk
board without power module will report a battery status from the
ADC driverand in it that no battery is connected which is the best
it can do. In this situation the motors will still spin if the
ESCs are powered.
2023-06-16 12:05:47 +02:00
Matthias Grob 4396b6e9f6 esc_calibration: adjust timing to work with all tested ESCs
Some ESCs e.g. Gaui enter the menu relatively quickly if the
signal is high for too long. To solve that it's kept high shorter.
Also all tested ESCs detect the low signal within a shorter time
so no need to wait longer.
2023-06-16 12:05:47 +02:00
Matthias Grob 6929493134 esc_calibration: Improve readability and robustness
- Change timings for a more reliable calibration.
- Make sure there's an error message when battery measurement is not
available also when it gets disabled after system boot in the power
just above the calibration button.
- Safety check if measured electrical current goes up after issuing the
high calibration value for the case the user did not unplug power
and the detection either fails or is not enforced.
2023-06-16 12:05:47 +02:00
Matthias Grob a28ad8e845 mixer_module: consistent PWM/oneshot calibration range 2023-06-16 12:05:47 +02:00
Matthias Grob 1ceca8f2cf actuator_test: condition order refactoring 2023-06-16 12:05:47 +02:00
Matthias Grob ffe0ec27e6 Unify MixingOutput constructor calls
to make them easy to search for and check the arguments.
2023-06-16 12:05:47 +02:00
Silvan Fuhrer fc357921fd navigator: send commands to anyone listening
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-06-12 09:41:28 +02:00
Junwoo Hwang 9b95330efc Github Issue: Replace Bug report to YAML 2023-06-09 21:18:28 -04:00
Junwoo Hwang 6b1f805b15 Issue Template: Move Feature request to YAML 2023-06-09 21:18:28 -04:00
Junwoo Hwang 89e8ba0b53 Issue Template: Switch to YAML for direct links 2023-06-09 21:18:28 -04:00
PX4 BuildBot bbc6ed43bd Update submodule sitl_gazebo-classic to latest Sat Jun 10 00:39:02 UTC 2023
- sitl_gazebo-classic in PX4/Firmware (f9510557a6): https://github.com/PX4/PX4-SITL_gazebo-classic/commit/2e3ed9bfb04d8865e59380afa575dd37b0d6c8e0
    - sitl_gazebo-classic current upstream: https://github.com/PX4/PX4-SITL_gazebo-classic/commit/0d53638452e6da4371c12599e1a649608361811e
    - Changes: https://github.com/PX4/PX4-SITL_gazebo-classic/compare/2e3ed9bfb04d8865e59380afa575dd37b0d6c8e0...0d53638452e6da4371c12599e1a649608361811e

    0d53638 2023-05-23 JaeyoungLim - Fix force visualization feature (#985)
9bfecb6 2023-05-22 JaeyoungLim - Fix readme displayed in github (#984)
2023-06-09 21:17:46 -04:00
alexklimaj 51a4eafe0c ARKV6X sync with FMUV6X 2023-06-09 21:17:12 -04:00
Matthias Grob 94d2140a4f mixer_module: remove unnecessary init state
That state only delayed the first arming by 50 miliseconds.
Was presumably a workaround for some issue very very early on.
See cc452834c0
2023-06-09 21:15:08 -04:00
Matthias Grob 0f256718d3 mixer_module: correct pwm ramp
Before:
When the mixed throttle for the motor was exactly zero the ramp went
from the disarmed PWM value to the minimum PWM value.

When the throttle was even just slightly different from zero the ramp
made a jump up to the commanded throttle scaled between
disarmed PWM and maximum PWM, then ramped between
disarmed PWM and minimum PWM and at the end jumped up again to
the commanded throttle scaled between minimum PWM and maximum PWM.

After:
The ramp goes from disarmed PWM value to the the
commanded throttle scaled between minimum PWM and maximum PWM.
If the commanded throttle changes during the ramp then the scale and
hence also end value of the ramp changes.
2023-06-09 21:15:08 -04:00
Mathieu Bresciani 24de623989 EKF2: Zero gyro update (#21691)
When at rest, directly fuse the gyro data as an observation of its bias.
This allows to strongly observe the gyro biases without having to fuse a
constant heading that makes the ekf too confident about its heading.
2023-06-09 21:13:18 -04:00
Beat Küng c95539e8ce boards: increase init stack size by 150B
External airframes need a bit more stack due to nested configs.
2023-06-09 21:11:11 -04:00
Beat Küng 7230a6dd8e commander: add option to exclude mag to param SYS_FAC_CAL_MODE 2023-06-09 21:05:40 -04:00
bresch 8b67fa91a1 factory cal: exclude _PRIO params 2023-06-09 21:05:40 -04:00
alessandro f9510557a6 always trigger all cameras 2023-06-09 13:17:45 +02:00
Morten Fyhn Amundsen 135f02679a ekf2: Fix description of EKF2_HDG_GATE 2023-06-09 11:52:55 +02:00
alexklimaj c3db4f57df Subscribe to all intances of gps_inject_data and mirror uavcan rtcm pub mirror gps driver 2023-06-09 14:51:28 +12:00
alexklimaj 5b8ae69f47 uavcan rtcm set max num injections 2023-06-09 14:51:28 +12:00
alexklimaj acd19a0520 Ublox add UBX-RXM-RTCM for RTCM input status 2023-06-09 14:51:28 +12:00
Beat Küng f119cca3b3 logger: restart on file write error
This can also happen if the maximum file size is reached.
2023-06-08 09:52:49 +02:00
Hamish Willee ea61d74c17 ADS1115: update docs (#21638) 2023-06-08 08:55:31 +02:00
mcsauder 1707805ed2 Remove the simulator SIH module from fmu-v5x test build and the fixedwing autotune module from the fmu-v5 test build to meet flash constraints. 2023-06-07 12:07:29 -04:00
mcsauder af44da25f0 Use accel of the same instance or primary baro for gyro instances that do not have valid temperature readings in temperature calibration data, use primary baro for magnetometers without valid temperature. 2023-06-07 12:07:29 -04:00
mcsauder b8ad9bdbe5 Add magnetometer thermal compensation. 2023-06-07 12:07:29 -04:00
oneWayOut 6ee2d796ea delete unused ECL_LIB_GIT_VERSION
Since 'ecl' is nomore a git submodule, code lines related to
'ECL_LIB_GIT_VERSION' could be deleted
2023-06-06 11:24:49 -04:00
Matthias Grob f4de43a10b PULL_REQUEST_TEMPLATE: fix typo 2023-06-06 17:22:33 +02:00
Matthias Grob b625e43566 rc_update: throttle trim centering fix for reverse channel
The entire logic did not work for the case when the throttle channel is
reversed because then QGC sets trim = max for that channel and
the result is only half the throttle range.
2023-06-06 17:22:33 +02:00
Julian Oes cd485b3a13 lights: Add LP5562 RGBLED driver
This adds support for the TI LP5562 RGB LED driver.

Things to note:
- The driver is initialized in simple PWM mode using its internal clock,
  for R,G,B, but not for W(hite).
- The chip doesn't have a WHO_AM_I or DEVICE_ID register to check.
  Instead we read the W_CURRENT register that we're generally not using
  and therefore doesn't get changed.
- The current is left at the default 17.5 mA but could be changed using
  the command line argument.

Datasheet:
https://www.ti.com/lit/ds/symlink/lp5562.pdf

Signed-off-by: Julian Oes <julian@oes.ch>
2023-06-06 13:12:44 +12:00
Eric Katzfey c468266b27 boards: Update modalai fcv2 board support (#21653)
* Removed obsolete voxl2-io directory
* Updated support for ModalAI FC v2 board
* Added UAVCAN back in and removed local position estimator and attitude estimator Q that are no longer supported.
* Removed unneeded IMU drivers
2023-06-05 12:42:46 -04:00
bresch 5233b33242 update change indicator 2023-06-05 11:58:42 -04:00
bresch 403a6310c4 gnss yaw: compare auto-generated Jacobian against autodiff 2023-06-05 11:58:42 -04:00
bresch c6b259d5f6 yaw_fusion: compare auto-generated Jacobian against autodiff 2023-06-05 11:58:42 -04:00
bresch d4528dc53a sideslip: compare auto-generated Jacobian against autodiff 2023-06-05 11:58:42 -04:00
bresch e7c4a22be8 mag_3d: compare auto-generated Jacobian against autodiff 2023-06-05 11:58:42 -04:00
bresch c6f1a63659 opt_flow: compare auto-generated Jacobian against autodiff 2023-06-05 11:58:42 -04:00
bresch d03f242c04 DCM: use simplified conversion from unit quaternion
This is exactly equivalent for a unit quaternion (and only unit
quaternions should be used to encode a rotation)
2023-06-05 11:58:42 -04:00
bresch 9d7abf2552 ekf2: symforce - use builtin Rot3 and Quaternion operations 2023-06-05 11:58:42 -04:00
Julian Oes ea8b985a2f netman: fix line too long
Signed-off-by: Julian Oes <julian@oes.ch>
2023-06-05 12:01:07 +12:00
Ramon Roche 2f448e9d9f netman: update module description (#21664)
Co-authored-by: David Sidrane <David.Sidrane@Nscdg.com>
Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
2023-06-02 09:33:18 -07:00
Giacomo Bertelli 99f6d4190c Update sitl_multiple_run.sh (#21538)
Edited line to account for the fact that the file has been moved one level deeper in the folder tree (the same edit should be made in the documentation https://docs.px4.io/main/en/simulation/multi_vehicle_jmavsim.html)
2023-06-02 10:28:49 +02:00
Silvan Fuhrer a52c0fd9f5 FW TECS: reduce default for FW_T_I_GAIN_THR to more appropriate 0.05
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-06-02 10:23:46 +02:00
Silvan Fuhrer 1c7320b9e3 VTOL: params: add missing @decimal and @increment
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-06-02 10:23:46 +02:00
Silvan Fuhrer ac811450e5 Tiltrotor params: set default for VT_TILT_TRANS to 0.4
0.4 tilt is more reasobale to get nice transitions than
the previous 0.3.

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-06-02 10:23:46 +02:00
Silvan Fuhrer 8f64c79b4c FWAttitudeController: params: increases parameter ranges
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-06-02 10:23:46 +02:00
Silvan Fuhrer 459f9c5331 Commander: open up limits on TRIM_ROLL/PITCH/YAW to +/- 50%
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-06-02 10:23:46 +02:00
Silvan Fuhrer ad778b37f5 FWRateController: fix @group, all should be in FW Rate Control group
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-06-02 10:23:46 +02:00
Silvan Fuhrer f41ad10275 FW Rate Controller: relax param ranges
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-06-02 10:23:46 +02:00
Silvan Fuhrer a1167d6c98 Navigator: make sure to reset mission.item fields touched by set_vtol_transition_item (#21641)
set_vtol_transition_item sets the params of the mission item directly
to values that make sense for NAV_CMD_DO_VTOL_TRANSITION, but don't
for other NAV_CMDs. So make sure that whenever we use it, we then in
the next step reset the touched mission_item fields.

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-06-02 10:21:23 +02:00
Niklas Hauser ebe152fc22 fmu-v6x: Increase Mavlink UART buffers
Our serial_test showed only ~84kB/s with the default 256 RX buffer size
with significant ~2.5ms periods of the flow control RTS pin being
asserted. Increasing size to 600 (same as FMU-v5x) brings the throughput
only to ~190kB/s, while a size of >1500 achieves ~350kB/s. Larger RX
buffers do not increase throughput anymore, while the theoretical
maximum is 375kB/s.

Transmit buffer size is increased to 10kB same as on FMUv5x to prevent
any future differences in queue behavior and throughput. serial_test
showed ~350kB/s throughput at 3kB TX buffer size, so this is just a
precaution.
2023-06-01 07:55:21 +02:00
Eric Katzfey d2011e99b2 commander: add Open Drone ID arming check (#21652) 2023-06-01 07:52:52 +02:00
Silvan Fuhrer 4b5e14aeec Navigator: MissionFeasibilityCheck: check if items fit to the current vehicle type (#21602)
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-05-31 19:27:27 +02:00
Roman Bapst d6413a6a90 Refactor uncommanded descend Quad-Chute (#21598)
* refactored uncommanded descend quadchute
- use fixed altitude error threshold
- compute error relative to higest altitude the vehicle has achieved
since it has flown below the altitude reference (setpoint)

* disabled altitude loss quadchute by default

* altitude loss quadchute: added protection against invalid local z


---------

Signed-off-by: RomanBapst <bapstroman@gmail.com>
2023-05-31 17:57:50 +02:00
henrykotze fab58ee2bc cannode prearm by default enable on ArmingStatus
- ArmingStatus DroneCAN message STATUS field is only set to true based on
arming_status.armed

- Cannode prearm state is set to true always when ArmingStatus DroneCan
message is received
2023-05-31 11:20:31 -04:00
Beat Küng db18a94382 refactor param: reduce flash usage
Reduces usage by ~1.5KB
2023-05-31 07:45:20 +02:00
Beat Küng 1bfca24fa9 refactor param: move autosave to px4::wq_configurations::lp_default work queue
Changes initialization order as param_init now depends on wq manager
2023-05-31 07:45:20 +02:00
Beat Küng e65a0a01d6 fix WorkQueueManager: wait until running to prevent race conditions 2023-05-31 07:45:20 +02:00
Thomas Debrunner f0dd9fa445 param: Add contained-params-bitset export interface to the param layers
Allows for efficient looping over the contained data
2023-05-31 07:45:20 +02:00
Thomas Debrunner bc872822bc params: Overhaul param system to use a layered approach without locking
- Instead we disable interrups on Nuttx where needed
- No lock is held during param export. Params can be changed
  concurrently and we rely on the fact that another export will be
  triggered in that case.
2023-05-31 07:45:20 +02:00
alexklimaj 70178b66d8 Cannode add OSD drivers 2023-05-29 14:07:38 +02:00
Silvan Fuhrer f0b476bcba ROMFS: set default for VT_B_TRANS_DUR for all tailsitter configs to 5s
5s is a more reasobale time for tailsitters, which rely differently on this param
than other VTOL types. Tailsitters will ramp the pitch up withing this time,
while for other VTOLS types its only the max transitiont time.

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-05-29 12:25:20 +02:00
Silvan Fuhrer ee19ec4670 ROMFS: tailsitter SITL config: improve tuning after model changes
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-05-29 12:25:20 +02:00
Silvan Fuhrer f96073f442 ROMFS: quadtailsitter SITL config: improve tuning
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-05-29 12:25:20 +02:00
Julian Oes 6977fd9956 ROMFS: initial quadtailsitter tuning
This is now using the advanced lift drag plugin.

The important step was to enable airmode for yaw, otherwise yaw gets
saturated at low throttle and we can barely roll.

The other trick was to raise airspeed a little bit to avoid operating
too much at the lower end of throttle where control authority is low.

Signed-off-by: Julian Oes <julian@oes.ch>
2023-05-29 12:25:20 +02:00
JaeyoungLim e3aea937c3 Support quadtailsitter in SITL 2023-05-29 12:25:20 +02:00
Daniel Agar 6535cc758e ekf2: fuse mag update last heading fuse time if updating all states
- handle synthetic z special case
2023-05-26 08:48:08 -06:00
Silvan Fuhrer bd182ecf70 FWPositionControl: navigateWaypoints: fix logic if already past waypoint and need to turn back (#21635)
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-05-26 15:12:42 +02:00
Silvan Fuhrer ad769db8d6 FW Rate Controller: allow to enable/disable yaw axis in Acro (#21566)
* RateControl: rename setGains to setPidGains to be more precise

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>

* FW Rate controller: only allow to disable Yaw in Acro, not roll and pitch

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>

---------

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-05-26 15:09:29 +02:00
Alex Klimaj ee96d209d7 drivers/uavcannode: add GNSS Auxiliary publisher 2023-05-24 21:27:50 -04:00
Junwoo Hwang 822d784335 Create stale bot (Github actions) (#21630) 2023-05-24 10:13:40 +09:00
Loïc Dubois 1b9d90e7c4 mavlink: fix mismatch between header macros and class used 2023-05-23 20:44:32 -04:00
alexklimaj dc99a875c3 Mavlink receiver unadvertise all
uorb multi pubs in destructor
2023-05-23 18:40:06 -06:00
Matthias Grob c903288f4c ManualControlSelectorTest: adapt to using input validity flag 2023-05-23 17:24:17 +02:00
Matthias Grob 7b6f45079b ManualControl: use input validity flag to check for RC calibration 2023-05-23 17:24:17 +02:00
Matthias Grob 7d0596d244 RCInput: follow topic name convention 2023-05-23 17:24:17 +02:00
Patrick José Pereira 8feb662557 systemcmds: Use snprintf over sprintf
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
2023-05-22 07:46:54 +02:00
Patrick José Pereira 09f282b282 temperature_compensation: Use snprintf over sprintf
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
2023-05-22 07:46:54 +02:00
Patrick José Pereira 5fff0526cf rc_update: Use snprintf over sprintf
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
2023-05-22 07:46:54 +02:00
Patrick José Pereira 837847f3ad mavlink: Use snprintf over sprintf
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
2023-05-22 07:46:54 +02:00
Patrick José Pereira ca1d32a29d HealthAndArmingChecks: Use snprintf over sprintf
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
2023-05-22 07:46:54 +02:00
Patrick José Pereira cee21bd703 sensor_calibration: Use snprintf over sprintf
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
2023-05-22 07:46:54 +02:00
Patrick José Pereira 643d89f54b uORB: Use snprintf over sprintf
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
2023-05-22 07:46:54 +02:00
Patrick José Pereira dc2428a348 px4_log: Use snprintf over sprintf
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
2023-05-22 07:46:54 +02:00
533 changed files with 20241 additions and 14674 deletions
+7 -1
View File
@@ -9,7 +9,7 @@ pipeline {
script {
def build_nodes = [:]
def docker_images = [
armhf: "px4io/px4-dev-armhf:2022-08-12",
armhf: "px4io/px4-dev-armhf:2023-06-26",
arm64: "px4io/px4-dev-aarch64:2022-08-12",
base: "px4io/px4-dev-ros2-foxy:2022-08-12",
nuttx: "px4io/px4-dev-nuttx-focal:2022-08-12",
@@ -40,6 +40,8 @@ pipeline {
"ark_can-flow_default",
"ark_can-gps_canbootloader",
"ark_can-gps_default",
"ark_cannode-gps_canbootloader",
"ark_cannode-gps_default",
"ark_can-rtk-gps_canbootloader",
"ark_can-rtk-gps_default",
"ark_fmu-v6x_bootloader",
@@ -53,8 +55,10 @@ pipeline {
"cuav_nora_default",
"cuav_x7pro_default",
"cubepilot_cubeorange_default",
"cubepilot_cubeorangeplus_default",
"cubepilot_cubeyellow_default",
"diatone_mamba-f405-mk2_default",
"flywoo_gn-f405_default",
"freefly_can-rtk-gps_canbootloader",
"freefly_can-rtk-gps_default",
"holybro_can-gps-v1_canbootloader",
@@ -73,6 +77,7 @@ pipeline {
"modalai_fc-v1_default",
"modalai_fc-v2_default",
"modalai_voxl2-io_default",
"mro_ctrl-zero-classic_default",
"mro_ctrl-zero-f7_default",
"mro_ctrl-zero-f7-oem_default",
"mro_ctrl-zero-h7-oem_default",
@@ -85,6 +90,7 @@ pipeline {
"nxp_fmuk66-v3_default",
"nxp_fmuk66-v3_socketcan",
"nxp_fmurt1062-v1_default",
"nxp_mr-canhubk3_default",
"nxp_ucans32k146_canbootloader",
"nxp_ucans32k146_default",
"omnibus_f4sd_default",
+8 -8
View File
@@ -12,7 +12,7 @@ pipeline {
stage("build cubepilot_cubeorange_test") {
agent {
docker {
image 'px4io/px4-dev-nuttx-focal:2021-09-08'
image 'px4io/px4-dev-nuttx-focal:2022-08-12'
args '--cpu-shares 512 -e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
@@ -91,7 +91,7 @@ pipeline {
stage("build cuav_x7pro_test") {
agent {
docker {
image 'px4io/px4-dev-nuttx-focal:2021-09-08'
image 'px4io/px4-dev-nuttx-focal:2022-08-12'
args '--cpu-shares 512 -e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
@@ -165,7 +165,7 @@ pipeline {
stage("build px4_fmu-v4_test") {
agent {
docker {
image 'px4io/px4-dev-nuttx-focal:2021-09-08'
image 'px4io/px4-dev-nuttx-focal:2022-08-12'
args '--cpu-shares 512 -e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
@@ -238,7 +238,7 @@ pipeline {
stage("build px4_fmu-v4pro_test") {
agent {
docker {
image 'px4io/px4-dev-nuttx-focal:2021-09-08'
image 'px4io/px4-dev-nuttx-focal:2022-08-12'
args '--cpu-shares 512 -e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
@@ -312,7 +312,7 @@ pipeline {
stage("build px4_fmu-v5_debug") {
agent {
docker {
image 'px4io/px4-dev-nuttx-focal:2021-09-08'
image 'px4io/px4-dev-nuttx-focal:2022-08-12'
args '--cpu-shares 512 -e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
@@ -403,7 +403,7 @@ pipeline {
stage("build px4_fmu-v5_stackcheck") {
agent {
docker {
image 'px4io/px4-dev-nuttx-focal:2021-09-08'
image 'px4io/px4-dev-nuttx-focal:2022-08-12'
args '--cpu-shares 512 -e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
@@ -486,7 +486,7 @@ pipeline {
stage("build px4_fmu-v5_test") {
agent {
docker {
image 'px4io/px4-dev-nuttx-focal:2021-09-08'
image 'px4io/px4-dev-nuttx-focal:2022-08-12'
args '--cpu-shares 512 -e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
@@ -560,7 +560,7 @@ pipeline {
stage("build nxp_fmuk66-v3_test") {
agent {
docker {
image 'px4io/px4-dev-nuttx-focal:2021-09-08'
image 'px4io/px4-dev-nuttx-focal:2022-08-12'
args '--cpu-shares 512 -e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
+1 -1
View File
@@ -2,7 +2,7 @@
// https://github.com/microsoft/vscode-dev-containers/tree/v0.134.0/containers/cpp
{
"name": "px4-dev-nuttx",
"image": "px4io/px4-dev-nuttx-focal:2021-09-08",
"image": "px4io/px4-dev-nuttx-focal:2022-08-12",
"runArgs": [ "--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined" ],
-34
View File
@@ -1,34 +0,0 @@
---
name: 🐛 Bug report
about: Create a report to help us improve
labels: bug-report
---
## Describe the bug
A clear and concise description of the bug.
## To Reproduce
Steps to reproduce the behavior:
1. Drone switched on '...'
2. Uploaded mission '....' (attach QGC mission file)
3. Took off '....'
4. See error
## Expected behavior
A clear and concise description of what you expected to happen.
## Log Files and Screenshots
*Always* provide a link to the flight log file:
- Download the flight log file from the vehicle ([tutorial](https://docs.px4.io/main/en/getting_started/flight_reporting.html)).
- Upload the log to the [PX4 Flight Review](http://logs.px4.io/)
- Share the link to the log (Copy and paste the URL of the log)
Add screenshots to help explain your problem.
## Drone (please complete the following information):
- Describe the type of drone.
- Photo of the IMU / autopilot setup if possible.
## Additional context
Add any other context about the problem here.
@@ -1,20 +0,0 @@
---
name: 🚀 Feature Request
about: Suggest an idea for this project
labels: feature-request
---
For general questions please use [PX4 Discuss](http://discuss.px4.io/) or Discord (you can find an invite link on this project README).
## Describe problem solved by the proposed feature
A clear and concise description of the problem, if any, this feature will solve. E.g. I'm always frustrated when ...
## Describe your preferred solution
A clear and concise description of what you want to happen.
## Describe possible alternatives
A clear and concise description of alternative solutions or features you've considered.
## Additional context
Add any other context or screenshots for the feature request here.
@@ -1,13 +0,0 @@
---
name: ⛔ Support Question
about: See http://discuss.px4.io/ for questions about using PX4.
---
## Attention! Please read the note below
We use GitHub issues only to discuss PX4 bugs and new features.
**For questions about using PX4 or related components, please use [PX4 Discuss](http://discuss.px4.io/).**
Thanks!
@@ -1,11 +0,0 @@
---
name: ⛔ Documentation Issue
about: See https://github.com/PX4/px4_user_guide for documentation issues
---
## Attention! Please read the note below
**Please submit the documentation issue to the [User Guide](https://github.com/PX4/px4_user_guide) repository.**
Thanks!
+94
View File
@@ -0,0 +1,94 @@
name: 🐛 Bug report
description: Create a report to help us improve
title: "[Bug] "
labels: ["bug-report"]
body:
- type: textarea
attributes:
label: Describe the bug
description: A clear and concise description of the bug.
validations:
required: true
- type: textarea
attributes:
label: To Reproduce
description: |
Steps to reproduce the behavior.
1. Drone switched on '...'
2. Uploaded mission '....' (attach QGC mission file)
3. Took off '....'
4. See error
validations:
required: true
- type: textarea
attributes:
label: Expected behavior
description: A clear and concise description of what you expected to happen.
validations:
required: true
- type: textarea
attributes:
label: Screenshot / Media
description: Add screenshot / media if you have them
- type: textarea
attributes:
label: Flight Log
description: |
*Always* provide a link to the flight log file:
- Download the flight log file from the vehicle ([tutorial](https://docs.px4.io/main/en/getting_started/flight_reporting.html)).
- Upload the log to the [PX4 Flight Review](http://logs.px4.io/)
- Share the link to the log (Copy and paste the URL of the log)
placeholder: |
# PASTE HERE THE LINK TO THE LOG
validations:
required: true
- type: markdown
attributes:
value: |
## Setup
- type: textarea
attributes:
label: Software Version
description: |
Which version of PX4 are you using?
placeholder: |
# If you don't know the version, paste the output of `ver all` in the MAVLink Shell of QGC
validations:
required: true
- type: input
attributes:
label: Flight controller
description: Specify your flight controller model (what type is it, where was it bought from, ...).
validations:
required: true
- type: dropdown
attributes:
label: Vehicle type
options:
- Multicopter
- Helicopter
- Fixed Wing
- Hybrid VTOL
- Airship/Balloon
- Rover
- Boat
- Submarine
- Other
- type: textarea
attributes:
label: How are the different components wired up (including port information)
description: Details about how all is wired.
- type: textarea
attributes:
label: Additional context
description: Add any other context about the problem here.
+8
View File
@@ -0,0 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Support Question
url: https://docs.px4.io/main/en/contribute/support.html#forums-and-chat
about: For questions about using PX4 or related components, please use the discuss forum and discord server
- name: Documentation Issue
url: https://github.com/PX4/PX4-user_guide/issues
about: If you found an issue in documentation, please submit it directly to the docs repository issues
@@ -0,0 +1,35 @@
name: 🚀 Feature Request
description: Suggest an idea for this project
labels: ["feature-request"]
body:
- type: markdown
attributes:
value: |
## Please note that feature requests are not 'fire and forget'
It is a lot more likely that the feature you would like to have will be implemented if you keep watching your feature request, and provide more details to developers looking into implementing your feature, and help them with testing.
- type: textarea
attributes:
label: Describe problem solved by the proposed feature
description: A clear and concise description of the problem, if any, this feature will solve. E.g. I'm always frustrated when ...
validations:
required: true
- type: textarea
attributes:
label: Describe your preferred solution
description: A clear and concise description of what you want to happen.
validations:
required: true
- type: textarea
attributes:
label: Describe possible alternatives
description: A clear and concise description of any alternative solutions or features you've considered.
validations:
required: true
- type: textarea
attributes:
label: Additional context
description: Add any other context or screenshots for the feature request here.
+1 -1
View File
@@ -23,7 +23,7 @@ For release notes:
```
Feature/Bugfix XYZ
New parameter: XYZ_Z
Documentation: Need to clarfiy page ... / done, read docs.px4.io/...
Documentation: Need to clarify page ... / done, read docs.px4.io/...
```
### Alternatives
-24
View File
@@ -1,24 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="90" height="20">
<linearGradient id="smooth" x2="0" y2="100%">
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
<stop offset="1" stop-opacity=".1"/>
</linearGradient>
<mask id="round">
<rect width="90" height="20" rx="3" fill="#fff"/>
</mask>
<g mask="url(#round)">
<rect width="42" height="20" fill="#555"/>
<rect x="42" width="48" height="20" fill="#E01563"/>
<rect width="90" height="20" fill="url(#smooth)"/>
</g>
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
<text x="22" y="15" fill="#010101" fill-opacity=".3">slack</text>
<text x="22" y="14">slack</text>
<text x="65" y="15" fill="#010101" fill-opacity=".3">Join us!</text>
<text x="65" y="14">Join us!</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 894 B

-15
View File
@@ -1,15 +0,0 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 90
# Number of days of inactivity before a stale issue is closed, or `false` to disable
daysUntilClose: false
# Issues with these labels will never be considered stale
exemptLabels:
- pinned
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. Thank you for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false
+1 -1
View File
@@ -28,7 +28,7 @@ jobs:
"parameters_metadata",
]
container:
image: px4io/px4-dev-nuttx-focal:2021-09-08
image: px4io/px4-dev-nuttx-focal:2022-08-12
options: --privileged --ulimit core=-1 --security-opt seccomp=unconfined
steps:
- uses: actions/checkout@v1
+7 -3
View File
@@ -1,9 +1,12 @@
name: Linux Targets
name: Compile Linux Targets
on:
push:
branches:
- 'main'
- 'stable'
- 'beta'
- 'release/*'
pull_request:
branches:
- '*'
@@ -11,7 +14,7 @@ on:
jobs:
build:
runs-on: ubuntu-latest
container: px4io/px4-dev-armhf:2021-09-08
container: px4io/px4-dev-armhf:2023-06-26
strategy:
matrix:
config: [
@@ -24,7 +27,8 @@ jobs:
- uses: actions/checkout@v1
with:
token: ${{secrets.ACCESS_TOKEN}}
- name: ownership workaround
run: git config --system --add safe.directory '*'
- name: Prepare ccache timestamp
id: ccache_cache_timestamp
shell: cmake -P {0}
+5 -2
View File
@@ -1,9 +1,12 @@
name: Linux ARM64 Targets
name: Compile Linux ARM64 Targets
on:
push:
branches:
- 'main'
- 'stable'
- 'beta'
- 'release/*'
pull_request:
branches:
- '*'
@@ -11,7 +14,7 @@ on:
jobs:
build:
runs-on: ubuntu-latest
container: px4io/px4-dev-aarch64:2021-09-08
container: px4io/px4-dev-aarch64:2022-08-12
strategy:
matrix:
config: [
+1 -2
View File
@@ -10,13 +10,12 @@ on:
jobs:
build:
runs-on: macos-10.15
runs-on: macos-latest
strategy:
matrix:
config: [
px4_fmu-v5_default,
px4_sitl
#tests, # includes px4_sitl
]
steps:
- uses: actions/checkout@v1
+5 -2
View File
@@ -1,9 +1,12 @@
name: Nuttx Targets
name: Compile Nuttx Targets
on:
push:
branches:
- 'main'
- 'stable'
- 'beta'
- 'release/*'
pull_request:
branches:
- '*'
@@ -11,7 +14,7 @@ on:
jobs:
build:
runs-on: ubuntu-latest
container: px4io/px4-dev-nuttx-focal:2021-09-08
container: px4io/px4-dev-nuttx-focal:2022-08-12
strategy:
fail-fast: false
matrix:
+4 -1
View File
@@ -24,12 +24,15 @@ jobs:
needs: enumerate_targets
strategy:
matrix: ${{fromJson(needs.enumerate_targets.outputs.matrix)}}
container: px4io/px4-dev-${{ matrix.container }}:2021-09-08
container: ${{ matrix.container }}
steps:
- uses: actions/checkout@v1
with:
token: ${{secrets.ACCESS_TOKEN}}
- name: ownership workaround
run: git config --system --add safe.directory '*'
- name: make ${{matrix.target}}
run: make ${{matrix.target}}
+1 -1
View File
@@ -21,7 +21,7 @@ jobs:
"failsafe_web",
]
container:
image: px4io/px4-dev-nuttx-focal:2021-09-08
image: px4io/px4-dev-nuttx-focal:2022-08-12
options: --privileged --ulimit core=-1 --security-opt seccomp=unconfined
steps:
- uses: actions/checkout@v1
+1 -1
View File
@@ -103,7 +103,7 @@ jobs:
uorb_graph:
runs-on: ubuntu-latest
container: px4io/px4-dev-nuttx-focal:2021-09-08
container: px4io/px4-dev-nuttx-focal:2022-08-12
steps:
- uses: actions/checkout@v1
with:
+16
View File
@@ -0,0 +1,16 @@
name: 'Handle stale issues and PRs'
on:
schedule:
- cron: '30 1 * * *'
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v8
with:
days-before-stale: 30
days-before-close: -1
stale-issue-label: 'stale'
stale-pr-label: 'stale'
remove-stale-when-updated: true
Vendored
+2 -2
View File
@@ -94,7 +94,7 @@ pipeline {
stage('failsafe docs') {
agent {
docker { image 'px4io/px4-dev-nuttx-focal:2021-08-18' }
docker { image 'px4io/px4-dev-nuttx-focal:2022-08-12' }
}
steps {
sh '''#!/bin/bash -l
@@ -125,7 +125,7 @@ pipeline {
stage('uORB graphs') {
agent {
docker {
image 'px4io/px4-dev-nuttx-focal:2021-08-18'
image 'px4io/px4-dev-nuttx-focal:2022-08-12'
args '-e CCACHE_BASEDIR=$WORKSPACE -v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
@@ -17,6 +17,7 @@ param set-default SENS_EN_GPSSIM 1
param set-default SENS_EN_BAROSIM 1
param set-default SENS_EN_MAGSIM 1
param set-default VT_B_TRANS_DUR 5
param set-default VT_ELEV_MC_LOCK 0
param set-default VT_TYPE 0
param set-default VT_FW_DIFTHR_EN 1
@@ -48,35 +48,32 @@ param set-default PWM_MAIN_REV 96 # invert both elevons
param set-default EKF2_MULTI_IMU 0
param set-default SENS_IMU_MODE 1
param set-default NPFG_PERIOD 12
param set-default FW_PR_I 0.2
param set-default FW_PR_P 0.2
param set-default FW_P_TC 0.6
param set-default FW_PR_FF 0.1
param set-default FW_PSP_OFF 2
param set-default FW_P_LIM_MIN -15
param set-default FW_RR_P 0.2
param set-default FW_THR_TRIM 0.33
param set-default FW_THR_MAX 0.6
param set-default FW_RR_FF 0.1
param set-default FW_RR_I 0.2
param set-default FW_RR_P 0.3
param set-default FW_THR_TRIM 0.35
param set-default FW_THR_MAX 0.8
param set-default FW_THR_MIN 0.05
param set-default FW_T_ALT_TC 2
param set-default FW_T_CLMB_MAX 8
param set-default FW_T_SINK_MAX 2.7
param set-default FW_T_SINK_MIN 2.2
param set-default FW_T_TAS_TC 2
param set-default FW_T_CLMB_MAX 6
param set-default FW_T_HRATE_FF 0.5
param set-default FW_T_SINK_MAX 3
param set-default FW_T_SINK_MIN 1.6
param set-default MC_AIRMODE 1
param set-default MC_ROLL_P 3
param set-default MC_PITCH_P 3
param set-default MC_ROLLRATE_P 0.3
param set-default MC_PITCHRATE_P 0.3
param set-default MPC_XY_P 0.8
param set-default MPC_XY_VEL_P_ACC 3
param set-default MPC_XY_VEL_I_ACC 4
param set-default MPC_XY_VEL_D_ACC 0.1
param set-default NAV_ACC_RAD 5
param set-default VT_ARSP_TRANS 10
param set-default VT_B_TRANS_DUR 5
param set-default VT_FW_DIFTHR_EN 1
param set-default VT_FW_DIFTHR_S_Y 0.5
param set-default VT_FW_DIFTHR_S_Y 1
param set-default VT_F_TRANS_DUR 1.5
param set-default VT_F_TRANS_THR 0.7
param set-default VT_TYPE 0
param set-default WV_EN 0
@@ -0,0 +1,74 @@
#!/bin/sh
#
# @name Quadrotor + Tailsitter
#
# @type VTOL Quad Tailsitter
#
. ${R}etc/init.d/rc.vtol_defaults
param set-default MAV_TYPE 20
param set-default CA_AIRFRAME 4
param set-default CA_ROTOR_COUNT 4
param set-default CA_ROTOR0_PX 0.15
param set-default CA_ROTOR0_PY 0.23
param set-default CA_ROTOR0_KM 0.05
param set-default CA_ROTOR1_PX -0.15
param set-default CA_ROTOR1_PY -0.23
param set-default CA_ROTOR1_KM 0.05
param set-default CA_ROTOR2_PX 0.15
param set-default CA_ROTOR2_PY -0.23
param set-default CA_ROTOR2_KM -0.05
param set-default CA_ROTOR3_PX -0.15
param set-default CA_ROTOR3_PY 0.23
param set-default CA_ROTOR3_KM -0.05
param set-default CA_SV_CS_COUNT 0
param set-default PWM_MAIN_FUNC1 101
param set-default PWM_MAIN_FUNC2 102
param set-default PWM_MAIN_FUNC3 103
param set-default PWM_MAIN_FUNC4 104
param set-default PWM_MAIN_FUNC5 0
parm set-default FD_FAIL_R 70
param set-default FW_P_TC 0.6
param set-default FW_PR_I 0.3
param set-default FW_PR_P 0.5
param set-default FW_PSP_OFF 2
param set-default FW_RR_FF 0.1
param set-default FW_RR_I 0.1
param set-default FW_RR_P 0.2
param set-default FW_YR_FF 0 # make yaw rate controller very weak, only keep default P
param set-default FW_YR_I 0
param set-default FW_THR_TRIM 0.35
param set-default FW_THR_MAX 0.8
param set-default FW_THR_MIN 0.05
param set-default FW_T_CLMB_MAX 6
param set-default FW_T_HRATE_FF 0.5
param set-default FW_T_SINK_MAX 3
param set-default FW_T_SINK_MIN 1.6
param set-default FW_AIRSPD_STALL 10
param set-default FW_AIRSPD_MIN 14
param set-default FW_AIRSPD_TRIM 18
param set-default FW_AIRSPD_MAX 22
param set-default MC_AIRMODE 2
param set-default MAN_ARM_GESTURE 0 # required for yaw airmode
param set-default MC_ROLL_P 3
param set-default MC_PITCH_P 3
param set-default MC_ROLLRATE_P 0.3
param set-default MC_PITCHRATE_P 0.3
param set-default VT_ARSP_TRANS 15
param set-default VT_B_TRANS_DUR 5
param set-default VT_FW_DIFTHR_EN 7
param set-default VT_FW_DIFTHR_S_Y 1
param set-default VT_F_TRANS_DUR 1.5
param set-default VT_TYPE 0
param set-default WV_EN 0
@@ -60,6 +60,7 @@ px4_add_romfs_files(
1042_gazebo-classic_tiltrotor
1043_gazebo-classic_standard_vtol_drop
1044_gazebo-classic_plane_lidar
1045_gazebo-classic_quadtailsitter
1060_gazebo-classic_rover
1061_gazebo-classic_r1_rover
1062_flightgear_tf-r1
@@ -93,4 +94,6 @@ px4_add_romfs_files(
17001_flightgear_tf-g1
17002_flightgear_tf-g2
# [22000, 22999] Reserve for custom models
)
@@ -20,6 +20,7 @@
param set-default EKF2_FUSE_BETA 0 # side slip fusion is currently not supported for tailsitters
param set UAVCAN_ENABLE 0
param set-default VT_B_TRANS_DUR 5
param set-default VT_ELEV_MC_LOCK 0
param set-default VT_MOT_COUNT 2
param set-default VT_TYPE 0
@@ -31,3 +31,4 @@ param set-default CA_SV_CS1_TYPE 6
param set-default MAV_TYPE 19
param set-default VT_TYPE 0
param set-default VT_ELEV_MC_LOCK 0
param set-default VT_B_TRANS_DUR 5
@@ -34,9 +34,9 @@ param set-default CA_ROTOR3_PX -0.25
param set-default CA_ROTOR3_PY 0.25
param set-default CA_ROTOR3_KM -0.05
param set-default PWM_AUX_FUNC1 101
param set-default PWM_AUX_FUNC2 102
param set-default PWM_AUX_FUNC3 103
param set-default PWM_AUX_FUNC4 104
param set-default PWM_AUX_TIM0 -4
param set-default PWM_MAIN_FUNC1 101
param set-default PWM_MAIN_FUNC2 102
param set-default PWM_MAIN_FUNC3 103
param set-default PWM_MAIN_FUNC4 104
param set-default PWM_MAIN_TIM0 -4
+2
View File
@@ -254,6 +254,8 @@ else
#
rgbled start -X -q
rgbled_ncp5623c start -X -q
rgbled_lp5562 start -X -q
rgbled_is31fl3195 start -X -q
#
# Override parameters from user configuration file.
+5 -5
View File
@@ -4,16 +4,16 @@ if [ -z ${PX4_DOCKER_REPO+x} ]; then
echo "guessing PX4_DOCKER_REPO based on input";
if [[ $@ =~ .*px4_fmu.* ]]; then
# nuttx-px4fmu-v{1,2,3,4,5}
PX4_DOCKER_REPO="px4io/px4-dev-nuttx-focal:2021-09-08"
PX4_DOCKER_REPO="px4io/px4-dev-nuttx-focal:2022-08-12"
elif [[ $@ =~ .*navio2.* ]] || [[ $@ =~ .*raspberry.* ]] || [[ $@ =~ .*beaglebone.* ]] || [[ $@ =~ .*pilotpi.default ]]; then
# beaglebone_blue_default, emlid_navio2_default, px4_raspberrypi_default, scumaker_pilotpi_default
PX4_DOCKER_REPO="px4io/px4-dev-armhf:2021-08-18"
PX4_DOCKER_REPO="px4io/px4-dev-armhf:2023-06-26"
elif [[ $@ =~ .*pilotpi.arm64 ]]; then
# scumaker_pilotpi_arm64
PX4_DOCKER_REPO="px4io/px4-dev-aarch64:latest"
PX4_DOCKER_REPO="px4io/px4-dev-aarch64:2022-08-12"
elif [[ $@ =~ .*navio2.* ]] || [[ $@ =~ .*raspberry.* ]] || [[ $@ =~ .*bebop.* ]]; then
# posix_rpi_cross, posix_bebop_default
PX4_DOCKER_REPO="px4io/px4-dev-armhf:2021-08-18"
PX4_DOCKER_REPO="px4io/px4-dev-armhf:2023-06-26"
elif [[ $@ =~ .*clang.* ]] || [[ $@ =~ .*scan-build.* ]]; then
# clang tools
PX4_DOCKER_REPO="px4io/px4-dev-clang:2021-02-04"
@@ -27,7 +27,7 @@ fi
# otherwise default to nuttx
if [ -z ${PX4_DOCKER_REPO+x} ]; then
PX4_DOCKER_REPO="px4io/px4-dev-nuttx-focal:2021-09-08"
PX4_DOCKER_REPO="px4io/px4-dev-nuttx-focal:2022-08-12"
fi
# docker hygiene
+8 -5
View File
@@ -56,11 +56,14 @@ def perform_imu_checks(
# perform the vibration check
imu_status['imu_vibration_check'] = 'Pass'
for imu_vibr_metric in ['imu_coning', 'imu_hfgyro', 'imu_hfaccel']:
mean_metric = '{:s}_mean'.format(imu_vibr_metric)
peak_metric = '{:s}_peak'.format(imu_vibr_metric)
if imu_metrics[mean_metric] > check_levels['{:s}_warn'.format(mean_metric)] \
or imu_metrics[peak_metric] > check_levels['{:s}_warn'.format(peak_metric)]:
imu_status['imu_vibration_check'] = 'Warning'
mean_metric = '{:s}_mean_warn'.format(imu_vibr_metric)
peak_metric = '{:s}_peak_warn'.format(imu_vibr_metric)
mean_key = '{:s}_mean'.format(imu_vibr_metric)
peak_key = '{:s}_peak'.format(imu_vibr_metric)
if mean_key in imu_metrics and peak_key in imu_metrics:
if imu_metrics[mean_key] > check_levels[mean_metric] \
or imu_metrics[peak_key] > check_levels[peak_metric]:
imu_status['imu_vibration_check'] = 'Warning'
if imu_status['imu_vibration_check'] == 'Warning':
print('IMU vibration check warning.')
+3 -3
View File
@@ -104,9 +104,9 @@ def calculate_innov_fail_metrics(
# calculate innovation check fail metrics
for signal_id, signal, result in [('posv', 'reject_ver_pos', 'hgt_fail_percentage'),
('magx', 'reject_mag_x', 'magx_fail_percentage'),
('magy', 'reject_mag_y', 'magy_fail_percentage'),
('magz', 'reject_mag_z', 'magz_fail_percentage'),
('magx', 'fs_bad_mag_x', 'magx_fail_percentage'),
('magy', 'fs_bad_mag_y', 'magy_fail_percentage'),
('magz', 'fs_bad_mag_z', 'magz_fail_percentage'),
('yaw', 'reject_yaw', 'yaw_fail_percentage'),
('velh', 'reject_hor_vel', 'vel_fail_percentage'),
('velv', 'reject_ver_vel', 'vel_fail_percentage'),
+1 -1
View File
@@ -222,7 +222,7 @@ def create_pdf_report(ulog: ULog, multi_instance: int, output_plot_filename: str
data_plot = CheckFlagsPlot(
status_flags_time, estimator_status_flags, [['reject_hor_vel', 'reject_hor_pos'], ['reject_ver_vel', 'reject_ver_pos',
'reject_hagl'],
['reject_mag_x', 'reject_mag_y', 'reject_mag_z',
['fs_bad_mag_x', 'fs_bad_mag_y', 'fs_bad_mag_z',
'reject_yaw'], ['reject_airspeed'], ['reject_sideslip'],
['reject_optflow_x',
'reject_optflow_y']], x_label='time (sec)',
+7 -7
View File
@@ -61,18 +61,19 @@ def process_target(px4board_file, target_name):
if platform not in excluded_platforms:
# get the container based on the platform and toolchain
container = platform
if platform == 'posix':
container = 'base-focal'
container = 'px4io/px4-dev-base-focal:2021-09-08'
if toolchain:
if toolchain.startswith('aarch64'):
container = 'aarch64'
container = 'px4io/px4-dev-aarch64:2022-08-12'
elif toolchain == 'arm-linux-gnueabihf':
container = 'armhf'
container = 'px4io/px4-dev-armhf:2023-06-26'
else:
if verbose: print(f'possibly unmatched toolchain: {toolchain}')
if verbose: print(f'unmatched toolchain: {toolchain}')
elif platform == 'nuttx':
container = 'nuttx-focal'
container = 'px4io/px4-dev-nuttx-focal:2022-08-12'
else:
if verbose: print(f'unmatched platform: {platform}')
ret = {'target': target_name, 'container': container}
@@ -113,4 +114,3 @@ extra_args = {}
if args.pretty:
extra_args['indent'] = 2
print(json.dumps(github_action_config, **extra_args))
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1 +1 @@
symforce>=0.5.0
symforce>=0.9.0
+1 -1
View File
@@ -10,7 +10,7 @@ sitl_num=2
[ -n "$1" ] && sitl_num="$1"
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
src_path="$SCRIPT_DIR/.."
src_path="$SCRIPT_DIR/../../"
build_path=${src_path}/build/px4_sitl_default
View File
@@ -106,7 +106,7 @@ CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_MAX_EXITFUNS=1
+1
View File
@@ -20,6 +20,7 @@ CONFIG_DRIVERS_IRLOCK=y
CONFIG_COMMON_LIGHT=y
CONFIG_COMMON_MAGNETOMETER=y
CONFIG_COMMON_OPTICAL_FLOW=y
CONFIG_COMMON_OSD=y
CONFIG_DRIVERS_PWM_OUT=y
CONFIG_BOARD_UAVCAN_INTERFACES=1
CONFIG_DRIVERS_UAVCANNODE=y
Binary file not shown.
@@ -7,6 +7,7 @@
#
# CONFIG_DEV_CONSOLE is not set
# CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set
# CONFIG_DISABLE_PTHREAD is not set
# CONFIG_SPI_EXCHANGE is not set
# CONFIG_STM32H7_SYSCFG is not set
CONFIG_ARCH="arm"
@@ -48,13 +49,14 @@ CONFIG_HAVE_CXX=y
CONFIG_HAVE_CXXINITIALIZE=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="bootloader_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_STRERROR=y
CONFIG_MEMSET_64BIT=y
CONFIG_MEMSET_OPTSPEED=y
CONFIG_PREALLOC_TIMERS=50
CONFIG_PTHREAD_MUTEX_ROBUST=y
CONFIG_PTHREAD_STACK_MIN=512
CONFIG_RAM_SIZE=245760
CONFIG_RAM_START=0x20010000
@@ -387,7 +387,7 @@
#define GPIO_UART7_RX GPIO_UART7_RX_4 /* PF6 */
#define GPIO_UART7_TX GPIO_UART7_TX_3 /* PE8 */
#define GPIO_UART7_RTS (GPIO_UART7_RTS_2 | GPIO_PULLDOWN) /* PF8 */
#define GPIO_UART7_RTS GPIO_UART7_RTS_2 /* PF8 */
#define GPIO_UART7_CTS (GPIO_UART7_CTS_1 | GPIO_PULLDOWN) /* PE10 */
#define GPIO_UART8_RX GPIO_UART8_RX_1 /* PE0 */
@@ -118,7 +118,7 @@ CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_IOB_NBUFFERS=24
CONFIG_IOB_THROTTLE=0
CONFIG_IPCFG_BINARY=y
@@ -292,7 +292,7 @@ CONFIG_UART4_TXBUFSIZE=1500
CONFIG_UART5_IFLOWCONTROL=y
CONFIG_UART5_OFLOWCONTROL=y
CONFIG_UART5_RXDMA=y
CONFIG_UART5_TXBUFSIZE=3000
CONFIG_UART5_TXBUFSIZE=10000
CONFIG_UART5_TXDMA=y
CONFIG_UART7_BAUD=57600
CONFIG_UART7_IFLOWCONTROL=y
@@ -112,7 +112,7 @@ CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_MAX_EXITFUNS=1
+1 -1
View File
@@ -120,7 +120,7 @@ CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_IOB_NBUFFERS=24
CONFIG_IOB_THROTTLE=0
CONFIG_LIBC_LONG_LONG=y
@@ -105,7 +105,7 @@ CONFIG_HAVE_CXXINITIALIZE=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_MAX_EXITFUNS=1
@@ -140,15 +140,7 @@
#define PX4_PWM_ALTERNATE_RANGES
#define PWM_LOWEST_MIN 0
#define PWM_MOTOR_OFF 0
#define PWM_SERVO_STOP 0
#define PWM_DEFAULT_MIN 20
#define PWM_HIGHEST_MIN 0
#define PWM_HIGHEST_MAX 255
#define PWM_DEFAULT_MAX 255
#define PWM_LOWEST_MAX 255
#define PWM_DEFAULT_TRIM 1500
/* High-resolution timer */
#define HRT_TIMER 8 /* use timer8 for the HRT */
@@ -106,7 +106,7 @@ CONFIG_HAVE_CXXINITIALIZE=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_MAX_EXITFUNS=1
@@ -141,15 +141,7 @@
#define PX4_PWM_ALTERNATE_RANGES
#define PWM_LOWEST_MIN 0
#define PWM_MOTOR_OFF 0
#define PWM_SERVO_STOP 0
#define PWM_DEFAULT_MIN 20
#define PWM_HIGHEST_MIN 0
#define PWM_HIGHEST_MAX 255
#define PWM_DEFAULT_MAX 255
#define PWM_LOWEST_MAX 255
#define PWM_DEFAULT_TRIM 1500
/* High-resolution timer */
#define HRT_TIMER 8 /* use timer8 for the HRT */
@@ -48,7 +48,7 @@ CONFIG_HAVE_CXX=y
CONFIG_HAVE_CXXINITIALIZE=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="bootloader_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_STRERROR=y
+1 -1
View File
@@ -111,7 +111,7 @@ CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_MAX_EXITFUNS=1
@@ -48,7 +48,7 @@ CONFIG_HAVE_CXX=y
CONFIG_HAVE_CXXINITIALIZE=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="bootloader_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_STRERROR=y
+1 -1
View File
@@ -112,7 +112,7 @@ CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_MAX_EXITFUNS=1
CONFIG_LIBC_STRERROR=y
@@ -112,7 +112,7 @@ CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_MAX_EXITFUNS=1
CONFIG_LIBC_STRERROR=y
@@ -48,7 +48,7 @@ CONFIG_HAVE_CXX=y
CONFIG_HAVE_CXXINITIALIZE=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="bootloader_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_STRERROR=y
@@ -112,7 +112,7 @@ CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_MAX_EXITFUNS=1
@@ -113,7 +113,7 @@ CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_MAX_EXITFUNS=1
CONFIG_LIBC_STRERROR=y
@@ -49,7 +49,7 @@ CONFIG_HAVE_CXX=y
CONFIG_HAVE_CXXINITIALIZE=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="bootloader_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_STRERROR=y
@@ -112,7 +112,7 @@ CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_MAX_EXITFUNS=1
@@ -113,7 +113,7 @@ CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_MAX_EXITFUNS=1
CONFIG_LIBC_STRERROR=y
@@ -112,7 +112,7 @@ CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_MAX_EXITFUNS=1
@@ -23,6 +23,8 @@ CONFIG_MODULES_COMMANDER=y
CONFIG_MODULES_CONTROL_ALLOCATOR=y
CONFIG_MODULES_DATAMAN=y
CONFIG_MODULES_EKF2=y
# CONFIG_EKF2_GNSS_YAW is not set
# CONFIG_EKF2_SIDESLIP is not set
CONFIG_MODULES_FLIGHT_MODE_MANAGER=y
CONFIG_MODULES_LAND_DETECTOR=y
CONFIG_MODULES_LOAD_MON=y
@@ -62,7 +62,7 @@ CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_MAX_EXITFUNS=1
CONFIG_LIBC_STRERROR=y
CONFIG_MEMSET_64BIT=y
@@ -109,7 +109,7 @@ CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_MAX_EXITFUNS=1
CONFIG_LIBC_STRERROR=y
@@ -48,7 +48,7 @@ CONFIG_HAVE_CXX=y
CONFIG_HAVE_CXXINITIALIZE=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="bootloader_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_STRERROR=y
@@ -113,7 +113,7 @@ CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_MAX_EXITFUNS=1
+4 -1
View File
@@ -10,8 +10,10 @@ CONFIG_BOARD_SERIAL_RC="/dev/ttyS4"
CONFIG_DRIVERS_ADC_BOARD_ADC=y
CONFIG_DRIVERS_BAROMETER_BMP280=y
CONFIG_DRIVERS_DSHOT=y
CONFIG_DRIVERS_GPS=y
CONFIG_DRIVERS_IMU_INVENSENSE_ICM20689=y
CONFIG_DRIVERS_IMU_INVENSENSE_MPU6000=y
CONFIG_DRIVERS_OSD_ATXXXX=y
CONFIG_DRIVERS_PWM_OUT=y
CONFIG_DRIVERS_RC_INPUT=y
CONFIG_DRIVERS_TELEMETRY_FRSKY_TELEMETRY=y
@@ -31,5 +33,6 @@ CONFIG_MODULES_MC_RATE_CONTROL=y
CONFIG_MODULES_NAVIGATOR=y
CONFIG_MODULES_RC_UPDATE=y
CONFIG_MODULES_SENSORS=y
CONFIG_MODULES_UXRCE_DDS_CLIENT=y
CONFIG_SYSTEMCMDS_DMESG=y
CONFIG_SYSTEMCMDS_PARAM=y
CONFIG_SYSTEMCMDS_TOP=y
@@ -115,7 +115,7 @@ CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_MAX_EXITFUNS=1
@@ -113,6 +113,7 @@
/* RC Serial port */
#define RC_SERIAL_PORT "/dev/ttyS4"
#define RC_SERIAL_SINGLEWIRE
#define GPIO_RSSI_IN /* PC5 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTC|GPIO_PIN5)
@@ -129,6 +130,8 @@
GPIO_RSSI_IN, \
}
#define BOARD_ENABLE_CONSOLE_BUFFER
#define BOARD_NUM_IO_TIMERS 4
__BEGIN_DECLS
-4
View File
@@ -252,9 +252,5 @@ __EXPORT int board_app_initialize(uintptr_t arg)
#endif
/* Configure the HW based on the manifest */
px4_platform_configure();
return OK;
}
@@ -48,7 +48,7 @@ CONFIG_HAVE_CXX=y
CONFIG_HAVE_CXXINITIALIZE=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="bootloader_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_STRERROR=y
@@ -113,7 +113,7 @@ CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_MAX_EXITFUNS=1
@@ -47,7 +47,7 @@ CONFIG_HAVE_CXX=y
CONFIG_HAVE_CXXINITIALIZE=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="bootloader_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_STRERROR=y
@@ -112,7 +112,7 @@ CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_MAX_EXITFUNS=1
@@ -47,7 +47,7 @@ CONFIG_HAVE_CXX=y
CONFIG_HAVE_CXXINITIALIZE=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="bootloader_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_STRERROR=y
@@ -112,7 +112,7 @@ CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_MAX_EXITFUNS=1
@@ -112,7 +112,7 @@ CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_MAX_EXITFUNS=1
@@ -30,7 +30,7 @@ CONFIG_FDCLONE_STDIO=y
CONFIG_HAVE_CXX=y
CONFIG_HAVE_CXXINITIALIZE=y
CONFIG_IDLETHREAD_STACKSIZE=4096
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_STRERROR=y
@@ -104,7 +104,7 @@ CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_MAX_EXITFUNS=1
@@ -47,7 +47,7 @@ CONFIG_HAVE_CXX=y
CONFIG_HAVE_CXXINITIALIZE=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="bootloader_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_STRERROR=y
@@ -111,7 +111,7 @@ CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_MAX_EXITFUNS=1
@@ -48,7 +48,7 @@ CONFIG_HAVE_CXX=y
CONFIG_HAVE_CXXINITIALIZE=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="bootloader_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_STRERROR=y
@@ -113,7 +113,7 @@ CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_MAX_EXITFUNS=1
@@ -47,7 +47,7 @@ CONFIG_HAVE_CXX=y
CONFIG_HAVE_CXXINITIALIZE=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="bootloader_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_STRERROR=y
+1 -1
View File
@@ -112,7 +112,7 @@ CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_MAX_EXITFUNS=1
@@ -111,7 +111,7 @@ CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_MAX_EXITFUNS=1
+1 -4
View File
@@ -14,10 +14,6 @@ CONFIG_COMMON_DIFFERENTIAL_PRESSURE=y
CONFIG_COMMON_DISTANCE_SENSOR=y
CONFIG_DRIVERS_DSHOT=y
CONFIG_DRIVERS_GPS=y
CONFIG_DRIVERS_IMU_BOSCH_BMI088=y
CONFIG_DRIVERS_IMU_INVENSENSE_ICM20602=y
CONFIG_DRIVERS_IMU_INVENSENSE_ICM20649=y
CONFIG_DRIVERS_IMU_INVENSENSE_ICM20948=y
CONFIG_DRIVERS_IMU_INVENSENSE_ICM42688P=y
CONFIG_DRIVERS_IRLOCK=y
CONFIG_COMMON_LIGHT=y
@@ -70,6 +66,7 @@ CONFIG_MODULES_TEMPERATURE_COMPENSATION=y
CONFIG_MODULES_UXRCE_DDS_CLIENT=y
CONFIG_MODULES_VTOL_ATT_CONTROL=y
CONFIG_SYSTEMCMDS_ACTUATOR_TEST=y
CONFIG_SYSTEMCMDS_BL_UPDATE=y
CONFIG_SYSTEMCMDS_BSONDUMP=y
CONFIG_SYSTEMCMDS_DMESG=y
CONFIG_SYSTEMCMDS_GPIO=y
+2 -2
View File
@@ -20,8 +20,8 @@ icm42688p -s -b 1 -R 12 start
# Internal SPI2 ICM-42688
icm42688p -s -b 2 -R 12 start
# Internal I2C mag
bmm150 -I start
# Don't start Internal I2C mag
# bmm150 -I start
# Internal I2C baro
icp201xx -I start
@@ -48,7 +48,7 @@ CONFIG_HAVE_CXX=y
CONFIG_HAVE_CXXINITIALIZE=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="bootloader_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_LIBC_STRERROR=y
@@ -113,7 +113,7 @@ CONFIG_I2C=y
CONFIG_I2C_RESET=y
CONFIG_IDLETHREAD_STACKSIZE=750
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=2944
CONFIG_INIT_STACKSIZE=3094
CONFIG_IOB_NBUFFERS=24
CONFIG_IOB_NCHAINS=24
CONFIG_LIBC_FLOATINGPOINT=y
+14
View File
@@ -68,4 +68,18 @@ else()
nuttx_drivers # sdio
px4_layer
)
set(COMMON_MODALAI_SRC_DIR ${PX4_SOURCE_DIR}/boards/modalai/src)
set(MODALAI_SYSTEMCMD_SRC_DIR ${COMMON_MODALAI_SRC_DIR}/systemcmds/modalai)
px4_add_module(
MODULE systemcmds__modalai
MAIN modalai
COMPILE_FLAGS
SRCS
${MODALAI_SYSTEMCMD_SRC_DIR}/modalai_fc-v2.c
${MODALAI_SYSTEMCMD_SRC_DIR}/modalai_fc-v1.c
${MODALAI_SYSTEMCMD_SRC_DIR}/modalai.c
DEPENDS
)
endif()
+14 -2
View File
@@ -91,6 +91,12 @@
# define GPIO_nLED_GREEN /* PE4 */ (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTE|GPIO_PIN4)
# define GPIO_nLED_BLUE /* PE5 */ (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTE|GPIO_PIN5)
// GPIO_nLED_2_RED/ GPIO_nLED_2_GREEN /GPIO_nLED_2_BLUE are for v1 LED tests
# define GPIO_nLED_2_RED /* PI0 */ (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTI|GPIO_PIN0)
# define GPIO_nLED_2_GREEN /* PH11 */ (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTH|GPIO_PIN11)
# define GPIO_nLED_2_BLUE /* PA2 */ (GPIO_OUTPUT|GPIO_OPENDRAIN|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTA|GPIO_PIN2)
# define BOARD_HAS_CONTROL_STATUS_LEDS 1
# define BOARD_OVERLOAD_LED LED_RED
# define BOARD_ARMED_STATE_LED LED_BLUE
@@ -208,6 +214,12 @@
#define CAN1_SILENT /* PD15 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN15)
/* For primary/backup signaling with VOXL, 2 pins on J4 are exposed */
// GPIO_VOXL_STATUS_OUT/ GPIO_VOXL_STATUS_IN are for v1 Spare MSS Communications Interface and J4 tests
#define GPIO_VOXL_STATUS_OUT /* PE4 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTE|GPIO_PIN4)
#define GPIO_VOXL_STATUS_IN /* PE3 */ (GPIO_INPUT|GPIO_FLOAT|GPIO_PORTE|GPIO_PIN3)
/* Define True logic Power Control in arch agnostic form */
#define VDD_3V3_SPEKTRUM_POWER_EN(on_true) px4_arch_gpiowrite(GPIO_VDD_3V3_SPEKTRUM_POWER_EN, (on_true))
@@ -338,8 +350,8 @@
#define BOARD_NUM_IO_TIMERS 5
// J1 / TELEM1 / USART7
#define MODAL_IO_DEFAULT_PORT "/dev/ttyS6"
// J5 USART5 TELEM2 Port next to PWM connector
#define MODAL_IO_DEFAULT_PORT "/dev/ttyS4"
__BEGIN_DECLS
@@ -0,0 +1,131 @@
#include <px4_platform_common/module.h>
#include "chip.h"
#include "stm32_gpio.h"
#include "board_config.h"
#include <nuttx/board.h>
#include <arch/board/board.h>
// v2
#ifdef CONFIG_ARCH_CHIP_STM32H753II // chip on M0087
#include "modalai_fc-v2.h"
#define MODALAI_FC_V2 1
#else
#include "modalai_fc-v1.h"
#endif
__EXPORT int modalai_main(int argc, char *argv[]);
int modalai_main(int argc, char *argv[])
{
int hw_rev = board_get_hw_revision();
int hw_ver = board_get_hw_version();
eHW_TYPE hw_type = eHwNone;
#ifdef MODALAI_FC_V2
if (hw_rev == 0 && hw_ver == 3) { // (should be hw_rev == 1 && hw_ver == 3) eventually...
hw_type = eM0087;
} else if (hw_rev == 0 && hw_ver == 3) {
hw_type = eM0079;
} else {
return -1;
}
#else
if (hw_rev == 6 && hw_ver == 0) {
hw_type = eM0018;
} else if (hw_rev == 0 && hw_ver == 1) {
hw_type = eM0019;
} else if (hw_rev == 0 && hw_ver == 2) {
hw_type = eM0051;
} else {
return -1;
}
#endif
if (argc <= 1) {
#ifdef MODALAI_FC_V2
modalai_print_usage_v2();
#else
modalai_print_usage_v1();
#endif
return 1;
}
if (!strcmp(argv[1], "led")) {
#ifdef MODALAI_FC_V2
return modalai_led_test_v2();
#else
return modalai_led_test_v1();
#endif
} else if (!strcmp(argv[1], "con")) {
if (argc <= 2) {
PRINT_MODULE_USAGE_COMMAND("con");
PRINT_MODULE_USAGE_ARG("<1,4,5,6,7,9,10,12,13>", "Connector ID", false);
PRINT_MODULE_USAGE_ARG("<uint>", "Pin Number", false);
PRINT_MODULE_USAGE_ARG("0 | 1", "<output state> (defaults to 0)", false);
return 1;
}
uint8_t con = 0;
uint8_t pin = 0;
bool state = false;
if (argc > 2) {
con = atoi(argv[2]);
}
if (argc > 3) {
pin = atoi(argv[3]);
}
if (argc > 4) {
state = atoi(argv[4]);
}
#ifdef MODALAI_FC_V2
return modalai_con_gpio_test_v2(con, pin, state);
#else
return modalai_con_gpio_test_v1(con, pin, state);
#endif
} else if (!strcmp(argv[1], "buzz")) {
#ifdef MODALAI_FC_V2
return modalai_buzz_test_v2(hw_type);
#else
return modalai_buzz_test_v1(hw_type);
#endif
} else if (!strcmp(argv[1], "detect")) {
#ifdef MODALAI_FC_V2
modalai_hw_detect_v2(hw_type);
#else
modalai_hw_detect_v1(hw_type);
#endif
return 0;
}
#ifdef MODALAI_FC_V2
modalai_print_usage_v2();
#else
modalai_print_usage_v1();
#endif
return -EINVAL;
}
@@ -0,0 +1,913 @@
#include <px4_platform_common/module.h>
#include "chip.h"
#include "stm32_gpio.h"
#include "board_config.h"
#include <nuttx/board.h>
#include <arch/board/board.h>
// v1
#ifndef CONFIG_ARCH_CHIP_STM32H743ZI
#include "modalai_fc-v1.h"
void modalai_print_usage_v1(void)
{
PRINT_MODULE_DESCRIPTION("ModalAI Test utility\n");
PRINT_MODULE_USAGE_NAME_SIMPLE("modalai", "command");
PRINT_MODULE_USAGE_COMMAND_DESCR("led", "LED Test");
PRINT_MODULE_USAGE_COMMAND_DESCR("con", "Connector Output Test (as GPIO)");
PRINT_MODULE_USAGE_COMMAND_DESCR("buzz", "Automated buzz out test");
PRINT_MODULE_USAGE_COMMAND_DESCR("detect", "Detect board type");
}
void modalai_print_usage_con_gpio_test_v1(void)
{
PRINT_MODULE_USAGE_NAME_SIMPLE("modalai con", "command");
PRINT_MODULE_USAGE_COMMAND_DESCR("1", "W<3,6> R<2,6>, <0-1>");
PRINT_MODULE_USAGE_COMMAND_DESCR("4", "W<2-4,6-7> R<8>, <0-1>");
PRINT_MODULE_USAGE_COMMAND_DESCR("5", "W<2-5>, <0-1>");
PRINT_MODULE_USAGE_COMMAND_DESCR("6", "W<2-5>, <0-1>");
PRINT_MODULE_USAGE_COMMAND_DESCR("7", "W<2-9>, <0-1>");
PRINT_MODULE_USAGE_COMMAND_DESCR("9", "R<2>");
PRINT_MODULE_USAGE_COMMAND_DESCR("10", "W<2-5>, <0-1>");
PRINT_MODULE_USAGE_COMMAND_DESCR("12", "W<1-3>, <0-1>");
PRINT_MODULE_USAGE_COMMAND_DESCR("13", "W<3-5>, <0-1>");
}
int modalai_led_test_v1(void)
{
PX4_INFO("Running led test");
stm32_configgpio(GPIO_nLED_RED);
stm32_configgpio(GPIO_nLED_GREEN);
stm32_configgpio(GPIO_nLED_BLUE);
int i = 0;
stm32_configgpio(GPIO_nLED_2_RED);
stm32_configgpio(GPIO_nLED_2_GREEN);
stm32_configgpio(GPIO_nLED_2_BLUE);
for (i = 0; i < 3; i++) {
usleep(1000 * 100);
stm32_gpiowrite(GPIO_nLED_RED, false);
stm32_gpiowrite(GPIO_nLED_2_RED, false);
usleep(1000 * 100);
stm32_gpiowrite(GPIO_nLED_RED, true);
stm32_gpiowrite(GPIO_nLED_2_RED, true);
usleep(1000 * 100);
stm32_gpiowrite(GPIO_nLED_GREEN, false);
stm32_gpiowrite(GPIO_nLED_2_GREEN, false);
usleep(1000 * 100);
stm32_gpiowrite(GPIO_nLED_GREEN, true);
stm32_gpiowrite(GPIO_nLED_2_GREEN, true);
usleep(1000 * 100);
stm32_gpiowrite(GPIO_nLED_BLUE, false);
stm32_gpiowrite(GPIO_nLED_2_BLUE, false);
usleep(1000 * 100);
stm32_gpiowrite(GPIO_nLED_BLUE, true);
stm32_gpiowrite(GPIO_nLED_2_BLUE, true);
}
return OK;
}
int modalai_con_gpio_test_v1(uint8_t con, uint8_t pin, bool state)
{
// validate
switch (con) {
// Primary MSS Communications Interface
case 1:
switch (pin) {
case 2:
stm32_configgpio(J1_PIN2_IN);
state = stm32_gpioread(J1_PIN2_IN);
break;
case 3:
stm32_configgpio(J1_PIN3);
stm32_gpiowrite(J1_PIN3, state);
break;
case 4:
stm32_configgpio(J1_PIN4);
stm32_gpiowrite(J1_PIN4, state);
break;
case 6:
stm32_configgpio(J1_PIN6_IN);
state = stm32_gpioread(J1_PIN6_IN);
break;
default:
modalai_print_usage_con_gpio_test_v1();
return -1;
}
break;
// STM JTAG Programming Header
case 2:
modalai_print_usage_con_gpio_test_v1();
return -1;
// USB 2.0 Full-Speed Downstream Device Port
case 3:
modalai_print_usage_con_gpio_test_v1();
return -1;
// Spare MSS Communications Interface
case 4:
switch (pin) {
case 2:
stm32_configgpio(J4_PIN2);
stm32_gpiowrite(J4_PIN2, state);
break;
case 3:
stm32_configgpio(J4_PIN3);
stm32_gpiowrite(J4_PIN3, state);
break;
case 4:
stm32_configgpio(J4_PIN4);
stm32_gpiowrite(J4_PIN4, state);
break;
case 6:
stm32_configgpio(J4_PIN6);
stm32_gpiowrite(J4_PIN6, state);
break;
case 7:
stm32_configgpio(J4_PIN7);
stm32_gpiowrite(J4_PIN7, state);
break;
case 8:
stm32_configgpio(J4_PIN8);
state = stm32_gpioread(J4_PIN8);
break;
default:
modalai_print_usage_con_gpio_test_v1();
return -1;
}
break;
// TELEMETRY CONNECTOR
case 5:
switch (pin) {
case 2:
stm32_configgpio(J5_PIN2);
stm32_gpiowrite(J5_PIN2, state);
break;
case 3:
stm32_configgpio(J5_PIN3);
stm32_gpiowrite(J5_PIN3, state);
break;
case 4:
stm32_configgpio(J5_PIN4);
stm32_gpiowrite(J5_PIN4, state);
break;
case 5:
stm32_configgpio(J5_PIN5);
stm32_gpiowrite(J5_PIN5, state);
break;
default:
modalai_print_usage_con_gpio_test_v1();
return -1;
}
break;
// EXPANSION CONNECTOR
case 6:
switch (pin) {
case 2:
stm32_configgpio(J6_PIN2);
stm32_gpiowrite(J6_PIN2, state);
break;
case 3:
stm32_configgpio(J6_PIN3);
stm32_gpiowrite(J6_PIN3, state);
break;
case 4:
stm32_configgpio(J6_PIN4);
stm32_gpiowrite(J6_PIN4, state);
break;
case 5:
stm32_configgpio(J6_PIN5);
stm32_gpiowrite(J6_PIN5, state);
break;
default:
modalai_print_usage_con_gpio_test_v1();
return -1;
}
break;
// PWM Output Connector
case 7:
switch (pin) {
case 2:
stm32_configgpio(J7_PIN2);
stm32_gpiowrite(J7_PIN2, state);
break;
case 3:
stm32_configgpio(J7_PIN3);
stm32_gpiowrite(J7_PIN3, state);
break;
case 4:
stm32_configgpio(J7_PIN4);
stm32_gpiowrite(J7_PIN4, state);
break;
case 5:
stm32_configgpio(J7_PIN5);
stm32_gpiowrite(J7_PIN5, state);
break;
case 6:
stm32_configgpio(J7_PIN6);
stm32_gpiowrite(J7_PIN6, state);
break;
case 7:
stm32_configgpio(J7_PIN7);
stm32_gpiowrite(J7_PIN7, state);
break;
case 8:
stm32_configgpio(J7_PIN8);
stm32_gpiowrite(J7_PIN8, state);
break;
case 9:
stm32_configgpio(J7_PIN9);
stm32_gpiowrite(J7_PIN9, state);
break;
default:
modalai_print_usage_con_gpio_test_v1();
return -1;
}
break;
// CAN 1 Peripheral Connector
case 8:
modalai_print_usage_con_gpio_test_v1();
return -1;
// PPM (RC) IN
case 9:
switch (pin) {
case 2:
stm32_configgpio(J9_PIN2_IN);
state = stm32_gpioread(J9_PIN2_IN);
break;
default:
modalai_print_usage_con_gpio_test_v1();
return -1;
}
break;
// GPS CONNECTOR
case 10:
switch (pin) {
case 2:
stm32_configgpio(J10_PIN2);
stm32_gpiowrite(J10_PIN2, state);
break;
case 3:
stm32_configgpio(J10_PIN3);
stm32_gpiowrite(J10_PIN3, state);
break;
case 4:
stm32_configgpio(J10_PIN4);
stm32_gpiowrite(J10_PIN4, state);
break;
case 5:
stm32_configgpio(J10_PIN5);
stm32_gpiowrite(J10_PIN5, state);
break;
default:
modalai_print_usage_con_gpio_test_v1();
return -1;
}
break;
// Micro SD Card Slot
case 11:
modalai_print_usage_con_gpio_test_v1();
return -1;
// Spektrum RC Input Connector
case 12:
switch (pin) {
case 1:
VDD_3V3_SPEKTRUM_POWER_EN(state);
break;
case 2:
__asm("nop");
stm32_configgpio(J12_PIN2);
stm32_gpiowrite(J12_PIN2, state);
//state = stm32_gpioread(J12_PIN2);
__asm("nop");
break;
case 3:
stm32_configgpio(J12_PIN3);
stm32_gpiowrite(J12_PIN3, state);
break;
default:
modalai_print_usage_con_gpio_test_v1();
return -1;
}
break;
// I2C DISPLAY / SPARE SENSOR CONNECTOR
case 13:
switch (pin) {
case 3:
stm32_configgpio(J13_PIN3);
stm32_gpiowrite(J13_PIN3, state);
break;
case 4:
stm32_configgpio(J13_PIN4);
stm32_gpiowrite(J13_PIN4, state);
break;
case 5:
stm32_configgpio(J13_PIN5);
stm32_gpiowrite(J13_PIN5, state);
break;
default:
modalai_print_usage_con_gpio_test_v1();
return -1;
}
break;
}
printf("GPIO - Con: %d, Pin: %d, State: %d\n", con, pin, state);
return OK;
}
bool test_pair(uint32_t output_pin, uint32_t input_pin)
{
bool state = false;
stm32_gpiowrite(output_pin, true);
usleep(1000 * 10);
state = stm32_gpioread(input_pin);
if (state != true) {
return false;
}
usleep(1000 * 10);
stm32_gpiowrite(output_pin, false);
usleep(1000 * 10);
state = stm32_gpioread(input_pin);
if (state != false) {
return false;
}
return true;
}
bool modalai_test_pair(uint32_t output_pin, uint32_t input_pin)
{
bool state = false;
stm32_gpiowrite(output_pin, true);
usleep(1000 * 10);
state = stm32_gpioread(input_pin);
if (state != true) {
return false;
}
usleep(1000 * 10);
stm32_gpiowrite(output_pin, false);
usleep(1000 * 10);
state = stm32_gpioread(input_pin);
if (state != false) {
return false;
}
return true;
}
int modalai_buzz_test_v1(eHW_TYPE hw_type)
{
PX4_INFO("test: buzz");
usleep(1000 * 100 * 10);
if (hw_type == eM0018) {
PX4_INFO("Using Flight Core Config");
} else if (hw_type == eM0019) {
PX4_INFO("Using VOXL-Flight Config");
} else if (hw_type == eM0051) {
PX4_INFO("Using M0051 Config");
} else {
return -1;
}
if (hw_type == eM0018) {
PX4_INFO(">> Testing J1");
stm32_configgpio(J1_PIN2_IN); // 2 [in] to 4 [out]
stm32_configgpio(J1_PIN3); // 3 [out] to 6 [in]
stm32_configgpio(J1_PIN4); // 4 [out] to 2 [in]
stm32_configgpio(J1_PIN6_IN); // 6 [in] to 3 [out]
if (test_pair(J1_PIN4, J1_PIN2_IN)) {
PX4_INFO("PASS: J1P4-J1P2");
} else {
PX4_ERR("FAIL: J1P4-J1P2 ----------------------------------------");
}
if (test_pair(J1_PIN3, J1_PIN6_IN)) {
PX4_INFO("PASS: J1P3-J1P6");
} else {
PX4_ERR("FAIL: J1P3-J1P6 ----------------------------------------");
}
} else if (hw_type == eM0019) {
// NA on VOXL-Flight (internally routed)
}
if (hw_type == eM0018) {
PX4_INFO(">> Testing J4");
stm32_configgpio(J4_PIN2); // 2 [out] 6 [in]
stm32_configgpio(J4_PIN3); // 3 [out] 7 [in]
stm32_configgpio(J4_PIN4); // 4 [out] 8 [in]
stm32_configgpio(J4_PIN6_IN); // 2 [out] 6 [in]
stm32_configgpio(J4_PIN7_IN); // 3 [out] 7 [in]
stm32_configgpio(J4_PIN8_IN); // 4 [out] 8 [in]
if (test_pair(J4_PIN2, J4_PIN6_IN)) {
PX4_INFO("PASS: J4P2-J4P6");
} else {
PX4_ERR("FAIL: J4P2-J4P6 ----------------------------------------");
}
if (test_pair(J4_PIN3, J4_PIN7_IN)) {
PX4_INFO("PASS: J4P3-J4P7");
} else {
PX4_ERR("FAIL: J4P3-J4P7 ----------------------------------------");
}
if (test_pair(J4_PIN4, J4_PIN8_IN)) {
PX4_INFO("PASS: J4P4-J4P8");
} else {
PX4_ERR("FAIL: J4P4-J4P8 ----------------------------------------");
}
} else if (hw_type == eM0019) {
PX4_INFO(">> Testing J1002");
stm32_configgpio(J1002_PIN2); // 2 [out] 4 [in]
stm32_configgpio(J1002_PIN3); // 3 [out] 6 [in]
stm32_configgpio(J1002_PIN4_IN); // 2 [out] 4 [in]
stm32_configgpio(J1002_PIN6_IN); // 3 [out] 6 [in]
if (test_pair(J1002_PIN2, J1002_PIN4_IN)) {
PX4_INFO("PASS: J1002P2-J1002P4");
} else {
PX4_ERR("FAIL: J1002P2-J1002P4 ----------------------------------------");
}
if (test_pair(J1002_PIN3, J1002_PIN6_IN)) {
PX4_INFO("PASS: J1002P3-J1002P6");
} else {
PX4_ERR("FAIL: J1002P3-J1002P6 ----------------------------------------");
}
}
if (hw_type == eM0018) {
PX4_INFO(">> Testing J5");
stm32_configgpio(J5_PIN2); // 2 [out] 4 [in]
stm32_configgpio(J5_PIN3); // 3 [out] 5 [in]
stm32_configgpio(J5_PIN4_IN); // 4 [in] 2 [out]
stm32_configgpio(J5_PIN5_IN); // 5 [in] 3 [out]
if (test_pair(J5_PIN2, J5_PIN4_IN)) {
PX4_INFO("PASS: J5P2-J5P4");
} else {
PX4_ERR("FAIL: J5P2-J5P4 ----------------------------------------");
}
if (test_pair(J5_PIN3, J5_PIN5_IN)) {
PX4_INFO("PASS: J5P3-J5P5");
} else {
PX4_ERR("FAIL: J5P3-J5P5 ----------------------------------------");
}
} else if (hw_type == eM0019) {
PX4_INFO(">> Testing J1010");
stm32_configgpio(J1010_PIN2); // 2 [out] 4 [in]
stm32_configgpio(J1010_PIN3); // 3 [out] 5 [in]
stm32_configgpio(J1010_PIN4_IN); // 4 [in] 2 [out]
stm32_configgpio(J1010_PIN5_IN); // 5 [in] 3 [out]
if (test_pair(J1010_PIN2, J1010_PIN4_IN)) {
PX4_INFO("PASS: J1010P2-J1010P4");
} else {
PX4_ERR("FAIL: J1010P2-J1010P4 ----------------------------------------");
}
if (test_pair(J1010_PIN3, J1010_PIN5_IN)) {
PX4_INFO("PASS: J1010P3-J1010P5");
} else {
PX4_ERR("FAIL: J1010P3-J1010P5 ----------------------------------------");
}
}
if (hw_type == eM0018) {
PX4_INFO(">> Testing J6");
stm32_configgpio(J6_PIN2); // 2 [out] 4 [in]
stm32_configgpio(J6_PIN3); // 3 [out] 5 [in]
stm32_configgpio(J6_PIN4_IN); // 4 [in] 2 [out]
stm32_configgpio(J6_PIN5_IN); // 5 [in] 3 [out]
if (test_pair(J6_PIN2, J6_PIN4_IN)) {
PX4_INFO("PASS: J6P2-J6P4");
} else {
PX4_ERR("FAIL: J6P2-J6P4 ----------------------------------------");
}
if (test_pair(J6_PIN3, J6_PIN5_IN)) {
PX4_INFO("PASS: J6P3-J6P5");
} else {
PX4_ERR("FAIL: J6P3-J6P5 ----------------------------------------");
}
} else if (hw_type == eM0019) {
PX4_INFO(">> Testing J1009");
stm32_configgpio(J1009_PIN2); // 2 [out] 4 [in]
stm32_configgpio(J1009_PIN3); // 3 [out] 5 [in]
stm32_configgpio(J1009_PIN4_IN); // 4 [in] 2 [out]
stm32_configgpio(J1009_PIN5_IN); // 5 [in] 3 [out]
if (test_pair(J1009_PIN2, J1009_PIN4_IN)) {
PX4_INFO("PASS: J1009P2-J1009P4");
} else {
PX4_ERR("FAIL: J1009P2-J1009P4 ----------------------------------------");
}
if (test_pair(J1009_PIN3, J1009_PIN5_IN)) {
PX4_INFO("PASS: J1009P3-J1009P5");
} else {
PX4_ERR("FAIL: J1009P3-J1009P5 ----------------------------------------");
}
}
if (hw_type == eM0018) {
PX4_INFO(">> Testing J7");
stm32_configgpio(J7_PIN2); // 2 [out] 6 [in]
stm32_configgpio(J7_PIN3); // 3 [out] 7 [in]
stm32_configgpio(J7_PIN4); // 4 [out] 8 [in]
stm32_configgpio(J7_PIN5); // 5 [out] 9 [in]
stm32_configgpio(J7_PIN6_IN); // 6 [in] 2 [out]
stm32_configgpio(J7_PIN7_IN); // 7 [in] 3 [out]
stm32_configgpio(J7_PIN8_IN); // 8 [in] 4 [out]
stm32_configgpio(J7_PIN9_IN); // 9 [in] 5 [out]
if (test_pair(J7_PIN2, J7_PIN6_IN)) {
PX4_INFO("PASS: J7P2-J7P6");
} else {
PX4_ERR("FAIL: J7P2-J7P6 ----------------------------------------");
}
if (test_pair(J7_PIN3, J7_PIN7_IN)) {
PX4_INFO("PASS: J7P3-J7P7");
} else {
PX4_ERR("FAIL: J7P3-J7P7 ----------------------------------------");
}
if (test_pair(J7_PIN4, J7_PIN8_IN)) {
PX4_INFO("PASS: J7P4-J7P8");
} else {
PX4_ERR("FAIL: J7P4-J7P8 ----------------------------------------");
}
if (test_pair(J7_PIN5, J7_PIN9_IN)) {
PX4_INFO("PASS: J7P5-J7P9");
} else {
PX4_ERR("FAIL: J7P5-J7P9 ----------------------------------------");
}
} else if (hw_type == eM0019) {
PX4_INFO(">> Testing J1007");
stm32_configgpio(J1007_PIN2); // 2 [out] 6 [in]
stm32_configgpio(J1007_PIN3); // 3 [out] 7 [in]
stm32_configgpio(J1007_PIN4); // 4 [out] 8 [in]
stm32_configgpio(J1007_PIN5); // 5 [out] 9 [in]
stm32_configgpio(J1007_PIN6_IN); // 6 [in] 2 [out]
stm32_configgpio(J1007_PIN7_IN); // 7 [in] 3 [out]
stm32_configgpio(J1007_PIN8_IN); // 8 [in] 4 [out]
stm32_configgpio(J1007_PIN9_IN); // 9 [in] 5 [out]
if (test_pair(J1007_PIN2, J1007_PIN6_IN)) {
PX4_INFO("PASS: J1007P2-J1007P6");
} else {
PX4_ERR("FAIL: J1007P2-J1007P6 ----------------------------------------");
}
if (test_pair(J1007_PIN3, J1007_PIN7_IN)) {
PX4_INFO("PASS: J1007P3-J1007P7");
} else {
PX4_ERR("FAIL: J1007P3-J1007P7 ----------------------------------------");
}
if (test_pair(J1007_PIN4, J1007_PIN8_IN)) {
PX4_INFO("PASS: J1007P4-J1007P8");
} else {
PX4_ERR("FAIL: J1007P4-J1007P8 ----------------------------------------");
}
if (test_pair(J1007_PIN5, J1007_PIN9_IN)) {
PX4_INFO("PASS: J1007P5-J1007P9");
} else {
PX4_ERR("FAIL: J1007P5-J1007P9 ----------------------------------------");
}
} else if (hw_type == eM0051) {
PX4_INFO(">> Testing M0051 J13");
stm32_configgpio(M0051J13_PIN2); // 2 [out] 6 [in]
stm32_configgpio(M0051J13_PIN3); // 3 [out] 7 [in]
stm32_configgpio(M0051J13_PIN4); // 4 [out] 8 [in]
stm32_configgpio(M0051J13_PIN5); // 5 [out] 9 [in]
stm32_configgpio(M0051J13_PIN6_IN); // 6 [in] 2 [out]
stm32_configgpio(M0051J13_PIN7_IN); // 7 [in] 3 [out]
stm32_configgpio(M0051J13_PIN8_IN); // 8 [in] 4 [out]
stm32_configgpio(M0051J13_PIN9_IN); // 9 [in] 5 [out]
if (test_pair(M0051J13_PIN2, M0051J13_PIN6_IN)) {
PX4_INFO("PASS: J13_P2-J13_P6");
} else {
PX4_ERR("FAIL: J13_P2-J13_P6 ----------------------------------------");
}
if (test_pair(M0051J13_PIN3, M0051J13_PIN7_IN)) {
PX4_INFO("PASS: JJ13_P3-J13_P7");
} else {
PX4_ERR("FAIL: J13_P3-J13_7P7 ----------------------------------------");
}
if (test_pair(M0051J13_PIN4, M0051J13_PIN8_IN)) {
PX4_INFO("PASS: J13_P4-J13_P8");
} else {
PX4_ERR("FAIL: J13_P4-J13_P8 ----------------------------------------");
}
if (test_pair(M0051J13_PIN5, M0051J13_PIN9_IN)) {
PX4_INFO("PASS: J13_P5-J13_P9");
} else {
PX4_ERR("FAIL: J13_P5-J13_P9 ----------------------------------------");
}
}
if (hw_type == eM0018) {
PX4_INFO(">> Testing J10");
stm32_configgpio(J10_PIN2); // 2 [out] 4 [in]
stm32_configgpio(J10_PIN3); // 3 [out] 5 [in]
stm32_configgpio(J10_PIN4_IN); // 4 [in] 2 [out]
stm32_configgpio(J10_PIN5_IN); // 5 [in] 3 [out]
if (test_pair(J10_PIN2, J10_PIN4_IN)) {
PX4_INFO("PASS: J10P2-J10P4");
} else {
PX4_ERR("FAIL: J10P2-J10P4 --------------------------------------");
}
if (test_pair(J10_PIN3, J10_PIN5_IN)) {
PX4_INFO("PASS: J10P3-J10P5");
} else {
PX4_ERR("FAIL: J10P3-J10P5 --------------------------------------");
}
} else if (hw_type == eM0019) {
PX4_INFO(">> Testing J1012");
stm32_configgpio(J1012_PIN2); // 2 [out] 4 [in]
stm32_configgpio(J1012_PIN3); // 3 [out] 5 [in]
stm32_configgpio(J1012_PIN4_IN); // 4 [in] 2 [out]
stm32_configgpio(J1012_PIN5_IN); // 5 [in] 3 [out]
if (test_pair(J1012_PIN2, J1012_PIN4_IN)) {
PX4_INFO("PASS: J1012P2-J1120P4");
} else {
PX4_ERR("FAIL: J1012P2-J1012P4 --------------------------------------");
}
if (test_pair(J1012_PIN3, J1012_PIN5_IN)) {
PX4_INFO("PASS: J1012P3-J1012P5");
} else {
PX4_ERR("FAIL: J1012P3-J1012P5 --------------------------------------");
}
} else if (hw_type == eM0051) {
PX4_INFO(">> Testing M0051 J15");
stm32_configgpio(M0051J15_PIN2); // 2 [out] 4 [in]
stm32_configgpio(M0051J15_PIN3); // 3 [out] 5 [in]
stm32_configgpio(M0051J15_PIN4_IN); // 4 [in] 2 [out]
stm32_configgpio(M0051J15_PIN5_IN); // 5 [in] 3 [out]
if (test_pair(M0051J15_PIN2, M0051J15_PIN4_IN)) {
PX4_INFO("PASS: J15_P2-J15_P4");
} else {
PX4_ERR("FAIL: J15_P2-JJ15_P4 --------------------------------------");
}
if (test_pair(M0051J15_PIN3, M0051J15_PIN5_IN)) {
PX4_INFO("PASS: J15_P3-J15_P5");
} else {
PX4_ERR("FAIL: J15_P3-J15_P5 --------------------------------------");
}
}
if (hw_type == eM0018) {
PX4_INFO(">> Testing J9/J12/J13");
stm32_configgpio(J9_PIN2_IN); // J9-2 [in] J13-5 [out]
stm32_configgpio(J12_PIN2_IN); // J12-2 [in] J13-3 [out]
stm32_configgpio(J12_PIN3_IN); // J12-3 [in] J13-4 [out]
stm32_configgpio(J13_PIN3); // J13-3 [out] J12-2 [in]
stm32_configgpio(J13_PIN4); // J13-4 [out] J12-3 [in]
stm32_configgpio(J13_PIN5); // J13-5 [out] J9-2 [in]
if (test_pair(J13_PIN3, J12_PIN2_IN)) {
PX4_INFO("PASS: J13P3-J12P2");
} else {
PX4_ERR("FAIL: J13P3-J12P2 --------------------------------------");
}
if (test_pair(J13_PIN4, J12_PIN3_IN)) {
PX4_INFO("PASS: J13P4-J12P3");
} else {
PX4_ERR("FAIL: J13P4-J12P3 --------------------------------------");
}
if (test_pair(J13_PIN5, J9_PIN2_IN)) {
PX4_INFO("PASS: J13P5-J9P2");
} else {
PX4_ERR("FAIL: J13P5-J9P2 --------------------------------------");
}
} else if (hw_type == eM0019) {
PX4_INFO(">> Testing J1003/J1004/J1011");
stm32_configgpio(J1003_PIN2_IN); // J1003-2 [in] J13-5 [out]
stm32_configgpio(J1004_PIN2_IN); // J1004-2 [in] J13-3 [out]
stm32_configgpio(J1004_PIN3_IN); // J1004-3 [in] J13-4 [out]
stm32_configgpio(J1011_PIN3); // J1011-3 [out] J12-2 [in]
stm32_configgpio(J1011_PIN4); // J1011-4 [out] J12-3 [in]
stm32_configgpio(J1011_PIN5); // J1011-5 [out] J9-2 [in]
if (test_pair(J1011_PIN3, J1004_PIN2_IN)) {
PX4_INFO("PASS: J1011P3-J1004P2");
} else {
PX4_ERR("FAIL: J1011P3-J1004P2 --------------------------------------");
}
if (test_pair(J1011_PIN4, J1004_PIN3_IN)) {
PX4_INFO("PASS: J1011P4-J1004P3");
} else {
PX4_ERR("FAIL: J1011P4-J1004P3 --------------------------------------");
}
if (test_pair(J1011_PIN5, J1003_PIN2_IN)) {
PX4_INFO("PASS: J1011P5-J1011P5");
} else {
PX4_ERR("FAIL: J1011P5-J1011P5 --------------------------------------");
}
} else if (hw_type == eM0051) {
PX4_INFO(">> Testing M0051 J14");
stm32_configgpio(M0051J14_PIN2); // J14-2 [out] J14-3 [in]
stm32_configgpio(M0051J14_PIN3_IN); // J14-3 [in] J14-2 [out]
if (test_pair(M0051J14_PIN2, M0051J14_PIN3_IN)) {
PX4_INFO("PASS: J14_P2-J14_P3");
} else {
PX4_ERR("FAIL: J14_P2-J14_P3 --------------------------------------");
}
}
return 0;
}
int modalai_hw_detect_v1(eHW_TYPE hw_type)
{
int result = 0;
if (hw_type == eM0018) {
PX4_INFO("V106 - Flight Core");
} else if (hw_type == eM0019) {
PX4_INFO("V110 - VOXL-Flight");
} else if (hw_type == eM0051) {
PX4_INFO("V120 - M0051");
} else {
PX4_ERR("Unknown hardware");
result = -1;
}
return result;
}
#endif //CONFIG_ARCH_CHIP_STM32H743ZI
@@ -0,0 +1,218 @@
#ifndef MODALAI_FC_V1_H_
#define MODALAI_FC_V1_H_
typedef enum {
eHwUnknown = -1,
eHwNone = 0,
eM0018, // Flight Core
eM0019, // VOXL Flight
eM0051
} eHW_TYPE;
#define _MK_GPIO_INPUT(def) (((def) & (GPIO_PORT_MASK | GPIO_PIN_MASK)) | (GPIO_INPUT|GPIO_PULLUP))
#define _MK_GPIO_OUTPUT(def) (((def) & (GPIO_PORT_MASK | GPIO_PIN_MASK)) | (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR))
//
// Flight Core - J1 - Primary MSS Communications Interface
// VOXL Flight - NA
//
#define J1_PIN2_IN _MK_GPIO_INPUT(GPIO_UART5_RX)
#define J1_PIN3 _MK_GPIO_OUTPUT(GPIO_UART5_TX)
#define J1_PIN4 _MK_GPIO_OUTPUT(GPIO_UART5_RTS)
#define J1_PIN6_IN _MK_GPIO_INPUT(GPIO_UART5_CTS)
//
// STM JTAG Programming Header
// Flight Core - J2
// VOXL Flight - J1001
//
//
// USB 2.0 Full-Speed Downstream Device Port
// Flight Core - J
// VOXL Flight - J1006
//
//
// Spare MSS Comms
// Flight Core - J4
// VOXL Flight - J1002
//
#define J4_PIN2 _MK_GPIO_OUTPUT(GPIO_USART2_RX)
#define J1002_PIN2 J4_PIN2
#define J4_PIN3 _MK_GPIO_OUTPUT(GPIO_USART2_TX)
#define J1002_PIN3 J4_PIN3
#define J4_PIN4 _MK_GPIO_OUTPUT(GPIO_USART2_RTS)
#define J1002_PIN4 J4_PIN4
#define J4_PIN4_IN _MK_GPIO_INPUT(GPIO_USART2_RTS)
#define J1002_PIN4_IN J4_PIN4_IN
#define J4_PIN6 _MK_GPIO_OUTPUT(GPIO_USART2_CTS)
#define J4_PIN6_IN _MK_GPIO_INPUT(GPIO_USART2_CTS)
#define J1002_PIN6_IN J4_PIN6_IN
#define J4_PIN7 _MK_GPIO_OUTPUT(GPIO_VOXL_STATUS_OUT)
#define J4_PIN7_IN _MK_GPIO_INPUT(GPIO_VOXL_STATUS_OUT)
#define J4_PIN8 _MK_GPIO_OUTPUT(GPIO_VOXL_STATUS_IN)
#define J4_PIN8_IN _MK_GPIO_INPUT(GPIO_VOXL_STATUS_IN)
//
// TELEMETRY CONNECTOR
// Flight Core - J5
// VOXL Flight - J1010
//
#define J5_PIN2 _MK_GPIO_OUTPUT(GPIO_UART7_TX)
#define J1010_PIN2 J5_PIN2
#define J5_PIN3 _MK_GPIO_OUTPUT(GPIO_UART7_RX)
#define J1010_PIN3 J5_PIN3
#define J5_PIN4 _MK_GPIO_OUTPUT(GPIO_UART7_CTS)
#define J1010_PIN4 J5_PIN4
#define J5_PIN4_IN _MK_GPIO_INPUT(GPIO_UART7_CTS)
#define J1010_PIN4_IN J5_PIN4_IN
#define J5_PIN5 _MK_GPIO_OUTPUT(GPIO_UART7_RTS)
#define J1010_PIN5 J5_PIN5
#define J5_PIN5_IN _MK_GPIO_INPUT(GPIO_UART7_RTS)
#define J1010_PIN5_IN J5_PIN5_IN
//
// EXPANSION CONNECTOR
// Flight Core - J6
// VOXL Flight - J1009
//
#define J6_PIN2 _MK_GPIO_OUTPUT(GPIO_UART4_TX_5)
#define J1009_PIN2 J6_PIN2
#define J6_PIN3 _MK_GPIO_OUTPUT(GPIO_UART4_RX_5)
#define J1009_PIN3 J6_PIN3
#define J6_PIN4 _MK_GPIO_OUTPUT(GPIO_I2C3_SCL_2)
#define J1009_PIN4 J6_PIN4
#define J6_PIN4_IN _MK_GPIO_INPUT(GPIO_I2C3_SCL_2)
#define J1009_PIN4_IN J6_PIN4_IN
#define J6_PIN5 _MK_GPIO_OUTPUT(GPIO_I2C3_SDA_2)
#define J1009_PIN5 J6_PIN5
#define J6_PIN5_IN _MK_GPIO_INPUT(GPIO_I2C3_SDA_2)
#define J1009_PIN5_IN J6_PIN5_IN
//
// Flight Core - J7 - PWM Output Connector
// VOXL Flight - J1007
// M0051 - J13
//
#define J7_PIN2 _MK_GPIO_OUTPUT(GPIO_TIM1_CH4OUT_2)
#define J1007_PIN2 J7_PIN2
#define M0051J13_PIN2 J7_PIN2
#define J7_PIN3 _MK_GPIO_OUTPUT(GPIO_TIM1_CH3OUT_1)
#define J1007_PIN3 J7_PIN3
#define M0051J13_PIN3 J7_PIN3
#define J7_PIN4 _MK_GPIO_OUTPUT(GPIO_TIM1_CH2OUT_2)
#define J1007_PIN4 J7_PIN4
#define M0051J13_PIN4 J7_PIN4
#define J7_PIN5 _MK_GPIO_OUTPUT(GPIO_TIM1_CH1OUT_1)
#define J1007_PIN5 J7_PIN5
#define M0051J13_PIN5 J7_PIN5
#define J7_PIN6 _MK_GPIO_OUTPUT(GPIO_TIM4_CH2OUT_2)
#define J1007_PIN6 J7_PIN6
#define M0051J13_PIN6 J7_PIN6
#define J7_PIN6_IN _MK_GPIO_INPUT(GPIO_TIM4_CH2OUT_2)
#define J1007_PIN6_IN J7_PIN6_IN
#define M0051J13_PIN6_IN J7_PIN6_IN
#define J7_PIN7 _MK_GPIO_OUTPUT(GPIO_TIM4_CH3OUT_2)
#define J1007_PIN7 J7_PIN7
#define M0051J13_PIN7 J7_PIN7
#define J7_PIN7_IN _MK_GPIO_INPUT(GPIO_TIM4_CH3OUT_2)
#define J1007_PIN7_IN J7_PIN7_IN
#define M0051J13_PIN7_IN J7_PIN7_IN
#define J7_PIN8 _MK_GPIO_OUTPUT(GPIO_TIM4_CH1OUT_2)
#define J1007_PIN8 J7_PIN8
#define M0051J13_PIN8 J7_PIN8
#define J7_PIN8_IN _MK_GPIO_INPUT(GPIO_TIM4_CH1OUT_2)
#define J1007_PIN8_IN J7_PIN8_IN
#define M0051J13_PIN8_IN J7_PIN8_IN
#define J7_PIN9 _MK_GPIO_OUTPUT(GPIO_TIM4_CH4OUT_2)
#define J1007_PIN9 J7_PIN9
#define M0051J13_PIN9 J7_PIN9
#define J7_PIN9_IN _MK_GPIO_INPUT(GPIO_TIM4_CH4OUT_2)
#define J1007_PIN9_IN J7_PIN9_IN
#define M0051J13_PIN9_IN J7_PIN9_IN
//
// CAN 1 Peripheral Connector
// Flight Core - J8
// VOXL Flight - J1008
//
//#define J8_PIN2 _MK_GPIO_OUTPUT()
//#define J8_PIN3 _MK_GPIO_OUTPUT()
// PPM (RC) IN
// Flight Core - J9
// VOXL Flight - J1003
//
#define J9_PIN2_IN _MK_GPIO_INPUT(GPIO_TIM8_CH1IN_2)
#define J1003_PIN2_IN J9_PIN2_IN
//
// GPS CONNECTOR
// Flight Core - J10
// VOXL Flight - J1012
// M0051 - J15
//
#define J10_PIN2 _MK_GPIO_OUTPUT(GPIO_USART1_TX_3)
#define J1012_PIN2 J10_PIN2
#define M0051J15_PIN2 J10_PIN2
#define J10_PIN3 _MK_GPIO_OUTPUT(GPIO_USART1_RX_3)
#define J1012_PIN3 J10_PIN3
#define M0051J15_PIN3 J10_PIN3
#define J10_PIN4 _MK_GPIO_OUTPUT(GPIO_I2C1_SCL_2)
#define J1012_PIN4 J10_PIN4
#define M0051J15_PIN4 J10_PIN4
#define J10_PIN4_IN _MK_GPIO_INPUT(GPIO_I2C1_SCL_2)
#define J1012_PIN4_IN J10_PIN4_IN
#define M0051J15_PIN4_IN J10_PIN4_IN
#define J10_PIN5 _MK_GPIO_OUTPUT(GPIO_I2C1_SDA_1)
#define J1012_PIN5 J10_PIN5
#define M0051J15_PIN5 J10_PIN5
#define J10_PIN5_IN _MK_GPIO_INPUT(GPIO_I2C1_SDA_1)
#define J1012_PIN5_IN J10_PIN5_IN
#define M0051J15_PIN5_IN J10_PIN5_IN
//
// Spektrum RC Input Connector
// Flight Core - J12
// VOXL Flight - J1004
// M0051 - J14
//
#define J12_PIN1 GPIO_VDD_3V3_SPEKTRUM_POWER_EN
#define J1004_PIN1 J12_PIN1
#define M0051J14_PIN1 J12_PIN1
#define J12_PIN2 _MK_GPIO_OUTPUT(GPIO_USART6_TX_1)
#define J1004_PIN2 J12_PIN2
#define M0051J14_PIN2 J12_PIN2
#define J12_PIN2_IN _MK_GPIO_INPUT(GPIO_USART6_TX_1)
#define J1004_PIN2_IN J12_PIN2_IN
#define M0051J14_PIN2_IN J12_PIN2_IN
#define J12_PIN3 _MK_GPIO_OUTPUT(GPIO_USART6_RX_1)
#define J1004_PIN3 J12_PIN3
#define M0051J14_PIN3 J12_PIN3
#define J12_PIN3_IN _MK_GPIO_INPUT(GPIO_USART6_RX_1)
#define J1004_PIN3_IN J12_PIN3_IN
#define M0051J14_PIN3_IN J12_PIN3_IN
//
// I2C Display / Spare Sensor Connector
// Flight Core - J13
// VOXL Flight - J1011
//
#define J13_PIN3 _MK_GPIO_OUTPUT(GPIO_I2C2_SDA_2)
#define J1011_PIN3 J13_PIN3
#define J13_PIN4 _MK_GPIO_OUTPUT(GPIO_I2C2_SCL_2)
#define J1011_PIN4 J13_PIN4
#define J13_PIN5 _MK_GPIO_OUTPUT(GPIO_PF3_EVENTOUT)
#define J1011_PIN5 J13_PIN5
void modalai_print_usage_v1(void);
void modalai_print_usage_con_gpio_test_v1(void);
int modalai_con_gpio_test_v1(uint8_t con, uint8_t pin, bool state);
int modalai_led_test_v1(void);
int modalai_buzz_test_v1(eHW_TYPE type);
int modalai_hw_detect_v1(eHW_TYPE type);
#endif //MODALAI_FC_V1_H_
@@ -0,0 +1,437 @@
#include <px4_platform_common/module.h>
#include "chip.h"
#include "stm32_gpio.h"
#include "board_config.h"
#include <nuttx/board.h>
#include <arch/board/board.h>
// v2
#ifdef CONFIG_ARCH_CHIP_STM32H753II // chip on M0087
#include "modalai_fc-v2.h"
void modalai_print_usage_v2(void)
{
PRINT_MODULE_DESCRIPTION("ModalAI Test utility\n");
PRINT_MODULE_USAGE_NAME_SIMPLE("modalai", "command");
PRINT_MODULE_USAGE_COMMAND_DESCR("led", "LED Test");
PRINT_MODULE_USAGE_COMMAND_DESCR("con", "Connector Output Test (as GPIO)");
PRINT_MODULE_USAGE_COMMAND_DESCR("buzz", "Automated buzz out test");
PRINT_MODULE_USAGE_COMMAND_DESCR("detect", "Detect board type");
return;
}
void modalai_print_usage_con_gpio_test_v2(void)
{
return;
}
int modalai_con_gpio_test_v2(uint8_t con, uint8_t pin, bool state)
{
return 0;
}
int modalai_led_test_v2(void)
{
PX4_INFO("Running led test");
stm32_configgpio(GPIO_nLED_RED);
stm32_configgpio(GPIO_nLED_GREEN);
stm32_configgpio(GPIO_nLED_BLUE);
int i = 0;
for (i = 0; i < 3; i++) {
usleep(1000 * 100);
stm32_gpiowrite(GPIO_nLED_RED, false);
usleep(1000 * 100);
stm32_gpiowrite(GPIO_nLED_RED, true);
usleep(1000 * 100);
stm32_gpiowrite(GPIO_nLED_GREEN, false);
usleep(1000 * 100);
stm32_gpiowrite(GPIO_nLED_GREEN, true);
usleep(1000 * 100);
stm32_gpiowrite(GPIO_nLED_BLUE, false);
usleep(1000 * 100);
stm32_gpiowrite(GPIO_nLED_BLUE, true);
}
return 0;
}
bool test_pair(uint32_t output_pin, uint32_t input_pin)
{
bool state = false;
stm32_gpiowrite(output_pin, true);
usleep(1000 * 10);
state = stm32_gpioread(input_pin);
if (state != true) {
return false;
}
usleep(1000 * 10);
stm32_gpiowrite(output_pin, false);
usleep(1000 * 10);
state = stm32_gpioread(input_pin);
if (state != false) {
return false;
}
return true;
}
int modalai_buzz_test_v2(eHW_TYPE hw_type)
{
PX4_INFO("test: buzz");
usleep(1000 * 100 * 10);
if (hw_type == eM0079) {
PX4_INFO("Using M0079 config");
} else if (hw_type == eM0087) {
PX4_INFO("Using M0087 config");
} else {
return -1;
}
if (hw_type == eM0079) {
//
//
//
PX4_INFO(">> Testing J1");
stm32_configgpio(M0079_J1_PIN_2_OUT); // 2-3
stm32_configgpio(M0079_J1_PIN_3_IN); // 3-2
stm32_configgpio(M0079_J1_PIN_4_OUT); // 4-5
stm32_configgpio(M0079_J1_PIN_5_IN); // 5-4
if (test_pair(M0079_J1_PIN_2_OUT, M0079_J1_PIN_3_IN)) {
PX4_INFO("PASS: M0079_J1_PIN_2_OUT M0079_J1_PIN_3_IN");
} else {
PX4_ERR("FAIL: M0079_J1_PIN_2_OUT M0079_J1_PIN_3_IN");
}
if (test_pair(M0079_J1_PIN_4_OUT, M0079_J1_PIN_5_IN)) {
PX4_INFO("PASS: M0079_J1_PIN_4_OUT M0079_J1_PIN_5_IN");
} else {
PX4_ERR("FAIL: M0079_J1_PIN_4_OUT M0079_J1_PIN_5_IN");
}
//
//
//
PX4_INFO(">> Testing J5");
stm32_configgpio(M0079_J5_PIN_2_OUT); // 2-4
stm32_configgpio(M0079_J5_PIN_3_OUT); // 3-5
stm32_configgpio(M0079_J5_PIN_4_IN); // 4-2
stm32_configgpio(M0079_J5_PIN_5_IN); // 5-3
if (test_pair(M0079_J5_PIN_2_OUT, M0079_J5_PIN_4_IN)) {
PX4_INFO("PASS: M0079_J5_PIN_2_OUT M0079_J5_PIN_4_IN");
} else {
PX4_ERR("FAIL: M0079_J5_PIN_2_OUT M0079_J5_PIN_4_IN");
}
if (test_pair(M0079_J5_PIN_3_OUT, M0079_J5_PIN_5_IN)) {
PX4_INFO("PASS: M0079_J5_PIN_3_OUT M0079_J5_PIN_5_IN");
} else {
PX4_ERR("FAIL: M0079_J5_PIN_3_OUT M0079_J5_PIN_5_IN");
}
//
//
//
PX4_INFO(">> Testing J7");
stm32_configgpio(M0079_J7_PIN_2_OUT); // 2-6
stm32_configgpio(M0079_J7_PIN_3_OUT); // 3-7
stm32_configgpio(M0079_J7_PIN_4_OUT); // 4-8
stm32_configgpio(M0079_J7_PIN_5_OUT); // 5-9
stm32_configgpio(M0079_J7_PIN_6_IN); // 6-2
stm32_configgpio(M0079_J7_PIN_7_IN); // 7-3
stm32_configgpio(M0079_J7_PIN_8_IN); // 8-4
stm32_configgpio(M0079_J7_PIN_9_IN); // 9-5
if (test_pair(M0079_J7_PIN_2_OUT, M0079_J7_PIN_6_IN)) {
PX4_INFO("PASS: M0079_J7_PIN_2_OUT M0079_J7_PIN_6_IN");
} else {
PX4_ERR("FAIL: M0079_J7_PIN_2_OUT M0079_J7_PIN_6_IN");
}
if (test_pair(M0079_J7_PIN_3_OUT, M0079_J7_PIN_7_IN)) {
PX4_INFO("PASS: M0079_J7_PIN_3_OUT M0079_J7_PIN_7_IN");
} else {
PX4_ERR("FAIL: M0079_J7_PIN_3_OUT M0079_J7_PIN_7_IN");
}
if (test_pair(M0079_J7_PIN_4_OUT, M0079_J7_PIN_8_IN)) {
PX4_INFO("PASS: M0079_J7_PIN_4_OUT M0079_J7_PIN_8_IN");
} else {
PX4_ERR("FAIL: M0079_J7_PIN_4_OUT M0079_J7_PIN_8_IN");
}
if (test_pair(M0079_J7_PIN_5_OUT, M0079_J7_PIN_9_IN)) {
PX4_INFO("PASS: M0079_J7_PIN_5_OUT M0079_J7_PIN_9_IN");
} else {
PX4_ERR("FAIL: M0079_J7_PIN_5_OUT M0079_J7_PIN_9_IN");
}
//
//
//
PX4_INFO(">> Testing J10");
stm32_configgpio(M0079_J10_PIN_2_OUT); // 2-4
stm32_configgpio(M0079_J10_PIN_3_OUT); // 3-5
stm32_configgpio(M0079_J10_PIN_4_IN); // 4-2
stm32_configgpio(M0079_J10_PIN_5_IN); // 5-3
if (test_pair(M0079_J10_PIN_2_OUT, M0079_J10_PIN_4_IN)) {
PX4_INFO("PASS: M0079_J10_PIN_2_OUT M0079_J10_PIN_4_IN");
} else {
PX4_ERR("FAIL: M0079_J10_PIN_2_OUT M0079_J10_PIN_4_IN");
}
if (test_pair(M0079_J10_PIN_3_OUT, M0079_J10_PIN_5_IN)) {
PX4_INFO("PASS: M0079_J10_PIN_3_OUT M0079_J10_PIN_5_IN");
} else {
PX4_ERR("FAIL: M0079_J10_PIN_3_OUT M0079_J10_PIN_5_IN");
}
//
//
//
PX4_INFO(">> Testing J13");
stm32_configgpio(M0079_J12_PIN_2_OUT); // 2-3
stm32_configgpio(M0079_J12_PIN_3_IN); // 3-2
if (test_pair(M0079_J12_PIN_2_OUT, M0079_J12_PIN_3_IN)) {
PX4_INFO("PASS: M0079_J12_PIN_2 M0079_J12_PIN_3");
} else {
PX4_ERR("FAIL: M0079_J12_PIN_2 M0079_J12_PIN_3");
}
} else if (hw_type == eM0087) {
//
//
//
PX4_INFO(">> Testing J1");
stm32_configgpio(M0087_J1_PIN_2_IN); // 2-4
stm32_configgpio(M0087_J1_PIN_3_OUT); // 3-5
stm32_configgpio(M0087_J1_PIN_4_OUT); // 4-2
stm32_configgpio(M0087_J1_PIN_5_IN); // 5-3
if (test_pair(M0087_J1_PIN_4_OUT, M0087_J1_PIN_2_IN)) {
PX4_INFO("PASS: M0087_J1_PIN_4_OUT M0087_J1_PIN_2_IN");
} else {
PX4_ERR("FAIL: M0087_J1_PIN_4_OUT M0087_J1_PIN_2_IN");
}
if (test_pair(M0087_J1_PIN_3_OUT, M0087_J1_PIN_5_IN)) {
PX4_INFO("PASS: M0087_J1_PIN_3_OUT M0087_J1_PIN_5_IN");
} else {
PX4_ERR("FAIL: M0087_J1_PIN_3_OUT M0087_J1_PIN_5_IN");
}
//
//
//
PX4_INFO(">> Testing J5");
stm32_configgpio(M0087_J5_PIN_2_OUT); // 2-4
stm32_configgpio(M0087_J5_PIN_3_OUT); // 3-5
stm32_configgpio(M0087_J5_PIN_4_IN); // 4-2
stm32_configgpio(M0087_J5_PIN_5_IN); // 5-3
if (test_pair(M0087_J5_PIN_2_OUT, M0087_J5_PIN_4_IN)) {
PX4_INFO("PASS: M0087_J5_PIN_2_OUT M0087_J5_PIN_4_IN");
} else {
PX4_ERR("FAIL: M0087_J5_PIN_2_OUT M0087_J5_PIN_4_IN");
}
if (test_pair(M0087_J5_PIN_3_OUT, M0087_J5_PIN_5_IN)) {
PX4_INFO("PASS: M0087_J5_PIN_3_OUT M0087_J5_PIN_5_IN");
} else {
PX4_ERR("FAIL: M0087_J5_PIN_3_OUT M0087_J5_PIN_5_IN");
}
//
//
//
PX4_INFO(">> Testing J7");
stm32_configgpio(M0087_J7_PIN_2_OUT); // 2-6
stm32_configgpio(M0087_J7_PIN_3_OUT); // 3-7
stm32_configgpio(M0087_J7_PIN_4_OUT); // 4-8
stm32_configgpio(M0087_J7_PIN_5_OUT); // 5-9
stm32_configgpio(M0087_J7_PIN_6_IN); // 6-2
stm32_configgpio(M0087_J7_PIN_7_IN); // 7-3
stm32_configgpio(M0087_J7_PIN_8_IN); // 8-4
stm32_configgpio(M0087_J7_PIN_9_IN); // 9-5
if (test_pair(M0087_J7_PIN_2_OUT, M0087_J7_PIN_6_IN)) {
PX4_INFO("PASS: M0087_J7_PIN_2_OUT M0087_J7_PIN_6_IN");
} else {
PX4_ERR("FAIL: M0087_J7_PIN_2_OUT M0087_J7_PIN_6_IN");
}
if (test_pair(M0087_J7_PIN_3_OUT, M0087_J7_PIN_7_IN)) {
PX4_INFO("PASS: M0087_J7_PIN_3_OUT M0087_J7_PIN_7_IN");
} else {
PX4_ERR("FAIL: M0087_J7_PIN_3_OUT M0087_J7_PIN_7_IN");
}
if (test_pair(M0087_J7_PIN_4_OUT, M0087_J7_PIN_8_IN)) {
PX4_INFO("PASS: M0087_J7_PIN_4_OUT M0087_J7_PIN_8_IN");
} else {
PX4_ERR("FAIL: M0087_J7_PIN_4_OUT M0087_J7_PIN_8_IN");
}
if (test_pair(M0087_J7_PIN_5_OUT, M0087_J7_PIN_9_IN)) {
PX4_INFO("PASS: M0087_J7_PIN_5_OUT M0087_J7_PIN_9_IN");
} else {
PX4_ERR("FAIL: M0087_J7_PIN_5_OUT M0087_J7_PIN_9_IN");
}
//
//
//
PX4_INFO(">> Testing J10");
stm32_configgpio(M0087_J10_PIN_2_OUT); // 2-4
stm32_configgpio(M0087_J10_PIN_3_OUT); // 3-5
stm32_configgpio(M0087_J10_PIN_4_IN); // 4-2
stm32_configgpio(M0087_J10_PIN_5_IN); // 5-3
if (test_pair(M0087_J10_PIN_2_OUT, M0087_J10_PIN_4_IN)) {
PX4_INFO("PASS: M0087_J10_PIN_2_OUT M0087_J10_PIN_4_IN");
} else {
PX4_ERR("FAIL: M0087_J10_PIN_2_OUT M0087_J10_PIN_4_IN");
}
if (test_pair(M0087_J10_PIN_3_OUT, M0087_J10_PIN_5_IN)) {
PX4_INFO("PASS: M0087_J10_PIN_3_OUT M0087_J10_PIN_5_IN");
} else {
PX4_ERR("FAIL: M0087_J10_PIN_3_OUT M0087_J10_PIN_5_IN");
}
//
//
//
PX4_INFO(">> Testing J12");
stm32_configgpio(M0087_J12_PIN_2_OUT); // 2-3
stm32_configgpio(M0087_J12_PIN_3_IN); // 3-2
if (test_pair(M0087_J12_PIN_2_OUT, M0087_J12_PIN_3_IN)) {
PX4_INFO("PASS: M0087_J12_PIN_2_OUT M0087_J12_PIN_3_IN");
} else {
PX4_ERR("FAIL: M0087_J12_PIN_2_OUT M0087_J12_PIN_3_IN");
}
//
//
//
PX4_INFO(">> Testing J14");
stm32_configgpio(M0087_J14_PIN_2_OUT);
stm32_configgpio(M0087_J14_PIN_3_OUT);
stm32_configgpio(M0087_J14_PIN_4_OUT);
stm32_configgpio(M0087_J14_PIN_5_OUT);
stm32_configgpio(M0087_J14_PIN_6_OUT);
stm32_configgpio(M0087_J14_PIN_7_IN);
stm32_configgpio(M0087_J14_PIN_8_IN);
stm32_configgpio(M0087_J14_PIN_9_IN);
stm32_configgpio(M0087_J14_PIN_10_IN);
stm32_configgpio(M0087_J14_PIN_11_IN);
if (test_pair(M0087_J14_PIN_2_OUT, M0087_J14_PIN_7_IN)) {
PX4_INFO("PASS: M0087_J14_PIN_2_OUT M0087_J14_PIN_7_IN");
} else {
PX4_ERR("FAIL: M0087_J14_PIN_2_OUT M0087_J14_PIN_7_IN");
}
if (test_pair(M0087_J14_PIN_3_OUT, M0087_J14_PIN_8_IN)) {
PX4_INFO("PASS: M0087_J14_PIN_3_OUT M0087_J14_PIN_8_IN");
} else {
PX4_ERR("FAIL: M0087_J14_PIN_3_OUT M0087_J14_PIN_8_IN");
}
if (test_pair(M0087_J14_PIN_4_OUT, M0087_J14_PIN_9_IN)) {
PX4_INFO("PASS: M0087_J14_PIN_4_OUT M0087_J14_PIN_9_IN");
} else {
PX4_ERR("FAIL: M0087_J14_PIN_4_OUT M0087_J14_PIN_9_IN");
}
if (test_pair(M0087_J14_PIN_5_OUT, M0087_J14_PIN_10_IN)) {
PX4_INFO("PASS: M0087_J14_PIN_5_OUT M0087_J14_PIN_10_IN");
} else {
PX4_ERR("FAIL: M0087_J14_PIN_5_OUT M0087_J14_PIN_10_IN");
}
if (test_pair(M0087_J14_PIN_6_OUT, M0087_J14_PIN_11_IN)) {
PX4_INFO("PASS: M0087_J14_PIN_6_OUT M0087_J14_PIN_11_IN");
} else {
PX4_ERR("FAIL: M0087_J14_PIN_6_OUT M0087_J14_PIN_11_IN");
}
}
return 0;
}
int modalai_hw_detect_v2(eHW_TYPE hw_type)
{
int result = -1;
if (hw_type == eM0079) {
PX4_INFO("V230 - M0079");
result = 0;
} else if (hw_type == eM0087) {
PX4_INFO("V230 - M0087");
result = 0;
} else {
PX4_ERR("Unknown hardware");
}
return result;
}
#endif //CONFIG_ARCH_CHIP_STM32H753II

Some files were not shown because too many files have changed in this diff Show More