Browse Source

AP_HAL_Linux: define board features on Linux module

gps-1.3.1
Mohammad Hefny 3 years ago committed by Andrew Tridgell
parent
commit
5eb28be8e6
  1. 37
      libraries/AP_HAL/board/linux.h
  2. 3
      libraries/AP_HAL_Linux/GPIO.h
  3. 3
      libraries/AP_HAL_Linux/GPIO_RPI.cpp
  4. 14
      libraries/AP_HAL_Linux/HAL_Linux_Class.cpp
  5. 11
      libraries/AP_HAL_Linux/RCInput_RPI.cpp
  6. 2
      libraries/AP_HAL_Linux/RCInput_RPI.h
  7. 5
      libraries/AP_HAL_Linux/SPIDevice.cpp
  8. 3
      libraries/AP_HAL_Linux/Scheduler.cpp
  9. 3
      libraries/AP_HAL_Linux/Util_RPI.cpp

37
libraries/AP_HAL/board/linux.h

@ -292,6 +292,43 @@ @@ -292,6 +292,43 @@
#define HAL_HAVE_GETTIME_SETTIME 1
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OBAL_V1
//#define HAL_BARO_ALLOW_INIT_NO_BARO
// Activate SUB Model Configuratopm
#define HAL_BOARD_SUBTYPE_LINUX_OBAL_V1_MPU_9250_SPI
// Define Notify
#define OBAL_NOTIFY_LED
// GY-91 SPI Connection
#ifdef HAL_BOARD_SUBTYPE_LINUX_OBAL_V1_MPU_9250_SPI
#define HAL_BOARD_LOG_DIRECTORY "/home/pi/ardupilot/logs"
#define HAL_BOARD_TERRAIN_DIRECTORY "/home/pi/ardupilot/terrain"
#define HAL_BOARD_STORAGE_DIRECTORY "/home/pi/ardupilot"
#define HAL_PARAM_DEFAULTS_PATH "/home/pi/ardupilot.parm"
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI(Invensense, "mpu9250", ROTATION_NONE)
#define HAL_MAG_PROBE_LIST PROBE_MAG_IMU(AK8963, mpu9250, 0, ROTATION_NONE)
#define HAL_BARO_PROBE_LIST PROBE_BARO_I2C(BMP085, 1, 0x77)
//#define HAL_MAG_PROBE_LIST PROBE_MAG_I2C(QMC5883L, 1, 0x0d,true , ROTATION_NONE)
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
#endif
#ifdef OBAL_NOTIFY_LED
#define HAL_GPIO_A_LED_PIN 27 // You can choose between 27,22,4,12
#define HAL_GPIO_C_LED_PIN 22 // You can choose between 27,22,4,12
#define HAL_GPIO_B_LED_PIN 4 // You can choose between 27,22,4,12
#define HAL_GPIO_LED_ON 1
#define HAL_GPIO_LED_OFF 0
#endif
#define HAL_BUZZER_PIN 12 // You can choose between 27,22,4,12
#define OBAL_ALLOW_ADC 1
#else
#error "no Linux board subtype set"
#endif

3
libraries/AP_HAL_Linux/GPIO.h

@ -28,7 +28,8 @@ private: @@ -28,7 +28,8 @@ private:
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 || \
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIGATOR
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIGATOR || \
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OBAL_V1
#include "GPIO_RPI.h"
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO
#include "GPIO_Navio.h"

3
libraries/AP_HAL_Linux/GPIO_RPI.cpp

@ -4,7 +4,8 @@ @@ -4,7 +4,8 @@
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 || \
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIGATOR
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIGATOR || \
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OBAL_V1
#include <assert.h>
#include <errno.h>

14
libraries/AP_HAL_Linux/HAL_Linux_Class.cpp

