fmu add command line onshot mode

This commit is contained in:
David Sidrane
2017-03-23 08:28:15 +01:00
committed by Lorenz Meier
parent 75376b7793
commit f32f194ad8
+56
View File
@@ -131,6 +131,9 @@ public:
MODE_4CAP,
MODE_5CAP,
MODE_6CAP,
MODE_4ONESHOT,
MODE_6ONESHOT,
MODE_8ONESHOT,
};
PX4FMU(bool run_as_task);
virtual ~PX4FMU();
@@ -611,6 +614,18 @@ PX4FMU::set_mode(Mode mode)
_pwm_initialized = false;
break;
case MODE_4ONESHOT:
DEVICE_DEBUG("MODE_4ONESHOT");
/* default output rates */
_pwm_default_rate = 0;
_pwm_alt_rate = 0;
_pwm_alt_rate_channels = 0;
_pwm_mask = 0xf;
_pwm_initialized = false;
mode = MODE_4PWM;
break;
case MODE_4PWM: // v1 or v2 multi-port as 4 PWM outs
DEVICE_DEBUG("MODE_4PWM");
@@ -625,6 +640,18 @@ PX4FMU::set_mode(Mode mode)
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 6
case MODE_6ONESHOT:
DEVICE_DEBUG("MODE_6ONESHOT");
/* default output rates */
_pwm_default_rate = 0;
_pwm_alt_rate = 0;
_pwm_alt_rate_channels = 0;
_pwm_mask = 0x3f;
_pwm_initialized = false;
mode = MODE_6PWM;
break;
case MODE_6PWM:
DEVICE_DEBUG("MODE_6PWM");
@@ -640,6 +667,18 @@ PX4FMU::set_mode(Mode mode)
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 8
case MODE_8ONESHOT:
DEVICE_DEBUG("MODE_8ONESHOT");
/* default output rates */
_pwm_default_rate = 0;
_pwm_alt_rate = 0;
_pwm_alt_rate_channels = 0;
_pwm_mask = 0xff;
_pwm_initialized = false;
mode = MODE_8PWM;
break;
case MODE_8PWM: // AeroCore PWMs as 8 PWM outs
DEVICE_DEBUG("MODE_8PWM");
/* default output rates */
@@ -2960,6 +2999,7 @@ enum PortMode {
PORT_PWM3CAP1,
PORT_PWM2CAP2,
PORT_CAPTURE,
PORT_FULL_ONESHOT,
};
PortMode g_port_mode;
@@ -2979,6 +3019,19 @@ fmu_new_mode(PortMode new_mode)
case PORT_MODE_UNSET:
break;
case PORT_FULL_ONESHOT:
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM == 4
/* select 4-pin PWM mode */
servo_mode = PX4FMU::MODE_4ONESHOT;
#endif
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM == 6
servo_mode = PX4FMU::MODE_6ONESHOT;
#endif
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM == 8
servo_mode = PX4FMU::MODE_8ONESHOT;
#endif
break;
case PORT_FULL_PWM:
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM == 4
@@ -3441,6 +3494,9 @@ fmu_main(int argc, char *argv[])
} else if (!strcmp(verb, "mode_rcin")) {
exit(0);
} else if (!strcmp(verb, "mode_oneshot")) {
new_mode = PORT_FULL_ONESHOT;
} else if (!strcmp(verb, "mode_pwm")) {
new_mode = PORT_FULL_PWM;