diff --git a/libraries/AP_Airspeed/AP_Airspeed_UAVCAN.cpp b/libraries/AP_Airspeed/AP_Airspeed_UAVCAN.cpp index d20c33030d..31ba23e5e1 100644 --- a/libraries/AP_Airspeed/AP_Airspeed_UAVCAN.cpp +++ b/libraries/AP_Airspeed/AP_Airspeed_UAVCAN.cpp @@ -41,21 +41,9 @@ void AP_Airspeed_UAVCAN::subscribe_msgs(AP_UAVCAN* ap_uavcan) } } -bool AP_Airspeed_UAVCAN::take_registry() -{ - return _sem_registry.take(HAL_SEMAPHORE_BLOCK_FOREVER); -} - -void AP_Airspeed_UAVCAN::give_registry() -{ - _sem_registry.give(); -} - AP_Airspeed_Backend* AP_Airspeed_UAVCAN::probe(AP_Airspeed &_frontend, uint8_t _instance) { - if (!take_registry()) { - return nullptr; - } + WITH_SEMAPHORE(_sem_registry); AP_Airspeed_UAVCAN* backend = nullptr; @@ -80,8 +68,6 @@ AP_Airspeed_Backend* AP_Airspeed_UAVCAN::probe(AP_Airspeed &_frontend, uint8_t _ } } - give_registry(); - return backend; } @@ -123,7 +109,8 @@ AP_Airspeed_UAVCAN* AP_Airspeed_UAVCAN::get_uavcan_backend(AP_UAVCAN* ap_uavcan, void AP_Airspeed_UAVCAN::handle_airspeed(AP_UAVCAN* ap_uavcan, uint8_t node_id, const AirspeedCb &cb) { - if (take_registry()) { + WITH_SEMAPHORE(_sem_registry); + AP_Airspeed_UAVCAN* driver = get_uavcan_backend(ap_uavcan, node_id); if (driver != nullptr) { @@ -132,9 +119,6 @@ void AP_Airspeed_UAVCAN::handle_airspeed(AP_UAVCAN* ap_uavcan, uint8_t node_id, driver->_temperature = cb.msg->static_air_temperature - C_TO_KELVIN; driver->_last_sample_time_ms = AP_HAL::millis(); } - - give_registry(); - } } bool AP_Airspeed_UAVCAN::init() diff --git a/libraries/AP_Airspeed/AP_Airspeed_UAVCAN.h b/libraries/AP_Airspeed/AP_Airspeed_UAVCAN.h index e505c2a92a..98d1329011 100644 --- a/libraries/AP_Airspeed/AP_Airspeed_UAVCAN.h +++ b/libraries/AP_Airspeed/AP_Airspeed_UAVCAN.h @@ -23,9 +23,6 @@ public: static AP_Airspeed_Backend* probe(AP_Airspeed &_fronted, uint8_t _instance); private: - static bool take_registry(); - - static void give_registry(); static void handle_airspeed(AP_UAVCAN* ap_uavcan, uint8_t node_id, const AirspeedCb &cb);