Browse Source

AP_RangeFinder: Make singleton

mission-4.1.18
Michael du Breuil 7 years ago committed by Francisco Ferreira
parent
commit
7d6c3ec683
  1. 9
      libraries/AP_RangeFinder/RangeFinder.cpp
  2. 4
      libraries/AP_RangeFinder/RangeFinder.h

9
libraries/AP_RangeFinder/RangeFinder.cpp

@ -540,6 +540,13 @@ RangeFinder::RangeFinder(AP_SerialManager &_serial_manager, enum Rotation orient @@ -540,6 +540,13 @@ RangeFinder::RangeFinder(AP_SerialManager &_serial_manager, enum Rotation orient
for (uint8_t i=0; i<RANGEFINDER_MAX_INSTANCES; i++) {
state[i].orientation.set_default(orientation_default);
}
#if CONFIG_HAL_BOARD == HAL_BOARD_SITL
if (_singleton != nullptr) {
AP_HAL::panic("Rangefinder must be singleton");
}
#endif // CONFIG_HAL_BOARD == HAL_BOARD_SITL
_singleton = this;
}
/*
@ -864,3 +871,5 @@ MAV_DISTANCE_SENSOR RangeFinder::get_mav_distance_sensor_type_orient(enum Rotati @@ -864,3 +871,5 @@ MAV_DISTANCE_SENSOR RangeFinder::get_mav_distance_sensor_type_orient(enum Rotati
}
return backend->get_mav_distance_sensor_type();
}
RangeFinder *RangeFinder::_singleton;

4
libraries/AP_RangeFinder/RangeFinder.h

@ -157,8 +157,12 @@ public: @@ -157,8 +157,12 @@ public:
*/
bool pre_arm_check() const;
static RangeFinder *get_singleton(void) { return _singleton; }
private:
static RangeFinder *_singleton;
RangeFinder_State state[RANGEFINDER_MAX_INSTANCES];
AP_RangeFinder_Backend *drivers[RANGEFINDER_MAX_INSTANCES];
uint8_t num_instances:3;

Loading…
Cancel
Save