@ -55,7 +55,8 @@ using namespace Linux; @@ -55,7 +55,8 @@ using namespace Linux;
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 || \
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIGATOR
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIGATOR || \
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OBAL_V1
static UtilRPI utilInstance;
#else
static Util utilInstance;
@ -86,7 +87,8 @@ static UARTDriver uartBDriver(false); @@ -86,7 +87,8 @@ static UARTDriver uartBDriver(false);
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_PXFMINI || \
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIGATOR
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIGATOR|| \
((CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OBAL_V1) && (OBAL_ALLOW_ADC ==1))
static AnalogIn_ADS1115 analogIn;
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXF || \
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLEBOARD || \
@ -119,7 +121,8 @@ static GPIO_BBB gpioDriver; @@ -119,7 +121,8 @@ static GPIO_BBB gpioDriver;
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 || \
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIGATOR
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIGATOR || \
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OBAL_V1
static GPIO_RPI gpioDriver;
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO || \
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO2 || \
@ -147,7 +150,8 @@ static RCInput_Multi rcinDriver{2, new RCInput_AioPRU, new RCInput_RCProtocol(NU @@ -147,7 +150,8 @@ static RCInput_Multi rcinDriver{2, new RCInput_AioPRU, new RCInput_RCProtocol(NU
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
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXFMINI || \
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OBAL_V1
static RCInput_RPI rcinDriver;
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ZYNQ || \
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OCPOC_ZYNQ
@ -209,6 +213,8 @@ static ap::RCOutput_Tap rcoutDriver; @@ -209,6 +213,8 @@ static ap::RCOutput_Tap rcoutDriver;
static RCOutput_Sysfs rcoutDriver(0, 0, 15);
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_RST_ZYNQ
static RCOutput_Sysfs rcoutDriver(0, 0, 8);
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OBAL_V1
static RCOutput_PCA9685 rcoutDriver(i2c_mgr_instance.get_device(1, PCA9685_PRIMARY_ADDRESS), 0, 0, RPI_GPIO_<17>());
#else
static Empty::RCOutput rcoutDriver;
#endif

11
libraries/AP_HAL_Linux/RCInput_RPI.cpp

@ -4,7 +4,8 @@ @@ -4,7 +4,8 @@
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
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXFMINI || \
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OBAL_V1
#include <assert.h>
#include <errno.h>
#include <fcntl.h>
@ -50,6 +51,14 @@ static uint16_t RcChnGpioTbl[RCIN_RPI_CHN_NUM] = { @@ -50,6 +51,14 @@ static uint16_t RcChnGpioTbl[RCIN_RPI_CHN_NUM] = {
RPI_GPIO_<13>(), RPI_GPIO_<19>(), RPI_GPIO_<20>(),
RPI_GPIO_<21>(), RPI_GPIO_<26>()
};
#elif (CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OBAL_V1)
#define RCIN_RPI_SIG_HIGH 0
#define RCIN_RPI_SIG_LOW 1
static uint16_t RcChnGpioTbl[RCIN_RPI_CHN_NUM] = {
RPI_GPIO_<5>(), RPI_GPIO_<6>(), RPI_GPIO_<13>(),
RPI_GPIO_<19>(), RPI_GPIO_<26>(), RPI_GPIO_<21>(),
RPI_GPIO_<20>(), RPI_GPIO_<16>()
};
#else
#define RCIN_RPI_SIG_HIGH 1
#define RCIN_RPI_SIG_LOW 0

2
libraries/AP_HAL_Linux/RCInput_RPI.h

@ -23,6 +23,8 @@ @@ -23,6 +23,8 @@
#if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BH
#define RCIN_RPI_CHN_NUM 8
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OBAL_V1
#define RCIN_RPI_CHN_NUM 8
#else
#define RCIN_RPI_CHN_NUM 1
#endif

5
libraries/AP_HAL_Linux/SPIDevice.cpp

@ -144,6 +144,11 @@ SPIDesc SPIDeviceManager::_device[] = { @@ -144,6 +144,11 @@ SPIDesc SPIDeviceManager::_device[] = {
SPIDesc("rst_a", 0, 2, SPI_MODE_3, 8, SPI_CS_KERNEL, 1*MHZ, 10*MHZ),
SPIDesc("ms5611", 0, 3, SPI_MODE_3, 8, SPI_CS_KERNEL, 1*MHZ, 10*MHZ),
};
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OBAL_V1 && \
defined (HAL_BOARD_SUBTYPE_LINUX_OBAL_V1_MPU_9250_SPI)
SPIDesc SPIDeviceManager::_device[] = {
SPIDesc("mpu9250", 0, 0, SPI_MODE_3, 8, SPI_CS_KERNEL, 1*MHZ, 10*MHZ),
};
#else
// empty device table
SPIDesc SPIDeviceManager::_device[] = {

3
libraries/AP_HAL_Linux/Scheduler.cpp

@ -40,6 +40,9 @@ extern const AP_HAL::HAL& hal; @@ -40,6 +40,9 @@ extern const AP_HAL::HAL& hal;
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXFMINI
#define APM_LINUX_RCIN_RATE 500
#define APM_LINUX_IO_RATE 50
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OBAL_V1
#define APM_LINUX_RCIN_RATE 50
#define APM_LINUX_IO_RATE 50
#else
#define APM_LINUX_RCIN_RATE 100
#define APM_LINUX_IO_RATE 50

3
libraries/AP_HAL_Linux/Util_RPI.cpp

@ -7,7 +7,8 @@ @@ -7,7 +7,8 @@
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 || \
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIGATOR
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIGATOR || \
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OBAL_V1
#include <errno.h>
#include <stdarg.h>

Loading…
Cancel
Save