ITS
ParameterCAN.cpp
Go to the documentation of this file.
1 #include "ParameterCAN.h"
2 
4 {
5  read();
6  //readDebug();
7 }
8 
10 {/*
11  if(m_accelerationControl != 0)
12  {
13  if(m_accelerationControl->buf != 0)
14  free(m_accelerationControl->buf);
15  free(m_accelerationControl);
16  }
17  if(m_exteriorLights.buf != 0)
18  free(m_exteriorLights.buf);
19  if(m_externalTemperature != 0)
20  free(m_externalTemperature);
21  if(m_lateralAcceleration != 0)
22  free(m_lateralAcceleration);
23  if(m_lightBarSirenInUse.buf != 0)
24  free(m_lightBarSirenInUse.buf);
25  if(m_numberOfOccupants != 0)
26  free(m_numberOfOccupants);
27  if(m_positioningSolution != 0)
28  free(m_positioningSolution);
29  if(m_positionOfOccupants.buf != 0)
30  free(m_positionOfOccupants.buf);
31  if(m_steeringWheelAngle != 0)
32  free(m_steeringWheelAngle);
33  if(m_verticalAcceleration != 0)
34  free(m_verticalAcceleration);*/
35 }
36 
38 {
39  cfg_opt_t curvature_opts[] =
40  {
41  CFG_INT("curvatureConfidence", CurvatureConfidence_unavailable, CFGF_NONE),
42  CFG_INT("curvatureValue", CurvatureValue_unavailable, CFGF_NONE),
43  CFG_END()
44  };
45 
46  cfg_opt_t lateralAcceleration_opts[] =
47  {
48  CFG_INT("lateralAccelerationConfidence", NULL, CFGF_IGNORE_UNKNOWN),
49  CFG_INT("lateralAccelerationValue", NULL, CFGF_IGNORE_UNKNOWN),
50  CFG_END()
51  };
52 
53  cfg_opt_t longitudinalAcceleration_opts[] =
54  {
55  CFG_INT("longitudinalAccelerationConfidence", AccelerationConfidence_unavailable, CFGF_NONE),
56  CFG_INT("longitudinalAccelerationValue", LongitudinalAccelerationValue_unavailable, CFGF_NONE),
57  CFG_END()
58  };
59 
60  cfg_opt_t steeringWheelAngle_opts[] =
61  {
62  CFG_INT("steeringWheelAngleConfidence", NULL, CFGF_IGNORE_UNKNOWN),
63  CFG_INT("steeringWheelAngleValue", NULL, CFGF_IGNORE_UNKNOWN),
64  CFG_END()
65  };
66 
67  cfg_opt_t verticalAcceleration_opts[] =
68  {
69  CFG_INT("verticalAccelerationConfidence", NULL, CFGF_IGNORE_UNKNOWN),
70  CFG_INT("verticalAccelerationValue", NULL, CFGF_IGNORE_UNKNOWN),
71  CFG_END()
72  };
73 
74  cfg_opt_t yawRate_opts[] =
75  {
76  CFG_INT("yawRateConfidence", YawRateConfidence_unavailable, CFGF_NONE),
77  CFG_INT("yawRateValue", YawRateValue_unavailable, CFGF_NONE),
78  CFG_END()
79  };
80 
81  struct cfg_opt_t opts[] =
82  {
83  CFG_BOOL_LIST("accelerationControl", "", CFGF_NODEFAULT | CFGF_IGNORE_UNKNOWN),
84 
85  CFG_SEC("curvature", curvature_opts, CFGF_NO_TITLE_DUPES),
86 
87  CFG_INT("driveDirection", DriveDirection_unavailable, CFGF_NONE),
88 
89  CFG_BOOL_LIST("exteriorLights", "{false, false, false, false, false, false, false, false}", CFGF_NONE),
90 
91  CFG_INT("externalTemperature", -10000, CFGF_IGNORE_UNKNOWN),
92 
93  CFG_SEC("lateralAcceleration", lateralAcceleration_opts, CFGF_NO_TITLE_DUPES),
94 
95  CFG_BOOL_LIST("lightBarSirenInUse", "{false, false}", CFGF_NONE),
96 
97  CFG_SEC("longitudinalAcceleration", longitudinalAcceleration_opts, CFGF_NO_TITLE_DUPES),
98 
99  CFG_INT("numberOfOccupants", -1, CFGF_IGNORE_UNKNOWN),
100 
101  CFG_INT("positioningSolutionType", -1, CFGF_IGNORE_UNKNOWN),
102 
103  CFG_BOOL_LIST("positionOfOccupants", "{false, false, false, true, false, false, false, false, true, false, false, false, false, true, false, false, false, false, true, false}", CFGF_NONE),
104 
105  CFG_SEC("steeringWheelAngle", steeringWheelAngle_opts, CFGF_MULTI),
106 
107  CFG_SEC("verticalAcceleration", verticalAcceleration_opts, CFGF_MULTI),
108 
109  CFG_SEC("yawRate", yawRate_opts, CFGF_NO_TITLE_DUPES),
110 
111  CFG_INT("speed", SpeedValue_unavailable, CFGF_NONE),
112 
113  CFG_END()
114  };
115  cfg_t *cfg;
116  cfg_t *cfg_lateralAcceleration;
117  cfg_t *cfg_longitudinalAcceleration;
118  cfg_t *cfg_steeringWheelAngle;
119  cfg_t *cfg_verticalAcceleration;
120  cfg_t *cfg_yawRate;
121 
122  cfg = cfg_init(opts, CFGF_NONE);
123 
124  cfg_lateralAcceleration = cfg_getsec(cfg, "lateralAcceleration");
125 
126  cfg_longitudinalAcceleration = cfg_getsec(cfg, "longitudinalAcceleration");
127 
128  cfg_steeringWheelAngle = cfg_getsec(cfg, "steeringWheelAngle");
129 
130  cfg_verticalAcceleration = cfg_getsec(cfg, "verticalAcceleration");
131 
132  cfg_yawRate = cfg_getsec(cfg, "yawRate");
133 
134  if(cfg_lateralAcceleration)
135  cfg_set_validate_func(cfg_lateralAcceleration, "lateralAccelerationConfidence", validate_unsigned_int);
136 
137  cfg_set_validate_func(cfg_longitudinalAcceleration, "longitudinalAccelerationConfidence", validate_unsigned_int);
138 
139  cfg_set_validate_func(cfg, "numberOfOccupants", validate_unsigned_int);
140 
141  cfg_set_validate_func(cfg, "positioningSolutionType", validate_unsigned_int);
142 
143  if(cfg_steeringWheelAngle)
144  cfg_set_validate_func(cfg_steeringWheelAngle, "steeringWheelAngleConfidence", validate_unsigned_int);
145 
146  if(cfg_verticalAcceleration)
147  cfg_set_validate_func(cfg_verticalAcceleration, "verticalAccelerationConfidence", validate_unsigned_int);
148 
149  cfg_set_validate_func(cfg_yawRate, "yawRateConfidence", validate_unsigned_int);
150 
151  cfg_add_searchpath(cfg, "/etc/its/config");
152  if(cfg_parse(cfg, "can.conf") == CFG_PARSE_ERROR)
153  printf("PARSE_ERROR\n");
154 
155  if(cfg_size(cfg, "accelerationControl"))
156  {
158  *m_accelerationControl = makeBitString(cfg_size(cfg,"accelerationControl"), cfg, "accelerationControl");
159  //constr_AccelerationControl(m_accelerationControl);
160  }
161  else
163 
164  m_driveDirection = cfg_getint(cfg, "driveDirection");
165 
166  m_exteriorLights = makeBitString(cfg_size(cfg,"exteriorLights"), cfg, "exteriorLights");
167  //constr_ExteriorLights(m_exteriorLights);
168 
169  if(cfg_getint(cfg, "externalTemperature") == -10000)
171  else
172  {
173  m_externalTemperature = (Temperature_t*) calloc(1, sizeof(Temperature_t));
174  *m_externalTemperature = cfg_getint(cfg, "externalTemperature");
175  //constr_ExternalTemperature(m_externalTemperature);
176  }
177 
178  if(cfg_size(cfg, "lateralAcceleration"))
179  {
181  m_lateralAcceleration->lateralAccelerationValue = cfg_getint(cfg_lateralAcceleration, "lateralAccelerationValue");
182  m_lateralAcceleration->lateralAccelerationConfidence = cfg_getint(cfg_lateralAcceleration, "lateralAccelerationConfidence");
183  //constr_LateralAcceleration(m_lateralAcceleration);
184  }
185  else
187 
188  m_lightBarSirenInUse = makeBitString(cfg_size(cfg,"lightBarSirenInUse"), cfg, "lightBarSirenInUse");
189  //constr_LightBarSirenInUse(m_lightBarSirenInUse);
190 
191  m_longitudinalAcceleration.longitudinalAccelerationValue = cfg_getint(cfg_longitudinalAcceleration, "longitudinalAccelerationValue");
192  m_longitudinalAcceleration.longitudinalAccelerationConfidence = cfg_getint(cfg_longitudinalAcceleration, "longitudinalAccelerationConfidence");
193  //constr_LongitudinalAcceleration(m_longitudinalAcceleration);
194 
195  if(cfg_getint(cfg, "numberOfOccupants") == -1)
197  else
198  {
200  *m_numberOfOccupants = cfg_getint(cfg, "numberOfOccupants");
201  //constr_NumberOfOccupants(m_numberOfOccupants);
202  }
203 
204  if(cfg_getint(cfg, "positioningSolutionType") == -1)
206  else
207  {
209  *m_positioningSolution = cfg_getint(cfg, "positioningSolutionType");
210  //constr_PositioningSolution(m_positioningSolution);
211  }
212 
213  m_positionOfOccupants = makeBitString(cfg_size(cfg,"positionOfOccupants"), cfg, "positionOfOccupants");
214  //constr_PositionOfOccupants(&m_positionOfOccupants);
215 
216  if(cfg_size(cfg, "steeringWheelAngle"))
217  {
219  m_steeringWheelAngle->steeringWheelAngleValue = cfg_getint(cfg_steeringWheelAngle, "steeringWheelAngleValue");
220  m_steeringWheelAngle->steeringWheelAngleConfidence = cfg_getint(cfg_steeringWheelAngle, "steeringWheelAngleConfidence");
221  //constr_SteeringWheelAngle(m_steeringWheelAngle);
222  }
223  else
225 
226  if(cfg_size(cfg, "verticalAcceleration"))
227  {
229  m_verticalAcceleration->verticalAccelerationValue = cfg_getint(cfg_verticalAcceleration, "verticalAccelerationValue");
230  m_verticalAcceleration->verticalAccelerationConfidence = cfg_getint(cfg_verticalAcceleration, "verticalAccelerationConfidence");
231  //constr_VerticalAcceleration(m_verticalAcceleration);
232  }
233  else
235 
236  m_yawRate.yawRateConfidence = cfg_getint(cfg_yawRate, "yawRateConfidence");
237  m_yawRate.yawRateValue = cfg_getint(cfg_yawRate, "yawRateValue");
238  //constr_yawRate(m_yawRate);
239 
240  m_speed = cfg_getint(cfg, "speed");
241 
245  {
248  }
249  else
250  {
253  }
254 
255  //readDebug();
256  cfg_free(cfg);
257 }
258 
260 {
261  printf("-----------------------------------------------------------------\n\t\t\tReadCan\n\n");
262  if(m_accelerationControl != 0)
263  {
264  printf("accelerationControl = ");
265  printf("%s", printBitString(*m_accelerationControl).toStdString().c_str());
266  printf("\n\n");
267  }
268 
269  printf("curvature\n{\n\tcurvatureValue = %ld\n\n\tcurvatureConfidence = %ld\n}\n\n", m_curvature.curvatureValue, m_curvature.curvatureConfidence);
270 
271  printf("driveDirection = %ld\n\n", m_driveDirection);
272 
273  printf("exteriorLights = %s\n\n", printBitString(m_exteriorLights).toStdString().c_str());
274 
275  if(m_externalTemperature != 0)
276  {
277  printf("externalTemperature = %ld\n\n", *m_externalTemperature);
278  }
279 
280  if(m_lateralAcceleration != 0)
281  printf("lateralAcceleration\n{\n\tlateralAccelerationValue = %ld\n\n\tlateralAccelerationConfidence = %ld\n}\n\n",m_lateralAcceleration->lateralAccelerationValue, m_lateralAcceleration->lateralAccelerationConfidence);
282 
283  printf("lightBarSirenInUse = %s\n\n", printBitString(m_lightBarSirenInUse).toStdString().c_str());
284 
285  printf("longitudinalAcceleration\n{\n\tlongitudinalAccelerationValue = %ld\n\n\tlongitudinalAccelerationConfidence = %ld\n}\n\n",m_longitudinalAcceleration.longitudinalAccelerationValue, m_longitudinalAcceleration.longitudinalAccelerationConfidence);
286 
287  if(m_numberOfOccupants != 0)
288  {
289  printf("numberOfOccupants = %ld\n\n", *m_numberOfOccupants);
290  }
291 
292  if(m_positioningSolution != 0)
293  {
294  printf("positioningSolutionType = %ld\n\n", *m_positioningSolution);
295  }
296 
297  printf("positionOfOccupants = %s\n\n", printBitString(m_positionOfOccupants).toStdString().c_str());
298 
299  if(m_steeringWheelAngle != 0)
300  printf("steeringWheelAngle\n{\n\tsteeringWheelAngleValue = %ld\n\n\tsteeringWheelAngleConfidence = %ld\n}\n\n",m_steeringWheelAngle->steeringWheelAngleValue, m_steeringWheelAngle->steeringWheelAngleConfidence);
301 
302  if(m_verticalAcceleration != 0)
303  printf("verticalAcceleration\n{\n\tverticalAccelerationValue = %ld\n\n\tverticalAccelerationConfidence = %ld\n}\n\n",m_verticalAcceleration->verticalAccelerationValue, m_verticalAcceleration->verticalAccelerationConfidence);
304 
305  printf("yawRate\n{\n\tyawRateConfidence = %ld\n\n\tyawRateValue = %ld\n}\n\n", m_yawRate.yawRateConfidence, m_yawRate.yawRateValue);
306 }
307 
309 {
310  Curvature_t c;
311 
312  if(m_speed)
314  else
317 
318  return c;
319 }
320 
322 {
323  Curvature_t c;
324 
327 
328  return c;
329 }
330 
332 {
334  this->m_curvature = other.m_curvature;
336  this->m_driveDirection = other.m_driveDirection;
337  this->m_exteriorLights = other.m_exteriorLights;
345  this->m_speed = other.m_speed;
348  this->m_yawRate = other.m_yawRate;
349 
350  return *this;
351 }
Temperature_t * m_externalTemperature
Definition: ParameterCAN.h:30
YawRateValue_t yawRateValue
Definition: YawRate.h:24
~ParameterCAN()
~ParameterCAN ParameterCAN destructor.
Definition: ParameterCAN.cpp:9
ExteriorLights_t m_exteriorLights
Definition: ParameterCAN.h:29
int validate_unsigned_int(cfg_t *cfg, cfg_opt_t *opt)
validate_unsigned_int Check if an option is an unsigned int
Definition: api.cpp:186
Curvature_t curvatureUnavailable()
curvatureUnavailable Set the curvature value to unavailable.
Curvature_t m_curvature
Definition: ParameterCAN.h:26
void read()
read Configuration file reading.
LightBarSirenInUse_t m_lightBarSirenInUse
Definition: ParameterCAN.h:32
AccelerationConfidence_t verticalAccelerationConfidence
SteeringWheelAngleValue_t steeringWheelAngleValue
AccelerationConfidence_t lateralAccelerationConfidence
YawRateConfidence_t yawRateConfidence
Definition: YawRate.h:25
QString printBitString(BIT_STRING_t b)
printBitString Print a BIT_STRING into a QString.
Definition: api.cpp:175
AccelerationControl_t * m_accelerationControl
Definition: ParameterCAN.h:25
NumberOfOccupants_t * m_numberOfOccupants
Definition: ParameterCAN.h:34
ParameterCAN()
ParameterCAN ParameterCAN constructor.
Definition: ParameterCAN.cpp:3
CurvatureCalculationMode_t m_curvatureCalculationMode
Definition: ParameterCAN.h:27
long NumberOfOccupants_t
VerticalAcceleration_t * m_verticalAcceleration
Definition: ParameterCAN.h:39
long Temperature_t
Definition: Temperature.h:28
LongitudinalAccelerationValue_t longitudinalAccelerationValue
BIT_STRING_t makeBitString(int nbits, cfg_t *cfg, const char *opt_name)
makeBitString Generate a BIT_STRING from configuration.
Definition: api.cpp:198
CurvatureConfidence_t curvatureConfidence
Definition: Curvature.h:25
AccelerationConfidence_t longitudinalAccelerationConfidence
Curvature_t calculateCurvatureWithYawRate()
calculateCurvatureWithYawRate Calculate curvature with yaw rate.
SteeringWheelAngle_t * m_steeringWheelAngle
Definition: ParameterCAN.h:38
CurvatureValue_t curvatureValue
Definition: Curvature.h:24
LongitudinalAcceleration_t m_longitudinalAcceleration
Definition: ParameterCAN.h:33
PositioningSolutionType_t * m_positioningSolution
Definition: ParameterCAN.h:35
PositionOfOccupants_t m_positionOfOccupants
Definition: ParameterCAN.h:36
long PositioningSolutionType_t
void readDebug()
readDebug Configuration printing.
SteeringWheelAngleConfidence_t steeringWheelAngleConfidence
DriveDirection_t m_driveDirection
Definition: ParameterCAN.h:28
YawRate_t m_yawRate
Definition: ParameterCAN.h:40
ParameterCAN & operator=(const ParameterCAN &other)
operator= Affectation operator.
SpeedValue_t m_speed
Definition: ParameterCAN.h:37
VerticalAccelerationValue_t verticalAccelerationValue
LateralAccelerationValue_t lateralAccelerationValue
LateralAcceleration_t * m_lateralAcceleration
Definition: ParameterCAN.h:31