mock_dxl_driver.hpp
Go to the documentation of this file.
1 /*
2 mock_dxl_driver.hpp
3 Copyright (C) 2020 Niryo
4 All rights reserved.
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13 You should have received a copy of the GNU General Public License
14 along with this program. If not, see <http:// www.gnu.org/licenses/>.
15 */
16 
17 #ifndef MOCK_DXL_DRIVER_HPP
18 #define MOCK_DXL_DRIVER_HPP
19 
20 #include <memory>
21 #include <vector>
22 #include <string>
23 #include <iostream>
24 #include <sstream>
25 #include <cassert>
26 
27 #include "abstract_dxl_driver.hpp"
28 #include "common/common_defs.hpp"
30 
31 namespace ttl_driver
32 {
33 
38 {
39 public:
40  MockDxlDriver(std::shared_ptr<FakeTtlData> data);
41 
42  std::string str() const override;
43 
44  // AbstractTtlDriver interface : we cannot define them globally in AbstractTtlDriver
45  // as it is needed here for polymorphism (AbstractTtlDriver cannot be a template class and does not
46  // have access to reg_type). So it seems like a duplicate of StepperDriver
47 public:
48  int ping(uint8_t id) override;
49  int getModelNumber(uint8_t id, uint16_t &model_number) override;
50  int scan(std::vector<uint8_t> &id_list) override;
51  int reboot(uint8_t id) override;
52 
53  std::string interpretErrorState(uint32_t hw_state) const override;
54 
55  int readCustom(uint16_t address, uint8_t data_len, uint8_t id, uint32_t &data) override;
56  int writeCustom(uint16_t address, uint8_t data_len, uint8_t id, uint32_t data) override;
57 
58  // eeprom write
59  int changeId(uint8_t id, uint8_t new_id) override;
60  int writeStartupConfiguration(uint8_t id, uint8_t value) override;
61  int writeTemperatureLimit(uint8_t id, uint8_t temperature_limit) override;
62  int writeShutdownConfiguration(uint8_t id, uint8_t configuration) override;
63 
64  // eeprom read
65  int checkModelNumber(uint8_t id, uint16_t &model_number) override;
66  int readFirmwareVersion(uint8_t id, std::string &version) override;
67  int readMinPosition(uint8_t id, uint32_t &min_pos) override;
68  int readMaxPosition(uint8_t id, uint32_t &max_pos) override;
69 
70  // ram write
71  int writeVelocityProfile(uint8_t id, const std::vector<uint32_t> &data_list) override;
72 
73  int writeTorquePercentage(uint8_t id, uint8_t torque_percentage) override;
74  int writePositionGoal(uint8_t id, uint32_t position) override;
75  int writeVelocityGoal(uint8_t id, uint32_t velocity) override;
76 
77  int syncWriteTorquePercentage(const std::vector<uint8_t> &id_list,
78  const std::vector<uint8_t> &torque_percentage_list) override;
79  int syncWritePositionGoal(const std::vector<uint8_t> &id_list, const std::vector<uint32_t> &position_list) override;
80  int syncWriteVelocityGoal(const std::vector<uint8_t> &id_list, const std::vector<uint32_t> &velocity_list) override;
81 
82  // ram read
83  int readVelocityProfile(uint8_t id, std::vector<uint32_t> &data_list) override;
84 
85  int readPosition(uint8_t id, uint32_t &present_position) override;
86  int readVelocity(uint8_t id, uint32_t &present_velocity) override;
87  int readTemperature(uint8_t id, uint8_t &temperature) override;
88  int readVoltage(uint8_t id, double &voltage) override;
89  int readHwErrorStatus(uint8_t id, uint8_t &hardware_error_status) override;
90 
91  int syncReadPosition(const std::vector<uint8_t> &id_list, std::vector<uint32_t> &position_list) override;
92  int syncReadVelocity(const std::vector<uint8_t> &id_list, std::vector<uint32_t> &velocity_list) override;
93  int syncReadJointStatus(const std::vector<uint8_t> &id_list,
94  std::vector<std::array<uint32_t, 2>> &data_array_list) override;
95 
96  int syncReadFirmwareVersion(const std::vector<uint8_t> &id_list, std::vector<std::string> &firmware_list) override;
97  int syncReadTemperature(const std::vector<uint8_t> &id_list, std::vector<uint8_t> &temperature_list) override;
98  int syncReadVoltage(const std::vector<uint8_t> &id_list, std::vector<double> &voltage_list) override;
99  int syncReadRawVoltage(const std::vector<uint8_t> &id_list, std::vector<double> &voltage_list) override;
100  int syncReadHwStatus(const std::vector<uint8_t> &id_list,
101  std::vector<std::pair<double, uint8_t>> &data_list) override;
102 
103  int syncReadHwErrorStatus(const std::vector<uint8_t> &id_list, std::vector<uint8_t> &hw_error_list) override;
104 
105  // AbstractDxlDriver interface
106 public:
107  int readPID(uint8_t id, std::vector<uint16_t> &data) override;
108  int writePID(uint8_t id, const std::vector<uint16_t> &data) override;
109 
110  int writeControlMode(uint8_t id, uint8_t data) override;
111  int readControlMode(uint8_t id, uint8_t &data) override;
112 
113  int writeLed(uint8_t id, uint8_t led_value) override;
114  int syncWriteLed(const std::vector<uint8_t> &id_list, const std::vector<uint8_t> &led_list) override;
115  int writeTorqueGoal(uint8_t id, uint16_t torque) override;
116  int syncWriteTorqueGoal(const std::vector<uint8_t> &id_list, const std::vector<uint16_t> &torque_list) override;
117 
118  int readLoad(uint8_t id, uint16_t &present_load) override;
119  int syncReadLoad(const std::vector<uint8_t> &id_list, std::vector<uint16_t> &load_list) override;
120 
121  int readMoving(uint8_t id, uint8_t &status) override;
122 
123 private:
124  std::shared_ptr<FakeTtlData> _fake_data;
125  std::vector<uint8_t> _id_list;
126 
127  static constexpr int GROUP_SYNC_REDONDANT_ID = 10;
128  static constexpr int LEN_ID_DATA_NOT_SAME = 20;
129 
130  // AbstractTtlDriver interface
131 protected:
132  std::string interpretFirmwareVersion(uint32_t fw_version) const override;
133 };
134 
135 } // namespace ttl_driver
136 
137 #endif // MOCK_DXL_DRIVER
ttl_driver::MockDxlDriver::syncReadTemperature
int syncReadTemperature(const std::vector< uint8_t > &id_list, std::vector< uint8_t > &temperature_list) override
MockDxlDriver::syncReadTemperature.
Definition: mock_dxl_driver.cpp:650
ttl_driver::MockDxlDriver::MockDxlDriver
MockDxlDriver(std::shared_ptr< FakeTtlData > data)
MockDxlDriver::MockDxlDriver.
Definition: mock_dxl_driver.cpp:35
ttl_driver::MockDxlDriver::writeTemperatureLimit
int writeTemperatureLimit(uint8_t id, uint8_t temperature_limit) override
MockDxlDriver::writeTemperatureLimit.
Definition: mock_dxl_driver.cpp:228
ttl_driver::MockDxlDriver::interpretFirmwareVersion
std::string interpretFirmwareVersion(uint32_t fw_version) const override
MockDxlDriver::interpretFirmwareVersion.
Definition: mock_dxl_driver.cpp:966
ttl_driver::MockDxlDriver::readVelocityProfile
int readVelocityProfile(uint8_t id, std::vector< uint32_t > &data_list) override
Definition: mock_dxl_driver.cpp:444
ttl_driver::MockDxlDriver::writeTorquePercentage
int writeTorquePercentage(uint8_t id, uint8_t torque_percentage) override
MockDxlDriver::writeTorquePercentage.
Definition: mock_dxl_driver.cpp:303
ttl_driver::MockDxlDriver::scan
int scan(std::vector< uint8_t > &id_list) override
MockDxlDriver::scan.
Definition: mock_dxl_driver.cpp:107
ttl_driver::MockDxlDriver::readTemperature
int readTemperature(uint8_t id, uint8_t &temperature) override
MockDxlDriver::readTemperature.
Definition: mock_dxl_driver.cpp:492
ttl_driver::MockDxlDriver::readLoad
int readLoad(uint8_t id, uint16_t &present_load) override
MockDxlDriver::readLoad.
Definition: mock_dxl_driver.cpp:923
ttl_driver::MockDxlDriver::syncReadHwErrorStatus
int syncReadHwErrorStatus(const std::vector< uint8_t > &id_list, std::vector< uint8_t > &hw_error_list) override
MockDxlDriver::syncReadHwErrorStatus.
Definition: mock_dxl_driver.cpp:738
ttl_driver::MockDxlDriver::writeControlMode
int writeControlMode(uint8_t id, uint8_t data) override
MockDxlDriver::writeControlMode.
Definition: mock_dxl_driver.cpp:810
ttl_driver::MockDxlDriver::writeShutdownConfiguration
int writeShutdownConfiguration(uint8_t id, uint8_t configuration) override
MockDxlDriver::writeShutdownConfiguration.
Definition: mock_dxl_driver.cpp:242
ttl_driver::MockDxlDriver::reboot
int reboot(uint8_t id) override
MockDxlDriver::reboot.
Definition: mock_dxl_driver.cpp:118
ttl_driver::MockDxlDriver::writePID
int writePID(uint8_t id, const std::vector< uint16_t > &data) override
MockDxlDriver::writePID.
Definition: mock_dxl_driver.cpp:784
ttl_driver::MockDxlDriver::syncReadVoltage
int syncReadVoltage(const std::vector< uint8_t > &id_list, std::vector< double > &voltage_list) override
MockDxlDriver::syncReadVoltage.
Definition: mock_dxl_driver.cpp:673
ttl_driver::MockDxlDriver::writePositionGoal
int writePositionGoal(uint8_t id, uint32_t position) override
MockDxlDriver::writePositionGoal.
Definition: mock_dxl_driver.cpp:321
ttl_driver::MockDxlDriver::syncReadFirmwareVersion
int syncReadFirmwareVersion(const std::vector< uint8_t > &id_list, std::vector< std::string > &firmware_list) override
MockDxlDriver::syncReadFirmwareVersion.
Definition: mock_dxl_driver.cpp:627
ttl_driver::MockDxlDriver::syncReadPosition
int syncReadPosition(const std::vector< uint8_t > &id_list, std::vector< uint32_t > &position_list) override
MockDxlDriver::syncReadPosition.
Definition: mock_dxl_driver.cpp:537
ttl_driver::MockDxlDriver::syncWriteTorquePercentage
int syncWriteTorquePercentage(const std::vector< uint8_t > &id_list, const std::vector< uint8_t > &torque_percentage_list) override
MockDxlDriver::syncWriteTorquePercentage.
Definition: mock_dxl_driver.cpp:369
ttl_driver::MockDxlDriver::syncReadJointStatus
int syncReadJointStatus(const std::vector< uint8_t > &id_list, std::vector< std::array< uint32_t, 2 >> &data_array_list) override
MockDxlDriver::syncReadJointStatus.
Definition: mock_dxl_driver.cpp:587
ttl_driver::MockDxlDriver::syncWriteTorqueGoal
int syncWriteTorqueGoal(const std::vector< uint8_t > &id_list, const std::vector< uint16_t > &torque_list) override
MockDxlDriver::syncWriteTorqueGoal.
Definition: mock_dxl_driver.cpp:899
ttl_driver::AbstractDxlDriver
Definition: abstract_dxl_driver.hpp:33
ttl_driver::MockDxlDriver::checkModelNumber
int checkModelNumber(uint8_t id, uint16_t &model_number) override
MockDxlDriver::checkModelNumber.
Definition: mock_dxl_driver.cpp:87
ttl_driver::MockDxlDriver::str
std::string str() const override
MockDxlDriver::str.
Definition: mock_dxl_driver.cpp:46
ttl_driver::MockDxlDriver::writeVelocityGoal
int writeVelocityGoal(uint8_t id, uint32_t velocity) override
MockDxlDriver::writeVelocityGoal.
Definition: mock_dxl_driver.cpp:336
ttl_driver::MockDxlDriver
The DxlDriver class.
Definition: mock_dxl_driver.hpp:37
ttl_driver::MockDxlDriver::syncWriteVelocityGoal
int syncWriteVelocityGoal(const std::vector< uint8_t > &id_list, const std::vector< uint32_t > &velocity_list) override
MockDxlDriver::syncWriteVelocityGoal.
Definition: mock_dxl_driver.cpp:422
ttl_driver::MockDxlDriver::readMinPosition
int readMinPosition(uint8_t id, uint32_t &min_pos) override
MockDxlDriver::readMinPosition.
Definition: mock_dxl_driver.cpp:271
ttl_driver::MockDxlDriver::GROUP_SYNC_REDONDANT_ID
static constexpr int GROUP_SYNC_REDONDANT_ID
Definition: mock_dxl_driver.hpp:127
ttl_driver::MockDxlDriver::readMaxPosition
int readMaxPosition(uint8_t id, uint32_t &max_pos) override
MockDxlDriver::readMaxPosition.
Definition: mock_dxl_driver.cpp:286
abstract_dxl_driver.hpp
ttl_driver::MockDxlDriver::writeCustom
int writeCustom(uint16_t address, uint8_t data_len, uint8_t id, uint32_t data) override
MockDxlDriver::writeCustom.
Definition: mock_dxl_driver.cpp:158
ttl_driver::MockDxlDriver::interpretErrorState
std::string interpretErrorState(uint32_t hw_state) const override
MockDxlDriver::interpretErrorState.
Definition: mock_dxl_driver.cpp:127
ttl_driver::MockDxlDriver::readCustom
int readCustom(uint16_t address, uint8_t data_len, uint8_t id, uint32_t &data) override
MockDxlDriver::readCustom.
Definition: mock_dxl_driver.cpp:140
ttl_driver::MockDxlDriver::writeLed
int writeLed(uint8_t id, uint8_t led_value) override
MockDxlDriver::writeLed.
Definition: mock_dxl_driver.cpp:845
ttl_driver::MockDxlDriver::_id_list
std::vector< uint8_t > _id_list
Definition: mock_dxl_driver.hpp:125
ttl_driver::MockDxlDriver::ping
int ping(uint8_t id) override
MockDxlDriver::ping.
Definition: mock_dxl_driver.cpp:60
ttl_driver::MockDxlDriver::changeId
int changeId(uint8_t id, uint8_t new_id) override
MockDxlDriver::changeId.
Definition: mock_dxl_driver.cpp:174
ttl_driver::MockDxlDriver::readHwErrorStatus
int readHwErrorStatus(uint8_t id, uint8_t &hardware_error_status) override
MockDxlDriver::readHwErrorStatus.
Definition: mock_dxl_driver.cpp:522
ttl_driver::MockDxlDriver::readVoltage
int readVoltage(uint8_t id, double &voltage) override
MockDxlDriver::readVoltage.
Definition: mock_dxl_driver.cpp:507
ttl_driver::MockDxlDriver::writeStartupConfiguration
int writeStartupConfiguration(uint8_t id, uint8_t value) override
MockDxlDriver::writeStartupConfiguration.
Definition: mock_dxl_driver.cpp:214
ttl_driver
Definition: abstract_dxl_driver.hpp:30
ttl_driver::MockDxlDriver::writeVelocityProfile
int writeVelocityProfile(uint8_t id, const std::vector< uint32_t > &data_list) override
MockDxlDriver::writeVelocityProfile.
Definition: mock_dxl_driver.cpp:351
ttl_driver::MockDxlDriver::readFirmwareVersion
int readFirmwareVersion(uint8_t id, std::string &version) override
MockDxlDriver::readFirmwareVersion.
Definition: mock_dxl_driver.cpp:256
ttl_driver::MockDxlDriver::LEN_ID_DATA_NOT_SAME
static constexpr int LEN_ID_DATA_NOT_SAME
Definition: mock_dxl_driver.hpp:128
ttl_driver::MockDxlDriver::readPID
int readPID(uint8_t id, std::vector< uint16_t > &data) override
MockDxlDriver::readPID.
Definition: mock_dxl_driver.cpp:757
ttl_driver::MockDxlDriver::syncReadLoad
int syncReadLoad(const std::vector< uint8_t > &id_list, std::vector< uint16_t > &load_list) override
MockDxlDriver::syncReadLoad.
Definition: mock_dxl_driver.cpp:953
ttl_driver::MockDxlDriver::syncReadHwStatus
int syncReadHwStatus(const std::vector< uint8_t > &id_list, std::vector< std::pair< double, uint8_t >> &data_list) override
MockDxlDriver::syncReadHwStatus.
Definition: mock_dxl_driver.cpp:707
ttl_driver::MockDxlDriver::_fake_data
std::shared_ptr< FakeTtlData > _fake_data
Definition: mock_dxl_driver.hpp:124
ttl_driver::MockDxlDriver::syncWriteLed
int syncWriteLed(const std::vector< uint8_t > &id_list, const std::vector< uint8_t > &led_list) override
MockDxlDriver::syncWriteLed.
Definition: mock_dxl_driver.cpp:861
ttl_driver::MockDxlDriver::writeTorqueGoal
int writeTorqueGoal(uint8_t id, uint16_t torque) override
MockDxlDriver::writeTorqueGoal.
Definition: mock_dxl_driver.cpp:883
ttl_driver::MockDxlDriver::readPosition
int readPosition(uint8_t id, uint32_t &present_position) override
MockDxlDriver::readPosition.
Definition: mock_dxl_driver.cpp:464
ttl_driver::MockDxlDriver::syncReadRawVoltage
int syncReadRawVoltage(const std::vector< uint8_t > &id_list, std::vector< double > &voltage_list) override
MockDxlDriver::syncReadRawVoltage.
Definition: mock_dxl_driver.cpp:696
ttl_driver::MockDxlDriver::syncReadVelocity
int syncReadVelocity(const std::vector< uint8_t > &id_list, std::vector< uint32_t > &velocity_list) override
MockDxlDriver::syncReadVelocity.
Definition: mock_dxl_driver.cpp:562
ttl_driver::MockDxlDriver::getModelNumber
int getModelNumber(uint8_t id, uint16_t &model_number) override
MockDxlDriver::getModelNumber.
Definition: mock_dxl_driver.cpp:73
ttl_driver::MockDxlDriver::readControlMode
int readControlMode(uint8_t id, uint8_t &data) override
MockDxlDriver::readControlMode.
Definition: mock_dxl_driver.cpp:826
ttl_driver::MockDxlDriver::syncWritePositionGoal
int syncWritePositionGoal(const std::vector< uint8_t > &id_list, const std::vector< uint32_t > &position_list) override
MockDxlDriver::syncWritePositionGoal get position goal and write it as the current position of each j...
Definition: mock_dxl_driver.cpp:391
ttl_driver::MockDxlDriver::readMoving
int readMoving(uint8_t id, uint8_t &status) override
MockDxlDriver::readMoving.
Definition: mock_dxl_driver.cpp:938
ttl_driver::MockDxlDriver::readVelocity
int readVelocity(uint8_t id, uint32_t &present_velocity) override
MockDxlDriver::readVelocity.
Definition: mock_dxl_driver.cpp:479
fake_ttl_data.hpp


ttl_driver
Author(s): Clement Cocquempot
autogenerated on Fri Mar 6 2026 15:24:15