From dff430e136954771522392f4f9d15832a3ec7e63 Mon Sep 17 00:00:00 2001 From: Staroselskii Georgii <gosha371@gmail.com> Date: Thu, 12 Feb 2015 13:00:52 +0300 Subject: [PATCH] AP_HAL_Linux: added UART port for second GPS --- libraries/AP_HAL_Linux/HAL_Linux_Class.cpp | 9 +++++++-- libraries/AP_HAL_Linux/Scheduler.cpp | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/libraries/AP_HAL_Linux/HAL_Linux_Class.cpp b/libraries/AP_HAL_Linux/HAL_Linux_Class.cpp index e93bede483..033ec6f89f 100644 --- a/libraries/AP_HAL_Linux/HAL_Linux_Class.cpp +++ b/libraries/AP_HAL_Linux/HAL_Linux_Class.cpp @@ -22,6 +22,7 @@ static LinuxSPIUARTDriver uartBDriver; static LinuxUARTDriver uartBDriver(false); #endif static LinuxUARTDriver uartCDriver(false); +static LinuxUARTDriver uartEDriver(false); static LinuxSemaphore i2cSemaphore; static LinuxI2CDriver i2cDriver(&i2cSemaphore, "/dev/i2c-1"); @@ -97,7 +98,7 @@ HAL_Linux::HAL_Linux() : &uartBDriver, &uartCDriver, NULL, /* no uartD */ - NULL, /* no uartE */ + &uartEDriver, &i2cDriver, &spiDeviceManager, &analogIn, @@ -126,7 +127,7 @@ void HAL_Linux::init(int argc,char* const argv[]) const /* parse command line options */ - while ((opt = getopt(argc, argv, "A:B:C:h")) != -1) { + while ((opt = getopt(argc, argv, "A:B:C:E:h")) != -1) { switch (opt) { case 'A': uartADriver.set_device_path(optarg); @@ -137,6 +138,9 @@ void HAL_Linux::init(int argc,char* const argv[]) const case 'C': uartCDriver.set_device_path(optarg); break; + case 'E': + uartEDriver.set_device_path(optarg); + break; case 'h': _usage(); exit(0); @@ -152,6 +156,7 @@ void HAL_Linux::init(int argc,char* const argv[]) const rcout->init(NULL); rcin->init(NULL); uartA->begin(115200); + uartE->begin(115200); spi->init(NULL); analogin->init(NULL); utilInstance.init(argc, argv); diff --git a/libraries/AP_HAL_Linux/Scheduler.cpp b/libraries/AP_HAL_Linux/Scheduler.cpp index 66ec166b74..c063a110d5 100644 --- a/libraries/AP_HAL_Linux/Scheduler.cpp +++ b/libraries/AP_HAL_Linux/Scheduler.cpp @@ -338,6 +338,7 @@ void *LinuxScheduler::_uart_thread(void* arg) ((LinuxUARTDriver *)hal.uartA)->_timer_tick(); ((LinuxUARTDriver *)hal.uartB)->_timer_tick(); ((LinuxUARTDriver *)hal.uartC)->_timer_tick(); + ((LinuxUARTDriver *)hal.uartE)->_timer_tick(); } return NULL; }