iCub-main
Loading...
Searching...
No Matches
serviceParser.h
Go to the documentation of this file.
1// -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
2
3#ifndef __serviceParser_h__
4#define __serviceParser_h__
5
6#include <stdio.h>
7#include <iostream>
8#include <vector>
9#include <list>
10#include <string>
11
12#include <yarp/os/Searchable.h>
13
14#include "EoBoards.h"
15#include "EoManagement.h"
16#include "EoAnalogSensors.h"
17#include "EoMotionControl.h"
18
19
20
21
22#define SERVICE_PARSER_USE_MC
23
24typedef struct
25{
26 eOmn_serv_parameter_t ethservice;
28 std::string nameOfMais;
30
31
32typedef struct
33{
34 eOmn_serv_parameter_t ethservice;
37 std::string nameOfStrain;
38 eObrd_cantype_t boardType;
40
41typedef struct
42{
43 eOmn_serv_parameter_t ethservice;
46 std::string nameOfStrain;
47 eObrd_cantype_t boardType;
49 std::string frameName;
51
52typedef struct
53{
54 double accFactor;
55 double gyrFactor;
56 double magFactor;
57 double eulFactor;
59
60typedef struct
61{
62 eOmn_serv_parameter_t ethservice;
64 std::vector<eOas_inertial3_descriptor_t> inertials; //TODO to remove because information is already stored!
65 std::vector<std::string> id;
66 std::vector<std::string> sensorName;
69
70
71typedef struct
72{
73 eOmn_serv_parameter_t ethservice;
75 std::vector<std::string> idList;
77
78
79typedef struct
80{
81 eOmn_serv_parameter_t ethservice;
83 std::vector<std::string> idList;
84 std::vector<std::string> sensorName;
86
87
88#if defined(SERVICE_PARSER_USE_MC)
89typedef struct
90{
91 eOmn_serv_parameter_t ethservice;
92 uint32_t id; // only for test: this param contains num of board
94#endif
95
97{
98 eObrd_cantype_t type;
99 eObrd_protocolversion_t protocol;
100 eObrd_firmwareversion_t firmware;
102 void clear() { type = eobrd_cantype_none; protocol.major = 0; protocol.minor = 0; firmware.major = 0; firmware.minor = 0; firmware.build = 0; }
103};
104
106{
107 eObrd_type_t type;
108 eObrd_protocolversion_t protocol;
109 eObrd_firmwareversion_t firmware;
110 servBoard_t() { type = eobrd_none; protocol.major = 0; protocol.minor = 0; firmware.major = 0; firmware.minor = 0; firmware.build = 0; }
111};
112
114{
117 void clear() { canboard.clear(); canboard.type = eobrd_cantype_mtb; }
118};
119
120
122{
123 eoas_pos_TYPE_t type {eoas_pos_TYPE_none};
124 eoas_pos_ROT_t rotation {eoas_pos_ROT_zero};
125 float offset {0.0};
126 bool invertdirection {false};
127 void clear()
128 {
129 type = eoas_pos_TYPE_none; rotation = eoas_pos_ROT_zero; offset = 0.0; invertdirection = false;
130 }
131};
132
134{
135 eObrd_portpos_t port {eobrd_portpos_none};
136 eObrd_connector_t connector {eobrd_conn_none};
138 void clear()
139 {
140 port = eobrd_portpos_none; connector = eobrd_conn_none; calibration.clear();
141 }
142};
143
145{
146 std::string id {""};
147 eOas_sensor_t type {eoas_none};
148 eObrd_location_t location {{eobrd_place_none, 0}};
149 eObrd_type_t boardtype {eobrd_none};
150 std::string frameName {""};
151 std::string sensorName {""};
153 void clear()
154 {
155 id.clear(); type = eoas_none; location.any.place = eobrd_place_none;
156 boardtype = eobrd_none; frameName.clear(); sensorName.clear(); pos.clear();
157 }
158};
159
160
161typedef struct
162{
163 std::vector<servCanBoard_t> canboards;
164 std::vector<servAnalogSensor_t> sensors;
166
167
168typedef struct
169{
171 std::vector<servAnalogSensor_t> enabledsensors;
173
174
181
182
183typedef struct
184{
187
188
189
194
195
196typedef struct
197{
198 eOmn_serv_type_t type;
200 //servSKsettings_t settings;
202
203
204#if defined(SERVICE_PARSER_USE_MC)
205
206// typedef struct
207// {
208// std::vector<double> matrixJ2M;
209// std::vector<double> matrixM2J;
210// std::vector<double> matrixE2J;
211// } servMC_controller_t;
212
213
214
215typedef struct
216{
217 eOmc_actuator_t type;
218 eOmc_actuator_descriptor_t desc;
219 eOmc_adv_actuator_descriptor_t advdescr;
221
222
223
224typedef struct
225{
226 eOmc_encoder_descriptor_t desc;
227 int32_t resolution;
228 double tolerance;
230
231
232typedef struct
233{
234
236 eObrd_ethtype_t ethboardtype;
237 std::vector<servCanBoard_t> canboards;
238
239 eObrd_canlocation_t maislocation;
240 std::vector<eObrd_canlocation_t> psclocations;
241 std::vector<eObrd_canlocation_t> poslocations;
242
243 eOmc_mc4shifts_t mc4shifts;
244 std::vector<eOmc_mc4broadcast_t> mc4broadcasts;
245 std::vector<eObrd_canlocation_t> mc4joints;
246
247 //servMC_controller_t controller;
248
249 std::vector<servMC_actuator_t> actuators;
250 std::vector<servMC_encoder_t> encoder1s;
251 std::vector<servMC_encoder_t> encoder2s;
252
253 //std::vector<int> joint2set;
254 //int numofjointsets;
255 //std::vector<eOmc_jointset_configuration_t> jointset_cfgs;
257
258
259typedef struct
260{
261 uint16_t tbd1;
262 std::vector<int> tbd2;
264
265
266
267typedef struct
268{
269 eOmn_serv_type_t type;
270 eOmn_serv_diagn_cfg_t diagconfig;
274
275#endif
276
277// todo: add definition of static const array of strings containing the names of boards, sensors, etc.
278
279
280// -- class ServiceParser
281
283{
284public:
285
288
289public:
290
291 bool parseService(yarp::os::Searchable &config, servConfigMais_t& maisconfig);
292 bool parseService(yarp::os::Searchable &config, servConfigStrain_t &strainconfig);
293 bool parseService(yarp::os::Searchable &config, servConfigFTsensor_t &ftconfig);
294 bool parseService(yarp::os::Searchable &config, servConfigImu_t &imuconfig);
295 bool parseService(yarp::os::Searchable &config, servConfigSkin_t &skinconfig);
296 bool parseService(yarp::os::Searchable &config, servConfigPSC_t &pscconfig);
297 bool parseService(yarp::os::Searchable &config, servConfigPOS_t &pscconfig);
298#if defined(SERVICE_PARSER_USE_MC)
299 bool parseService(yarp::os::Searchable &config, servConfigMC_t &mcconfig);
300 bool parseService2(yarp::os::Searchable &config, servConfigMC_t &mcconfig); // the fixed one.
301 //bool convert(std::string const &fromstring, eOmc_ctrlboard_t &controllerboard, bool &formaterror);
302 //bool convert(Bottle &bottle, std::vector<double> &matrix, bool &formaterror, int targetsize);
303 bool convert(std::string const &fromstring, eOmc_actuator_t &toactuatortype, bool &formaterror);
304 bool convert(std::string const &fromstring, eOmc_position_t &toposition, bool &formaterror);
305 bool convert(std::string const &fromstring, eOmc_encoder_t &toencodertype, bool &formaterror);
306
307 bool parse_connector(const std::string &fromstring, eObrd_connector_t &toconnector, bool &formaterror);
308 bool parse_mais(std::string const &fromstring, eObrd_portmais_t &pmais, bool &formaterror);
309
310 bool parse_port_conn(std::string const &fromstring, eObrd_type_t const board, uint8_t &toport, bool &formaterror);
311 bool parse_port_mais(std::string const &fromstring, uint8_t &toport, bool &formaterror);
312
313 bool parse_actuator_port(std::string const &fromstring, eObrd_ethtype_t const ethboard, eOmc_actuator_t const type, eOmc_actuator_descriptor_t &todes, bool &formaterror);
314 bool parse_encoder_port(std::string const &fromstring, eObrd_ethtype_t const ethboard, eOmc_encoder_t type, uint8_t &toport, bool &formaterror);
315
316 bool parse_psc(std::string const &fromstring, eObrd_portpsc_t &ppsc, bool &formaterror);
317 bool parse_port_psc(std::string const &fromstring, uint8_t &toport, bool &formaterror);
318
319 bool parse_POS_port(std::string const &fromstring, eObrd_portpos_t &ppos, bool &formaterror);
320 bool parse_port_pos(std::string const &fromstring, uint8_t &toport, bool &formaterror);
321
322 bool parse_POS_connector(std::string const &fromstring, const eObrd_type_t brd, eObrd_connector_t &conn, bool &formaterror);
323 bool parse_POS_CALIB_rotation(std::string const &fromstring, eoas_pos_ROT_t &rot, bool &formaterror);
324 bool parse_POS_CALIB_type(std::string const &fromstring, eoas_pos_TYPE_t &type, bool &formaterror);
325
326#endif
327
328 bool convert(std::string const &fromstring, eOmn_serv_type_t &toservicetype, bool &formaterror);
329 bool convert(std::string const &fromstring, eOmn_serv_diagn_mode_t &todiagnmode, bool &formaterror);
330 bool convert(std::string const &fromstring, eObrd_type_t& tobrdtype, bool& formaterror);
331 bool convert(std::string const &fromstring, eObrd_cantype_t &tobrdcantype, bool &formaterror);
332 bool convert(std::string const &fromstring, eObrd_ethtype_t& tobrdethtype, bool& formaterror);
333 bool convert(std::string const &fromstring, bool &tobool, bool &formaterror);
334 bool convert(const int number, uint8_t &tou8, bool &formaterror);
335 bool convert(const int number, uint16_t &tou16, bool &formaterror);
336 bool convert(std::string const &fromstring, eOas_sensor_t &tosensortype, bool &formaterror);
337 bool convert(std::string const &fromstring, std::string &str, bool &formaterror);
338 bool convert(std::string const &fromstring, const uint8_t strsize, char *str, bool &formaterror);
339 bool convert(std::string const &fromstring, eObrd_location_t &location, bool &formaterror);
340 bool convert(std::string const &fromstring, eOlocation_t &location, bool &formaterror);
341
342
343 bool convert(eObrd_location_t const &loc, char *str, int len);
344 bool convert(eOlocation_t const &loc, char *str, int len);
345 bool convert(eObrd_canlocation_t const &canloc, char *str, int len);
346
347 bool convert(eObrd_protocolversion_t const &prot, char *str, int len);
348 bool convert(eObrd_firmwareversion_t const &firm, char *str, int len);
349
350 bool convert(std::string const &fromstring, eOmc_pidoutputtype_t& pidoutputtype, bool& formaterror);
351 bool convert(std::string const &fromstring, eOmc_jsetconstraint_t &jsetconstraint, bool& formaterror);
354 bool parse_debugEmbBoardsNotConnected(yarp::os::Searchable &config, bool &embBoardsConnected);
355 public:
356
359
361 eOmn_serv_config_data_sk_skin_t tmp;
362
363#if defined(SERVICE_PARSER_USE_MC)
365#endif
366
367private:
368
369 bool check_analog(yarp::os::Searchable &config, eOmn_serv_type_t type);
370
371 bool check_skin(yarp::os::Searchable &config);
372
373 bool check_motion(yarp::os::Searchable &config);
374
375 int getnumofjointsets(void);
376
377 bool copyjomocouplingInfo(eOmc_4jomo_coupling_t *jc_dest);
378
379
380 // suggestion: split check_motion() in sub-methods which parse the groups ...
381};
382
383#endif
384
bool parseService2(yarp::os::Searchable &config, servConfigMC_t &mcconfig)
bool parse_encoder_port(std::string const &fromstring, eObrd_ethtype_t const ethboard, eOmc_encoder_t type, uint8_t &toport, bool &formaterror)
bool parse_port_conn(std::string const &fromstring, eObrd_type_t const board, uint8_t &toport, bool &formaterror)
servASstrainSettings_t as_strain_settings
bool parseService(yarp::os::Searchable &config, servConfigFTsensor_t &ftconfig)
bool parse_actuator_port(std::string const &fromstring, eObrd_ethtype_t const ethboard, eOmc_actuator_t const type, eOmc_actuator_descriptor_t &todes, bool &formaterror)
bool parse_POS_CALIB_rotation(std::string const &fromstring, eoas_pos_ROT_t &rot, bool &formaterror)
bool convert(std::string const &fromstring, eOmc_actuator_t &toactuatortype, bool &formaterror)
servMC_encoder_t * getEncoderAtMotor(int index)
bool convert(std::string const &fromstring, eOmc_encoder_t &toencodertype, bool &formaterror)
bool parseService(yarp::os::Searchable &config, servConfigPOS_t &pscconfig)
bool convert(std::string const &fromstring, eOmc_position_t &toposition, bool &formaterror)
bool parse_mais(std::string const &fromstring, eObrd_portmais_t &pmais, bool &formaterror)
servMCcollector_t mc_service
eOmn_serv_config_data_sk_skin_t tmp
servSKcollector_t sk_service
bool parse_port_psc(std::string const &fromstring, uint8_t &toport, bool &formaterror)
bool parse_POS_CALIB_type(std::string const &fromstring, eoas_pos_TYPE_t &type, bool &formaterror)
bool parseService(yarp::os::Searchable &config, servConfigMais_t &maisconfig)
bool parse_port_pos(std::string const &fromstring, uint8_t &toport, bool &formaterror)
bool parseService(yarp::os::Searchable &config, servConfigPSC_t &pscconfig)
bool parse_debugEmbBoardsNotConnected(yarp::os::Searchable &config, bool &embBoardsConnected)
bool parse_POS_connector(std::string const &fromstring, const eObrd_type_t brd, eObrd_connector_t &conn, bool &formaterror)
bool parse_POS_port(std::string const &fromstring, eObrd_portpos_t &ppos, bool &formaterror)
bool parseService(yarp::os::Searchable &config, servConfigSkin_t &skinconfig)
bool parse_connector(const std::string &fromstring, eObrd_connector_t &toconnector, bool &formaterror)
servMC_encoder_t * getEncoderAtJoint(int index)
bool parseService(yarp::os::Searchable &config, servConfigMC_t &mcconfig)
bool parseService(yarp::os::Searchable &config, servConfigImu_t &imuconfig)
bool parse_psc(std::string const &fromstring, eObrd_portpsc_t &ppsc, bool &formaterror)
servAScollector_t as_service
bool parseService(yarp::os::Searchable &config, servConfigStrain_t &strainconfig)
bool parse_port_mais(std::string const &fromstring, uint8_t &toport, bool &formaterror)
uint8_t board
eOmn_serv_type_t type
servASsettings_t settings
servASproperties_t properties
std::vector< servAnalogSensor_t > sensors
std::vector< servCanBoard_t > canboards
std::vector< servAnalogSensor_t > enabledsensors
uint16_t acquisitionrate
servAnalogPOScalibration_t calibration
eObrd_connector_t connector
servAnalogPOSspecific_t pos
std::string frameName
eObrd_type_t boardtype
std::string sensorName
eObrd_location_t location
eOas_sensor_t type
eObrd_firmwareversion_t firmware
eObrd_type_t type
eObrd_protocolversion_t protocol
eObrd_cantype_t type
eObrd_protocolversion_t protocol
eObrd_firmwareversion_t firmware
eObrd_cantype_t boardType
std::string nameOfStrain
eOmn_serv_parameter_t ethservice
eOmn_serv_parameter_t ethservice
std::vector< eOas_inertial3_descriptor_t > inertials
imuConvFactors_t convFactors
std::vector< std::string > id
std::vector< std::string > sensorName
eOmn_serv_parameter_t ethservice
eOmn_serv_parameter_t ethservice
std::string nameOfMais
std::vector< std::string > idList
eOmn_serv_parameter_t ethservice
std::vector< std::string > sensorName
std::vector< std::string > idList
eOmn_serv_parameter_t ethservice
servCanBoard_t canboard
eOmn_serv_parameter_t ethservice
std::string nameOfStrain
eObrd_cantype_t boardType
eOmc_adv_actuator_descriptor_t advdescr
eOmc_actuator_descriptor_t desc
eOmc_actuator_t type
eOmc_encoder_descriptor_t desc
servMCproperties_t properties
eOmn_serv_diagn_cfg_t diagconfig
servMCsettings_t settings
eOmn_serv_type_t type
std::vector< eOmc_mc4broadcast_t > mc4broadcasts
eOmc_mc4shifts_t mc4shifts
std::vector< eObrd_canlocation_t > poslocations
eObrd_canlocation_t maislocation
std::vector< servMC_actuator_t > actuators
std::vector< servMC_encoder_t > encoder2s
eObrd_ethtype_t ethboardtype
std::vector< eObrd_canlocation_t > mc4joints
std::vector< servMC_encoder_t > encoder1s
std::vector< eObrd_canlocation_t > psclocations
std::vector< servCanBoard_t > canboards
std::vector< int > tbd2
eOmn_serv_type_t type
servSKproperties_t properties
servCanBoard_t canboard