mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-02-11 02:13:57 -04:00
AP_Proximity: stop passing serial manager around, use singleton
This commit is contained in:
parent
368a8028ae
commit
4962b7a98e
@ -178,8 +178,7 @@ const AP_Param::GroupInfo AP_Proximity::var_info[] = {
|
|||||||
AP_GROUPEND
|
AP_GROUPEND
|
||||||
};
|
};
|
||||||
|
|
||||||
AP_Proximity::AP_Proximity(AP_SerialManager &_serial_manager) :
|
AP_Proximity::AP_Proximity()
|
||||||
serial_manager(_serial_manager)
|
|
||||||
{
|
{
|
||||||
AP_Param::setup_object_defaults(this, var_info);
|
AP_Param::setup_object_defaults(this, var_info);
|
||||||
#if CONFIG_HAL_BOARD == HAL_BOARD_SITL
|
#if CONFIG_HAL_BOARD == HAL_BOARD_SITL
|
||||||
@ -284,16 +283,16 @@ void AP_Proximity::detect_instance(uint8_t instance)
|
|||||||
{
|
{
|
||||||
uint8_t type = _type[instance];
|
uint8_t type = _type[instance];
|
||||||
if (type == Proximity_Type_SF40C) {
|
if (type == Proximity_Type_SF40C) {
|
||||||
if (AP_Proximity_LightWareSF40C::detect(serial_manager)) {
|
if (AP_Proximity_LightWareSF40C::detect()) {
|
||||||
state[instance].instance = instance;
|
state[instance].instance = instance;
|
||||||
drivers[instance] = new AP_Proximity_LightWareSF40C(*this, state[instance], serial_manager);
|
drivers[instance] = new AP_Proximity_LightWareSF40C(*this, state[instance]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (type == Proximity_Type_RPLidarA2) {
|
if (type == Proximity_Type_RPLidarA2) {
|
||||||
if (AP_Proximity_RPLidarA2::detect(serial_manager)) {
|
if (AP_Proximity_RPLidarA2::detect()) {
|
||||||
state[instance].instance = instance;
|
state[instance].instance = instance;
|
||||||
drivers[instance] = new AP_Proximity_RPLidarA2(*this, state[instance], serial_manager);
|
drivers[instance] = new AP_Proximity_RPLidarA2(*this, state[instance]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -303,16 +302,16 @@ void AP_Proximity::detect_instance(uint8_t instance)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (type == Proximity_Type_TRTOWER) {
|
if (type == Proximity_Type_TRTOWER) {
|
||||||
if (AP_Proximity_TeraRangerTower::detect(serial_manager)) {
|
if (AP_Proximity_TeraRangerTower::detect()) {
|
||||||
state[instance].instance = instance;
|
state[instance].instance = instance;
|
||||||
drivers[instance] = new AP_Proximity_TeraRangerTower(*this, state[instance], serial_manager);
|
drivers[instance] = new AP_Proximity_TeraRangerTower(*this, state[instance]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (type == Proximity_Type_TRTOWEREVO) {
|
if (type == Proximity_Type_TRTOWEREVO) {
|
||||||
if (AP_Proximity_TeraRangerTowerEvo::detect(serial_manager)) {
|
if (AP_Proximity_TeraRangerTowerEvo::detect()) {
|
||||||
state[instance].instance = instance;
|
state[instance].instance = instance;
|
||||||
drivers[instance] = new AP_Proximity_TeraRangerTowerEvo(*this, state[instance], serial_manager);
|
drivers[instance] = new AP_Proximity_TeraRangerTowerEvo(*this, state[instance]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
#include <AP_HAL/AP_HAL.h>
|
#include <AP_HAL/AP_HAL.h>
|
||||||
#include <AP_Param/AP_Param.h>
|
#include <AP_Param/AP_Param.h>
|
||||||
#include <AP_Math/AP_Math.h>
|
#include <AP_Math/AP_Math.h>
|
||||||
#include <AP_SerialManager/AP_SerialManager.h>
|
|
||||||
#include <AP_RangeFinder/AP_RangeFinder.h>
|
#include <AP_RangeFinder/AP_RangeFinder.h>
|
||||||
|
|
||||||
#define PROXIMITY_MAX_INSTANCES 1 // Maximum number of proximity sensor instances available on this platform
|
#define PROXIMITY_MAX_INSTANCES 1 // Maximum number of proximity sensor instances available on this platform
|
||||||
@ -33,7 +32,7 @@ class AP_Proximity
|
|||||||
public:
|
public:
|
||||||
friend class AP_Proximity_Backend;
|
friend class AP_Proximity_Backend;
|
||||||
|
|
||||||
AP_Proximity(AP_SerialManager &_serial_manager);
|
AP_Proximity();
|
||||||
|
|
||||||
AP_Proximity(const AP_Proximity &other) = delete;
|
AP_Proximity(const AP_Proximity &other) = delete;
|
||||||
AP_Proximity &operator=(const AP_Proximity) = delete;
|
AP_Proximity &operator=(const AP_Proximity) = delete;
|
||||||
@ -149,7 +148,6 @@ private:
|
|||||||
const RangeFinder *_rangefinder;
|
const RangeFinder *_rangefinder;
|
||||||
uint8_t primary_instance;
|
uint8_t primary_instance;
|
||||||
uint8_t num_instances;
|
uint8_t num_instances;
|
||||||
AP_SerialManager &serial_manager;
|
|
||||||
|
|
||||||
// parameters for all instances
|
// parameters for all instances
|
||||||
AP_Int8 _type[PROXIMITY_MAX_INSTANCES];
|
AP_Int8 _type[PROXIMITY_MAX_INSTANCES];
|
||||||
|
@ -27,10 +27,10 @@ extern const AP_HAL::HAL& hal;
|
|||||||
already know that we should setup the proximity sensor
|
already know that we should setup the proximity sensor
|
||||||
*/
|
*/
|
||||||
AP_Proximity_LightWareSF40C::AP_Proximity_LightWareSF40C(AP_Proximity &_frontend,
|
AP_Proximity_LightWareSF40C::AP_Proximity_LightWareSF40C(AP_Proximity &_frontend,
|
||||||
AP_Proximity::Proximity_State &_state,
|
AP_Proximity::Proximity_State &_state) :
|
||||||
AP_SerialManager &serial_manager) :
|
|
||||||
AP_Proximity_Backend(_frontend, _state)
|
AP_Proximity_Backend(_frontend, _state)
|
||||||
{
|
{
|
||||||
|
const AP_SerialManager &serial_manager = AP::serialmanager();
|
||||||
uart = serial_manager.find_serial(AP_SerialManager::SerialProtocol_Lidar360, 0);
|
uart = serial_manager.find_serial(AP_SerialManager::SerialProtocol_Lidar360, 0);
|
||||||
if (uart != nullptr) {
|
if (uart != nullptr) {
|
||||||
uart->begin(serial_manager.find_baudrate(AP_SerialManager::SerialProtocol_Lidar360, 0));
|
uart->begin(serial_manager.find_baudrate(AP_SerialManager::SerialProtocol_Lidar360, 0));
|
||||||
@ -38,9 +38,9 @@ AP_Proximity_LightWareSF40C::AP_Proximity_LightWareSF40C(AP_Proximity &_frontend
|
|||||||
}
|
}
|
||||||
|
|
||||||
// detect if a Lightware proximity sensor is connected by looking for a configured serial port
|
// detect if a Lightware proximity sensor is connected by looking for a configured serial port
|
||||||
bool AP_Proximity_LightWareSF40C::detect(AP_SerialManager &serial_manager)
|
bool AP_Proximity_LightWareSF40C::detect()
|
||||||
{
|
{
|
||||||
return serial_manager.find_serial(AP_SerialManager::SerialProtocol_Lidar360, 0) != nullptr;
|
return AP::serialmanager().find_serial(AP_SerialManager::SerialProtocol_Lidar360, 0) != nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
// update the state of the sensor
|
// update the state of the sensor
|
||||||
|
@ -10,10 +10,11 @@ class AP_Proximity_LightWareSF40C : public AP_Proximity_Backend
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
// constructor
|
// constructor
|
||||||
AP_Proximity_LightWareSF40C(AP_Proximity &_frontend, AP_Proximity::Proximity_State &_state, AP_SerialManager &serial_manager);
|
AP_Proximity_LightWareSF40C(AP_Proximity &_frontend,
|
||||||
|
AP_Proximity::Proximity_State &_state);
|
||||||
|
|
||||||
// static detection function
|
// static detection function
|
||||||
static bool detect(AP_SerialManager &serial_manager);
|
static bool detect();
|
||||||
|
|
||||||
// update state
|
// update state
|
||||||
void update(void) override;
|
void update(void) override;
|
||||||
|
@ -69,11 +69,12 @@ extern const AP_HAL::HAL& hal;
|
|||||||
constructor is not called until detect() returns true, so we
|
constructor is not called until detect() returns true, so we
|
||||||
already know that we should setup the proximity sensor
|
already know that we should setup the proximity sensor
|
||||||
*/
|
*/
|
||||||
AP_Proximity_RPLidarA2::AP_Proximity_RPLidarA2(AP_Proximity &_frontend,
|
AP_Proximity_RPLidarA2::AP_Proximity_RPLidarA2(
|
||||||
AP_Proximity::Proximity_State &_state,
|
AP_Proximity &_frontend,
|
||||||
AP_SerialManager &serial_manager) :
|
AP_Proximity::Proximity_State &_state) :
|
||||||
AP_Proximity_Backend(_frontend, _state)
|
AP_Proximity_Backend(_frontend, _state)
|
||||||
{
|
{
|
||||||
|
const AP_SerialManager &serial_manager = AP::serialmanager();
|
||||||
_uart = serial_manager.find_serial(AP_SerialManager::SerialProtocol_Lidar360, 0);
|
_uart = serial_manager.find_serial(AP_SerialManager::SerialProtocol_Lidar360, 0);
|
||||||
if (_uart != nullptr) {
|
if (_uart != nullptr) {
|
||||||
_uart->begin(serial_manager.find_baudrate(AP_SerialManager::SerialProtocol_Lidar360, 0));
|
_uart->begin(serial_manager.find_baudrate(AP_SerialManager::SerialProtocol_Lidar360, 0));
|
||||||
@ -84,9 +85,9 @@ AP_Proximity_RPLidarA2::AP_Proximity_RPLidarA2(AP_Proximity &_frontend,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// detect if a RPLidarA2 proximity sensor is connected by looking for a configured serial port
|
// detect if a RPLidarA2 proximity sensor is connected by looking for a configured serial port
|
||||||
bool AP_Proximity_RPLidarA2::detect(AP_SerialManager &serial_manager)
|
bool AP_Proximity_RPLidarA2::detect()
|
||||||
{
|
{
|
||||||
return serial_manager.find_serial(AP_SerialManager::SerialProtocol_Lidar360, 0) != nullptr;
|
return AP::serialmanager().find_serial(AP_SerialManager::SerialProtocol_Lidar360, 0) != nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
// update the _rp_state of the sensor
|
// update the _rp_state of the sensor
|
||||||
|
@ -39,10 +39,10 @@ class AP_Proximity_RPLidarA2 : public AP_Proximity_Backend
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
// constructor
|
// constructor
|
||||||
AP_Proximity_RPLidarA2(AP_Proximity &_frontend, AP_Proximity::Proximity_State &_state, AP_SerialManager &serial_manager);
|
AP_Proximity_RPLidarA2(AP_Proximity &_frontend, AP_Proximity::Proximity_State &_state);
|
||||||
|
|
||||||
// static detection function
|
// static detection function
|
||||||
static bool detect(AP_SerialManager &serial_manager);
|
static bool detect();
|
||||||
|
|
||||||
// update state
|
// update state
|
||||||
void update(void) override;
|
void update(void) override;
|
||||||
|
@ -27,11 +27,13 @@ extern const AP_HAL::HAL& hal;
|
|||||||
constructor is not called until detect() returns true, so we
|
constructor is not called until detect() returns true, so we
|
||||||
already know that we should setup the proximity sensor
|
already know that we should setup the proximity sensor
|
||||||
*/
|
*/
|
||||||
AP_Proximity_TeraRangerTower::AP_Proximity_TeraRangerTower(AP_Proximity &_frontend,
|
AP_Proximity_TeraRangerTower::AP_Proximity_TeraRangerTower(
|
||||||
AP_Proximity::Proximity_State &_state,
|
AP_Proximity &_frontend,
|
||||||
AP_SerialManager &serial_manager) :
|
AP_Proximity::Proximity_State &_state) :
|
||||||
AP_Proximity_Backend(_frontend, _state)
|
AP_Proximity_Backend(_frontend, _state)
|
||||||
{
|
{
|
||||||
|
const AP_SerialManager &serial_manager = AP::serialmanager();
|
||||||
|
|
||||||
uart = serial_manager.find_serial(AP_SerialManager::SerialProtocol_Lidar360, 0);
|
uart = serial_manager.find_serial(AP_SerialManager::SerialProtocol_Lidar360, 0);
|
||||||
if (uart != nullptr) {
|
if (uart != nullptr) {
|
||||||
uart->begin(serial_manager.find_baudrate(AP_SerialManager::SerialProtocol_Lidar360, 0));
|
uart->begin(serial_manager.find_baudrate(AP_SerialManager::SerialProtocol_Lidar360, 0));
|
||||||
@ -39,10 +41,10 @@ AP_Proximity_TeraRangerTower::AP_Proximity_TeraRangerTower(AP_Proximity &_fronte
|
|||||||
}
|
}
|
||||||
|
|
||||||
// detect if a TeraRanger Tower proximity sensor is connected by looking for a configured serial port
|
// detect if a TeraRanger Tower proximity sensor is connected by looking for a configured serial port
|
||||||
bool AP_Proximity_TeraRangerTower::detect(AP_SerialManager &serial_manager)
|
bool AP_Proximity_TeraRangerTower::detect()
|
||||||
{
|
{
|
||||||
AP_HAL::UARTDriver *uart = nullptr;
|
AP_HAL::UARTDriver *uart = nullptr;
|
||||||
uart = serial_manager.find_serial(AP_SerialManager::SerialProtocol_Lidar360, 0);
|
uart = AP::serialmanager().find_serial(AP_SerialManager::SerialProtocol_Lidar360, 0);
|
||||||
return uart != nullptr;
|
return uart != nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,10 +10,10 @@ class AP_Proximity_TeraRangerTower : public AP_Proximity_Backend
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
// constructor
|
// constructor
|
||||||
AP_Proximity_TeraRangerTower(AP_Proximity &_frontend, AP_Proximity::Proximity_State &_state, AP_SerialManager &serial_manager);
|
AP_Proximity_TeraRangerTower(AP_Proximity &_frontend, AP_Proximity::Proximity_State &_state);
|
||||||
|
|
||||||
// static detection function
|
// static detection function
|
||||||
static bool detect(AP_SerialManager &serial_manager);
|
static bool detect();
|
||||||
|
|
||||||
// update state
|
// update state
|
||||||
void update(void) override;
|
void update(void) override;
|
||||||
|
@ -28,10 +28,11 @@ extern const AP_HAL::HAL& hal;
|
|||||||
already know that we should setup the proximity sensor
|
already know that we should setup the proximity sensor
|
||||||
*/
|
*/
|
||||||
AP_Proximity_TeraRangerTowerEvo::AP_Proximity_TeraRangerTowerEvo(AP_Proximity &_frontend,
|
AP_Proximity_TeraRangerTowerEvo::AP_Proximity_TeraRangerTowerEvo(AP_Proximity &_frontend,
|
||||||
AP_Proximity::Proximity_State &_state,
|
AP_Proximity::Proximity_State &_state) :
|
||||||
AP_SerialManager &serial_manager) :
|
|
||||||
AP_Proximity_Backend(_frontend, _state)
|
AP_Proximity_Backend(_frontend, _state)
|
||||||
{
|
{
|
||||||
|
const AP_SerialManager &serial_manager = AP::serialmanager();
|
||||||
|
|
||||||
uart = serial_manager.find_serial(AP_SerialManager::SerialProtocol_Lidar360, 0);
|
uart = serial_manager.find_serial(AP_SerialManager::SerialProtocol_Lidar360, 0);
|
||||||
if (uart != nullptr) {
|
if (uart != nullptr) {
|
||||||
uart->begin(serial_manager.find_baudrate(AP_SerialManager::SerialProtocol_Lidar360, 0));
|
uart->begin(serial_manager.find_baudrate(AP_SerialManager::SerialProtocol_Lidar360, 0));
|
||||||
@ -40,11 +41,9 @@ AP_Proximity_TeraRangerTowerEvo::AP_Proximity_TeraRangerTowerEvo(AP_Proximity &_
|
|||||||
}
|
}
|
||||||
|
|
||||||
// detect if a TeraRanger Tower proximity sensor is connected by looking for a configured serial port
|
// detect if a TeraRanger Tower proximity sensor is connected by looking for a configured serial port
|
||||||
bool AP_Proximity_TeraRangerTowerEvo::detect(AP_SerialManager &serial_manager)
|
bool AP_Proximity_TeraRangerTowerEvo::detect()
|
||||||
{
|
{
|
||||||
AP_HAL::UARTDriver *uart = nullptr;
|
return (AP::serialmanager().find_serial(AP_SerialManager::SerialProtocol_Lidar360, 0) != nullptr);
|
||||||
uart = serial_manager.find_serial(AP_SerialManager::SerialProtocol_Lidar360, 0);
|
|
||||||
return uart != nullptr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// update the state of the sensor
|
// update the state of the sensor
|
||||||
|
@ -9,10 +9,10 @@ class AP_Proximity_TeraRangerTowerEvo : public AP_Proximity_Backend {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
// constructor
|
// constructor
|
||||||
AP_Proximity_TeraRangerTowerEvo(AP_Proximity &_frontend, AP_Proximity::Proximity_State &_state, AP_SerialManager &serial_manager);
|
AP_Proximity_TeraRangerTowerEvo(AP_Proximity &_frontend, AP_Proximity::Proximity_State &_state);
|
||||||
|
|
||||||
// static detection function
|
// static detection function
|
||||||
static bool detect(AP_SerialManager &serial_manager);
|
static bool detect();
|
||||||
|
|
||||||
// update state
|
// update state
|
||||||
void update(void) override;
|
void update(void) override;
|
||||||
|
Loading…
Reference in New Issue
Block a user