11/*
2- * Copyright 2011 Shadow Robot Company Ltd.
2+ * Copyright 2011, 2023 Shadow Robot Company Ltd.
33*
44* This program is free software: you can redistribute it and/or modify it
55* under the terms of the GNU General Public License as published by the Free
3333#include < boost/algorithm/string.hpp>
3434#include < boost/algorithm/string/find_iterator.hpp>
3535#include < boost/circular_buffer.hpp>
36+ #include < geometry_msgs/Point.h>
3637#include < sstream>
3738
3839#include < ros/ros.h>
@@ -49,13 +50,15 @@ class GenericTactileData
4950 GenericTactileData (bool tactile_data_valid, int sample_frequency,
5051 std::string manufacturer, std::string serial_number,
5152 int software_version_current, int software_version_server,
52- bool software_version_modified, std::string pcb_version)
53- : tactile_data_valid(tactile_data_valid), sample_frequency(sample_frequency),
54- manufacturer (manufacturer), serial_number(serial_number),
55- software_version_current(software_version_current),
56- software_version_server(software_version_server),
57- software_version_modified(software_version_modified),
58- pcb_version(pcb_version)
53+ bool software_version_modified, std::string pcb_version) :
54+ tactile_data_valid (tactile_data_valid),
55+ sample_frequency (sample_frequency),
56+ manufacturer (manufacturer),
57+ serial_number (serial_number),
58+ software_version_current (software_version_current),
59+ software_version_server (software_version_server),
60+ software_version_modified (software_version_modified),
61+ pcb_version (pcb_version)
5962 {
6063 };
6164
@@ -85,12 +88,12 @@ class GenericTactileData
8588 */
8689 void set_software_version (char * raw_version)
8790 {
88- // New Git format: \n\n 20 bytes Git revision
91+ // New Git format: \n\n 20 bytes Git revision + 1 byte for status check enable flag
8992 if (raw_version[0 ] == ' \n ' && raw_version[1 ] == ' \n ' )
9093 {
9194 // Convert Git revision to hexadecimal long hash
9295 std::stringstream git_revision;
93- for (int i = 2 ; i < 22 ; i++)
96+ for (int i = 2 ; i < 23 ; i++)
9497 {
9598 git_revision << std::setfill (' 0' ) << std::setw (2 ) << std::hex <<
9699 static_cast <int >(static_cast <uint8_t >(raw_version[i]));
@@ -177,32 +180,35 @@ class GenericTactileData
177180 }
178181};
179182
180- class PST3Data
181- :
182- public GenericTactileData
183+ class PST3Data :
184+ public GenericTactileData
183185{
184186public:
185- PST3Data ()
186- : GenericTactileData()
187+ PST3Data () :
188+ GenericTactileData ()
187189 {
188190 };
189191
190- PST3Data (const PST3Data &pst3)
191- : GenericTactileData(pst3.tactile_data_valid, pst3.sample_frequency,
192- pst3.manufacturer, pst3.serial_number,
193- pst3.software_version_current,
194- pst3.software_version_server,
195- pst3.software_version_modified,
196- pst3.pcb_version),
197- pressure (pst3.pressure), temperature(pst3.temperature),
198- debug_1(pst3.debug_1), debug_2(pst3.debug_2),
199- pressure_raw(pst3.pressure_raw), zero_tracking(pst3.zero_tracking), dac_value(pst3.dac_value)
192+ PST3Data (const PST3Data &pst3) :
193+ GenericTactileData (pst3.tactile_data_valid, pst3.sample_frequency,
194+ pst3.manufacturer, pst3.serial_number,
195+ pst3.software_version_current,
196+ pst3.software_version_server,
197+ pst3.software_version_modified,
198+ pst3.pcb_version),
199+ pressure (pst3.pressure),
200+ temperature (pst3.temperature),
201+ debug_1 (pst3.debug_1),
202+ debug_2 (pst3.debug_2),
203+ pressure_raw (pst3.pressure_raw),
204+ zero_tracking (pst3.zero_tracking),
205+ dac_value (pst3.dac_value)
200206 {
201207 };
202208
203209
204- explicit PST3Data (const GenericTactileData >d)
205- : GenericTactileData(gtd.tactile_data_valid, gtd.sample_frequency,
210+ explicit PST3Data (const GenericTactileData >d) :
211+ GenericTactileData(gtd.tactile_data_valid, gtd.sample_frequency,
206212 gtd.manufacturer, gtd.serial_number,
207213 gtd.software_version_current,
208214 gtd.software_version_server,
@@ -245,41 +251,42 @@ class PST3Data
245251 };
246252};
247253
248- class BiotacData
249- :
250- public GenericTactileData
254+ class BiotacData :
255+ public GenericTactileData
251256{
252257public:
253- BiotacData ()
254- : GenericTactileData()
258+ BiotacData () :
259+ GenericTactileData ()
255260 {
256261 pac_buffer_ = boost::circular_buffer<int16_t >(pac_size_);
257262 pac_vector_.reserve (pac_size_);
258263 };
259264
260- BiotacData (const BiotacData &btac)
261- : GenericTactileData(btac.tactile_data_valid, btac.sample_frequency,
262- btac.manufacturer, btac.serial_number,
263- btac.software_version_current,
264- btac.software_version_server,
265- btac.software_version_modified,
266- btac.pcb_version),
267- pac0 (btac.pac0), pac1(btac.pac1),
268- pdc(btac.pdc), tac(btac.tac),
269- tdc(btac.tdc)
265+ BiotacData (const BiotacData &btac) :
266+ GenericTactileData (btac.tactile_data_valid, btac.sample_frequency,
267+ btac.manufacturer, btac.serial_number,
268+ btac.software_version_current,
269+ btac.software_version_server,
270+ btac.software_version_modified,
271+ btac.pcb_version),
272+ pac0 (btac.pac0),
273+ pac1 (btac.pac1),
274+ pdc (btac.pdc),
275+ tac (btac.tac),
276+ tdc (btac.tdc)
270277 {
271278 electrodes = std::vector<int16_t >(btac.electrodes );
272279 pac_vector_ = std::vector<int16_t >(btac.pac_vector_ );
273280 pac_buffer_ = boost::circular_buffer<int16_t >(btac.pac_buffer_ );
274281 };
275282
276- explicit BiotacData (const GenericTactileData >d)
277- : GenericTactileData(gtd.tactile_data_valid, gtd.sample_frequency,
278- gtd.manufacturer, gtd.serial_number,
279- gtd.software_version_current,
280- gtd.software_version_server,
281- gtd.software_version_modified,
282- gtd.pcb_version)
283+ explicit BiotacData (const GenericTactileData >d) :
284+ GenericTactileData(gtd.tactile_data_valid, gtd.sample_frequency,
285+ gtd.manufacturer, gtd.serial_number,
286+ gtd.software_version_current,
287+ gtd.software_version_server,
288+ gtd.software_version_modified,
289+ gtd.pcb_version)
283290 {
284291 pac_buffer_ = boost::circular_buffer<int16_t >(pac_size_);
285292 pac_vector_.reserve (pac_size_);
@@ -321,23 +328,22 @@ class BiotacData
321328 std::vector<int16_t > pac_vector_;
322329};
323330
324- class UBI0Data
325- :
326- public GenericTactileData
331+ class UBI0Data :
332+ public GenericTactileData
327333{
328334public:
329- UBI0Data ()
330- : GenericTactileData()
335+ UBI0Data () :
336+ GenericTactileData ()
331337 {
332338 };
333339
334- UBI0Data (const UBI0Data &ubi0)
335- : GenericTactileData(ubi0.tactile_data_valid, ubi0.sample_frequency,
336- ubi0.manufacturer, ubi0.serial_number,
337- ubi0.software_version_current,
338- ubi0.software_version_server,
339- ubi0.software_version_modified,
340- ubi0.pcb_version)
340+ UBI0Data (const UBI0Data &ubi0) :
341+ GenericTactileData (ubi0.tactile_data_valid, ubi0.sample_frequency,
342+ ubi0.manufacturer, ubi0.serial_number,
343+ ubi0.software_version_current,
344+ ubi0.software_version_server,
345+ ubi0.software_version_modified,
346+ ubi0.pcb_version)
341347 {
342348 for (unsigned int i = 0 ; i < ubi0.distal .size (); i++)
343349 {
@@ -353,8 +359,8 @@ class UBI0Data
353359 }
354360 };
355361
356- explicit UBI0Data (const GenericTactileData >d)
357- : GenericTactileData(gtd.tactile_data_valid, gtd.sample_frequency,
362+ explicit UBI0Data (const GenericTactileData >d) :
363+ GenericTactileData(gtd.tactile_data_valid, gtd.sample_frequency,
358364 gtd.manufacturer, gtd.serial_number,
359365 gtd.software_version_current,
360366 gtd.software_version_server,
@@ -395,11 +401,40 @@ class UBI0PalmData
395401 boost::array<uint16_t , 16ul > palm;
396402};
397403
404+ class MSTData :
405+ public GenericTactileData
406+ {
407+ public:
408+ MSTData () :
409+ GenericTactileData ()
410+ {
411+ };
412+
413+ explicit MSTData (const GenericTactileData >d) :
414+ GenericTactileData(gtd.tactile_data_valid, gtd.sample_frequency,
415+ gtd.manufacturer, gtd.serial_number,
416+ gtd.software_version_current,
417+ gtd.software_version_server,
418+ gtd.software_version_modified,
419+ gtd.pcb_version)
420+ {
421+ };
422+
423+ ~MSTData ()
424+ {
425+ };
426+
427+ std::vector<geometry_msgs::Point> magnetic_data;
428+ std::vector<float > temperature_data;
429+ int8_t status_check;
430+ };
431+
398432struct AllTactileData
399433{
400434 std::string type;
401435 BiotacData biotac;
402436 PST3Data pst;
437+ MSTData mst;
403438 UBI0Data ubi0;
404439};
405440} // namespace tactiles
0 commit comments