diff --git a/include/ugv_sdk/details/interface/ranger_interface.hpp b/include/ugv_sdk/details/interface/ranger_interface.hpp index 770e2c8..ed2aa35 100644 --- a/include/ugv_sdk/details/interface/ranger_interface.hpp +++ b/include/ugv_sdk/details/interface/ranger_interface.hpp @@ -39,7 +39,7 @@ struct RangerActuatorState { ///////////////////////////////////////////////////////////////////////// struct RangerInterface { - virtual void Connect(std::string dev_name) = 0; + virtual bool Connect(std::string dev_name) = 0; // robot control virtual void SetMotionMode(uint8_t mode) = 0; diff --git a/include/ugv_sdk/details/interface/robot_common_interface.hpp b/include/ugv_sdk/details/interface/robot_common_interface.hpp index 04b28d7..dfd539e 100644 --- a/include/ugv_sdk/details/interface/robot_common_interface.hpp +++ b/include/ugv_sdk/details/interface/robot_common_interface.hpp @@ -50,7 +50,7 @@ class RobotCommonInterface { virtual void EnableCommandedMode() = 0; // functions to be implemented by each robot class - virtual void Connect(std::string can_name) = 0; + virtual bool Connect(std::string can_name) = 0; virtual void ResetRobotState() = 0; diff --git a/include/ugv_sdk/details/robot_base/agilex_base.hpp b/include/ugv_sdk/details/robot_base/agilex_base.hpp index 9d5dfbb..c1bcd47 100644 --- a/include/ugv_sdk/details/robot_base/agilex_base.hpp +++ b/include/ugv_sdk/details/robot_base/agilex_base.hpp @@ -45,9 +45,10 @@ class AgilexBase : public RobotCommonInterface { AgilexBase(const AgilexBase &hunter) = delete; AgilexBase &operator=(const AgilexBase &hunter) = delete; - void Connect(std::string can_name) override { - ConnectPort(can_name, std::bind(&AgilexBase::ParseCANFrame, - this, std::placeholders::_1)); + bool Connect(std::string can_name) override { + return ConnectPort(can_name, + std::bind(&AgilexBase::ParseCANFrame, this, + std::placeholders::_1)); } // switch to commanded mode @@ -179,11 +180,11 @@ class AgilexBase : public RobotCommonInterface { // connect to roboot from CAN or serial using CANFrameRxCallback = AsyncCAN::ReceiveCallback; - void ConnectPort(std::string dev_name, CANFrameRxCallback cb) { + bool ConnectPort(std::string dev_name, CANFrameRxCallback cb) { can_ = std::make_shared(dev_name); can_->SetReceiveCallback(cb); - can_->StartListening(); - can_connected_ = true; + can_connected_ = can_->StartListening(); + return can_connected_; } void DisconnectPort() { diff --git a/include/ugv_sdk/details/robot_base/bunker_base.hpp b/include/ugv_sdk/details/robot_base/bunker_base.hpp index 5912e24..e0120ef 100644 --- a/include/ugv_sdk/details/robot_base/bunker_base.hpp +++ b/include/ugv_sdk/details/robot_base/bunker_base.hpp @@ -26,8 +26,8 @@ class BunkerBase : public AgilexBase, public BunkerInterface { ~BunkerBase() = default; // set up connection - void Connect(std::string can_name) override { - AgilexBase::Connect(can_name); + bool Connect(std::string can_name) override { + return AgilexBase::Connect(can_name); } // robot control diff --git a/include/ugv_sdk/details/robot_base/hunter_base.hpp b/include/ugv_sdk/details/robot_base/hunter_base.hpp index 1c436d4..dbf930b 100644 --- a/include/ugv_sdk/details/robot_base/hunter_base.hpp +++ b/include/ugv_sdk/details/robot_base/hunter_base.hpp @@ -26,8 +26,8 @@ class HunterBase : public AgilexBase, public HunterInterface { ~HunterBase() = default; // set up connection - void Connect(std::string can_name) override { - AgilexBase::Connect(can_name); + bool Connect(std::string can_name) override { + return AgilexBase::Connect(can_name); } // robot control diff --git a/include/ugv_sdk/details/robot_base/ranger_base.hpp b/include/ugv_sdk/details/robot_base/ranger_base.hpp index 5bb572b..72b4e8d 100644 --- a/include/ugv_sdk/details/robot_base/ranger_base.hpp +++ b/include/ugv_sdk/details/robot_base/ranger_base.hpp @@ -27,9 +27,10 @@ class RangerBase : public AgilexBase, public RangerInterface { ~RangerBase() = default; // set up connection - void Connect(std::string dev_name) override { - AgilexBase::ConnectPort(dev_name, std::bind(&RangerBase::ParseCANFrame, - this, std::placeholders::_1)); + bool Connect(std::string dev_name) override { + return AgilexBase::ConnectPort( + dev_name, + std::bind(&RangerBase::ParseCANFrame, this, std::placeholders::_1)); } // robot control diff --git a/include/ugv_sdk/details/robot_base/scout_base.hpp b/include/ugv_sdk/details/robot_base/scout_base.hpp index 604c2ce..557432e 100644 --- a/include/ugv_sdk/details/robot_base/scout_base.hpp +++ b/include/ugv_sdk/details/robot_base/scout_base.hpp @@ -26,8 +26,8 @@ class ScoutBase : public AgilexBase, public ScoutInterface { ~ScoutBase() = default; // set up connection - void Connect(std::string can_name) override { - AgilexBase::Connect(can_name); + bool Connect(std::string can_name) override { + return AgilexBase::Connect(can_name); } void Connect(std::string uart_name, uint32_t baudrate) override { diff --git a/include/ugv_sdk/details/robot_base/tracer_base.hpp b/include/ugv_sdk/details/robot_base/tracer_base.hpp index 86f40f5..87ff78f 100644 --- a/include/ugv_sdk/details/robot_base/tracer_base.hpp +++ b/include/ugv_sdk/details/robot_base/tracer_base.hpp @@ -28,8 +28,8 @@ class TracerBaseV2 : public AgilexBase, ~TracerBaseV2() = default; // set up connection - void Connect(std::string can_name) override { - AgilexBase::Connect(can_name); + bool Connect(std::string can_name) override { + return AgilexBase::Connect(can_name); } void Connect(std::string uart_name, uint32_t baudrate) override { diff --git a/include/ugv_sdk/mobile_robot/bunker_robot.hpp b/include/ugv_sdk/mobile_robot/bunker_robot.hpp index 2f189c7..8fb10f6 100644 --- a/include/ugv_sdk/mobile_robot/bunker_robot.hpp +++ b/include/ugv_sdk/mobile_robot/bunker_robot.hpp @@ -21,7 +21,7 @@ class BunkerRobot : public RobotCommonInterface, public BunkerInterface { BunkerRobot(ProtocolVersion protocol = ProtocolVersion::AGX_V2); ~BunkerRobot(); - void Connect(std::string can_name) override; + bool Connect(std::string can_name) override; void EnableCommandedMode() override; diff --git a/include/ugv_sdk/mobile_robot/hunter_robot.hpp b/include/ugv_sdk/mobile_robot/hunter_robot.hpp index 6e5eb85..c7057ff 100644 --- a/include/ugv_sdk/mobile_robot/hunter_robot.hpp +++ b/include/ugv_sdk/mobile_robot/hunter_robot.hpp @@ -21,7 +21,7 @@ class HunterRobot : public RobotCommonInterface, public HunterInterface { HunterRobot(ProtocolVersion protocol = ProtocolVersion::AGX_V2); ~HunterRobot(); - void Connect(std::string can_name) override; + bool Connect(std::string can_name) override; void EnableCommandedMode() override; diff --git a/include/ugv_sdk/mobile_robot/scout_robot.hpp b/include/ugv_sdk/mobile_robot/scout_robot.hpp index 54a2046..e4c731f 100644 --- a/include/ugv_sdk/mobile_robot/scout_robot.hpp +++ b/include/ugv_sdk/mobile_robot/scout_robot.hpp @@ -22,7 +22,7 @@ class ScoutRobot : public RobotCommonInterface, public ScoutInterface { bool is_mini_model = false); virtual ~ScoutRobot(); - void Connect(std::string can_name) override; + bool Connect(std::string can_name) override; void Connect(std::string uart_name, uint32_t baudrate) override; void EnableCommandedMode() override; diff --git a/src/mobile_robot/bunker_robot.cpp b/src/mobile_robot/bunker_robot.cpp index 481cb9a..68836b1 100644 --- a/src/mobile_robot/bunker_robot.cpp +++ b/src/mobile_robot/bunker_robot.cpp @@ -25,7 +25,9 @@ BunkerRobot::~BunkerRobot() { void BunkerRobot::EnableCommandedMode() { robot_->EnableCommandedMode(); } -void BunkerRobot::Connect(std::string can_name) { robot_->Connect(can_name); } +bool BunkerRobot::Connect(std::string can_name) { + return robot_->Connect(can_name); +} void BunkerRobot::ResetRobotState() { robot_->ResetRobotState(); } diff --git a/src/mobile_robot/hunter_robot.cpp b/src/mobile_robot/hunter_robot.cpp index 36749c4..8626afe 100644 --- a/src/mobile_robot/hunter_robot.cpp +++ b/src/mobile_robot/hunter_robot.cpp @@ -25,7 +25,9 @@ HunterRobot::~HunterRobot() { void HunterRobot::EnableCommandedMode() { robot_->EnableCommandedMode(); } -void HunterRobot::Connect(std::string can_name) { robot_->Connect(can_name); } +bool HunterRobot::Connect(std::string can_name) { + return robot_->Connect(can_name); +} void HunterRobot::ResetRobotState() { robot_->ResetRobotState(); } diff --git a/src/mobile_robot/scout_robot.cpp b/src/mobile_robot/scout_robot.cpp index 2b85a44..5b729ce 100644 --- a/src/mobile_robot/scout_robot.cpp +++ b/src/mobile_robot/scout_robot.cpp @@ -33,7 +33,9 @@ ScoutRobot::~ScoutRobot() { void ScoutRobot::EnableCommandedMode() { robot_->EnableCommandedMode(); } -void ScoutRobot::Connect(std::string can_name) { robot_->Connect(can_name); } +bool ScoutRobot::Connect(std::string can_name) { + return robot_->Connect(can_name); +} void ScoutRobot::Connect(std::string uart_name, uint32_t baudrate) { // robot_->Connect(uart_name, baudrate);