From cf535481e92690584e0f84e99512d489df6c6282 Mon Sep 17 00:00:00 2001 From: bugobliterator Date: Thu, 22 Jul 2021 22:21:08 +0530 Subject: [PATCH] AP_CANSensor: create a separate register driver method --- libraries/AP_CANManager/AP_CANSensor.cpp | 12 +++++++++--- libraries/AP_CANManager/AP_CANSensor.h | 7 +++++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/libraries/AP_CANManager/AP_CANSensor.cpp b/libraries/AP_CANManager/AP_CANSensor.cpp index 3e869a3c58..457707ba46 100644 --- a/libraries/AP_CANManager/AP_CANSensor.cpp +++ b/libraries/AP_CANManager/AP_CANSensor.cpp @@ -30,20 +30,26 @@ extern const AP_HAL::HAL& hal; #define debug_can(level_debug, fmt, args...) #endif -CANSensor::CANSensor(const char *driver_name, AP_CANManager::Driver_Type dtype, uint16_t stack_size) : +CANSensor::CANSensor(const char *driver_name, uint16_t stack_size) : _driver_name(driver_name), _stack_size(stack_size) +{} + + +void CANSensor::register_driver(AP_CANManager::Driver_Type dtype) { #if HAL_CANMANAGER_ENABLED if (!AP::can().register_driver(dtype, this)) { - debug_can(AP_CANManager::LOG_ERROR, "Failed to register CANSensor %s", driver_name); + debug_can(AP_CANManager::LOG_ERROR, "Failed to register CANSensor %s", _driver_name); } else { - debug_can(AP_CANManager::LOG_INFO, "%s: constructed", driver_name); + debug_can(AP_CANManager::LOG_INFO, "%s: constructed", _driver_name); } #elif defined(HAL_BUILD_AP_PERIPH) register_driver_periph(dtype); #endif } + + #ifdef HAL_BUILD_AP_PERIPH CANSensor::CANSensor_Periph CANSensor::_periph[HAL_NUM_CAN_IFACES]; diff --git a/libraries/AP_CANManager/AP_CANSensor.h b/libraries/AP_CANManager/AP_CANSensor.h index 78e8c54f5f..6584f1a4ff 100644 --- a/libraries/AP_CANManager/AP_CANSensor.h +++ b/libraries/AP_CANManager/AP_CANSensor.h @@ -24,8 +24,8 @@ class CANSensor : public AP_CANDriver { public: - CANSensor(const char *driver_name, AP_CANManager::Driver_Type dtype, uint16_t stack_size=2048); - + CANSensor(const char *driver_name, uint16_t stack_size=2048); + /* Do not allow copies */ CANSensor(const CANSensor &other) = delete; CANSensor &operator=(const CANSensor&) = delete; @@ -48,6 +48,9 @@ public: } #endif +protected: + void register_driver(AP_CANManager::Driver_Type dtype); + private: void loop();