From 8fcd30c61167184346f47bd55fae2c0e604da7e6 Mon Sep 17 00:00:00 2001 From: Georgii Staroselskii Date: Thu, 2 Nov 2017 16:44:55 +0300 Subject: [PATCH] AP_HAL_Linux: use GPIO_Sysfs for Navio 2 --- libraries/AP_HAL_Linux/GPIO.h | 3 +- libraries/AP_HAL_Linux/GPIO_Navio2.cpp | 34 ++++++++++++++++++++++ libraries/AP_HAL_Linux/GPIO_Navio2.h | 26 +++++++++++++++++ libraries/AP_HAL_Linux/GPIO_RPI.cpp | 1 - libraries/AP_HAL_Linux/HAL_Linux_Class.cpp | 3 +- libraries/AP_Notify/AP_Notify.cpp | 3 +- 6 files changed, 66 insertions(+), 4 deletions(-) create mode 100644 libraries/AP_HAL_Linux/GPIO_Navio2.cpp create mode 100644 libraries/AP_HAL_Linux/GPIO_Navio2.h diff --git a/libraries/AP_HAL_Linux/GPIO.h b/libraries/AP_HAL_Linux/GPIO.h index 354538225c..e671e3414d 100644 --- a/libraries/AP_HAL_Linux/GPIO.h +++ b/libraries/AP_HAL_Linux/GPIO.h @@ -24,13 +24,14 @@ private: CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BLUE #include "GPIO_BBB.h" #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO || \ - CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO2 || \ CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_EDGE || \ CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLEBRAIN2 || \ CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BH || \ CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_DARK || \ CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXFMINI #include "GPIO_RPI.h" +#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO2 +#include "GPIO_Navio2.h" #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_MINLURE #include "GPIO_Minnow.h" #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BEBOP diff --git a/libraries/AP_HAL_Linux/GPIO_Navio2.cpp b/libraries/AP_HAL_Linux/GPIO_Navio2.cpp new file mode 100644 index 0000000000..5cb594b2d7 --- /dev/null +++ b/libraries/AP_HAL_Linux/GPIO_Navio2.cpp @@ -0,0 +1,34 @@ +#include + +#include "GPIO_Navio2.h" + +#if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO2 + +const unsigned Linux::GPIO_Sysfs::pin_table[] = { + [NAVIO2_GPIO_PWM1] = 500, + [NAVIO2_GPIO_PWM2] = 501, + [NAVIO2_GPIO_PWM3] = 502, + [NAVIO2_GPIO_PWM4] = 503, + [NAVIO2_GPIO_PWM5] = 504, + [NAVIO2_GPIO_PWM6] = 505, + [NAVIO2_GPIO_PWM7] = 506, + [NAVIO2_GPIO_PWM8] = 507, + [NAVIO2_GPIO_PWM9] = 508, + [NAVIO2_GPIO_PWM10] = 509, + [NAVIO2_GPIO_PWM11] = 510, + [NAVIO2_GPIO_PWM12] = 511, + [NAVIO2_GPIO_PWM13] = 512, + [NAVIO2_GPIO_PWM14] = 513, + [NAVIO2_GPIO_IO17] = 17, + [NAVIO2_GPIO_IO18] = 18, + [NAVIO2_GPIO_RED] = 4, + [NAVIO2_GPIO_GREEN] = 27, + [NAVIO2_GPIO_BLUE] = 6, +}; + +const uint8_t Linux::GPIO_Sysfs::n_pins = _NAVIO2_GPIO_MAX; + +static_assert(ARRAY_SIZE(Linux::GPIO_Sysfs::pin_table) == _NAVIO2_GPIO_MAX, + "GPIO pin_table must have the same size of entries in enum gpio_minnow"); + +#endif diff --git a/libraries/AP_HAL_Linux/GPIO_Navio2.h b/libraries/AP_HAL_Linux/GPIO_Navio2.h new file mode 100644 index 0000000000..656492b652 --- /dev/null +++ b/libraries/AP_HAL_Linux/GPIO_Navio2.h @@ -0,0 +1,26 @@ +#pragma once + +#include "GPIO_Sysfs.h" + +enum gpio_navio2 { + NAVIO2_GPIO_PWM1, + NAVIO2_GPIO_PWM2, + NAVIO2_GPIO_PWM3, + NAVIO2_GPIO_PWM4, + NAVIO2_GPIO_PWM5, + NAVIO2_GPIO_PWM6, + NAVIO2_GPIO_PWM7, + NAVIO2_GPIO_PWM8, + NAVIO2_GPIO_PWM9, + NAVIO2_GPIO_PWM10, + NAVIO2_GPIO_PWM11, + NAVIO2_GPIO_PWM12, + NAVIO2_GPIO_PWM13, + NAVIO2_GPIO_PWM14, + NAVIO2_GPIO_IO17, + NAVIO2_GPIO_IO18, + NAVIO2_GPIO_RED, + NAVIO2_GPIO_GREEN, + NAVIO2_GPIO_BLUE, + _NAVIO2_GPIO_MAX, +}; diff --git a/libraries/AP_HAL_Linux/GPIO_RPI.cpp b/libraries/AP_HAL_Linux/GPIO_RPI.cpp index c4b6fdd469..6682b777ad 100644 --- a/libraries/AP_HAL_Linux/GPIO_RPI.cpp +++ b/libraries/AP_HAL_Linux/GPIO_RPI.cpp @@ -4,7 +4,6 @@ CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLEBRAIN2 || \ CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BH || \ CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_DARK || \ - CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO2 || \ CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_EDGE || \ CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXFMINI diff --git a/libraries/AP_HAL_Linux/HAL_Linux_Class.cpp b/libraries/AP_HAL_Linux/HAL_Linux_Class.cpp index d744c3bd0d..610b004b22 100644 --- a/libraries/AP_HAL_Linux/HAL_Linux_Class.cpp +++ b/libraries/AP_HAL_Linux/HAL_Linux_Class.cpp @@ -111,13 +111,14 @@ static GPIO_BBB gpioDriver; use the RPI gpio driver on Navio */ #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO || \ - CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO2 || \ CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_EDGE || \ CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLEBRAIN2 || \ CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BH || \ CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_DARK || \ CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXFMINI static GPIO_RPI gpioDriver; +#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO2 +static GPIO_Sysfs gpioDriver; #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_MINLURE || \ CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BEBOP || \ CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_DISCO || \ diff --git a/libraries/AP_Notify/AP_Notify.cpp b/libraries/AP_Notify/AP_Notify.cpp index d3a0b5e06c..1bb172257d 100644 --- a/libraries/AP_Notify/AP_Notify.cpp +++ b/libraries/AP_Notify/AP_Notify.cpp @@ -31,6 +31,7 @@ #include "DiscreteRGBLed.h" #include "DiscoLED.h" #include +#include AP_Notify *AP_Notify::_instance; @@ -159,7 +160,7 @@ void AP_Notify::add_backends(void) ADD_BACKEND(new ToshibaLED_I2C(TOSHIBA_LED_I2C_BUS_INTERNAL)); #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO2 - ADD_BACKEND(new DiscreteRGBLed(4, 27, 6, false)); + ADD_BACKEND(new DiscreteRGBLed(NAVIO2_GPIO_RED, NAVIO2_GPIO_GREEN, NAVIO2_GPIO_BLUE, false)); ADD_BACKEND(new ToshibaLED_I2C(TOSHIBA_LED_I2C_BUS_EXTERNAL)); ADD_BACKEND(new ToshibaLED_I2C(TOSHIBA_LED_I2C_BUS_INTERNAL));