BoardConfig: disable SLCAN for minimized features

This commit is contained in:
Siddharth Purohit 2019-01-29 07:29:30 +05:30 committed by Randy Mackay
parent ef699367d5
commit 3255d793c0
3 changed files with 13 additions and 6 deletions

View File

@ -84,8 +84,9 @@ const AP_Param::GroupInfo AP_BoardConfig_CAN::var_info[] = {
AP_SUBGROUPINFO(_drivers[2], "D3_", 6, AP_BoardConfig_CAN, AP_BoardConfig_CAN::Driver),
#endif
#if !HAL_MINIMIZE_FEATURES
AP_SUBGROUPINFO(_slcan, "SLCAN_", 7, AP_BoardConfig_CAN, AP_BoardConfig_CAN::SLCAN_Interface),
#endif
AP_GROUPEND
};
@ -106,7 +107,9 @@ void AP_BoardConfig_CAN::init()
{
// Create all drivers that we need
bool initret = true;
#if !HAL_MINIMIZE_FEATURES
reset_slcan_serial();
#endif
for (uint8_t i = 0; i < MAX_NUMBER_OF_CAN_INTERFACES; i++) {
// Check the driver number assigned to this physical interface
uint8_t drv_num = _interfaces[i]._driver_number_cache = _interfaces[i]._driver_number;
@ -126,7 +129,7 @@ void AP_BoardConfig_CAN::init()
// For this now existing driver (manager), start the physical interface
if (hal.can_mgr[drv_num - 1] != nullptr) {
initret = initret && hal.can_mgr[drv_num - 1]->begin(_interfaces[i]._bitrate, i);
#if CONFIG_HAL_BOARD == HAL_BOARD_CHIBIOS
#if CONFIG_HAL_BOARD == HAL_BOARD_CHIBIOS && !HAL_MINIMIZE_FEATURES
if (_slcan._can_port == (i+1) && hal.can_mgr[drv_num - 1] != nullptr ) {
ChibiOS_CAN::CanDriver* drv = (ChibiOS_CAN::CanDriver*)hal.can_mgr[drv_num - 1]->get_driver();
slcan_router().init(drv->getIface(i), drv->getUpdateEvent());
@ -181,11 +184,13 @@ void AP_BoardConfig_CAN::init()
} else {
continue;
}
#if !HAL_MINIMIZE_FEATURES
if (_slcan._can_port == 0) {
_drivers[i]._driver->init(i, true);
} else {
_drivers[i]._driver->init(i, false);
}
#endif
}
}
}

View File

@ -87,10 +87,11 @@ public:
}
static const struct AP_Param::GroupInfo var_info[];
#if !HAL_MINIMIZE_FEATURES
int8_t get_slcan_serial() { return _slcan._ser_port; }
uint8_t get_slcan_timeout() { return _slcan._timeout; }
void reset_slcan_serial() { _slcan._ser_port.set_and_save_ifchanged(-1); }
#endif
private:
class Interface {
friend class AP_BoardConfig_CAN;
@ -130,6 +131,7 @@ private:
AP_HAL::CANProtocol* _tcan;
};
#if !HAL_MINIMIZE_FEATURES
class SLCAN_Interface {
friend class AP_BoardConfig_CAN;
@ -145,10 +147,10 @@ private:
AP_Int8 _ser_port;
AP_Int16 _timeout;
};
SLCAN_Interface _slcan;
#endif
Interface _interfaces[MAX_NUMBER_OF_CAN_INTERFACES];
Driver _drivers[MAX_NUMBER_OF_CAN_DRIVERS];
SLCAN_Interface _slcan;
uint8_t _num_drivers;
static AP_BoardConfig_CAN *_singleton;
};

View File

@ -15,7 +15,7 @@
#include <AP_HAL/AP_HAL.h>
#if HAL_WITH_UAVCAN
#if HAL_WITH_UAVCAN && !HAL_MINIMIZE_FEATURES
#include "AP_BoardConfig_CAN.h"
const AP_Param::GroupInfo AP_BoardConfig_CAN::SLCAN_Interface::var_info[] = {