From aa8fa2ae0580cc024d5de2005f2ff39f0d534d47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= Date: Mon, 13 Feb 2017 13:52:11 -0800 Subject: [PATCH] drivers: AeroFC: Add more leds Also change the initial state of the leds to off. --- src/drivers/boards/aerofc-v1/aerofc_led.c | 52 +++++++++++++-------- src/drivers/boards/aerofc-v1/board_config.h | 6 ++- 2 files changed, 36 insertions(+), 22 deletions(-) diff --git a/src/drivers/boards/aerofc-v1/aerofc_led.c b/src/drivers/boards/aerofc-v1/aerofc_led.c index 53aab0a396..0f3bbd131e 100644 --- a/src/drivers/boards/aerofc-v1/aerofc_led.c +++ b/src/drivers/boards/aerofc-v1/aerofc_led.c @@ -63,45 +63,57 @@ __END_DECLS __EXPORT void led_init(void) { - /* Configure LED1-2 GPIOs for output */ + /* Configure LED0-3 GPIOs for output */ + stm32_configgpio(GPIO_LED0); stm32_configgpio(GPIO_LED1); stm32_configgpio(GPIO_LED2); + stm32_configgpio(GPIO_LED3); +} + +static uint32_t _led_param_get(int led) +{ + switch (led) { + case 0: + return GPIO_LED0; + + case 1: + return GPIO_LED1; + + case 2: + return GPIO_LED2; + + case 3: + return GPIO_LED3; + + } + + return 0; } __EXPORT void led_on(int led) { - if (led == 0) { - /* Pull down to switch on */ - stm32_gpiowrite(GPIO_LED1, false); - } + const uint32_t param = _led_param_get(led); - if (led == 1) { - /* Pull down to switch on */ - stm32_gpiowrite(GPIO_LED2, false); + if (param) { + stm32_gpiowrite(param, false); } } __EXPORT void led_off(int led) { - if (led == 0) { - /* Pull up to switch off */ - stm32_gpiowrite(GPIO_LED1, true); - } + const uint32_t param = _led_param_get(led); - if (led == 1) { - /* Pull up to switch off */ - stm32_gpiowrite(GPIO_LED2, true); + if (param) { + stm32_gpiowrite(param, true); } } __EXPORT void led_toggle(int led) { - if (led == 0) { - stm32_gpiowrite(GPIO_LED1, !stm32_gpioread(GPIO_LED1)); - } + const uint32_t param = _led_param_get(led); - if (led == 1) { - stm32_gpiowrite(GPIO_LED2, !stm32_gpioread(GPIO_LED2)); + if (param) { + stm32_gpiowrite(param, !stm32_gpioread(param)); } } diff --git a/src/drivers/boards/aerofc-v1/board_config.h b/src/drivers/boards/aerofc-v1/board_config.h index dbb7cce985..cebfb27f92 100644 --- a/src/drivers/boards/aerofc-v1/board_config.h +++ b/src/drivers/boards/aerofc-v1/board_config.h @@ -57,8 +57,10 @@ /* PX4FMU GPIOs ***********************************************************************************/ /* LEDs */ -#define GPIO_LED1 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTE|GPIO_PIN12) -#define GPIO_LED2 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTE|GPIO_PIN10) +#define GPIO_LED0 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTE|GPIO_PIN9) +#define GPIO_LED1 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTE|GPIO_PIN10) +#define GPIO_LED2 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTE|GPIO_PIN11) +#define GPIO_LED3 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTE|GPIO_PIN12) #define GPIO_VDD_5V_SENSORS_EN (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTD|GPIO_PIN13)