mock_dxl_driver.cpp
Go to the documentation of this file.
1 /*
2 mock_dxl_driver.cpp
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 
18 #include "dynamixel_sdk/packet_handler.h"
19 #include <cstdint>
20 #include <cstdio>
21 #include <map>
22 #include <memory>
23 #include <set>
24 #include <string>
25 #include <type_traits>
26 #include <utility>
27 #include <vector>
28 
29 namespace ttl_driver
30 {
31 
35 MockDxlDriver::MockDxlDriver(std::shared_ptr<FakeTtlData> data) : _fake_data(std::move(data))
36 {
37  // retrieve list of ids
38  for (auto const &imap : _fake_data->dxl_registers)
39  _id_list.emplace_back(imap.first);
40 }
41 
46 std::string MockDxlDriver::str() const { return "Mock Dynamixel Driver (OK)"; }
47 
48 //*****************************
49 // AbstractTtlDriver interface
50 //*****************************
51 
57 int MockDxlDriver::ping(uint8_t id)
58 {
59  if (std::find(_fake_data->full_id_list.begin(), _fake_data->full_id_list.end(), id) != _fake_data->full_id_list.end())
60  return COMM_SUCCESS;
61  return COMM_TX_FAIL;
62 }
63 
70 int MockDxlDriver::getModelNumber(uint8_t id, uint16_t &model_number)
71 {
72  if (_fake_data->dxl_registers.count(id))
73  model_number = _fake_data->dxl_registers.at(id).model_number;
74  else
75  return COMM_RX_FAIL;
76  return COMM_SUCCESS;
77 }
78 
85 {
86  uint16_t model_number = 0;
87  int ping_result = getModelNumber(id, model_number);
88 
89  if (ping_result == COMM_SUCCESS)
90  {
91  if (model_number)
92  {
94  }
95  }
96 
97  return ping_result;
98 }
99 
105 int MockDxlDriver::scan(std::vector<uint8_t> &id_list)
106 {
107  id_list = _fake_data->full_id_list;
108  return COMM_SUCCESS;
109 }
110 
116 int MockDxlDriver::reboot(uint8_t id) { return ping(id); }
117 
122 std::string MockDxlDriver::interpretErrorState(uint32_t /*hw_state*/) const { return ""; }
123 
132 int MockDxlDriver::readCustom(uint16_t address, uint8_t data_len, uint8_t id, uint32_t &data)
133 {
134  (void)address; // unused
135  (void)data_len; // unused
136  (void)id; // unused
137  (void)data; // unused
138 
139  return COMM_SUCCESS;
140 }
141 
150 int MockDxlDriver::writeCustom(uint16_t address, uint8_t data_len, uint8_t id, uint32_t data)
151 {
152  (void)address; // unused
153  (void)data_len; // unused
154  (void)id; // unused
155  (void)data; // unused
156 
157  return COMM_SUCCESS;
158 }
159 
166 int MockDxlDriver::changeId(uint8_t id, uint8_t new_id)
167 {
168  (void)id; // unused
169  (void)new_id; // unused
170 
171  return COMM_TX_FAIL;
172 }
173 
180 int MockDxlDriver::writeStartupConfiguration(uint8_t id, uint8_t value)
181 {
182  (void)id; // unused
183  (void)value; // unused
184 
185  return COMM_SUCCESS;
186 }
187 
194 int MockDxlDriver::writeTemperatureLimit(uint8_t id, uint8_t temperature_limit)
195 {
196  (void)id; // unused
197  (void)temperature_limit; // unused
198 
199  return COMM_SUCCESS;
200 }
201 
208 int MockDxlDriver::writeShutdownConfiguration(uint8_t id, uint8_t configuration)
209 {
210  (void)id; // unused
211  (void)configuration; // unused
212 
213  return COMM_SUCCESS;
214 }
215 
222 int MockDxlDriver::readFirmwareVersion(uint8_t id, std::string &version)
223 {
224  if (_fake_data->dxl_registers.count(id))
225  version = _fake_data->dxl_registers.at(id).firmware;
226  else
227  return COMM_RX_FAIL;
228  return COMM_SUCCESS;
229 }
230 
237 int MockDxlDriver::readMinPosition(uint8_t id, uint32_t &pos)
238 {
239  if (_fake_data->dxl_registers.count(id))
240  pos = _fake_data->dxl_registers.at(id).min_position;
241  else
242  return COMM_RX_FAIL;
243  return COMM_SUCCESS;
244 }
245 
252 int MockDxlDriver::readMaxPosition(uint8_t id, uint32_t &pos)
253 {
254  if (_fake_data->dxl_registers.count(id))
255  pos = _fake_data->dxl_registers.at(id).max_position;
256  else
257  return COMM_RX_FAIL;
258  return COMM_SUCCESS;
259 }
260 
261 // ram write
262 
269 int MockDxlDriver::writeTorquePercentage(uint8_t id, uint8_t torque_enable)
270 {
271  if (_fake_data->dxl_registers.count(id))
272  _fake_data->dxl_registers.at(id).torque = torque_enable;
273  else if (_fake_data->stepper_registers.count(id))
274  _fake_data->stepper_registers.at(id).torque = torque_enable;
275  else
276  return COMM_TX_ERROR;
277 
278  return COMM_SUCCESS;
279 }
280 
287 int MockDxlDriver::writePositionGoal(uint8_t id, uint32_t position)
288 {
289  if (_fake_data->dxl_registers.count(id))
290  _fake_data->dxl_registers.at(id).position = position;
291  else
292  return COMM_RX_FAIL;
293  return COMM_SUCCESS;
294 }
295 
302 int MockDxlDriver::writeVelocityGoal(uint8_t id, uint32_t velocity)
303 {
304  if (_fake_data->dxl_registers.count(id))
305  _fake_data->dxl_registers.at(id).velocity = velocity;
306  else
307  return COMM_RX_FAIL;
308  return COMM_SUCCESS;
309 }
310 
317 int MockDxlDriver::writeVelocityProfile(uint8_t id, const std::vector<uint32_t> &data_list)
318 {
319  (void)data_list;
320  int res = COMM_RX_FAIL;
321  if (_fake_data->dxl_registers.count(id))
322  {
323  res = COMM_SUCCESS;
324  }
325 
326  return res;
327 }
328 
335 int MockDxlDriver::syncWriteTorquePercentage(const std::vector<uint8_t> &id_list, const std::vector<uint8_t> &torque_percentage_list)
336 {
337  // Create a map to store the frequency of each element in vector
338  std::set<uint8_t> countSet;
339  // Iterate over the vector and store the frequency of each element in map
340  for (size_t i = 0; i < id_list.size(); i++)
341  {
342  auto result = countSet.insert(id_list.at(i));
343  if (!result.second)
344  return GROUP_SYNC_REDONDANT_ID; // redondant id
345  writeTorquePercentage(id_list.at(i), torque_percentage_list.at(i));
346  }
347  return COMM_SUCCESS;
348 }
349 
356 int MockDxlDriver::syncWritePositionGoal(const std::vector<uint8_t> &id_list, const std::vector<uint32_t> &position_list)
357 {
358  if (id_list.size() != position_list.size())
359  return LEN_ID_DATA_NOT_SAME;
360 
361  // Create a map to store the frequency of each element in id_list. It helps find out which ID is redondant
362  std::set<uint8_t> countSet;
363  for (size_t i = 0; i < id_list.size(); i++)
364  {
365  if (_fake_data->dxl_registers.count(id_list.at(i)))
366  _fake_data->dxl_registers.at(id_list.at(i)).position = position_list.at(i);
367  else if (_fake_data->stepper_registers.count(id_list.at(i)))
368  _fake_data->stepper_registers.at(id_list.at(i)).position = position_list.at(i);
369  else
370  return COMM_TX_ERROR;
371  // write goal position as the current position
372 
373  auto result = countSet.insert(id_list[i]);
374  if (!result.second)
375  return GROUP_SYNC_REDONDANT_ID; // redondant id
376  }
377  return COMM_SUCCESS;
378 }
379 
386 int MockDxlDriver::syncWriteVelocityGoal(const std::vector<uint8_t> &id_list, const std::vector<uint32_t> &velocity_list)
387 {
388  if (id_list.size() != velocity_list.size())
389  return LEN_ID_DATA_NOT_SAME;
390 
391  // Create a map to store the frequency of each element in id_list. It helps find out which ID is redondant
392  std::set<uint8_t> countSet;
393  for (size_t i = 0; i < id_list.size(); i++)
394  {
395  if (!_fake_data->dxl_registers.count(id_list.at(i)))
396  return COMM_TX_ERROR;
397  // write goal position as the current position
398  _fake_data->dxl_registers.at(id_list.at(i)).velocity = velocity_list.at(i);
399 
400  auto result = countSet.insert(id_list[i]);
401  if (!result.second)
402  return GROUP_SYNC_REDONDANT_ID; // redondant id
403  }
404  return COMM_SUCCESS;
405 }
406 
407 int MockDxlDriver::readVelocityProfile(uint8_t id, std::vector<uint32_t> &data_list)
408 {
409  data_list.clear();
410  if (_fake_data->dxl_registers.count(id))
411  return COMM_RX_FAIL;
412 
413  data_list.emplace_back(0);
414  data_list.emplace_back(0);
415 
416  return COMM_SUCCESS;
417 }
418 
419 // ram read
420 
427 int MockDxlDriver::readPosition(uint8_t id, uint32_t &present_position)
428 {
429  if (_fake_data->dxl_registers.count(id))
430  present_position = _fake_data->dxl_registers.at(id).position;
431  else
432  return COMM_RX_FAIL;
433  return COMM_SUCCESS;
434 }
435 
442 int MockDxlDriver::readVelocity(uint8_t id, uint32_t &present_velocity)
443 {
444  if (_fake_data->dxl_registers.count(id))
445  present_velocity = _fake_data->dxl_registers.at(id).velocity;
446  return COMM_SUCCESS;
447 }
448 
455 int MockDxlDriver::readTemperature(uint8_t id, uint8_t &temperature)
456 {
457  if (_fake_data->dxl_registers.count(id))
458  temperature = _fake_data->dxl_registers.at(id).temperature;
459  else
460  return COMM_RX_FAIL;
461  return COMM_SUCCESS;
462 }
463 
470 int MockDxlDriver::readVoltage(uint8_t id, double &voltage)
471 {
472  if (_fake_data->dxl_registers.count(id))
473  voltage = _fake_data->dxl_registers.at(id).voltage;
474  else
475  return COMM_RX_FAIL;
476  return COMM_SUCCESS;
477 }
478 
485 int MockDxlDriver::readHwErrorStatus(uint8_t id, uint8_t &hardware_error_status)
486 {
487  if (_fake_data->dxl_registers.count(id))
488  return COMM_RX_FAIL;
489 
490  hardware_error_status = 0;
491  return COMM_SUCCESS;
492 }
493 
500 int MockDxlDriver::syncReadPosition(const std::vector<uint8_t> &id_list, std::vector<uint32_t> &position_list)
501 {
502  std::set<uint8_t> countSet;
503  for (auto &id : id_list)
504  {
505  if (_fake_data->dxl_registers.count(id))
506  position_list.emplace_back(_fake_data->dxl_registers.at(id).position);
507  else if (_fake_data->stepper_registers.count(id))
508  position_list.emplace_back(_fake_data->stepper_registers.at(id).position);
509  else
510  return COMM_RX_FAIL;
511 
512  auto result = countSet.insert(id);
513  if (!result.second)
514  return GROUP_SYNC_REDONDANT_ID; // redondant id
515  }
516  return COMM_SUCCESS;
517 }
518 
525 int MockDxlDriver::syncReadVelocity(const std::vector<uint8_t> &id_list, std::vector<uint32_t> &velocity_list)
526 {
527  std::set<uint8_t> countSet;
528  for (auto &id : id_list)
529  {
530  if (_fake_data->dxl_registers.count(id))
531  velocity_list.emplace_back(_fake_data->dxl_registers.at(id).velocity);
532  else if (_fake_data->stepper_registers.count(id))
533  velocity_list.emplace_back(_fake_data->stepper_registers.at(id).velocity);
534  else
535  return COMM_TX_ERROR;
536  auto result = countSet.insert(id);
537  if (!result.second)
538  return GROUP_SYNC_REDONDANT_ID; // redondant id
539  }
540 
541  return COMM_SUCCESS;
542 }
543 
550 int MockDxlDriver::syncReadJointStatus(const std::vector<uint8_t> &id_list, std::vector<std::array<uint32_t, 2>> &data_array_list)
551 {
552  std::set<uint8_t> countSet;
553  data_array_list.clear();
554  for (auto &id : id_list)
555  {
556  if (_fake_data->dxl_registers.count(id))
557  {
558  std::array<uint32_t, 2> blocks{};
559 
560  blocks.at(0) = _fake_data->dxl_registers.at(id).velocity;
561  blocks.at(1) = _fake_data->dxl_registers.at(id).position;
562 
563  data_array_list.emplace_back(blocks);
564  }
565  else if (_fake_data->stepper_registers.count(id))
566  {
567  std::array<uint32_t, 2> blocks{};
568 
569  blocks.at(0) = _fake_data->stepper_registers.at(id).velocity;
570  blocks.at(1) = _fake_data->stepper_registers.at(id).position;
571 
572  data_array_list.emplace_back(blocks);
573  }
574  else
575  return COMM_RX_FAIL;
576  auto result = countSet.insert(id);
577  if (!result.second)
578  return GROUP_SYNC_REDONDANT_ID; // redondant id
579  }
580  return COMM_SUCCESS;
581 }
582 
589 int MockDxlDriver::syncReadFirmwareVersion(const std::vector<uint8_t> &id_list, std::vector<std::string> &firmware_list)
590 {
591  std::set<uint8_t> countSet;
592  for (auto &id : id_list)
593  {
594  if (!_fake_data->dxl_registers.count(id))
595  return COMM_TX_ERROR;
596 
597  firmware_list.emplace_back(_fake_data->dxl_registers.at(id).firmware);
598 
599  auto result = countSet.insert(id);
600  if (!result.second)
601  return GROUP_SYNC_REDONDANT_ID; // redondant id
602  }
603  return COMM_SUCCESS;
604 }
605 
612 int MockDxlDriver::syncReadTemperature(const std::vector<uint8_t> &id_list, std::vector<uint8_t> &temperature_list)
613 {
614  std::set<uint8_t> countSet;
615  for (auto &id : id_list)
616  {
617  if (!_fake_data->dxl_registers.count(id))
618  return COMM_TX_ERROR;
619 
620  temperature_list.emplace_back(_fake_data->dxl_registers.at(id).temperature);
621 
622  auto result = countSet.insert(id);
623  if (!result.second)
624  return GROUP_SYNC_REDONDANT_ID; // redondant id
625  }
626  return COMM_SUCCESS;
627 }
628 
635 int MockDxlDriver::syncReadVoltage(const std::vector<uint8_t> &id_list, std::vector<double> &voltage_list)
636 {
637  std::set<uint8_t> countSet;
638  for (auto &id : id_list)
639  {
640  if (!_fake_data->dxl_registers.count(id))
641  return COMM_TX_ERROR;
642 
643  voltage_list.emplace_back(_fake_data->dxl_registers.at(id).voltage);
644 
645  auto result = countSet.insert(id);
646  if (!result.second)
647  return GROUP_SYNC_REDONDANT_ID; // redondant id
648  }
649  return COMM_SUCCESS;
650 }
651 
658 int MockDxlDriver::syncReadRawVoltage(const std::vector<uint8_t> &id_list, std::vector<double> &voltage_list) { return syncReadVoltage(id_list, voltage_list); }
659 
666 int MockDxlDriver::syncReadHwStatus(const std::vector<uint8_t> &id_list, std::vector<std::pair<double, uint8_t>> &data_list)
667 {
668  data_list.clear();
669 
670  std::set<uint8_t> countSet;
671 
672  for (auto &id : id_list)
673  {
674  if (_fake_data->dxl_registers.count(id))
675  {
676  double voltage = _fake_data->dxl_registers.at(id).voltage;
677  uint8_t temperature = _fake_data->dxl_registers.at(id).temperature;
678  data_list.emplace_back(std::make_pair(voltage, temperature));
679  }
680  else
681  return COMM_RX_FAIL;
682 
683  auto result = countSet.insert(id);
684  if (!result.second)
685  return GROUP_SYNC_REDONDANT_ID; // redondant id
686  }
687  return COMM_SUCCESS;
688 }
689 
696 int MockDxlDriver::syncReadHwErrorStatus(const std::vector<uint8_t> &id_list, std::vector<uint8_t> &hw_error_list)
697 {
698  std::set<uint8_t> countSet;
699  for (auto &id : id_list)
700  {
701  hw_error_list.emplace_back(0);
702  auto result = countSet.insert(id);
703  if (!result.second)
704  return GROUP_SYNC_REDONDANT_ID; // redondant id
705  }
706  return COMM_SUCCESS;
707 }
708 
715 int MockDxlDriver::readPID(uint8_t id, std::vector<uint16_t> &data)
716 {
717  int result = COMM_RX_FAIL;
718 
719  data.clear();
720  if (_fake_data->dxl_registers.count(id))
721  {
722  data.emplace_back(_fake_data->dxl_registers.at(id).position_p_gain);
723  data.emplace_back(_fake_data->dxl_registers.at(id).position_i_gain);
724  data.emplace_back(_fake_data->dxl_registers.at(id).position_d_gain);
725  data.emplace_back(_fake_data->dxl_registers.at(id).velocity_p_gain);
726  data.emplace_back(_fake_data->dxl_registers.at(id).velocity_i_gain);
727  data.emplace_back(_fake_data->dxl_registers.at(id).ff1_gain);
728  data.emplace_back(_fake_data->dxl_registers.at(id).ff2_gain);
729 
730  result = COMM_SUCCESS;
731  }
732 
733  return result;
734 }
735 
742 int MockDxlDriver::writePID(uint8_t id, const std::vector<uint16_t> &data)
743 {
744  int result = COMM_RX_FAIL;
745 
746  if (_fake_data->dxl_registers.count(id))
747  {
748  _fake_data->dxl_registers.at(id).position_p_gain = data.at(0);
749  _fake_data->dxl_registers.at(id).position_i_gain = data.at(1);
750  _fake_data->dxl_registers.at(id).position_d_gain = data.at(2);
751  _fake_data->dxl_registers.at(id).velocity_p_gain = data.at(3);
752  _fake_data->dxl_registers.at(id).velocity_i_gain = data.at(4);
753  _fake_data->dxl_registers.at(id).ff1_gain = data.at(5);
754  _fake_data->dxl_registers.at(id).ff2_gain = data.at(6);
755 
756  result = COMM_SUCCESS;
757  }
758 
759  return result;
760 }
761 
768 int MockDxlDriver::writeControlMode(uint8_t id, uint8_t data)
769 {
770  (void)data; // unused
771 
772  if (!_fake_data->dxl_registers.count(id))
773  return COMM_TX_ERROR;
774 
775  return COMM_SUCCESS;
776 }
777 
784 int MockDxlDriver::readControlMode(uint8_t id, uint8_t &data)
785 {
786  (void)data; // unused
787 
788  if (!_fake_data->dxl_registers.count(id))
789  return COMM_TX_ERROR;
790 
791  return COMM_SUCCESS;
792 }
793 
794 //*****************************
795 // AbstractDxlDriver interface
796 //*****************************
803 int MockDxlDriver::writeLed(uint8_t id, uint8_t led_value)
804 {
805  (void)led_value; // unused
806 
807  if (!_fake_data->dxl_registers.count(id))
808  return COMM_TX_ERROR;
809 
810  return COMM_SUCCESS;
811 }
812 
819 int MockDxlDriver::syncWriteLed(const std::vector<uint8_t> &id_list, const std::vector<uint8_t> &led_list)
820 {
821  (void)led_list; // unused
822 
823  std::set<uint8_t> countSet;
824  for (auto &id : id_list)
825  {
826  if (!_fake_data->dxl_registers.count(id))
827  return COMM_TX_ERROR;
828  auto result = countSet.insert(id);
829  if (!result.second)
830  return GROUP_SYNC_REDONDANT_ID; // redondant id
831  }
832  return COMM_SUCCESS;
833 }
834 
841 int MockDxlDriver::writeTorqueGoal(uint8_t id, uint16_t torque)
842 {
843  (void)torque; // unused
844 
845  if (!_fake_data->dxl_registers.count(id))
846  return COMM_TX_ERROR;
847 
848  return COMM_SUCCESS;
849 }
850 
857 int MockDxlDriver::syncWriteTorqueGoal(const std::vector<uint8_t> &id_list, const std::vector<uint16_t> &torque_list)
858 {
859  (void)torque_list; // unused
860 
861  std::set<uint8_t> countSet;
862  for (auto &id : id_list)
863  {
864  if (!_fake_data->dxl_registers.count(id))
865  return COMM_TX_ERROR;
866 
867  auto result = countSet.insert(id);
868 
869  if (!result.second)
870  return GROUP_SYNC_REDONDANT_ID; // redondant id
871  }
872  return COMM_SUCCESS;
873 }
874 
881 int MockDxlDriver::readLoad(uint8_t id, uint16_t &present_load)
882 {
883  (void)present_load; // unused
884 
885  if (_fake_data->dxl_registers.count(id))
886  return COMM_SUCCESS;
887  return COMM_RX_FAIL;
888 }
889 
896 int MockDxlDriver::readMoving(uint8_t id, uint8_t &status)
897 {
898  (void)status; // unused
899 
900  if (_fake_data->dxl_registers.count(id))
901  return COMM_SUCCESS;
902  return COMM_RX_FAIL;
903 }
904 
911 int MockDxlDriver::syncReadLoad(const std::vector<uint8_t> &id_list, std::vector<uint16_t> &load_list)
912 {
913  load_list = {};
914  for (size_t i = 0; i < id_list.size(); i++)
915  load_list.emplace_back(0);
916  return COMM_SUCCESS;
917 }
918 
924 std::string MockDxlDriver::interpretFirmwareVersion(uint32_t fw_version) const { return std::to_string(fw_version); }
925 
926 } // namespace ttl_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:612
ttl_driver::MockDxlDriver::MockDxlDriver
MockDxlDriver(std::shared_ptr< FakeTtlData > data)
MockDxlDriver::MockDxlDriver.
Definition: mock_dxl_driver.cpp:35
mock_dxl_driver.hpp
ttl_driver::MockDxlDriver::writeTemperatureLimit
int writeTemperatureLimit(uint8_t id, uint8_t temperature_limit) override
MockDxlDriver::writeTemperatureLimit.
Definition: mock_dxl_driver.cpp:194
ttl_driver::MockDxlDriver::interpretFirmwareVersion
std::string interpretFirmwareVersion(uint32_t fw_version) const override
MockDxlDriver::interpretFirmwareVersion.
Definition: mock_dxl_driver.cpp:924
ttl_driver::MockDxlDriver::readVelocityProfile
int readVelocityProfile(uint8_t id, std::vector< uint32_t > &data_list) override
Definition: mock_dxl_driver.cpp:407
ttl_driver::MockDxlDriver::writeTorquePercentage
int writeTorquePercentage(uint8_t id, uint8_t torque_percentage) override
MockDxlDriver::writeTorquePercentage.
Definition: mock_dxl_driver.cpp:269
ttl_driver::MockDxlDriver::scan
int scan(std::vector< uint8_t > &id_list) override
MockDxlDriver::scan.
Definition: mock_dxl_driver.cpp:105
ttl_driver::MockDxlDriver::readTemperature
int readTemperature(uint8_t id, uint8_t &temperature) override
MockDxlDriver::readTemperature.
Definition: mock_dxl_driver.cpp:455
ttl_driver::MockDxlDriver::readLoad
int readLoad(uint8_t id, uint16_t &present_load) override
MockDxlDriver::readLoad.
Definition: mock_dxl_driver.cpp:881
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:696
ttl_driver::MockDxlDriver::writeControlMode
int writeControlMode(uint8_t id, uint8_t data) override
MockDxlDriver::writeControlMode.
Definition: mock_dxl_driver.cpp:768
ttl_driver::MockDxlDriver::writeShutdownConfiguration
int writeShutdownConfiguration(uint8_t id, uint8_t configuration) override
MockDxlDriver::writeShutdownConfiguration.
Definition: mock_dxl_driver.cpp:208
ttl_driver::MockDxlDriver::reboot
int reboot(uint8_t id) override
MockDxlDriver::reboot.
Definition: mock_dxl_driver.cpp:116
ttl_driver::MockDxlDriver::writePID
int writePID(uint8_t id, const std::vector< uint16_t > &data) override
MockDxlDriver::writePID.
Definition: mock_dxl_driver.cpp:742
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:635
ttl_driver::MockDxlDriver::writePositionGoal
int writePositionGoal(uint8_t id, uint32_t position) override
MockDxlDriver::writePositionGoal.
Definition: mock_dxl_driver.cpp:287
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:589
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:500
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:335
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:550
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:857
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:302
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:386
ttl_driver::MockDxlDriver::readMinPosition
int readMinPosition(uint8_t id, uint32_t &min_pos) override
MockDxlDriver::readMinPosition.
Definition: mock_dxl_driver.cpp:237
ttl_driver::MockDxlDriver::GROUP_SYNC_REDONDANT_ID
static constexpr int GROUP_SYNC_REDONDANT_ID
Definition: mock_dxl_driver.hpp:125
ttl_driver::MockDxlDriver::readMaxPosition
int readMaxPosition(uint8_t id, uint32_t &max_pos) override
MockDxlDriver::readMaxPosition.
Definition: mock_dxl_driver.cpp:252
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:150
ttl_driver::MockDxlDriver::interpretErrorState
std::string interpretErrorState(uint32_t hw_state) const override
MockDxlDriver::interpretErrorState.
Definition: mock_dxl_driver.cpp:122
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:132
ttl_driver::MockDxlDriver::writeLed
int writeLed(uint8_t id, uint8_t led_value) override
MockDxlDriver::writeLed.
Definition: mock_dxl_driver.cpp:803
ttl_driver::MockDxlDriver::_id_list
std::vector< uint8_t > _id_list
Definition: mock_dxl_driver.hpp:123
ttl_driver::MockDxlDriver::ping
int ping(uint8_t id) override
MockDxlDriver::ping.
Definition: mock_dxl_driver.cpp:57
ttl_driver::MockDxlDriver::changeId
int changeId(uint8_t id, uint8_t new_id) override
MockDxlDriver::changeId.
Definition: mock_dxl_driver.cpp:166
ttl_driver::MockDxlDriver::readHwErrorStatus
int readHwErrorStatus(uint8_t id, uint8_t &hardware_error_status) override
MockDxlDriver::readHwErrorStatus.
Definition: mock_dxl_driver.cpp:485
ttl_driver::MockDxlDriver::readVoltage
int readVoltage(uint8_t id, double &voltage) override
MockDxlDriver::readVoltage.
Definition: mock_dxl_driver.cpp:470
ttl_driver::MockDxlDriver::writeStartupConfiguration
int writeStartupConfiguration(uint8_t id, uint8_t value) override
MockDxlDriver::writeStartupConfiguration.
Definition: mock_dxl_driver.cpp:180
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:317
ttl_driver::MockDxlDriver::checkModelNumber
int checkModelNumber(uint8_t id) override
MockDxlDriver::checkModelNumber.
Definition: mock_dxl_driver.cpp:84
ttl_driver::MockDxlDriver::readFirmwareVersion
int readFirmwareVersion(uint8_t id, std::string &version) override
MockDxlDriver::readFirmwareVersion.
Definition: mock_dxl_driver.cpp:222
ttl_driver::AbstractTtlDriver::PING_WRONG_MODEL_NUMBER
static constexpr int PING_WRONG_MODEL_NUMBER
Definition: abstract_ttl_driver.hpp:101
ttl_driver::MockDxlDriver::LEN_ID_DATA_NOT_SAME
static constexpr int LEN_ID_DATA_NOT_SAME
Definition: mock_dxl_driver.hpp:126
ttl_driver::MockDxlDriver::readPID
int readPID(uint8_t id, std::vector< uint16_t > &data) override
MockDxlDriver::readPID.
Definition: mock_dxl_driver.cpp:715
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:911
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:666
ttl_driver::MockDxlDriver::_fake_data
std::shared_ptr< FakeTtlData > _fake_data
Definition: mock_dxl_driver.hpp:122
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:819
ttl_driver::MockDxlDriver::writeTorqueGoal
int writeTorqueGoal(uint8_t id, uint16_t torque) override
MockDxlDriver::writeTorqueGoal.
Definition: mock_dxl_driver.cpp:841
ttl_driver::MockDxlDriver::readPosition
int readPosition(uint8_t id, uint32_t &present_position) override
MockDxlDriver::readPosition.
Definition: mock_dxl_driver.cpp:427
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:658
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:525
ttl_driver::MockDxlDriver::getModelNumber
int getModelNumber(uint8_t id, uint16_t &model_number) override
MockDxlDriver::getModelNumber.
Definition: mock_dxl_driver.cpp:70
ttl_driver::MockDxlDriver::readControlMode
int readControlMode(uint8_t id, uint8_t &data) override
MockDxlDriver::readControlMode.
Definition: mock_dxl_driver.cpp:784
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:356
ttl_driver::MockDxlDriver::readMoving
int readMoving(uint8_t id, uint8_t &status) override
MockDxlDriver::readMoving.
Definition: mock_dxl_driver.cpp:896
ttl_driver::MockDxlDriver::readVelocity
int readVelocity(uint8_t id, uint32_t &present_velocity) override
MockDxlDriver::readVelocity.
Definition: mock_dxl_driver.cpp:442


ttl_driver
Author(s): Clement Cocquempot
autogenerated on Wed May 21 2025 08:30:14