From e1a9094bf67ca7c39a7ffd7889c5e7a929c746be Mon Sep 17 00:00:00 2001 From: Siddharth Purohit Date: Wed, 23 Jan 2019 11:43:43 +0800 Subject: [PATCH] HAL_ChibiOS: CANSerialRouter allow for changing serial port for the same boot --- libraries/AP_HAL_ChibiOS/CANSerialRouter.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/libraries/AP_HAL_ChibiOS/CANSerialRouter.cpp b/libraries/AP_HAL_ChibiOS/CANSerialRouter.cpp index c45a31f2f6..580589afcf 100644 --- a/libraries/AP_HAL_ChibiOS/CANSerialRouter.cpp +++ b/libraries/AP_HAL_ChibiOS/CANSerialRouter.cpp @@ -38,13 +38,11 @@ void SLCANRouter::init(ChibiOS_CAN::CanIface* can_if, ChibiOS_CAN::BusEvent* upd void SLCANRouter::run() { - if (!_slcan_if.is_initialized()) { - _port = AP_SerialManager::get_instance()->get_serial_by_id(AP::can().get_slcan_serial()); - if (_slcan_if.init(921600, SLCAN::CAN::OperatingMode::NormalMode, _port) < 0) { - return; - } - _slcan_rt_timeout = AP::can().get_slcan_timeout(); + _port = AP_SerialManager::get_instance()->get_serial_by_id(AP::can().get_slcan_serial()); + if (_slcan_if.init(921600, SLCAN::CAN::OperatingMode::NormalMode, _port) < 0) { + return; } + _slcan_rt_timeout = AP::can().get_slcan_timeout(); if (!_thread_started) { hal.scheduler->thread_create(FUNCTOR_BIND_MEMBER(&SLCANRouter::can2slcan_router_trampoline, void), "C2SRouter", 512, AP_HAL::Scheduler::PRIORITY_CAN, 0); hal.scheduler->thread_create(FUNCTOR_BIND_MEMBER(&SLCANRouter::slcan2can_router_trampoline, void), "S2CRouter", 512, AP_HAL::Scheduler::PRIORITY_CAN, 0);