Safety Switch is HW version dependent on having an PX4IO
So we init to a benign state with the _INIT definition
and use the non _INIT verion in the driver if the run time
decision is we do not have a PX4IO
The phyical led read was not returing the logical state
of the LED. Since they are active low, when on it was
returning 0 and the the negation operation in togggle
was makeing that a 1 which it already was.
Safety Switch is HW version dependent on having an PX4IO
So we init to a benign state with the _INIT definition
and provide the the non _INIT one for the driver to make a run time
decision to use it.
We also define the FMU GPIO_BTN_SAFETY and GPIO_LED_SAFETY alias
so the px4fmu will drrive will be built with the safety switch
code at compile time and have runtime control via the manifest
When BOARD_HAS_STATIC_MANIFEST is defined with a value of 1
and the board_config provides the BOARD_USES_PX4IO_VERSION
then the board_common will define
PX4_MFT_HW_SUPPORTED_PX4_MFT_PX4IO
When BOARD_HAS_STATIC_MANIFEST is defined with a value of 1
and the board_config provides the BOARD_USES_PX4IO_VERSION
then the board_common will define
PX4_MFT_HW_SUPPORTED_PX4_MFT_PX4IO
Both IO and FMU are connected to the safety switch for default models. This needs later to be broken out to a config option for builds that do not contain an IO.
Flight tested: ekf2 w/ mag and compass by @nathantsoi: https://logs.px4.io/plot_app?log=79b81031-cf1e-41f0-890b-d6cd7d559766
NOTE: external I2C devices need a pullup. I have tested with a 3.3v 2.2k pullup.
Working:
- mpu6000, bench tested and verified via nsh
- fmu
- all 6 ch output bench tested w/ pwm and oneshot via nsh
- ppm input bench tested
- dsm input bench tested
- bmp280, bench tested and verified via nsh
- hmc5883, bench tested and verified via nsh, but requires an external i2c pullup
- gps on uart6
- startuplog, nsh, mavlink on uart4, but params are not sent for some reason. RSSI pin is TX, MOTOR 5 is RX (normal mode, 57600 baud)
- rgbled over i2c, bench tested and workingp
- sbus via the shared sbus/ppm pin (which includes an inverter to the mcu SBUS in pin), remove the solder bridge or jumper to the ppm pin before use
Not yet implemented:
- ADC
- OSD: passthrough video is untested, use at your own risk until a basic driver is implemented.