mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-28 11:33:34 +08:00
PX4 System gpio_led:Removed FMUv1
This commit is contained in:
committed by
Daniel Agar
parent
901af8d02c
commit
8c8ea0754a
+27
-104
@@ -56,49 +56,42 @@
|
|||||||
#include <drivers/drv_gpio.h>
|
#include <drivers/drv_gpio.h>
|
||||||
#include <modules/px4iofirmware/protocol.h>
|
#include <modules/px4iofirmware/protocol.h>
|
||||||
|
|
||||||
#if defined(BOARD_HAS_FMU_GPIO) && defined(GPIO_SERVO_1)
|
#define PIN_NAME "AUX OUT 1"
|
||||||
# define LED_ON_SERVO_GPIO
|
|
||||||
# define PIN_NAME "AUX OUT 1"
|
|
||||||
|
|
||||||
|
|
||||||
/* Minimum pin number */
|
/* Minimum pin number */
|
||||||
# define GPIO_MIN_SERVO_PIN 1
|
#define GPIO_MIN_SERVO_PIN 1
|
||||||
|
|
||||||
/* Maximum */
|
/* Maximum */
|
||||||
# if defined(GPIO_SERVO_16)
|
#if defined(GPIO_SERVO_16)
|
||||||
# define GPIO_MAX_SERVO_PIN 16
|
# define GPIO_MAX_SERVO_PIN 16
|
||||||
# elif defined(GPIO_SERVO_15)
|
#elif defined(GPIO_SERVO_15)
|
||||||
# define GPIO_MAX_SERVO_PIN 15
|
# define GPIO_MAX_SERVO_PIN 15
|
||||||
# elif defined(GPIO_SERVO_14)
|
#elif defined(GPIO_SERVO_14)
|
||||||
# define GPIO_MAX_SERVO_PIN 14
|
# define GPIO_MAX_SERVO_PIN 14
|
||||||
# elif defined(GPIO_SERVO_13)
|
#elif defined(GPIO_SERVO_13)
|
||||||
# define GPIO_MAX_SERVO_PIN 13
|
# define GPIO_MAX_SERVO_PIN 13
|
||||||
# elif defined(GPIO_SERVO_12)
|
#elif defined(GPIO_SERVO_12)
|
||||||
# define GPIO_MAX_SERVO_PIN 12
|
# define GPIO_MAX_SERVO_PIN 12
|
||||||
# elif defined(GPIO_SERVO_11)
|
#elif defined(GPIO_SERVO_11)
|
||||||
# define GPIO_MAX_SERVO_PIN 11
|
# define GPIO_MAX_SERVO_PIN 11
|
||||||
# elif defined(GPIO_SERVO_10)
|
#elif defined(GPIO_SERVO_10)
|
||||||
# define GPIO_MAX_SERVO_PIN 10
|
# define GPIO_MAX_SERVO_PIN 10
|
||||||
# elif defined(GPIO_SERVO_9)
|
#elif defined(GPIO_SERVO_9)
|
||||||
# define GPIO_MAX_SERVO_PIN 9
|
# define GPIO_MAX_SERVO_PIN 9
|
||||||
# elif defined(GPIO_SERVO_8)
|
#elif defined(GPIO_SERVO_8)
|
||||||
# define GPIO_MAX_SERVO_PIN 8
|
# define GPIO_MAX_SERVO_PIN 8
|
||||||
# elif defined(GPIO_SERVO_7)
|
#elif defined(GPIO_SERVO_7)
|
||||||
# define GPIO_MAX_SERVO_PIN 7
|
# define GPIO_MAX_SERVO_PIN 7
|
||||||
# elif defined(GPIO_SERVO_6)
|
#elif defined(GPIO_SERVO_6)
|
||||||
# define GPIO_MAX_SERVO_PIN 6
|
# define GPIO_MAX_SERVO_PIN 6
|
||||||
# endif
|
#else
|
||||||
#endif
|
# error "Board must define GPIO_SERVO_1 and GPIO_SERVO_n where n is 6-16"
|
||||||
|
|
||||||
#if defined(BOARD_HAS_FMU_GPIO) && defined(GPIO_EXT_1)
|
|
||||||
# define LED_ON_EXT_GPIO_AND_PIO
|
|
||||||
# define PIN_NAME "PX4FMU GPIO_EXT1"
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct gpio_led_s {
|
struct gpio_led_s {
|
||||||
struct work_s work;
|
struct work_s work;
|
||||||
int gpio_fd;
|
int gpio_fd;
|
||||||
bool use_io;
|
|
||||||
int pin;
|
int pin;
|
||||||
struct vehicle_status_s vehicle_status;
|
struct vehicle_status_s vehicle_status;
|
||||||
struct battery_status_s battery_status;
|
struct battery_status_s battery_status;
|
||||||
@@ -121,23 +114,9 @@ void gpio_led_cycle(FAR void *arg);
|
|||||||
int gpio_led_main(int argc, char *argv[])
|
int gpio_led_main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
if (argc < 2) {
|
if (argc < 2) {
|
||||||
#if defined(LED_ON_EXT_GPIO_AND_PIO)
|
|
||||||
errx(1, "usage: gpio_led {start|stop} [-p <1|2|a1|a2|r1|r2>]\n"
|
|
||||||
"\t-p\tUse pin:\n"
|
|
||||||
"\t\t1\tPX4FMU GPIO_EXT1 (default)\n"
|
|
||||||
"\t\t2\tPX4FMU GPIO_EXT2\n"
|
|
||||||
"\t\ta1\tPX4IO ACC1\n"
|
|
||||||
"\t\ta2\tPX4IO ACC2\n"
|
|
||||||
"\t\tr1\tPX4IO RELAY1\n"
|
|
||||||
"\t\tr2\tPX4IO RELAY2"
|
|
||||||
);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(LED_ON_SERVO_GPIO)
|
|
||||||
errx(1, "usage: gpio_led {start|stop} [-p <n>]\n"
|
errx(1, "usage: gpio_led {start|stop} [-p <n>]\n"
|
||||||
"\t-p <n>\tUse specified AUX OUT pin number (default: 1)"
|
"\t-p <n>\tUse specified AUX OUT pin number (default: 1)"
|
||||||
);
|
);
|
||||||
#endif
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
@@ -146,64 +125,18 @@ int gpio_led_main(int argc, char *argv[])
|
|||||||
errx(1, "already running");
|
errx(1, "already running");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool use_io = false;
|
/* by default GPIO_SERVO_1 on FMUv2 */
|
||||||
|
|
||||||
/* by default use GPIO_EXT_1 on FMUv1 and GPIO_SERVO_1 on FMUv2 */
|
|
||||||
int pin = 1;
|
int pin = 1;
|
||||||
|
|
||||||
/* pin name to display */
|
/* pin name to display */
|
||||||
#if defined(LED_ON_EXT_GPIO_AND_PIO)
|
|
||||||
char *pin_name = PIN_NAME;
|
|
||||||
#endif
|
|
||||||
#if defined(LED_ON_SERVO_GPIO)
|
|
||||||
char pin_name[sizeof(PIN_NAME) + 2] = PIN_NAME;
|
char pin_name[sizeof(PIN_NAME) + 2] = PIN_NAME;
|
||||||
#endif
|
|
||||||
|
|
||||||
if (argc > 2) {
|
if (argc > 2) {
|
||||||
if (!strcmp(argv[2], "-p")) {
|
if (!strcmp(argv[2], "-p")) {
|
||||||
#if defined(LED_ON_EXT_GPIO_AND_PIO)
|
|
||||||
|
|
||||||
if (!strcmp(argv[3], "1")) {
|
|
||||||
use_io = false;
|
|
||||||
pin = GPIO_EXT_1;
|
|
||||||
pin_name = "PX4FMU GPIO_EXT1";
|
|
||||||
|
|
||||||
} else if (!strcmp(argv[3], "2")) {
|
|
||||||
use_io = false;
|
|
||||||
pin = GPIO_EXT_2;
|
|
||||||
pin_name = "PX4FMU GPIO_EXT2";
|
|
||||||
|
|
||||||
} else if (!strcmp(argv[3], "a1")) {
|
|
||||||
use_io = true;
|
|
||||||
pin = PX4IO_P_SETUP_RELAYS_ACC1;
|
|
||||||
pin_name = "PX4IO ACC1";
|
|
||||||
|
|
||||||
} else if (!strcmp(argv[3], "a2")) {
|
|
||||||
use_io = true;
|
|
||||||
pin = PX4IO_P_SETUP_RELAYS_ACC2;
|
|
||||||
pin_name = "PX4IO ACC2";
|
|
||||||
|
|
||||||
} else if (!strcmp(argv[3], "r1")) {
|
|
||||||
use_io = true;
|
|
||||||
pin = PX4IO_P_SETUP_RELAYS_POWER1;
|
|
||||||
pin_name = "PX4IO RELAY1";
|
|
||||||
|
|
||||||
} else if (!strcmp(argv[3], "r2")) {
|
|
||||||
use_io = true;
|
|
||||||
pin = PX4IO_P_SETUP_RELAYS_POWER2;
|
|
||||||
pin_name = "PX4IO RELAY2";
|
|
||||||
|
|
||||||
} else {
|
|
||||||
errx(1, "unsupported pin: %s", argv[3]);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // defined(LED_ON_EXT_GPIO_AND_PIO)
|
|
||||||
|
|
||||||
#if defined(LED_ON_SERVO_GPIO)
|
|
||||||
unsigned int n = strtoul(argv[3], NULL, 10);
|
unsigned int n = strtoul(argv[3], NULL, 10);
|
||||||
|
|
||||||
if (n >= GPIO_MIN_SERVO_PIN && n <= GPIO_MAX_SERVO_PIN) {
|
if (n >= GPIO_MIN_SERVO_PIN && n <= GPIO_MAX_SERVO_PIN) {
|
||||||
use_io = false;
|
|
||||||
pin = 1 << (n - 1);
|
pin = 1 << (n - 1);
|
||||||
snprintf(pin_name, sizeof(pin_name), "AUX OUT %d", n);
|
snprintf(pin_name, sizeof(pin_name), "AUX OUT %d", n);
|
||||||
|
|
||||||
@@ -211,13 +144,11 @@ int gpio_led_main(int argc, char *argv[])
|
|||||||
errx(1, "unsupported pin: %s", argv[3]);
|
errx(1, "unsupported pin: %s", argv[3]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // defined(LED_ON_SERVO_GPIO)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gpio_led_data = malloc(sizeof(struct gpio_led_s));
|
gpio_led_data = malloc(sizeof(struct gpio_led_s));
|
||||||
memset(gpio_led_data, 0, sizeof(struct gpio_led_s));
|
memset(gpio_led_data, 0, sizeof(struct gpio_led_s));
|
||||||
gpio_led_data->use_io = use_io;
|
|
||||||
gpio_led_data->pin = pin;
|
gpio_led_data->pin = pin;
|
||||||
int ret = work_queue(LPWORK, &(gpio_led_data->work), gpio_led_start, gpio_led_data, 0);
|
int ret = work_queue(LPWORK, &(gpio_led_data->work), gpio_led_start, gpio_led_data, 0);
|
||||||
|
|
||||||
@@ -252,14 +183,6 @@ void gpio_led_start(FAR void *arg)
|
|||||||
|
|
||||||
char *gpio_dev = PX4FMU_DEVICE_PATH;
|
char *gpio_dev = PX4FMU_DEVICE_PATH;
|
||||||
|
|
||||||
#if defined(BOARD_USES_PX4IO)
|
|
||||||
|
|
||||||
if (priv->use_io) {
|
|
||||||
gpio_dev = PX4IO_DEVICE_PATH;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* open GPIO device */
|
/* open GPIO device */
|
||||||
priv->gpio_fd = open(gpio_dev, 0);
|
priv->gpio_fd = open(gpio_dev, 0);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user