update tracer interface

This commit is contained in:
Pin Loon Lee
2021-07-14 18:43:53 +08:00
parent 4341d4f831
commit 1b20ecd4d9
2 changed files with 30 additions and 14 deletions

View File

@@ -15,18 +15,17 @@
#include "ugv_sdk/details/interface/agilex_message.h" #include "ugv_sdk/details/interface/agilex_message.h"
namespace westonrobot { namespace westonrobot {
struct TracerState { struct TracerCoreState {
// system state
SystemStateMessage system_state; SystemStateMessage system_state;
MotionStateMessage motion_state; MotionStateMessage motion_state;
LightStateMessage light_state; LightStateMessage light_state;
RcStateMessage rc_state;
};
struct TracerActuatorState {
// actuator state // actuator state
// - for v2 robots only ActuatorHSStateMessage actuator_hs_state[2];
ActuatorHSStateMessage actuator_hs_state[4]; ActuatorLSStateMessage actuator_ls_state[2];
ActuatorLSStateMessage actuator_ls_state[4];
// - for v1 robots only
ActuatorStateMessageV1 actuator_state[4];
}; };
struct TracerInterface { struct TracerInterface {
@@ -36,7 +35,8 @@ struct TracerInterface {
virtual void SetLightCommand(LightMode f_mode, uint8_t f_value) = 0; virtual void SetLightCommand(LightMode f_mode, uint8_t f_value) = 0;
// get robot state // get robot state
virtual TracerState GetRobotState() = 0; virtual TracerCoreState GetRobotState() = 0;
virtual TracerActuatorState GetActuatorState() = 0;
}; };
} // namespace westonrobot } // namespace westonrobot

View File

@@ -29,10 +29,9 @@ class TracerBaseV2 : public AgilexBase<ProtocolV2Parser>,
// set up connection // set up connection
void Connect(std::string can_name) override { void Connect(std::string can_name) override {
AgilexBase<ProtocolV2Parser>::ConnectPort( AgilexBase<ProtocolV2Parser>::Connect(can_name);
can_name,
std::bind(&TracerBaseV2::ParseCANFrame, this, std::placeholders::_1));
} }
void Connect(std::string uart_name, uint32_t baudrate) override { void Connect(std::string uart_name, uint32_t baudrate) override {
// TODO // TODO
} }
@@ -49,9 +48,26 @@ class TracerBaseV2 : public AgilexBase<ProtocolV2Parser>,
} }
// get robot state // get robot state
TracerState GetRobotState() override { TracerCoreState GetRobotState() override {
// std::lock_guard<std::mutex> auto state = AgilexBase<ProtocolV2Parser>::GetRobotCoreStateMsgGroup();
// guard(AgilexBase<ProtocolV2Parser>::state_mutex_); return tracer_state_;
TracerCoreState tracer_state;
tracer_state.system_state = state.system_state;
tracer_state.motion_state = state.motion_state;
tracer_state.light_state = state.light_state;
tracer_state.rc_state = state.rc_state;
return tracer_state;
}
TracerActuatorState GetActuatorState() override {
auto actuator = AgilexBase<ProtocolV2Parser>::GetActuatorStateMsgGroup();
TracerActuatorState tracer_actuator;
for (int i = 0; i < 2; ++i) {
tracer_actuator.actuator_hs_state[i] = actuator.actuator_hs_state[i];
tracer_actuator.actuator_ls_state[i] = actuator.actuator_ls_state[i];
}
return tracer_actuator;
} }
void ResetRobotState() override { void ResetRobotState() override {