00001
00002
00003
00004
00005 #ifndef CAJUN_WORLD_STATE_H
00006 #define CAJUN_WORLD_STATE_H
00007
00008 #include "access_data.H"
00009 #include "cb_time.H"
00010 #include <cassert>
00011
00012 #include "rndf_lane_container.H"
00013 #include "blocked_lane_container.H"
00014 #include "radar_data_collector.H"
00015 #include "intersection_tracker.H"
00016 #include "tstamp_buffering.H"
00017 #include "spatial_to_lane_map.H"
00018
00019 #include "rndf.H"
00020
00021 namespace cajun
00022 {
00023
00024 class func_t
00025 {
00026 public:
00027 virtual bool operator() () = 0;
00028 virtual ~func_t () = 0;
00029 };
00030
00031 inline func_t::~func_t () {}
00032
00033 class world_state_t
00034 {
00035 public:
00036 world_state_t (access_data_t *ad_, rndf_t *rndf = NULL);
00037 ~world_state_t ();
00038 private:
00039 access_data_t *m_ad;
00040 acceleration_data_t m_acceleration[1];
00041
00042 class func_acceleration_t : public func_t
00043 {
00044 public:
00045 virtual ~func_acceleration_t () { }
00046 func_acceleration_t (acceleration_data_t *data_, int qid_, access_data_t *ad_)
00047 : m_acceleration (data_), m_qid (qid_), m_ad (ad_) { }
00048 bool operator() ()
00049 {
00050 return m_ad->get_acceleration (*m_acceleration, m_qid);
00051 }
00052 private:
00053 acceleration_data_t *m_acceleration;
00054 int m_qid;
00055 access_data_t *m_ad;
00056 };
00057 angular_rate_data_t m_angular_rate[1];
00058
00059 class func_angular_rate_t : public func_t
00060 {
00061 public:
00062 virtual ~func_angular_rate_t () { }
00063 func_angular_rate_t (angular_rate_data_t *data_, int qid_, access_data_t *ad_)
00064 : m_angular_rate (data_), m_qid (qid_), m_ad (ad_) { }
00065 bool operator() ()
00066 {
00067 return m_ad->get_angular_rate (*m_angular_rate, m_qid);
00068 }
00069 private:
00070 angular_rate_data_t *m_angular_rate;
00071 int m_qid;
00072 access_data_t *m_ad;
00073 };
00074 cbln_data_t m_cbln[1];
00075
00076 class func_cbln_t : public func_t
00077 {
00078 public:
00079 virtual ~func_cbln_t () { }
00080 func_cbln_t (cbln_data_t *data_, int qid_, access_data_t *ad_)
00081 : m_cbln (data_), m_qid (qid_), m_ad (ad_) { }
00082 bool operator() ()
00083 {
00084 return m_ad->get_cbln (*m_cbln, m_qid);
00085 }
00086 private:
00087 cbln_data_t *m_cbln;
00088 int m_qid;
00089 access_data_t *m_ad;
00090 };
00091 cbln_dtm_data_t m_cbln_dtm[1];
00092
00093 class func_cbln_dtm_t : public func_t
00094 {
00095 public:
00096 virtual ~func_cbln_dtm_t () { }
00097 func_cbln_dtm_t (cbln_dtm_data_t *data_, int qid_, access_data_t *ad_)
00098 : m_cbln_dtm (data_), m_qid (qid_), m_ad (ad_) { }
00099 bool operator() ()
00100 {
00101 return m_ad->get_cbln_dtm (*m_cbln_dtm, m_qid);
00102 }
00103 private:
00104 cbln_dtm_data_t *m_cbln_dtm;
00105 int m_qid;
00106 access_data_t *m_ad;
00107 };
00108 cbmesg_data_t m_cbmesg[1];
00109
00110 class func_cbmesg_t : public func_t
00111 {
00112 public:
00113 virtual ~func_cbmesg_t () { }
00114 func_cbmesg_t (cbmesg_data_t *data_, int qid_, access_data_t *ad_)
00115 : m_cbmesg (data_), m_qid (qid_), m_ad (ad_) { }
00116 bool operator() ()
00117 {
00118 return m_ad->get_cbmesg (*m_cbmesg, m_qid);
00119 }
00120 private:
00121 cbmesg_data_t *m_cbmesg;
00122 int m_qid;
00123 access_data_t *m_ad;
00124 };
00125 cog_data_t m_cog[1];
00126
00127 class func_cog_t : public func_t
00128 {
00129 public:
00130 virtual ~func_cog_t () { }
00131 func_cog_t (cog_data_t *data_, int qid_, access_data_t *ad_)
00132 : m_cog (data_), m_qid (qid_), m_ad (ad_) { }
00133 bool operator() ()
00134 {
00135 return m_ad->get_cog (*m_cog, m_qid);
00136 }
00137 private:
00138 cog_data_t *m_cog;
00139 int m_qid;
00140 access_data_t *m_ad;
00141 };
00142 control_data_t m_control[1];
00143
00144 class func_control_t : public func_t
00145 {
00146 public:
00147 virtual ~func_control_t () { }
00148 func_control_t (control_data_t *data_, int qid_, access_data_t *ad_)
00149 : m_control (data_), m_qid (qid_), m_ad (ad_) { }
00150 bool operator() ()
00151 {
00152 return m_ad->get_control (*m_control, m_qid);
00153 }
00154 private:
00155 control_data_t *m_control;
00156 int m_qid;
00157 access_data_t *m_ad;
00158 };
00159 control_line_data_t m_control_line[1];
00160
00161 class func_control_line_t : public func_t
00162 {
00163 public:
00164 virtual ~func_control_line_t () { }
00165 func_control_line_t (control_line_data_t *data_, int qid_, access_data_t *ad_)
00166 : m_control_line (data_), m_qid (qid_), m_ad (ad_) { }
00167 bool operator() ()
00168 {
00169 return m_ad->get_control_line (*m_control_line, m_qid);
00170 }
00171 private:
00172 control_line_data_t *m_control_line;
00173 int m_qid;
00174 access_data_t *m_ad;
00175 };
00176 drive_data_t m_drive[2];
00177
00178 class func_drive_t : public func_t
00179 {
00180 public:
00181 virtual ~func_drive_t () { }
00182 func_drive_t (drive_data_t *data_, int qid_, access_data_t *ad_)
00183 : m_drive (data_), m_qid (qid_), m_ad (ad_) { }
00184 bool operator() ()
00185 {
00186 return m_ad->get_drive (*m_drive, m_qid);
00187 }
00188 private:
00189 drive_data_t *m_drive;
00190 int m_qid;
00191 access_data_t *m_ad;
00192 };
00193 grid_path_data_t m_grid_path[1];
00194
00195 class func_grid_path_t : public func_t
00196 {
00197 public:
00198 virtual ~func_grid_path_t () { }
00199 func_grid_path_t (grid_path_data_t *data_, int qid_, access_data_t *ad_)
00200 : m_grid_path (data_), m_qid (qid_), m_ad (ad_) { }
00201 bool operator() ()
00202 {
00203 return m_ad->get_grid_path (*m_grid_path, m_qid);
00204 }
00205 private:
00206 grid_path_data_t *m_grid_path;
00207 int m_qid;
00208 access_data_t *m_ad;
00209 };
00210 grid_tile_data_t m_grid_tile[2];
00211
00212 class func_grid_tile_t : public func_t
00213 {
00214 public:
00215 virtual ~func_grid_tile_t () { }
00216 func_grid_tile_t (grid_tile_data_t *data_, int qid_, access_data_t *ad_)
00217 : m_grid_tile (data_), m_qid (qid_), m_ad (ad_) { }
00218 bool operator() ()
00219 {
00220 return m_ad->get_grid_tile (*m_grid_tile, m_qid);
00221 }
00222 private:
00223 grid_tile_data_t *m_grid_tile;
00224 int m_qid;
00225 access_data_t *m_ad;
00226 };
00227 ground_wheel_angle_data_t m_ground_wheel_angle[1];
00228
00229 class func_ground_wheel_angle_t : public func_t
00230 {
00231 public:
00232 virtual ~func_ground_wheel_angle_t () { }
00233 func_ground_wheel_angle_t (ground_wheel_angle_data_t *data_, int qid_, access_data_t *ad_)
00234 : m_ground_wheel_angle (data_), m_qid (qid_), m_ad (ad_) { }
00235 bool operator() ()
00236 {
00237 return m_ad->get_ground_wheel_angle (*m_ground_wheel_angle, m_qid);
00238 }
00239 private:
00240 ground_wheel_angle_data_t *m_ground_wheel_angle;
00241 int m_qid;
00242 access_data_t *m_ad;
00243 };
00244 guide_data_t m_guide[1];
00245
00246 class func_guide_t : public func_t
00247 {
00248 public:
00249 virtual ~func_guide_t () { }
00250 func_guide_t (guide_data_t *data_, int qid_, access_data_t *ad_)
00251 : m_guide (data_), m_qid (qid_), m_ad (ad_) { }
00252 bool operator() ()
00253 {
00254 return m_ad->get_guide (*m_guide, m_qid);
00255 }
00256 private:
00257 guide_data_t *m_guide;
00258 int m_qid;
00259 access_data_t *m_ad;
00260 };
00261 heading_data_t m_heading[1];
00262
00263 class func_heading_t : public func_t
00264 {
00265 public:
00266 virtual ~func_heading_t () { }
00267 func_heading_t (heading_data_t *data_, int qid_, access_data_t *ad_)
00268 : m_heading (data_), m_qid (qid_), m_ad (ad_) { }
00269 bool operator() ()
00270 {
00271 return m_ad->get_heading (*m_heading, m_qid);
00272 }
00273 private:
00274 heading_data_t *m_heading;
00275 int m_qid;
00276 access_data_t *m_ad;
00277 };
00278 ibeo_object_data_t m_ibeo_object[2];
00279
00280 class func_ibeo_object_t : public func_t
00281 {
00282 public:
00283 virtual ~func_ibeo_object_t () { }
00284 func_ibeo_object_t (ibeo_object_data_t *data_, int qid_, access_data_t *ad_)
00285 : m_ibeo_object (data_), m_qid (qid_), m_ad (ad_) { }
00286 bool operator() ()
00287 {
00288 return m_ad->get_ibeo_object (*m_ibeo_object, m_qid);
00289 }
00290 private:
00291 ibeo_object_data_t *m_ibeo_object;
00292 int m_qid;
00293 access_data_t *m_ad;
00294 };
00295 ibeo_scan_data_t m_ibeo_scan[1];
00296
00297 class func_ibeo_scan_t : public func_t
00298 {
00299 public:
00300 virtual ~func_ibeo_scan_t () { }
00301 func_ibeo_scan_t (ibeo_scan_data_t *data_, int qid_, access_data_t *ad_)
00302 : m_ibeo_scan (data_), m_qid (qid_), m_ad (ad_) { }
00303 bool operator() ()
00304 {
00305 return m_ad->get_ibeo_scan (*m_ibeo_scan, m_qid);
00306 }
00307 private:
00308 ibeo_scan_data_t *m_ibeo_scan;
00309 int m_qid;
00310 access_data_t *m_ad;
00311 };
00312 image_data_t m_image[1];
00313
00314 class func_image_t : public func_t
00315 {
00316 public:
00317 virtual ~func_image_t () { }
00318 func_image_t (image_data_t *data_, int qid_, access_data_t *ad_)
00319 : m_image (data_), m_qid (qid_), m_ad (ad_) { }
00320 bool operator() ()
00321 {
00322 return m_ad->get_image (*m_image, m_qid);
00323 }
00324 private:
00325 image_data_t *m_image;
00326 int m_qid;
00327 access_data_t *m_ad;
00328 };
00329 iteris_lane_data_t m_iteris_lane[1];
00330
00331 class func_iteris_lane_t : public func_t
00332 {
00333 public:
00334 virtual ~func_iteris_lane_t () { }
00335 func_iteris_lane_t (iteris_lane_data_t *data_, int qid_, access_data_t *ad_)
00336 : m_iteris_lane (data_), m_qid (qid_), m_ad (ad_) { }
00337 bool operator() ()
00338 {
00339 return m_ad->get_iteris_lane (*m_iteris_lane, m_qid);
00340 }
00341 private:
00342 iteris_lane_data_t *m_iteris_lane;
00343 int m_qid;
00344 access_data_t *m_ad;
00345 };
00346 iteris_lane_gp_data_t m_iteris_lane_gp[1];
00347
00348 class func_iteris_lane_gp_t : public func_t
00349 {
00350 public:
00351 virtual ~func_iteris_lane_gp_t () { }
00352 func_iteris_lane_gp_t (iteris_lane_gp_data_t *data_, int qid_, access_data_t *ad_)
00353 : m_iteris_lane_gp (data_), m_qid (qid_), m_ad (ad_) { }
00354 bool operator() ()
00355 {
00356 return m_ad->get_iteris_lane_gp (*m_iteris_lane_gp, m_qid);
00357 }
00358 private:
00359 iteris_lane_gp_data_t *m_iteris_lane_gp;
00360 int m_qid;
00361 access_data_t *m_ad;
00362 };
00363 lane_data_t m_lane[1];
00364
00365 class func_lane_t : public func_t
00366 {
00367 public:
00368 virtual ~func_lane_t () { }
00369 func_lane_t (lane_data_t *data_, int qid_, access_data_t *ad_)
00370 : m_lane (data_), m_qid (qid_), m_ad (ad_) { }
00371 bool operator() ()
00372 {
00373 return m_ad->get_lane (*m_lane, m_qid);
00374 }
00375 private:
00376 lane_data_t *m_lane;
00377 int m_qid;
00378 access_data_t *m_ad;
00379 };
00380 local_dtm_data_t m_local_dtm[2];
00381
00382 class func_local_dtm_t : public func_t
00383 {
00384 public:
00385 virtual ~func_local_dtm_t () { }
00386 func_local_dtm_t (local_dtm_data_t *data_, int qid_, access_data_t *ad_)
00387 : m_local_dtm (data_), m_qid (qid_), m_ad (ad_) { }
00388 bool operator() ()
00389 {
00390 return m_ad->get_local_dtm (*m_local_dtm, m_qid);
00391 }
00392 private:
00393 local_dtm_data_t *m_local_dtm;
00394 int m_qid;
00395 access_data_t *m_ad;
00396 };
00397 mesh_cell_data_t m_mesh_cell[4];
00398
00399 class func_mesh_cell_t : public func_t
00400 {
00401 public:
00402 virtual ~func_mesh_cell_t () { }
00403 func_mesh_cell_t (mesh_cell_data_t *data_, int qid_, access_data_t *ad_)
00404 : m_mesh_cell (data_), m_qid (qid_), m_ad (ad_) { }
00405 bool operator() ()
00406 {
00407 return m_ad->get_mesh_cell (*m_mesh_cell, m_qid);
00408 }
00409 private:
00410 mesh_cell_data_t *m_mesh_cell;
00411 int m_qid;
00412 access_data_t *m_ad;
00413 };
00414 mission_status_data_t m_mission_status[1];
00415
00416 class func_mission_status_t : public func_t
00417 {
00418 public:
00419 virtual ~func_mission_status_t () { }
00420 func_mission_status_t (mission_status_data_t *data_, int qid_, access_data_t *ad_)
00421 : m_mission_status (data_), m_qid (qid_), m_ad (ad_) { }
00422 bool operator() ()
00423 {
00424 return m_ad->get_mission_status (*m_mission_status, m_qid);
00425 }
00426 private:
00427 mission_status_data_t *m_mission_status;
00428 int m_qid;
00429 access_data_t *m_ad;
00430 };
00431 motion_data_t m_motion[1];
00432
00433 class func_motion_t : public func_t
00434 {
00435 public:
00436 virtual ~func_motion_t () { }
00437 func_motion_t (motion_data_t *data_, int qid_, access_data_t *ad_)
00438 : m_motion (data_), m_qid (qid_), m_ad (ad_) { }
00439 bool operator() ()
00440 {
00441 return m_ad->get_motion (*m_motion, m_qid);
00442 }
00443 private:
00444 motion_data_t *m_motion;
00445 int m_qid;
00446 access_data_t *m_ad;
00447 };
00448 nav_data_t m_nav[2];
00449
00450 class func_nav_t : public func_t
00451 {
00452 public:
00453 virtual ~func_nav_t () { }
00454 func_nav_t (nav_data_t *data_, int qid_, access_data_t *ad_)
00455 : m_nav (data_), m_qid (qid_), m_ad (ad_) { }
00456 bool operator() ()
00457 {
00458 return m_ad->get_nav (*m_nav, m_qid);
00459 }
00460 private:
00461 nav_data_t *m_nav;
00462 int m_qid;
00463 access_data_t *m_ad;
00464 };
00465 path_data_t m_path[3];
00466
00467 class func_path_t : public func_t
00468 {
00469 public:
00470 virtual ~func_path_t () { }
00471 func_path_t (path_data_t *data_, int qid_, access_data_t *ad_)
00472 : m_path (data_), m_qid (qid_), m_ad (ad_) { }
00473 bool operator() ()
00474 {
00475 return m_ad->get_path (*m_path, m_qid);
00476 }
00477 private:
00478 path_data_t *m_path;
00479 int m_qid;
00480 access_data_t *m_ad;
00481 };
00482 plan_status_data_t m_plan_status[1];
00483
00484 class func_plan_status_t : public func_t
00485 {
00486 public:
00487 virtual ~func_plan_status_t () { }
00488 func_plan_status_t (plan_status_data_t *data_, int qid_, access_data_t *ad_)
00489 : m_plan_status (data_), m_qid (qid_), m_ad (ad_) { }
00490 bool operator() ()
00491 {
00492 return m_ad->get_plan_status (*m_plan_status, m_qid);
00493 }
00494 private:
00495 plan_status_data_t *m_plan_status;
00496 int m_qid;
00497 access_data_t *m_ad;
00498 };
00499 playback_control_data_t m_playback_control[1];
00500
00501 class func_playback_control_t : public func_t
00502 {
00503 public:
00504 virtual ~func_playback_control_t () { }
00505 func_playback_control_t (playback_control_data_t *data_, int qid_, access_data_t *ad_)
00506 : m_playback_control (data_), m_qid (qid_), m_ad (ad_) { }
00507 bool operator() ()
00508 {
00509 return m_ad->get_playback_control (*m_playback_control, m_qid);
00510 }
00511 private:
00512 playback_control_data_t *m_playback_control;
00513 int m_qid;
00514 access_data_t *m_ad;
00515 };
00516 radar_data_t m_radar[4];
00517
00518 class func_radar_t : public func_t
00519 {
00520 public:
00521 virtual ~func_radar_t () { }
00522 func_radar_t (radar_data_t *data_, int qid_, access_data_t *ad_)
00523 : m_radar (data_), m_qid (qid_), m_ad (ad_) { }
00524 bool operator() ()
00525 {
00526 return m_ad->get_radar (*m_radar, m_qid);
00527 }
00528 private:
00529 radar_data_t *m_radar;
00530 int m_qid;
00531 access_data_t *m_ad;
00532 };
00533 radar_gp_data_t m_radar_gp[4];
00534
00535 class func_radar_gp_t : public func_t
00536 {
00537 public:
00538 virtual ~func_radar_gp_t () { }
00539 func_radar_gp_t (radar_gp_data_t *data_, int qid_, access_data_t *ad_)
00540 : m_radar_gp (data_), m_qid (qid_), m_ad (ad_) { }
00541 bool operator() ()
00542 {
00543 return m_ad->get_radar_gp (*m_radar_gp, m_qid);
00544 }
00545 private:
00546 radar_gp_data_t *m_radar_gp;
00547 int m_qid;
00548 access_data_t *m_ad;
00549 };
00550 range_data_t m_range[3];
00551
00552 class func_range_t : public func_t
00553 {
00554 public:
00555 virtual ~func_range_t () { }
00556 func_range_t (range_data_t *data_, int qid_, access_data_t *ad_)
00557 : m_range (data_), m_qid (qid_), m_ad (ad_) { }
00558 bool operator() ()
00559 {
00560 return m_ad->get_range (*m_range, m_qid);
00561 }
00562 private:
00563 range_data_t *m_range;
00564 int m_qid;
00565 access_data_t *m_ad;
00566 };
00567 scan_analysis_data_t m_scan_analysis[2];
00568
00569 class func_scan_analysis_t : public func_t
00570 {
00571 public:
00572 virtual ~func_scan_analysis_t () { }
00573 func_scan_analysis_t (scan_analysis_data_t *data_, int qid_, access_data_t *ad_)
00574 : m_scan_analysis (data_), m_qid (qid_), m_ad (ad_) { }
00575 bool operator() ()
00576 {
00577 return m_ad->get_scan_analysis (*m_scan_analysis, m_qid);
00578 }
00579 private:
00580 scan_analysis_data_t *m_scan_analysis;
00581 int m_qid;
00582 access_data_t *m_ad;
00583 };
00584 scan_data_t m_scan[8];
00585
00586 class func_scan_t : public func_t
00587 {
00588 public:
00589 virtual ~func_scan_t () { }
00590 func_scan_t (scan_data_t *data_, int qid_, access_data_t *ad_)
00591 : m_scan (data_), m_qid (qid_), m_ad (ad_) { }
00592 bool operator() ()
00593 {
00594 return m_ad->get_scan (*m_scan, m_qid);
00595 }
00596 private:
00597 scan_data_t *m_scan;
00598 int m_qid;
00599 access_data_t *m_ad;
00600 };
00601 scan_dxyz_data_t m_scan_dxyz[2];
00602
00603 class func_scan_dxyz_t : public func_t
00604 {
00605 public:
00606 virtual ~func_scan_dxyz_t () { }
00607 func_scan_dxyz_t (scan_dxyz_data_t *data_, int qid_, access_data_t *ad_)
00608 : m_scan_dxyz (data_), m_qid (qid_), m_ad (ad_) { }
00609 bool operator() ()
00610 {
00611 return m_ad->get_scan_dxyz (*m_scan_dxyz, m_qid);
00612 }
00613 private:
00614 scan_dxyz_data_t *m_scan_dxyz;
00615 int m_qid;
00616 access_data_t *m_ad;
00617 };
00618 scan_gp_data_t m_scan_gp[8];
00619
00620 class func_scan_gp_t : public func_t
00621 {
00622 public:
00623 virtual ~func_scan_gp_t () { }
00624 func_scan_gp_t (scan_gp_data_t *data_, int qid_, access_data_t *ad_)
00625 : m_scan_gp (data_), m_qid (qid_), m_ad (ad_) { }
00626 bool operator() ()
00627 {
00628 return m_ad->get_scan_gp (*m_scan_gp, m_qid);
00629 }
00630 private:
00631 scan_gp_data_t *m_scan_gp;
00632 int m_qid;
00633 access_data_t *m_ad;
00634 };
00635 scan_lane_gp_data_t m_scan_lane_gp[1];
00636
00637 class func_scan_lane_gp_t : public func_t
00638 {
00639 public:
00640 virtual ~func_scan_lane_gp_t () { }
00641 func_scan_lane_gp_t (scan_lane_gp_data_t *data_, int qid_, access_data_t *ad_)
00642 : m_scan_lane_gp (data_), m_qid (qid_), m_ad (ad_) { }
00643 bool operator() ()
00644 {
00645 return m_ad->get_scan_lane_gp (*m_scan_lane_gp, m_qid);
00646 }
00647 private:
00648 scan_lane_gp_data_t *m_scan_lane_gp;
00649 int m_qid;
00650 access_data_t *m_ad;
00651 };
00652 sensor_position_data_t m_sensor_position[1];
00653
00654 class func_sensor_position_t : public func_t
00655 {
00656 public:
00657 virtual ~func_sensor_position_t () { }
00658 func_sensor_position_t (sensor_position_data_t *data_, int qid_, access_data_t *ad_)
00659 : m_sensor_position (data_), m_qid (qid_), m_ad (ad_) { }
00660 bool operator() ()
00661 {
00662 return m_ad->get_sensor_position (*m_sensor_position, m_qid);
00663 }
00664 private:
00665 sensor_position_data_t *m_sensor_position;
00666 int m_qid;
00667 access_data_t *m_ad;
00668 };
00669 signal_line_data_t m_signal_line[1];
00670
00671 class func_signal_line_t : public func_t
00672 {
00673 public:
00674 virtual ~func_signal_line_t () { }
00675 func_signal_line_t (signal_line_data_t *data_, int qid_, access_data_t *ad_)
00676 : m_signal_line (data_), m_qid (qid_), m_ad (ad_) { }
00677 bool operator() ()
00678 {
00679 return m_ad->get_signal_line (*m_signal_line, m_qid);
00680 }
00681 private:
00682 signal_line_data_t *m_signal_line;
00683 int m_qid;
00684 access_data_t *m_ad;
00685 };
00686 sim_time_data_t m_sim_time[1];
00687
00688 class func_sim_time_t : public func_t
00689 {
00690 public:
00691 virtual ~func_sim_time_t () { }
00692 func_sim_time_t (sim_time_data_t *data_, int qid_, access_data_t *ad_)
00693 : m_sim_time (data_), m_qid (qid_), m_ad (ad_) { }
00694 bool operator() ()
00695 {
00696 return m_ad->get_sim_time (*m_sim_time, m_qid);
00697 }
00698 private:
00699 sim_time_data_t *m_sim_time;
00700 int m_qid;
00701 access_data_t *m_ad;
00702 };
00703 sog_data_t m_sog[1];
00704
00705 class func_sog_t : public func_t
00706 {
00707 public:
00708 virtual ~func_sog_t () { }
00709 func_sog_t (sog_data_t *data_, int qid_, access_data_t *ad_)
00710 : m_sog (data_), m_qid (qid_), m_ad (ad_) { }
00711 bool operator() ()
00712 {
00713 return m_ad->get_sog (*m_sog, m_qid);
00714 }
00715 private:
00716 sog_data_t *m_sog;
00717 int m_qid;
00718 access_data_t *m_ad;
00719 };
00720 steering_data_t m_steering[1];
00721
00722 class func_steering_t : public func_t
00723 {
00724 public:
00725 virtual ~func_steering_t () { }
00726 func_steering_t (steering_data_t *data_, int qid_, access_data_t *ad_)
00727 : m_steering (data_), m_qid (qid_), m_ad (ad_) { }
00728 bool operator() ()
00729 {
00730 return m_ad->get_steering (*m_steering, m_qid);
00731 }
00732 private:
00733 steering_data_t *m_steering;
00734 int m_qid;
00735 access_data_t *m_ad;
00736 };
00737 survey_gp_data_t m_survey_gp[2];
00738
00739 class func_survey_gp_t : public func_t
00740 {
00741 public:
00742 virtual ~func_survey_gp_t () { }
00743 func_survey_gp_t (survey_gp_data_t *data_, int qid_, access_data_t *ad_)
00744 : m_survey_gp (data_), m_qid (qid_), m_ad (ad_) { }
00745 bool operator() ()
00746 {
00747 return m_ad->get_survey_gp (*m_survey_gp, m_qid);
00748 }
00749 private:
00750 survey_gp_data_t *m_survey_gp;
00751 int m_qid;
00752 access_data_t *m_ad;
00753 };
00754 triangle_data_t m_triangle_data[4];
00755
00756 class func_triangle_data_t : public func_t
00757 {
00758 public:
00759 virtual ~func_triangle_data_t () { }
00760 func_triangle_data_t (triangle_data_t *data_, int qid_, access_data_t *ad_)
00761 : m_triangle_data (data_), m_qid (qid_), m_ad (ad_) { }
00762 bool operator() ()
00763 {
00764 return m_ad->get_triangle_data (*m_triangle_data, m_qid);
00765 }
00766 private:
00767 triangle_data_t *m_triangle_data;
00768 int m_qid;
00769 access_data_t *m_ad;
00770 };
00771 vehicle_data_t m_vehicle[1];
00772
00773 class func_vehicle_t : public func_t
00774 {
00775 public:
00776 virtual ~func_vehicle_t () { }
00777 func_vehicle_t (vehicle_data_t *data_, int qid_, access_data_t *ad_)
00778 : m_vehicle (data_), m_qid (qid_), m_ad (ad_) { }
00779 bool operator() ()
00780 {
00781 return m_ad->get_vehicle (*m_vehicle, m_qid);
00782 }
00783 private:
00784 vehicle_data_t *m_vehicle;
00785 int m_qid;
00786 access_data_t *m_ad;
00787 };
00788 vpath_data_t m_vpath[1];
00789
00790 class func_vpath_t : public func_t
00791 {
00792 public:
00793 virtual ~func_vpath_t () { }
00794 func_vpath_t (vpath_data_t *data_, int qid_, access_data_t *ad_)
00795 : m_vpath (data_), m_qid (qid_), m_ad (ad_) { }
00796 bool operator() ()
00797 {
00798 return m_ad->get_vpath (*m_vpath, m_qid);
00799 }
00800 private:
00801 vpath_data_t *m_vpath;
00802 int m_qid;
00803 access_data_t *m_ad;
00804 };
00805 waypt_data_t m_waypt[1];
00806
00807 class func_waypt_t : public func_t
00808 {
00809 public:
00810 virtual ~func_waypt_t () { }
00811 func_waypt_t (waypt_data_t *data_, int qid_, access_data_t *ad_)
00812 : m_waypt (data_), m_qid (qid_), m_ad (ad_) { }
00813 bool operator() ()
00814 {
00815 return m_ad->get_waypt (*m_waypt, m_qid);
00816 }
00817 private:
00818 waypt_data_t *m_waypt;
00819 int m_qid;
00820 access_data_t *m_ad;
00821 };
00822
00823 std::vector<func_t *> m_func_vector;
00824 func_t *func;
00825 unsigned m_rndf_lane_qid;
00826 public:
00827
00828 access_data_t *get_access_data () const
00829 {
00830 return m_ad;
00831 }
00832
00833
00834 void enable_acceleration_read (int qid)
00835 {
00836 if (m_ad && ! m_ad->is_enable_acceleration_read (qid))
00837 {
00838 func = new func_acceleration_t (&m_acceleration[qid], qid, m_ad);
00839 m_func_vector.push_back (func);
00840 func = NULL;
00841 m_ad->enable_acceleration_read (qid);
00842 }
00843 }
00844
00845 bool get_acceleration (acceleration_data_t &d_, int qid)
00846 {
00847 if (m_ad && m_ad->acceleration_okay (qid))
00848 {
00849 assert (qid >= 0 && qid < 1);
00850 d_ = m_acceleration[qid];
00851 return true;
00852 }
00853 else
00854 return false;
00855 }
00856
00857 void enable_acceleration_write (int qid)
00858 { if (m_ad)
00859 m_ad->enable_acceleration_write(qid);
00860 }
00861
00862 bool publish_acceleration(acceleration_data_t &d_, int qid)
00863 {
00864 if (m_ad && m_ad->is_enable_acceleration_write (qid))
00865 return m_ad->publish_acceleration (d_, qid);
00866 else
00867 return false;
00868 }
00869
00870 void enable_angular_rate_read (int qid)
00871 {
00872 if (m_ad && ! m_ad->is_enable_angular_rate_read (qid))
00873 {
00874 func = new func_angular_rate_t (&m_angular_rate[qid], qid, m_ad);
00875 m_func_vector.push_back (func);
00876 func = NULL;
00877 m_ad->enable_angular_rate_read (qid);
00878 }
00879 }
00880
00881 bool get_angular_rate (angular_rate_data_t &d_, int qid)
00882 {
00883 if (m_ad && m_ad->angular_rate_okay (qid))
00884 {
00885 assert (qid >= 0 && qid < 1);
00886 d_ = m_angular_rate[qid];
00887 return true;
00888 }
00889 else
00890 return false;
00891 }
00892
00893 void enable_angular_rate_write (int qid)
00894 { if (m_ad)
00895 m_ad->enable_angular_rate_write(qid);
00896 }
00897
00898 bool publish_angular_rate(angular_rate_data_t &d_, int qid)
00899 {
00900 if (m_ad && m_ad->is_enable_angular_rate_write (qid))
00901 return m_ad->publish_angular_rate (d_, qid);
00902 else
00903 return false;
00904 }
00905
00906 void enable_cbln_read (int qid)
00907 {
00908 if (m_ad && ! m_ad->is_enable_cbln_read (qid))
00909 {
00910 func = new func_cbln_t (&m_cbln[qid], qid, m_ad);
00911 m_func_vector.push_back (func);
00912 func = NULL;
00913 m_ad->enable_cbln_read (qid);
00914 }
00915 }
00916
00917 bool get_cbln (cbln_data_t &d_, int qid)
00918 {
00919 if (m_ad && m_ad->cbln_okay (qid))
00920 {
00921 assert (qid >= 0 && qid < 1);
00922 d_ = m_cbln[qid];
00923 return true;
00924 }
00925 else
00926 return false;
00927 }
00928
00929 void enable_cbln_write (int qid)
00930 { if (m_ad)
00931 m_ad->enable_cbln_write(qid);
00932 }
00933
00934 bool publish_cbln(cbln_data_t &d_, int qid)
00935 {
00936 if (m_ad && m_ad->is_enable_cbln_write (qid))
00937 return m_ad->publish_cbln (d_, qid);
00938 else
00939 return false;
00940 }
00941
00942 void enable_cbln_dtm_read (int qid)
00943 {
00944 if (m_ad && ! m_ad->is_enable_cbln_dtm_read (qid))
00945 {
00946 func = new func_cbln_dtm_t (&m_cbln_dtm[qid], qid, m_ad);
00947 m_func_vector.push_back (func);
00948 func = NULL;
00949 m_ad->enable_cbln_dtm_read (qid);
00950 }
00951 }
00952
00953 bool get_cbln_dtm (cbln_dtm_data_t &d_, int qid)
00954 {
00955 if (m_ad && m_ad->cbln_dtm_okay (qid))
00956 {
00957 assert (qid >= 0 && qid < 1);
00958 d_ = m_cbln_dtm[qid];
00959 return true;
00960 }
00961 else
00962 return false;
00963 }
00964
00965 void enable_cbln_dtm_write (int qid)
00966 { if (m_ad)
00967 m_ad->enable_cbln_dtm_write(qid);
00968 }
00969
00970 bool publish_cbln_dtm(cbln_dtm_data_t &d_, int qid)
00971 {
00972 if (m_ad && m_ad->is_enable_cbln_dtm_write (qid))
00973 return m_ad->publish_cbln_dtm (d_, qid);
00974 else
00975 return false;
00976 }
00977
00978 void enable_cbmesg_read (int qid)
00979 {
00980 if (m_ad && ! m_ad->is_enable_cbmesg_read (qid))
00981 {
00982 func = new func_cbmesg_t (&m_cbmesg[qid], qid, m_ad);
00983 m_func_vector.push_back (func);
00984 func = NULL;
00985 m_ad->enable_cbmesg_read (qid);
00986 }
00987 }
00988
00989 bool get_cbmesg (cbmesg_data_t &d_, int qid)
00990 {
00991 if (m_ad && m_ad->cbmesg_okay (qid))
00992 {
00993 assert (qid >= 0 && qid < 1);
00994 d_ = m_cbmesg[qid];
00995 return true;
00996 }
00997 else
00998 return false;
00999 }
01000
01001 void enable_cbmesg_write (int qid)
01002 { if (m_ad)
01003 m_ad->enable_cbmesg_write(qid);
01004 }
01005
01006 bool publish_cbmesg(cbmesg_data_t &d_, int qid)
01007 {
01008 if (m_ad && m_ad->is_enable_cbmesg_write (qid))
01009 return m_ad->publish_cbmesg (d_, qid);
01010 else
01011 return false;
01012 }
01013
01014 void enable_cog_read (int qid)
01015 {
01016 if (m_ad && ! m_ad->is_enable_cog_read (qid))
01017 {
01018 func = new func_cog_t (&m_cog[qid], qid, m_ad);
01019 m_func_vector.push_back (func);
01020 func = NULL;
01021 m_ad->enable_cog_read (qid);
01022 }
01023 }
01024
01025 bool get_cog (cog_data_t &d_, int qid)
01026 {
01027 if (m_ad && m_ad->cog_okay (qid))
01028 {
01029 assert (qid >= 0 && qid < 1);
01030 d_ = m_cog[qid];
01031 return true;
01032 }
01033 else
01034 return false;
01035 }
01036
01037 void enable_cog_write (int qid)
01038 { if (m_ad)
01039 m_ad->enable_cog_write(qid);
01040 }
01041
01042 bool publish_cog(cog_data_t &d_, int qid)
01043 {
01044 if (m_ad && m_ad->is_enable_cog_write (qid))
01045 return m_ad->publish_cog (d_, qid);
01046 else
01047 return false;
01048 }
01049
01050 void enable_control_read (int qid)
01051 {
01052 if (m_ad && ! m_ad->is_enable_control_read (qid))
01053 {
01054 func = new func_control_t (&m_control[qid], qid, m_ad);
01055 m_func_vector.push_back (func);
01056 func = NULL;
01057 m_ad->enable_control_read (qid);
01058 }
01059 }
01060
01061 bool get_control (control_data_t &d_, int qid)
01062 {
01063 if (m_ad && m_ad->control_okay (qid))
01064 {
01065 assert (qid >= 0 && qid < 1);
01066 d_ = m_control[qid];
01067 return true;
01068 }
01069 else
01070 return false;
01071 }
01072
01073 void enable_control_write (int qid)
01074 { if (m_ad)
01075 m_ad->enable_control_write(qid);
01076 }
01077
01078 bool publish_control(control_data_t &d_, int qid)
01079 {
01080 if (m_ad && m_ad->is_enable_control_write (qid))
01081 return m_ad->publish_control (d_, qid);
01082 else
01083 return false;
01084 }
01085
01086 void enable_control_line_read (int qid)
01087 {
01088 if (m_ad && ! m_ad->is_enable_control_line_read (qid))
01089 {
01090 func = new func_control_line_t (&m_control_line[qid], qid, m_ad);
01091 m_func_vector.push_back (func);
01092 func = NULL;
01093 m_ad->enable_control_line_read (qid);
01094 }
01095 }
01096
01097 bool get_control_line (control_line_data_t &d_, int qid)
01098 {
01099 if (m_ad && m_ad->control_line_okay (qid))
01100 {
01101 assert (qid >= 0 && qid < 1);
01102 d_ = m_control_line[qid];
01103 return true;
01104 }
01105 else
01106 return false;
01107 }
01108
01109 void enable_control_line_write (int qid)
01110 { if (m_ad)
01111 m_ad->enable_control_line_write(qid);
01112 }
01113
01114 bool publish_control_line(control_line_data_t &d_, int qid)
01115 {
01116 if (m_ad && m_ad->is_enable_control_line_write (qid))
01117 return m_ad->publish_control_line (d_, qid);
01118 else
01119 return false;
01120 }
01121
01122 void enable_drive_read (int qid)
01123 {
01124 if (m_ad && ! m_ad->is_enable_drive_read (qid))
01125 {
01126 func = new func_drive_t (&m_drive[qid], qid, m_ad);
01127 m_func_vector.push_back (func);
01128 func = NULL;
01129 m_ad->enable_drive_read (qid);
01130 }
01131 }
01132
01133 bool get_drive (drive_data_t &d_, int qid)
01134 {
01135 if (m_ad && m_ad->drive_okay (qid))
01136 {
01137 assert (qid >= 0 && qid < 2);
01138 d_ = m_drive[qid];
01139 return true;
01140 }
01141 else
01142 return false;
01143 }
01144
01145 void enable_drive_write (int qid)
01146 { if (m_ad)
01147 m_ad->enable_drive_write(qid);
01148 }
01149
01150 bool publish_drive(drive_data_t &d_, int qid)
01151 {
01152 if (m_ad && m_ad->is_enable_drive_write (qid))
01153 return m_ad->publish_drive (d_, qid);
01154 else
01155 return false;
01156 }
01157
01158 void enable_grid_path_read (int qid)
01159 {
01160 if (m_ad && ! m_ad->is_enable_grid_path_read (qid))
01161 {
01162 func = new func_grid_path_t (&m_grid_path[qid], qid, m_ad);
01163 m_func_vector.push_back (func);
01164 func = NULL;
01165 m_ad->enable_grid_path_read (qid);
01166 }
01167 }
01168
01169 bool get_grid_path (grid_path_data_t &d_, int qid)
01170 {
01171 if (m_ad && m_ad->grid_path_okay (qid))
01172 {
01173 assert (qid >= 0 && qid < 1);
01174 d_ = m_grid_path[qid];
01175 return true;
01176 }
01177 else
01178 return false;
01179 }
01180
01181 void enable_grid_path_write (int qid)
01182 { if (m_ad)
01183 m_ad->enable_grid_path_write(qid);
01184 }
01185
01186 bool publish_grid_path(grid_path_data_t &d_, int qid)
01187 {
01188 if (m_ad && m_ad->is_enable_grid_path_write (qid))
01189 return m_ad->publish_grid_path (d_, qid);
01190 else
01191 return false;
01192 }
01193
01194 void enable_grid_tile_read (int qid)
01195 {
01196 if (m_ad && ! m_ad->is_enable_grid_tile_read (qid))
01197 {
01198 func = new func_grid_tile_t (&m_grid_tile[qid], qid, m_ad);
01199 m_func_vector.push_back (func);
01200 func = NULL;
01201 m_ad->enable_grid_tile_read (qid);
01202 }
01203 }
01204
01205 bool get_grid_tile (grid_tile_data_t &d_, int qid)
01206 {
01207 if (m_ad && m_ad->grid_tile_okay (qid))
01208 {
01209 assert (qid >= 0 && qid < 2);
01210 d_ = m_grid_tile[qid];
01211 return true;
01212 }
01213 else
01214 return false;
01215 }
01216
01217 void enable_grid_tile_write (int qid)
01218 { if (m_ad)
01219 m_ad->enable_grid_tile_write(qid);
01220 }
01221
01222 bool publish_grid_tile(grid_tile_data_t &d_, int qid)
01223 {
01224 if (m_ad && m_ad->is_enable_grid_tile_write (qid))
01225 return m_ad->publish_grid_tile (d_, qid);
01226 else
01227 return false;
01228 }
01229
01230 void enable_ground_wheel_angle_read (int qid)
01231 {
01232 if (m_ad && ! m_ad->is_enable_ground_wheel_angle_read (qid))
01233 {
01234 func = new func_ground_wheel_angle_t (&m_ground_wheel_angle[qid], qid, m_ad);
01235 m_func_vector.push_back (func);
01236 func = NULL;
01237 m_ad->enable_ground_wheel_angle_read (qid);
01238 }
01239 }
01240
01241 bool get_ground_wheel_angle (ground_wheel_angle_data_t &d_, int qid)
01242 {
01243 if (m_ad && m_ad->ground_wheel_angle_okay (qid))
01244 {
01245 assert (qid >= 0 && qid < 1);
01246 d_ = m_ground_wheel_angle[qid];
01247 return true;
01248 }
01249 else
01250 return false;
01251 }
01252
01253 void enable_ground_wheel_angle_write (int qid)
01254 { if (m_ad)
01255 m_ad->enable_ground_wheel_angle_write(qid);
01256 }
01257
01258 bool publish_ground_wheel_angle(ground_wheel_angle_data_t &d_, int qid)
01259 {
01260 if (m_ad && m_ad->is_enable_ground_wheel_angle_write (qid))
01261 return m_ad->publish_ground_wheel_angle (d_, qid);
01262 else
01263 return false;
01264 }
01265
01266 void enable_guide_read (int qid)
01267 {
01268 if (m_ad && ! m_ad->is_enable_guide_read (qid))
01269 {
01270 func = new func_guide_t (&m_guide[qid], qid, m_ad);
01271 m_func_vector.push_back (func);
01272 func = NULL;
01273 m_ad->enable_guide_read (qid);
01274 }
01275 }
01276
01277 bool get_guide (guide_data_t &d_, int qid)
01278 {
01279 if (m_ad && m_ad->guide_okay (qid))
01280 {
01281 assert (qid >= 0 && qid < 1);
01282 d_ = m_guide[qid];
01283 return true;
01284 }
01285 else
01286 return false;
01287 }
01288
01289 void enable_guide_write (int qid)
01290 { if (m_ad)
01291 m_ad->enable_guide_write(qid);
01292 }
01293
01294 bool publish_guide(guide_data_t &d_, int qid)
01295 {
01296 if (m_ad && m_ad->is_enable_guide_write (qid))
01297 return m_ad->publish_guide (d_, qid);
01298 else
01299 return false;
01300 }
01301
01302 void enable_heading_read (int qid)
01303 {
01304 if (m_ad && ! m_ad->is_enable_heading_read (qid))
01305 {
01306 func = new func_heading_t (&m_heading[qid], qid, m_ad);
01307 m_func_vector.push_back (func);
01308 func = NULL;
01309 m_ad->enable_heading_read (qid);
01310 }
01311 }
01312
01313 bool get_heading (heading_data_t &d_, int qid)
01314 {
01315 if (m_ad && m_ad->heading_okay (qid))
01316 {
01317 assert (qid >= 0 && qid < 1);
01318 d_ = m_heading[qid];
01319 return true;
01320 }
01321 else
01322 return false;
01323 }
01324
01325 void enable_heading_write (int qid)
01326 { if (m_ad)
01327 m_ad->enable_heading_write(qid);
01328 }
01329
01330 bool publish_heading(heading_data_t &d_, int qid)
01331 {
01332 if (m_ad && m_ad->is_enable_heading_write (qid))
01333 return m_ad->publish_heading (d_, qid);
01334 else
01335 return false;
01336 }
01337
01338 void enable_ibeo_object_read (int qid)
01339 {
01340 if (m_ad && ! m_ad->is_enable_ibeo_object_read (qid))
01341 {
01342 func = new func_ibeo_object_t (&m_ibeo_object[qid], qid, m_ad);
01343 m_func_vector.push_back (func);
01344 func = NULL;
01345 m_ad->enable_ibeo_object_read (qid);
01346 }
01347 }
01348
01349 bool get_ibeo_object (ibeo_object_data_t &d_, int qid)
01350 {
01351 if (m_ad && m_ad->ibeo_object_okay (qid))
01352 {
01353 assert (qid >= 0 && qid < 2);
01354 d_ = m_ibeo_object[qid];
01355 return true;
01356 }
01357 else
01358 return false;
01359 }
01360
01361 void enable_ibeo_object_write (int qid)
01362 { if (m_ad)
01363 m_ad->enable_ibeo_object_write(qid);
01364 }
01365
01366 bool publish_ibeo_object(ibeo_object_data_t &d_, int qid)
01367 {
01368 if (m_ad && m_ad->is_enable_ibeo_object_write (qid))
01369 return m_ad->publish_ibeo_object (d_, qid);
01370 else
01371 return false;
01372 }
01373
01374 void enable_ibeo_scan_read (int qid)
01375 {
01376 if (m_ad && ! m_ad->is_enable_ibeo_scan_read (qid))
01377 {
01378 func = new func_ibeo_scan_t (&m_ibeo_scan[qid], qid, m_ad);
01379 m_func_vector.push_back (func);
01380 func = NULL;
01381 m_ad->enable_ibeo_scan_read (qid);
01382 }
01383 }
01384
01385 bool get_ibeo_scan (ibeo_scan_data_t &d_, int qid)
01386 {
01387 if (m_ad && m_ad->ibeo_scan_okay (qid))
01388 {
01389 assert (qid >= 0 && qid < 1);
01390 d_ = m_ibeo_scan[qid];
01391 return true;
01392 }
01393 else
01394 return false;
01395 }
01396
01397 void enable_ibeo_scan_write (int qid)
01398 { if (m_ad)
01399 m_ad->enable_ibeo_scan_write(qid);
01400 }
01401
01402 bool publish_ibeo_scan(ibeo_scan_data_t &d_, int qid)
01403 {
01404 if (m_ad && m_ad->is_enable_ibeo_scan_write (qid))
01405 return m_ad->publish_ibeo_scan (d_, qid);
01406 else
01407 return false;
01408 }
01409
01410 void enable_image_read (int qid)
01411 {
01412 if (m_ad && ! m_ad->is_enable_image_read (qid))
01413 {
01414 func = new func_image_t (&m_image[qid], qid, m_ad);
01415 m_func_vector.push_back (func);
01416 func = NULL;
01417 m_ad->enable_image_read (qid);
01418 }
01419 }
01420
01421 bool get_image (image_data_t &d_, int qid)
01422 {
01423 if (m_ad && m_ad->image_okay (qid))
01424 {
01425 assert (qid >= 0 && qid < 1);
01426 d_ = m_image[qid];
01427 return true;
01428 }
01429 else
01430 return false;
01431 }
01432
01433 void enable_image_write (int qid)
01434 { if (m_ad)
01435 m_ad->enable_image_write(qid);
01436 }
01437
01438 bool publish_image(image_data_t &d_, int qid)
01439 {
01440 if (m_ad && m_ad->is_enable_image_write (qid))
01441 return m_ad->publish_image (d_, qid);
01442 else
01443 return false;
01444 }
01445
01446 void enable_iteris_lane_read (int qid)
01447 {
01448 if (m_ad && ! m_ad->is_enable_iteris_lane_read (qid))
01449 {
01450 func = new func_iteris_lane_t (&m_iteris_lane[qid], qid, m_ad);
01451 m_func_vector.push_back (func);
01452 func = NULL;
01453 m_ad->enable_iteris_lane_read (qid);
01454 }
01455 }
01456
01457 bool get_iteris_lane (iteris_lane_data_t &d_, int qid)
01458 {
01459 if (m_ad && m_ad->iteris_lane_okay (qid))
01460 {
01461 assert (qid >= 0 && qid < 1);
01462 d_ = m_iteris_lane[qid];
01463 return true;
01464 }
01465 else
01466 return false;
01467 }
01468
01469 void enable_iteris_lane_write (int qid)
01470 { if (m_ad)
01471 m_ad->enable_iteris_lane_write(qid);
01472 }
01473
01474 bool publish_iteris_lane(iteris_lane_data_t &d_, int qid)
01475 {
01476 if (m_ad && m_ad->is_enable_iteris_lane_write (qid))
01477 return m_ad->publish_iteris_lane (d_, qid);
01478 else
01479 return false;
01480 }
01481
01482 void enable_iteris_lane_gp_read (int qid)
01483 {
01484 if (m_ad && ! m_ad->is_enable_iteris_lane_gp_read (qid))
01485 {
01486 func = new func_iteris_lane_gp_t (&m_iteris_lane_gp[qid], qid, m_ad);
01487 m_func_vector.push_back (func);
01488 func = NULL;
01489 m_ad->enable_iteris_lane_gp_read (qid);
01490 }
01491 }
01492
01493 bool get_iteris_lane_gp (iteris_lane_gp_data_t &d_, int qid)
01494 {
01495 if (m_ad && m_ad->iteris_lane_gp_okay (qid))
01496 {
01497 assert (qid >= 0 && qid < 1);
01498 d_ = m_iteris_lane_gp[qid];
01499 return true;
01500 }
01501 else
01502 return false;
01503 }
01504
01505 void enable_iteris_lane_gp_write (int qid)
01506 { if (m_ad)
01507 m_ad->enable_iteris_lane_gp_write(qid);
01508 }
01509
01510 bool publish_iteris_lane_gp(iteris_lane_gp_data_t &d_, int qid)
01511 {
01512 if (m_ad && m_ad->is_enable_iteris_lane_gp_write (qid))
01513 return m_ad->publish_iteris_lane_gp (d_, qid);
01514 else
01515 return false;
01516 }
01517
01518 void enable_lane_read (int qid)
01519 {
01520 if (m_ad && ! m_ad->is_enable_lane_read (qid))
01521 {
01522 func = new func_lane_t (&m_lane[qid], qid, m_ad);
01523 m_func_vector.push_back (func);
01524 func = NULL;
01525 m_ad->enable_lane_read (qid);
01526 }
01527 }
01528
01529 bool get_lane (lane_data_t &d_, int qid)
01530 {
01531 if (m_ad && m_ad->lane_okay (qid))
01532 {
01533 assert (qid >= 0 && qid < 1);
01534 d_ = m_lane[qid];
01535 return true;
01536 }
01537 else
01538 return false;
01539 }
01540
01541 void enable_lane_write (int qid)
01542 { if (m_ad)
01543 m_ad->enable_lane_write(qid);
01544 }
01545
01546 bool publish_lane(lane_data_t &d_, int qid)
01547 {
01548 if (m_ad && m_ad->is_enable_lane_write (qid))
01549 return m_ad->publish_lane (d_, qid);
01550 else
01551 return false;
01552 }
01553
01554 void enable_local_dtm_read (int qid)
01555 {
01556 if (m_ad && ! m_ad->is_enable_local_dtm_read (qid))
01557 {
01558 func = new func_local_dtm_t (&m_local_dtm[qid], qid, m_ad);
01559 m_func_vector.push_back (func);
01560 func = NULL;
01561 m_ad->enable_local_dtm_read (qid);
01562 }
01563 }
01564
01565 bool get_local_dtm (local_dtm_data_t &d_, int qid)
01566 {
01567 if (m_ad && m_ad->local_dtm_okay (qid))
01568 {
01569 assert (qid >= 0 && qid < 2);
01570 d_ = m_local_dtm[qid];
01571 return true;
01572 }
01573 else
01574 return false;
01575 }
01576
01577 void enable_local_dtm_write (int qid)
01578 { if (m_ad)
01579 m_ad->enable_local_dtm_write(qid);
01580 }
01581
01582 bool publish_local_dtm(local_dtm_data_t &d_, int qid)
01583 {
01584 if (m_ad && m_ad->is_enable_local_dtm_write (qid))
01585 return m_ad->publish_local_dtm (d_, qid);
01586 else
01587 return false;
01588 }
01589
01590 void enable_mesh_cell_read (int qid)
01591 {
01592 if (m_ad && ! m_ad->is_enable_mesh_cell_read (qid))
01593 {
01594 func = new func_mesh_cell_t (&m_mesh_cell[qid], qid, m_ad);
01595 m_func_vector.push_back (func);
01596 func = NULL;
01597 m_ad->enable_mesh_cell_read (qid);
01598 }
01599 }
01600
01601 bool get_mesh_cell (mesh_cell_data_t &d_, int qid)
01602 {
01603 if (m_ad && m_ad->mesh_cell_okay (qid))
01604 {
01605 assert (qid >= 0 && qid < 4);
01606 d_ = m_mesh_cell[qid];
01607 return true;
01608 }
01609 else
01610 return false;
01611 }
01612
01613 void enable_mesh_cell_write (int qid)
01614 { if (m_ad)
01615 m_ad->enable_mesh_cell_write(qid);
01616 }
01617
01618 bool publish_mesh_cell(mesh_cell_data_t &d_, int qid)
01619 {
01620 if (m_ad && m_ad->is_enable_mesh_cell_write (qid))
01621 return m_ad->publish_mesh_cell (d_, qid);
01622 else
01623 return false;
01624 }
01625
01626 void enable_mission_status_read (int qid)
01627 {
01628 if (m_ad && ! m_ad->is_enable_mission_status_read (qid))
01629 {
01630 func = new func_mission_status_t (&m_mission_status[qid], qid, m_ad);
01631 m_func_vector.push_back (func);
01632 func = NULL;
01633 m_ad->enable_mission_status_read (qid);
01634 }
01635 }
01636
01637 bool get_mission_status (mission_status_data_t &d_, int qid)
01638 {
01639 if (m_ad && m_ad->mission_status_okay (qid))
01640 {
01641 assert (qid >= 0 && qid < 1);
01642 d_ = m_mission_status[qid];
01643 return true;
01644 }
01645 else
01646 return false;
01647 }
01648
01649 void enable_mission_status_write (int qid)
01650 { if (m_ad)
01651 m_ad->enable_mission_status_write(qid);
01652 }
01653
01654 bool publish_mission_status(mission_status_data_t &d_, int qid)
01655 {
01656 if (m_ad && m_ad->is_enable_mission_status_write (qid))
01657 return m_ad->publish_mission_status (d_, qid);
01658 else
01659 return false;
01660 }
01661
01662 void enable_motion_read (int qid)
01663 {
01664 if (m_ad && ! m_ad->is_enable_motion_read (qid))
01665 {
01666 func = new func_motion_t (&m_motion[qid], qid, m_ad);
01667 m_func_vector.push_back (func);
01668 func = NULL;
01669 m_ad->enable_motion_read (qid);
01670 }
01671 }
01672
01673 bool get_motion (motion_data_t &d_, int qid)
01674 {
01675 if (m_ad && m_ad->motion_okay (qid))
01676 {
01677 assert (qid >= 0 && qid < 1);
01678 d_ = m_motion[qid];
01679 return true;
01680 }
01681 else
01682 return false;
01683 }
01684
01685 void enable_motion_write (int qid)
01686 { if (m_ad)
01687 m_ad->enable_motion_write(qid);
01688 }
01689
01690 bool publish_motion(motion_data_t &d_, int qid)
01691 {
01692 if (m_ad && m_ad->is_enable_motion_write (qid))
01693 return m_ad->publish_motion (d_, qid);
01694 else
01695 return false;
01696 }
01697
01698 void enable_nav_read (int qid)
01699 {
01700 if (m_ad && ! m_ad->is_enable_nav_read (qid))
01701 {
01702 func = new func_nav_t (&m_nav[qid], qid, m_ad);
01703 m_func_vector.push_back (func);
01704 func = NULL;
01705 m_ad->enable_nav_read (qid);
01706 }
01707 }
01708
01709 bool get_nav (nav_data_t &d_, int qid)
01710 {
01711 if (m_ad && m_ad->nav_okay (qid))
01712 {
01713 assert (qid >= 0 && qid < 2);
01714 d_ = m_nav[qid];
01715 return true;
01716 }
01717 else
01718 return false;
01719 }
01720
01721 void enable_nav_write (int qid)
01722 { if (m_ad)
01723 m_ad->enable_nav_write(qid);
01724 }
01725
01726 bool publish_nav(nav_data_t &d_, int qid)
01727 {
01728 if (m_ad && m_ad->is_enable_nav_write (qid))
01729 return m_ad->publish_nav (d_, qid);
01730 else
01731 return false;
01732 }
01733
01734 void enable_path_read (int qid)
01735 {
01736 if (m_ad && ! m_ad->is_enable_path_read (qid))
01737 {
01738 func = new func_path_t (&m_path[qid], qid, m_ad);
01739 m_func_vector.push_back (func);
01740 func = NULL;
01741 m_ad->enable_path_read (qid);
01742 }
01743 }
01744
01745 bool get_path (path_data_t &d_, int qid)
01746 {
01747 if (m_ad && m_ad->path_okay (qid))
01748 {
01749 assert (qid >= 0 && qid < 3);
01750 d_ = m_path[qid];
01751 return true;
01752 }
01753 else
01754 return false;
01755 }
01756
01757 void enable_path_write (int qid)
01758 { if (m_ad)
01759 m_ad->enable_path_write(qid);
01760 }
01761
01762 bool publish_path(path_data_t &d_, int qid)
01763 {
01764 if (m_ad && m_ad->is_enable_path_write (qid))
01765 return m_ad->publish_path (d_, qid);
01766 else
01767 return false;
01768 }
01769
01770 void enable_plan_status_read (int qid)
01771 {
01772 if (m_ad && ! m_ad->is_enable_plan_status_read (qid))
01773 {
01774 func = new func_plan_status_t (&m_plan_status[qid], qid, m_ad);
01775 m_func_vector.push_back (func);
01776 func = NULL;
01777 m_ad->enable_plan_status_read (qid);
01778 }
01779 }
01780
01781 bool get_plan_status (plan_status_data_t &d_, int qid)
01782 {
01783 if (m_ad && m_ad->plan_status_okay (qid))
01784 {
01785 assert (qid >= 0 && qid < 1);
01786 d_ = m_plan_status[qid];
01787 return true;
01788 }
01789 else
01790 return false;
01791 }
01792
01793 void enable_plan_status_write (int qid)
01794 { if (m_ad)
01795 m_ad->enable_plan_status_write(qid);
01796 }
01797
01798 bool publish_plan_status(plan_status_data_t &d_, int qid)
01799 {
01800 if (m_ad && m_ad->is_enable_plan_status_write (qid))
01801 return m_ad->publish_plan_status (d_, qid);
01802 else
01803 return false;
01804 }
01805
01806 void enable_playback_control_read (int qid)
01807 {
01808 if (m_ad && ! m_ad->is_enable_playback_control_read (qid))
01809 {
01810 func = new func_playback_control_t (&m_playback_control[qid], qid, m_ad);
01811 m_func_vector.push_back (func);
01812 func = NULL;
01813 m_ad->enable_playback_control_read (qid);
01814 }
01815 }
01816
01817 bool get_playback_control (playback_control_data_t &d_, int qid)
01818 {
01819 if (m_ad && m_ad->playback_control_okay (qid))
01820 {
01821 assert (qid >= 0 && qid < 1);
01822 d_ = m_playback_control[qid];
01823 return true;
01824 }
01825 else
01826 return false;
01827 }
01828
01829 void enable_playback_control_write (int qid)
01830 { if (m_ad)
01831 m_ad->enable_playback_control_write(qid);
01832 }
01833
01834 bool publish_playback_control(playback_control_data_t &d_, int qid)
01835 {
01836 if (m_ad && m_ad->is_enable_playback_control_write (qid))
01837 return m_ad->publish_playback_control (d_, qid);
01838 else
01839 return false;
01840 }
01841
01842 void enable_radar_read (int qid)
01843 {
01844 if (m_ad && ! m_ad->is_enable_radar_read (qid))
01845 {
01846 func = new func_radar_t (&m_radar[qid], qid, m_ad);
01847 m_func_vector.push_back (func);
01848 func = NULL;
01849 m_ad->enable_radar_read (qid);
01850 }
01851 }
01852
01853 bool get_radar (radar_data_t &d_, int qid)
01854 {
01855 if (m_ad && m_ad->radar_okay (qid))
01856 {
01857 assert (qid >= 0 && qid < 4);
01858 d_ = m_radar[qid];
01859 return true;
01860 }
01861 else
01862 return false;
01863 }
01864
01865 void enable_radar_write (int qid)
01866 { if (m_ad)
01867 m_ad->enable_radar_write(qid);
01868 }
01869
01870 bool publish_radar(radar_data_t &d_, int qid)
01871 {
01872 if (m_ad && m_ad->is_enable_radar_write (qid))
01873 return m_ad->publish_radar (d_, qid);
01874 else
01875 return false;
01876 }
01877
01878 void enable_radar_gp_read (int qid)
01879 {
01880 if (m_ad && ! m_ad->is_enable_radar_gp_read (qid))
01881 {
01882 func = new func_radar_gp_t (&m_radar_gp[qid], qid, m_ad);
01883 m_func_vector.push_back (func);
01884 func = NULL;
01885 m_ad->enable_radar_gp_read (qid);
01886 }
01887 }
01888
01889 bool get_radar_gp (radar_gp_data_t &d_, int qid)
01890 {
01891 if (m_ad && m_ad->radar_gp_okay (qid))
01892 {
01893 assert (qid >= 0 && qid < 4);
01894 d_ = m_radar_gp[qid];
01895 return true;
01896 }
01897 else
01898 return false;
01899 }
01900
01901 void enable_radar_gp_write (int qid)
01902 { if (m_ad)
01903 m_ad->enable_radar_gp_write(qid);
01904 }
01905
01906 bool publish_radar_gp(radar_gp_data_t &d_, int qid)
01907 {
01908 if (m_ad && m_ad->is_enable_radar_gp_write (qid))
01909 return m_ad->publish_radar_gp (d_, qid);
01910 else
01911 return false;
01912 }
01913
01914 void enable_range_read (int qid)
01915 {
01916 if (m_ad && ! m_ad->is_enable_range_read (qid))
01917 {
01918 func = new func_range_t (&m_range[qid], qid, m_ad);
01919 m_func_vector.push_back (func);
01920 func = NULL;
01921 m_ad->enable_range_read (qid);
01922 }
01923 }
01924
01925 bool get_range (range_data_t &d_, int qid)
01926 {
01927 if (m_ad && m_ad->range_okay (qid))
01928 {
01929 assert (qid >= 0 && qid < 3);
01930 d_ = m_range[qid];
01931 return true;
01932 }
01933 else
01934 return false;
01935 }
01936
01937 void enable_range_write (int qid)
01938 { if (m_ad)
01939 m_ad->enable_range_write(qid);
01940 }
01941
01942 bool publish_range(range_data_t &d_, int qid)
01943 {
01944 if (m_ad && m_ad->is_enable_range_write (qid))
01945 return m_ad->publish_range (d_, qid);
01946 else
01947 return false;
01948 }
01949
01950 void enable_scan_analysis_read (int qid)
01951 {
01952 if (m_ad && ! m_ad->is_enable_scan_analysis_read (qid))
01953 {
01954 func = new func_scan_analysis_t (&m_scan_analysis[qid], qid, m_ad);
01955 m_func_vector.push_back (func);
01956 func = NULL;
01957 m_ad->enable_scan_analysis_read (qid);
01958 }
01959 }
01960
01961 bool get_scan_analysis (scan_analysis_data_t &d_, int qid)
01962 {
01963 if (m_ad && m_ad->scan_analysis_okay (qid))
01964 {
01965 assert (qid >= 0 && qid < 2);
01966 d_ = m_scan_analysis[qid];
01967 return true;
01968 }
01969 else
01970 return false;
01971 }
01972
01973 void enable_scan_analysis_write (int qid)
01974 { if (m_ad)
01975 m_ad->enable_scan_analysis_write(qid);
01976 }
01977
01978 bool publish_scan_analysis(scan_analysis_data_t &d_, int qid)
01979 {
01980 if (m_ad && m_ad->is_enable_scan_analysis_write (qid))
01981 return m_ad->publish_scan_analysis (d_, qid);
01982 else
01983 return false;
01984 }
01985
01986 void enable_scan_read (int qid)
01987 {
01988 if (m_ad && ! m_ad->is_enable_scan_read (qid))
01989 {
01990 func = new func_scan_t (&m_scan[qid], qid, m_ad);
01991 m_func_vector.push_back (func);
01992 func = NULL;
01993 m_ad->enable_scan_read (qid);
01994 }
01995 }
01996
01997 bool get_scan (scan_data_t &d_, int qid)
01998 {
01999 if (m_ad && m_ad->scan_okay (qid))
02000 {
02001 assert (qid >= 0 && qid < 8);
02002 d_ = m_scan[qid];
02003 return true;
02004 }
02005 else
02006 return false;
02007 }
02008
02009 void enable_scan_write (int qid)
02010 { if (m_ad)
02011 m_ad->enable_scan_write(qid);
02012 }
02013
02014 bool publish_scan(scan_data_t &d_, int qid)
02015 {
02016 if (m_ad && m_ad->is_enable_scan_write (qid))
02017 return m_ad->publish_scan (d_, qid);
02018 else
02019 return false;
02020 }
02021
02022 void enable_scan_dxyz_read (int qid)
02023 {
02024 if (m_ad && ! m_ad->is_enable_scan_dxyz_read (qid))
02025 {
02026 func = new func_scan_dxyz_t (&m_scan_dxyz[qid], qid, m_ad);
02027 m_func_vector.push_back (func);
02028 func = NULL;
02029 m_ad->enable_scan_dxyz_read (qid);
02030 }
02031 }
02032
02033 bool get_scan_dxyz (scan_dxyz_data_t &d_, int qid)
02034 {
02035 if (m_ad && m_ad->scan_dxyz_okay (qid))
02036 {
02037 assert (qid >= 0 && qid < 2);
02038 d_ = m_scan_dxyz[qid];
02039 return true;
02040 }
02041 else
02042 return false;
02043 }
02044
02045 void enable_scan_dxyz_write (int qid)
02046 { if (m_ad)
02047 m_ad->enable_scan_dxyz_write(qid);
02048 }
02049
02050 bool publish_scan_dxyz(scan_dxyz_data_t &d_, int qid)
02051 {
02052 if (m_ad && m_ad->is_enable_scan_dxyz_write (qid))
02053 return m_ad->publish_scan_dxyz (d_, qid);
02054 else
02055 return false;
02056 }
02057
02058 void enable_scan_gp_read (int qid)
02059 {
02060 if (m_ad && ! m_ad->is_enable_scan_gp_read (qid))
02061 {
02062 func = new func_scan_gp_t (&m_scan_gp[qid], qid, m_ad);
02063 m_func_vector.push_back (func);
02064 func = NULL;
02065 m_ad->enable_scan_gp_read (qid);
02066 }
02067 }
02068
02069 bool get_scan_gp (scan_gp_data_t &d_, int qid)
02070 {
02071 if (m_ad && m_ad->scan_gp_okay (qid))
02072 {
02073 assert (qid >= 0 && qid < 8);
02074 d_ = m_scan_gp[qid];
02075 return true;
02076 }
02077 else
02078 return false;
02079 }
02080
02081 void enable_scan_gp_write (int qid)
02082 { if (m_ad)
02083 m_ad->enable_scan_gp_write(qid);
02084 }
02085
02086 bool publish_scan_gp(scan_gp_data_t &d_, int qid)
02087 {
02088 if (m_ad && m_ad->is_enable_scan_gp_write (qid))
02089 return m_ad->publish_scan_gp (d_, qid);
02090 else
02091 return false;
02092 }
02093
02094 void enable_scan_lane_gp_read (int qid)
02095 {
02096 if (m_ad && ! m_ad->is_enable_scan_lane_gp_read (qid))
02097 {
02098 func = new func_scan_lane_gp_t (&m_scan_lane_gp[qid], qid, m_ad);
02099 m_func_vector.push_back (func);
02100 func = NULL;
02101 m_ad->enable_scan_lane_gp_read (qid);
02102 }
02103 }
02104
02105 bool get_scan_lane_gp (scan_lane_gp_data_t &d_, int qid)
02106 {
02107 if (m_ad && m_ad->scan_lane_gp_okay (qid))
02108 {
02109 assert (qid >= 0 && qid < 1);
02110 d_ = m_scan_lane_gp[qid];
02111 return true;
02112 }
02113 else
02114 return false;
02115 }
02116
02117 void enable_scan_lane_gp_write (int qid)
02118 { if (m_ad)
02119 m_ad->enable_scan_lane_gp_write(qid);
02120 }
02121
02122 bool publish_scan_lane_gp(scan_lane_gp_data_t &d_, int qid)
02123 {
02124 if (m_ad && m_ad->is_enable_scan_lane_gp_write (qid))
02125 return m_ad->publish_scan_lane_gp (d_, qid);
02126 else
02127 return false;
02128 }
02129
02130 void enable_sensor_position_read (int qid)
02131 {
02132 if (m_ad && ! m_ad->is_enable_sensor_position_read (qid))
02133 {
02134 func = new func_sensor_position_t (&m_sensor_position[qid], qid, m_ad);
02135 m_func_vector.push_back (func);
02136 func = NULL;
02137 m_ad->enable_sensor_position_read (qid);
02138 }
02139 }
02140
02141 bool get_sensor_position (sensor_position_data_t &d_, int qid)
02142 {
02143 if (m_ad && m_ad->sensor_position_okay (qid))
02144 {
02145 assert (qid >= 0 && qid < 1);
02146 d_ = m_sensor_position[qid];
02147 return true;
02148 }
02149 else
02150 return false;
02151 }
02152
02153 void enable_sensor_position_write (int qid)
02154 { if (m_ad)
02155 m_ad->enable_sensor_position_write(qid);
02156 }
02157
02158 bool publish_sensor_position(sensor_position_data_t &d_, int qid)
02159 {
02160 if (m_ad && m_ad->is_enable_sensor_position_write (qid))
02161 return m_ad->publish_sensor_position (d_, qid);
02162 else
02163 return false;
02164 }
02165
02166 void enable_signal_line_read (int qid)
02167 {
02168 if (m_ad && ! m_ad->is_enable_signal_line_read (qid))
02169 {
02170 func = new func_signal_line_t (&m_signal_line[qid], qid, m_ad);
02171 m_func_vector.push_back (func);
02172 func = NULL;
02173 m_ad->enable_signal_line_read (qid);
02174 }
02175 }
02176
02177 bool get_signal_line (signal_line_data_t &d_, int qid)
02178 {
02179 if (m_ad && m_ad->signal_line_okay (qid))
02180 {
02181 assert (qid >= 0 && qid < 1);
02182 d_ = m_signal_line[qid];
02183 return true;
02184 }
02185 else
02186 return false;
02187 }
02188
02189 void enable_signal_line_write (int qid)
02190 { if (m_ad)
02191 m_ad->enable_signal_line_write(qid);
02192 }
02193
02194 bool publish_signal_line(signal_line_data_t &d_, int qid)
02195 {
02196 if (m_ad && m_ad->is_enable_signal_line_write (qid))
02197 return m_ad->publish_signal_line (d_, qid);
02198 else
02199 return false;
02200 }
02201
02202 void enable_sim_time_read (int qid)
02203 {
02204 if (m_ad && ! m_ad->is_enable_sim_time_read (qid))
02205 {
02206 func = new func_sim_time_t (&m_sim_time[qid], qid, m_ad);
02207 m_func_vector.push_back (func);
02208 func = NULL;
02209 m_ad->enable_sim_time_read (qid);
02210 }
02211 }
02212
02213 bool get_sim_time (sim_time_data_t &d_, int qid)
02214 {
02215 if (m_ad && m_ad->sim_time_okay (qid))
02216 {
02217 assert (qid >= 0 && qid < 1);
02218 d_ = m_sim_time[qid];
02219 return true;
02220 }
02221 else
02222 return false;
02223 }
02224
02225 void enable_sim_time_write (int qid)
02226 { if (m_ad)
02227 m_ad->enable_sim_time_write(qid);
02228 }
02229
02230 bool publish_sim_time(sim_time_data_t &d_, int qid)
02231 {
02232 if (m_ad && m_ad->is_enable_sim_time_write (qid))
02233 return m_ad->publish_sim_time (d_, qid);
02234 else
02235 return false;
02236 }
02237
02238 void enable_sog_read (int qid)
02239 {
02240 if (m_ad && ! m_ad->is_enable_sog_read (qid))
02241 {
02242 func = new func_sog_t (&m_sog[qid], qid, m_ad);
02243 m_func_vector.push_back (func);
02244 func = NULL;
02245 m_ad->enable_sog_read (qid);
02246 }
02247 }
02248
02249 bool get_sog (sog_data_t &d_, int qid)
02250 {
02251 if (m_ad && m_ad->sog_okay (qid))
02252 {
02253 assert (qid >= 0 && qid < 1);
02254 d_ = m_sog[qid];
02255 return true;
02256 }
02257 else
02258 return false;
02259 }
02260
02261 void enable_sog_write (int qid)
02262 { if (m_ad)
02263 m_ad->enable_sog_write(qid);
02264 }
02265
02266 bool publish_sog(sog_data_t &d_, int qid)
02267 {
02268 if (m_ad && m_ad->is_enable_sog_write (qid))
02269 return m_ad->publish_sog (d_, qid);
02270 else
02271 return false;
02272 }
02273
02274 void enable_steering_read (int qid)
02275 {
02276 if (m_ad && ! m_ad->is_enable_steering_read (qid))
02277 {
02278 func = new func_steering_t (&m_steering[qid], qid, m_ad);
02279 m_func_vector.push_back (func);
02280 func = NULL;
02281 m_ad->enable_steering_read (qid);
02282 }
02283 }
02284
02285 bool get_steering (steering_data_t &d_, int qid)
02286 {
02287 if (m_ad && m_ad->steering_okay (qid))
02288 {
02289 assert (qid >= 0 && qid < 1);
02290 d_ = m_steering[qid];
02291 return true;
02292 }
02293 else
02294 return false;
02295 }
02296
02297 void enable_steering_write (int qid)
02298 { if (m_ad)
02299 m_ad->enable_steering_write(qid);
02300 }
02301
02302 bool publish_steering(steering_data_t &d_, int qid)
02303 {
02304 if (m_ad && m_ad->is_enable_steering_write (qid))
02305 return m_ad->publish_steering (d_, qid);
02306 else
02307 return false;
02308 }
02309
02310 void enable_survey_gp_read (int qid)
02311 {
02312 if (m_ad && ! m_ad->is_enable_survey_gp_read (qid))
02313 {
02314 func = new func_survey_gp_t (&m_survey_gp[qid], qid, m_ad);
02315 m_func_vector.push_back (func);
02316 func = NULL;
02317 m_ad->enable_survey_gp_read (qid);
02318 }
02319 }
02320
02321 bool get_survey_gp (survey_gp_data_t &d_, int qid)
02322 {
02323 if (m_ad && m_ad->survey_gp_okay (qid))
02324 {
02325 assert (qid >= 0 && qid < 2);
02326 d_ = m_survey_gp[qid];
02327 return true;
02328 }
02329 else
02330 return false;
02331 }
02332
02333 void enable_survey_gp_write (int qid)
02334 { if (m_ad)
02335 m_ad->enable_survey_gp_write(qid);
02336 }
02337
02338 bool publish_survey_gp(survey_gp_data_t &d_, int qid)
02339 {
02340 if (m_ad && m_ad->is_enable_survey_gp_write (qid))
02341 return m_ad->publish_survey_gp (d_, qid);
02342 else
02343 return false;
02344 }
02345
02346 void enable_triangle_data_read (int qid)
02347 {
02348 if (m_ad && ! m_ad->is_enable_triangle_data_read (qid))
02349 {
02350 func = new func_triangle_data_t (&m_triangle_data[qid], qid, m_ad);
02351 m_func_vector.push_back (func);
02352 func = NULL;
02353 m_ad->enable_triangle_data_read (qid);
02354 }
02355 }
02356
02357 bool get_triangle_data (triangle_data_t &d_, int qid)
02358 {
02359 if (m_ad && m_ad->triangle_data_okay (qid))
02360 {
02361 assert (qid >= 0 && qid < 4);
02362 d_ = m_triangle_data[qid];
02363 return true;
02364 }
02365 else
02366 return false;
02367 }
02368
02369 void enable_triangle_data_write (int qid)
02370 { if (m_ad)
02371 m_ad->enable_triangle_data_write(qid);
02372 }
02373
02374 bool publish_triangle_data(triangle_data_t &d_, int qid)
02375 {
02376 if (m_ad && m_ad->is_enable_triangle_data_write (qid))
02377 return m_ad->publish_triangle_data (d_, qid);
02378 else
02379 return false;
02380 }
02381
02382 void enable_vehicle_read (int qid)
02383 {
02384 if (m_ad && ! m_ad->is_enable_vehicle_read (qid))
02385 {
02386 func = new func_vehicle_t (&m_vehicle[qid], qid, m_ad);
02387 m_func_vector.push_back (func);
02388 func = NULL;
02389 m_ad->enable_vehicle_read (qid);
02390 }
02391 }
02392
02393 bool get_vehicle (vehicle_data_t &d_, int qid)
02394 {
02395 if (m_ad && m_ad->vehicle_okay (qid))
02396 {
02397 assert (qid >= 0 && qid < 1);
02398 d_ = m_vehicle[qid];
02399 return true;
02400 }
02401 else
02402 return false;
02403 }
02404
02405 void enable_vehicle_write (int qid)
02406 { if (m_ad)
02407 m_ad->enable_vehicle_write(qid);
02408 }
02409
02410 bool publish_vehicle(vehicle_data_t &d_, int qid)
02411 {
02412 if (m_ad && m_ad->is_enable_vehicle_write (qid))
02413 return m_ad->publish_vehicle (d_, qid);
02414 else
02415 return false;
02416 }
02417
02418 void enable_vpath_read (int qid)
02419 {
02420 if (m_ad && ! m_ad->is_enable_vpath_read (qid))
02421 {
02422 func = new func_vpath_t (&m_vpath[qid], qid, m_ad);
02423 m_func_vector.push_back (func);
02424 func = NULL;
02425 m_ad->enable_vpath_read (qid);
02426 }
02427 }
02428
02429 bool get_vpath (vpath_data_t &d_, int qid)
02430 {
02431 if (m_ad && m_ad->vpath_okay (qid))
02432 {
02433 assert (qid >= 0 && qid < 1);
02434 d_ = m_vpath[qid];
02435 return true;
02436 }
02437 else
02438 return false;
02439 }
02440
02441 void enable_vpath_write (int qid)
02442 { if (m_ad)
02443 m_ad->enable_vpath_write(qid);
02444 }
02445
02446 bool publish_vpath(vpath_data_t &d_, int qid)
02447 {
02448 if (m_ad && m_ad->is_enable_vpath_write (qid))
02449 return m_ad->publish_vpath (d_, qid);
02450 else
02451 return false;
02452 }
02453
02454 void enable_waypt_read (int qid)
02455 {
02456 if (m_ad && ! m_ad->is_enable_waypt_read (qid))
02457 {
02458 func = new func_waypt_t (&m_waypt[qid], qid, m_ad);
02459 m_func_vector.push_back (func);
02460 func = NULL;
02461 m_ad->enable_waypt_read (qid);
02462 }
02463 }
02464
02465 bool get_waypt (waypt_data_t &d_, int qid)
02466 {
02467 if (m_ad && m_ad->waypt_okay (qid))
02468 {
02469 assert (qid >= 0 && qid < 1);
02470 d_ = m_waypt[qid];
02471 return true;
02472 }
02473 else
02474 return false;
02475 }
02476
02477 void enable_waypt_write (int qid)
02478 { if (m_ad)
02479 m_ad->enable_waypt_write(qid);
02480 }
02481
02482 bool publish_waypt(waypt_data_t &d_, int qid)
02483 {
02484 if (m_ad && m_ad->is_enable_waypt_write (qid))
02485 return m_ad->publish_waypt (d_, qid);
02486 else
02487 return false;
02488 }
02489
02491 void update_state (bool debug= false);
02492
02493 bool input_data_available ()
02494 {
02495 while (true)
02496 {
02497 if (
02498 (!m_ad->is_enable_acceleration_read (0) ||
02499 m_ad->acceleration_okay (0)) &&
02500 (!m_ad->is_enable_angular_rate_read (0) ||
02501 m_ad->angular_rate_okay (0)) &&
02502 (!m_ad->is_enable_cbln_read (0) ||
02503 m_ad->cbln_okay (0)) &&
02504 (!m_ad->is_enable_cbln_dtm_read (0) ||
02505 m_ad->cbln_dtm_okay (0)) &&
02506 (!m_ad->is_enable_cbmesg_read (0) ||
02507 m_ad->cbmesg_okay (0)) &&
02508 (!m_ad->is_enable_cog_read (0) ||
02509 m_ad->cog_okay (0)) &&
02510 (!m_ad->is_enable_control_read (0) ||
02511 m_ad->control_okay (0)) &&
02512 (!m_ad->is_enable_control_line_read (0) ||
02513 m_ad->control_line_okay (0)) &&
02514 (!m_ad->is_enable_drive_read (0) ||
02515 m_ad->drive_okay (0)) &&
02516 (!m_ad->is_enable_grid_path_read (0) ||
02517 m_ad->grid_path_okay (0)) &&
02518 (!m_ad->is_enable_grid_tile_read (0) ||
02519 m_ad->grid_tile_okay (0)) &&
02520 (!m_ad->is_enable_ground_wheel_angle_read (0) ||
02521 m_ad->ground_wheel_angle_okay (0)) &&
02522 (!m_ad->is_enable_guide_read (0) ||
02523 m_ad->guide_okay (0)) &&
02524 (!m_ad->is_enable_heading_read (0) ||
02525 m_ad->heading_okay (0)) &&
02526 (!m_ad->is_enable_ibeo_object_read (0) ||
02527 m_ad->ibeo_object_okay (0)) &&
02528 (!m_ad->is_enable_ibeo_scan_read (0) ||
02529 m_ad->ibeo_scan_okay (0)) &&
02530 (!m_ad->is_enable_image_read (0) ||
02531 m_ad->image_okay (0)) &&
02532 (!m_ad->is_enable_iteris_lane_read (0) ||
02533 m_ad->iteris_lane_okay (0)) &&
02534 (!m_ad->is_enable_iteris_lane_gp_read (0) ||
02535 m_ad->iteris_lane_gp_okay (0)) &&
02536 (!m_ad->is_enable_lane_read (0) ||
02537 m_ad->lane_okay (0)) &&
02538 (!m_ad->is_enable_local_dtm_read (0) ||
02539 m_ad->local_dtm_okay (0)) &&
02540 (!m_ad->is_enable_mesh_cell_read (0) ||
02541 m_ad->mesh_cell_okay (0)) &&
02542 (!m_ad->is_enable_mission_status_read (0) ||
02543 m_ad->mission_status_okay (0)) &&
02544 (!m_ad->is_enable_motion_read (0) ||
02545 m_ad->motion_okay (0)) &&
02546 (!m_ad->is_enable_nav_read (0) ||
02547 m_ad->nav_okay (0)) &&
02548 (!m_ad->is_enable_path_read (0) ||
02549 m_ad->path_okay (0)) &&
02550 (!m_ad->is_enable_plan_status_read (0) ||
02551 m_ad->plan_status_okay (0)) &&
02552 (!m_ad->is_enable_playback_control_read (0) ||
02553 m_ad->playback_control_okay (0)) &&
02554 (!m_ad->is_enable_radar_read (0) ||
02555 m_ad->radar_okay (0)) &&
02556 (!m_ad->is_enable_radar_gp_read (0) ||
02557 m_ad->radar_gp_okay (0)) &&
02558 (!m_ad->is_enable_range_read (0) ||
02559 m_ad->range_okay (0)) &&
02560 (!m_ad->is_enable_scan_analysis_read (0) ||
02561 m_ad->scan_analysis_okay (0)) &&
02562 (!m_ad->is_enable_scan_read (0) ||
02563 m_ad->scan_okay (0)) &&
02564 (!m_ad->is_enable_scan_dxyz_read (0) ||
02565 m_ad->scan_dxyz_okay (0)) &&
02566 (!m_ad->is_enable_scan_gp_read (0) ||
02567 m_ad->scan_gp_okay (0)) &&
02568 (!m_ad->is_enable_scan_lane_gp_read (0) ||
02569 m_ad->scan_lane_gp_okay (0)) &&
02570 (!m_ad->is_enable_sensor_position_read (0) ||
02571 m_ad->sensor_position_okay (0)) &&
02572 (!m_ad->is_enable_signal_line_read (0) ||
02573 m_ad->signal_line_okay (0)) &&
02574 (!m_ad->is_enable_sim_time_read (0) ||
02575 m_ad->sim_time_okay (0)) &&
02576 (!m_ad->is_enable_sog_read (0) ||
02577 m_ad->sog_okay (0)) &&
02578 (!m_ad->is_enable_steering_read (0) ||
02579 m_ad->steering_okay (0)) &&
02580 (!m_ad->is_enable_survey_gp_read (0) ||
02581 m_ad->survey_gp_okay (0)) &&
02582 (!m_ad->is_enable_triangle_data_read (0) ||
02583 m_ad->triangle_data_okay (0)) &&
02584 (!m_ad->is_enable_vehicle_read (0) ||
02585 m_ad->vehicle_okay (0)) &&
02586 (!m_ad->is_enable_vpath_read (0) ||
02587 m_ad->vpath_okay (0)) &&
02588 (!m_ad->is_enable_waypt_read (0) ||
02589 m_ad->waypt_okay (0)) &&
02590 true)
02591 break;
02592 cb_time_t::wait_until (cb_time_t::curr_time() + 0.05);
02593 }
02594 return true;
02595 }
02596
02597 bool input_acceleration_available (unsigned qid_)
02598 {
02599 return (m_ad->acceleration_okay (qid_));
02600 }
02601 bool input_angular_rate_available (unsigned qid_)
02602 {
02603 return (m_ad->angular_rate_okay (qid_));
02604 }
02605 bool input_cbln_available (unsigned qid_)
02606 {
02607 return (m_ad->cbln_okay (qid_));
02608 }
02609 bool input_cbln_dtm_available (unsigned qid_)
02610 {
02611 return (m_ad->cbln_dtm_okay (qid_));
02612 }
02613 bool input_cbmesg_available (unsigned qid_)
02614 {
02615 return (m_ad->cbmesg_okay (qid_));
02616 }
02617 bool input_cog_available (unsigned qid_)
02618 {
02619 return (m_ad->cog_okay (qid_));
02620 }
02621 bool input_control_available (unsigned qid_)
02622 {
02623 return (m_ad->control_okay (qid_));
02624 }
02625 bool input_control_line_available (unsigned qid_)
02626 {
02627 return (m_ad->control_line_okay (qid_));
02628 }
02629 bool input_drive_available (unsigned qid_)
02630 {
02631 return (m_ad->drive_okay (qid_));
02632 }
02633 bool input_grid_path_available (unsigned qid_)
02634 {
02635 return (m_ad->grid_path_okay (qid_));
02636 }
02637 bool input_grid_tile_available (unsigned qid_)
02638 {
02639 return (m_ad->grid_tile_okay (qid_));
02640 }
02641 bool input_ground_wheel_angle_available (unsigned qid_)
02642 {
02643 return (m_ad->ground_wheel_angle_okay (qid_));
02644 }
02645 bool input_guide_available (unsigned qid_)
02646 {
02647 return (m_ad->guide_okay (qid_));
02648 }
02649 bool input_heading_available (unsigned qid_)
02650 {
02651 return (m_ad->heading_okay (qid_));
02652 }
02653 bool input_ibeo_object_available (unsigned qid_)
02654 {
02655 return (m_ad->ibeo_object_okay (qid_));
02656 }
02657 bool input_ibeo_scan_available (unsigned qid_)
02658 {
02659 return (m_ad->ibeo_scan_okay (qid_));
02660 }
02661 bool input_image_available (unsigned qid_)
02662 {
02663 return (m_ad->image_okay (qid_));
02664 }
02665 bool input_iteris_lane_available (unsigned qid_)
02666 {
02667 return (m_ad->iteris_lane_okay (qid_));
02668 }
02669 bool input_iteris_lane_gp_available (unsigned qid_)
02670 {
02671 return (m_ad->iteris_lane_gp_okay (qid_));
02672 }
02673 bool input_lane_available (unsigned qid_)
02674 {
02675 return (m_ad->lane_okay (qid_));
02676 }
02677 bool input_local_dtm_available (unsigned qid_)
02678 {
02679 return (m_ad->local_dtm_okay (qid_));
02680 }
02681 bool input_mesh_cell_available (unsigned qid_)
02682 {
02683 return (m_ad->mesh_cell_okay (qid_));
02684 }
02685 bool input_mission_status_available (unsigned qid_)
02686 {
02687 return (m_ad->mission_status_okay (qid_));
02688 }
02689 bool input_motion_available (unsigned qid_)
02690 {
02691 return (m_ad->motion_okay (qid_));
02692 }
02693 bool input_nav_available (unsigned qid_)
02694 {
02695 return (m_ad->nav_okay (qid_));
02696 }
02697 bool input_path_available (unsigned qid_)
02698 {
02699 return (m_ad->path_okay (qid_));
02700 }
02701 bool input_plan_status_available (unsigned qid_)
02702 {
02703 return (m_ad->plan_status_okay (qid_));
02704 }
02705 bool input_playback_control_available (unsigned qid_)
02706 {
02707 return (m_ad->playback_control_okay (qid_));
02708 }
02709 bool input_radar_available (unsigned qid_)
02710 {
02711 return (m_ad->radar_okay (qid_));
02712 }
02713 bool input_radar_gp_available (unsigned qid_)
02714 {
02715 return (m_ad->radar_gp_okay (qid_));
02716 }
02717 bool input_range_available (unsigned qid_)
02718 {
02719 return (m_ad->range_okay (qid_));
02720 }
02721 bool input_scan_analysis_available (unsigned qid_)
02722 {
02723 return (m_ad->scan_analysis_okay (qid_));
02724 }
02725 bool input_scan_available (unsigned qid_)
02726 {
02727 return (m_ad->scan_okay (qid_));
02728 }
02729 bool input_scan_dxyz_available (unsigned qid_)
02730 {
02731 return (m_ad->scan_dxyz_okay (qid_));
02732 }
02733 bool input_scan_gp_available (unsigned qid_)
02734 {
02735 return (m_ad->scan_gp_okay (qid_));
02736 }
02737 bool input_scan_lane_gp_available (unsigned qid_)
02738 {
02739 return (m_ad->scan_lane_gp_okay (qid_));
02740 }
02741 bool input_sensor_position_available (unsigned qid_)
02742 {
02743 return (m_ad->sensor_position_okay (qid_));
02744 }
02745 bool input_signal_line_available (unsigned qid_)
02746 {
02747 return (m_ad->signal_line_okay (qid_));
02748 }
02749 bool input_sim_time_available (unsigned qid_)
02750 {
02751 return (m_ad->sim_time_okay (qid_));
02752 }
02753 bool input_sog_available (unsigned qid_)
02754 {
02755 return (m_ad->sog_okay (qid_));
02756 }
02757 bool input_steering_available (unsigned qid_)
02758 {
02759 return (m_ad->steering_okay (qid_));
02760 }
02761 bool input_survey_gp_available (unsigned qid_)
02762 {
02763 return (m_ad->survey_gp_okay (qid_));
02764 }
02765 bool input_triangle_data_available (unsigned qid_)
02766 {
02767 return (m_ad->triangle_data_okay (qid_));
02768 }
02769 bool input_vehicle_available (unsigned qid_)
02770 {
02771 return (m_ad->vehicle_okay (qid_));
02772 }
02773 bool input_vpath_available (unsigned qid_)
02774 {
02775 return (m_ad->vpath_okay (qid_));
02776 }
02777 bool input_waypt_available (unsigned qid_)
02778 {
02779 return (m_ad->waypt_okay (qid_));
02780 }
02781
02782 private:
02783
02784 double m_nav_atrack;
02785 double m_nav_xtrack;
02786
02787 public:
02789 bool get_bumper_nav (nav_data_t &nav_);
02790
02791
02792 spatial_to_lane_map_t *m_spatial_map;
02793 void enable_spatial_map(const rndf_t *rndf_, double cell_size_)
02794 {
02795 assert (m_rndf_lane_container);
02796
02797 if (rndf_ != NULL && m_rndf == NULL)
02798 m_rndf = rndf_;
02799
02800 if (m_spatial_map)
02801 return;
02802
02803 m_spatial_map = new spatial_to_lane_map_t (m_rndf,
02804 cell_size_);
02805
02806 std::vector<rndf_lane_data_t> rndf_lanes;
02807
02808 get_all_lane_segments(rndf_lanes);
02809 assert (m_spatial_map);
02810 m_spatial_map->update_spatial_map(rndf_lanes);
02811 }
02812 bool neighboring_lanes (std::vector<rndf_t::lane_seg_t> &lanes_seg,
02813 double x_, double y_, double rad_)
02814 {
02815 assert (m_spatial_map);
02816 return m_spatial_map->neighboring_lanes (lanes_seg, x_, y_,
02817 rad_);
02818 }
02819
02821 bool near_any_lane(double x_, double y_, double rad_)
02822 { return m_spatial_map->near_any_lane(x_, y_, rad_); }
02823
02824
02825
02826 bool m_map_rndf_lane;
02827 rndf_lane_container_t *m_rndf_lane_container;
02828
02829
02831 void enable_rndf_lane_map (rndf_t const *rndf_ = NULL,
02832 double interp_dis_ = 1, unsigned qid_ = 0);
02833
02834
02835 bool publish_rndf_lane (rndf_lane_data_t &rl_, int qid);
02836
02837 void enable_rndf_lane_write (int qid);
02838
02840 void wait_for_stable_world ();
02841
02844 bool update_rndf_lanes (std::vector<rndf_lane_data_t> &rndf_list_);
02845 void update_rndf_lane (rndf_lane_data_t &rndf_lane);
02846
02848 void get_all_lane_segments(std::vector<rndf_lane_data_t> &rndf_lanes);
02849
02851 bool get_lane_boundary (rndf_lane_data_t &lb_,unsigned seg_id_,
02852 unsigned l_id_);
02853
02854 bool stop_region_blocked (rndf_t::waypoint_t const &wp_,
02855 double &blk_tstamp_);
02856
02858 bool get_lane_seg (rndf_lane_data_t &lb_,
02859 unsigned start_sid_, unsigned start_lid_,
02860 unsigned start_wid_, unsigned end_sid_,
02861 unsigned end_lid_, unsigned end_wid_);
02862
02863
02864 private:
02865 const rndf_t *m_rndf;
02866
02867
02868
02869 static const unsigned NUM_RADAR_QUEUES = 4;
02870 bool m_buffer_radar [NUM_RADAR_QUEUES];
02871 radar_data_collector_t *m_radar_collector[NUM_RADAR_QUEUES];
02872 public:
02873 void enable_radar_data_buffer(unsigned qid_);
02874
02875 bool update_radar_data (unsigned qid_, bool debug= FALSE);
02876
02877 bool get_radar_data (unsigned qid_,
02878 std::vector<radar_object_t> &radar_list_,
02879 double threshold_tstamp_) const;
02880
02881
02882
02883 private:
02884 bool m_buffer_blocked_lanes;
02885 blocked_lane_container_t *m_blk_lane_container;
02886 public:
02887 void enable_blocked_lane_buffer();
02888 void enable_blocked_lane_write (int qid);
02889
02890 bool publish_blocked_lane (blocked_lane_data_t &blk_lane, int qid);
02891
02892 bool update_blocked_lanes (unsigned qid_);
02893 bool update_blocked_lanes (
02894 const std::vector<blocked_lane_data_t> &blk_lanes_);
02895 void update_blocked_lane (const blocked_lane_data_t &blk_lane_);
02896
02897
02898 bool get_all_blockages (
02899 std::vector<blocked_lane_data_t> &blk_lanes_,
02900 double threshold_tstamp_) const;
02901
02902 bool get_lane_blockages (
02903 std::vector<blocked_lane_data_t> &blk_lanes_, unsigned sid,
02904 unsigned lid, double threshold_tstamp_) const;
02905
02906
02907
02908
02909 private:
02910 bool m_track_intersection;
02911 intersection_tracker_t *m_intersection_tracker;
02912 public:
02913 bool update_intersection (double threshold_tstamp_);
02914 void enable_intersection_tracking(const rndf_t *rndf_ = NULL);
02915 const intersection_tracker_t::intersection_status_t* get_intersection_status(rndf_t::waypoint_id_t wp_id_);
02916
02917
02918
02919
02920 private:
02921 static const unsigned NUM_OBST_QUEUES = 6;
02922 bool m_buffer_obstacle [NUM_OBST_QUEUES];
02923 tstamp_buffering_t<obstacle_data_t> m_obstacle_container [NUM_OBST_QUEUES];
02924 public:
02925 void enable_obstacle_buffer (unsigned qid);
02926 void enable_obstacle_write (unsigned qid);
02927
02928 void publish_obstacle (obstacle_data_t &obstacle_, unsigned qid);
02929 void publish_obstacle (std::vector<obstacle_data_t> obst_list,
02930 unsigned qid);
02931
02932 bool update_obstacle (unsigned qid);
02933 bool update_obstacle (std::vector <obstacle_data_t> &obst_list,
02934 unsigned qid);
02935
02936 bool get_all_obstacles (std::vector<obstacle_data_t> &obst_list_,
02937 unsigned qid);
02938
02939
02940 private:
02941 static const unsigned NUM_OBST_POINT_QUEUES = 6;
02942 bool m_buffer_obstacle_points [NUM_OBST_POINT_QUEUES];
02943 tstamp_buffering_t<obstacle_points_data_t> m_obstacle_points_container [NUM_OBST_POINT_QUEUES];
02944 public:
02945 void enable_obstacle_points_buffer (unsigned qid);
02946 void enable_obstacle_points_write (unsigned qid);
02947
02948 void publish_obstacle_points (obstacle_points_data_t &obstacle_, unsigned qid);
02949 void publish_obstacle_points (std::vector<obstacle_points_data_t> obst_list,
02950 unsigned qid);
02951
02952 bool update_obstacle_points (unsigned qid);
02953 bool update_obstacle_points (std::vector <obstacle_points_data_t> &obst_list,
02954 unsigned qid);
02955
02956 bool get_all_obstacle_points (std::vector<obstacle_points_data_t> &obst_list_,
02957 unsigned qid);
02958
02959 bool get_zone_obstacles(
02960 std::vector<obstacle_points_data_t> &obst_list_,
02961 unsigned zone_id, unsigned qid_,
02962 obstacle_points_data_t::obstacle_mobility_t for_mobility_);
02963 bool obstacle_in_zone (obstacle_points_data_t const &obst_,
02964 rndf_t::zone_t const &zone);
02965
02966
02967 private:
02968 static const unsigned NUM_SCAN_GP_QUEUES = 8;
02969 bool m_buffer_scan_gp [NUM_SCAN_GP_QUEUES];
02970 tstamp_buffering_t<scan_gp_data_t> m_scan_gp_container [NUM_SCAN_GP_QUEUES];
02971 public:
02972 void enable_scan_gp_buffer (unsigned qid);
02973 void enable_scan_gp_write (unsigned qid);
02974
02975 void publish_scan_gp (scan_gp_data_t &obstacle_, unsigned qid);
02976 void publish_scan_gp (std::vector<scan_gp_data_t> obst_list,
02977 unsigned qid);
02978
02979 bool update_scan_gp (unsigned qid);
02980 bool update_scan_gp (std::vector <scan_gp_data_t> &obst_list,
02981 unsigned qid);
02982
02983 bool get_all_scan_gp (std::vector<scan_gp_data_t> &obst_list_,
02984 unsigned qid);
02985 };
02986
02987 };
02988
02989 #endif
02990