19 #include "common/model/dxl_command_type_enum.hpp"
20 #include "common/model/single_motor_cmd.hpp"
29 using ::common::model::EDxlCommandType;
50 if (cmd && cmd->isValid() && cmd->isDxlCmd())
52 switch (EDxlCommandType(cmd->getCmdType()))
54 case EDxlCommandType::CMD_TYPE_VELOCITY:
56 case EDxlCommandType::CMD_TYPE_POSITION:
58 case EDxlCommandType::CMD_TYPE_EFFORT:
59 return writeTorqueGoal(cmd->getId(),
static_cast<uint16_t
>(cmd->getParam()));
60 case EDxlCommandType::CMD_TYPE_TORQUE:
62 case EDxlCommandType::CMD_TYPE_LEARNING_MODE:
64 case EDxlCommandType::CMD_TYPE_PING:
65 return ping(cmd->getId());
66 case EDxlCommandType::CMD_TYPE_PID:
68 std::vector<uint16_t> params_conv;
69 for (
auto p : cmd->getParams())
71 params_conv.emplace_back(
static_cast<uint16_t
>(p));
73 return writePID(cmd->getId(), params_conv);
75 case EDxlCommandType::CMD_TYPE_PROFILE:
77 case EDxlCommandType::CMD_TYPE_CONTROL_MODE:
78 return writeControlMode(cmd->getId(),
static_cast<uint8_t
>(cmd->getParam()));
79 case EDxlCommandType::CMD_TYPE_LED_STATE:
80 return writeLed(cmd->getId(),
static_cast<uint8_t
>(cmd->getParam()));
81 case EDxlCommandType::CMD_TYPE_STARTUP:
83 case EDxlCommandType::CMD_TYPE_TEMPERATURE_LIMIT:
85 case EDxlCommandType::CMD_TYPE_SHUTDOWN:
88 std::cout <<
"Command not implemented " << cmd->getCmdType() << std::endl;
92 std::cout <<
"AbstractDxlDriver::writeSingleCmd : Command not validated: " << cmd->str() << std::endl;
93 return COMM_RX_CORRUPT;
104 assert(!ids.empty() &&
"AbstractDxlDriver::writeSyncCmd: ids is empty");
105 assert(!params.empty() &&
"AbstractDxlDriver::writeSyncCmd: params is empty");
107 switch (EDxlCommandType(type))
109 case EDxlCommandType::CMD_TYPE_POSITION:
111 case EDxlCommandType::CMD_TYPE_VELOCITY:
113 case EDxlCommandType::CMD_TYPE_EFFORT:
115 std::vector<uint16_t> params_conv;
116 params_conv.reserve(params.size());
117 for (
auto const &p : params)
119 params_conv.emplace_back(
static_cast<uint16_t
>(p));
123 case EDxlCommandType::CMD_TYPE_TORQUE:
125 std::vector<uint8_t> params_conv;
126 params_conv.reserve(params.size());
127 for (
auto const &p : params)
129 params_conv.emplace_back(
static_cast<uint8_t
>(p));
133 case EDxlCommandType::CMD_TYPE_LEARNING_MODE:
135 std::vector<uint8_t> params_inv;
136 params_inv.reserve(params.size());
137 for (
auto const &p : params)
139 params_inv.emplace_back(!p);
144 std::cout <<
"Command not implemented " << type << std::endl;
147 std::cout <<
"AbstractDxlDriver::writeSyncCmd : Command not validated: " << type << std::endl;