diff --git a/gpsd_client/CMakeLists.txt b/gpsd_client/CMakeLists.txt index af83744..d8d4ae6 100644 --- a/gpsd_client/CMakeLists.txt +++ b/gpsd_client/CMakeLists.txt @@ -26,6 +26,7 @@ catkin_package() include_directories(${catkin_INCLUDE_DIRS} ${libgps_INCLUDE_DIRS}) add_executable(${PROJECT_NAME} src/client.cpp) +add_dependencies(${PROJECT_NAME} gps_common_generate_messages_cpp) target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES} ${libgps_LIBRARIES}) ############# diff --git a/gpsd_client/src/client.cpp b/gpsd_client/src/client.cpp index 06ecd18..504f674 100644 --- a/gpsd_client/src/client.cpp +++ b/gpsd_client/src/client.cpp @@ -110,7 +110,11 @@ class GPSDClient { status.satellite_used_prn.resize(status.satellites_used); for (int i = 0; i < status.satellites_used; ++i) { +#if GPSD_API_MAJOR_VERSION >= 6 + status.satellite_used_prn[i] = p->skyview[i].used; +#else status.satellite_used_prn[i] = p->used[i]; +#endif } status.satellites_visible = SATS_VISIBLE; @@ -121,18 +125,28 @@ class GPSDClient { status.satellite_visible_snr.resize(status.satellites_visible); for (int i = 0; i < SATS_VISIBLE; ++i) { +#if GPSD_API_MAJOR_VERSION >= 6 + status.satellite_visible_prn[i] = p->skyview[i].PRN; + status.satellite_visible_z[i] = p->skyview[i].elevation; + status.satellite_visible_azimuth[i] = p->skyview[i].azimuth; + status.satellite_visible_snr[i] = p->skyview[i].ss; +#else status.satellite_visible_prn[i] = p->PRN[i]; status.satellite_visible_z[i] = p->elevation[i]; status.satellite_visible_azimuth[i] = p->azimuth[i]; status.satellite_visible_snr[i] = p->ss[i]; +#endif } if ((p->status & STATUS_FIX) && !(check_fix_by_variance && isnan(p->fix.epx))) { status.status = 0; // FIXME: gpsmm puts its constants in the global // namespace, so `GPSStatus::STATUS_FIX' is illegal. +#if GPSD_API_MAJOR_VERSION < 6 + // STATUS_DPGS_FIX is not in GPSD 6.x.x if (p->status & STATUS_DGPS_FIX) status.status |= 18; // same here +#endif fix.time = p->fix.time; fix.latitude = p->fix.latitude; @@ -194,9 +208,11 @@ class GPSDClient { case STATUS_FIX: fix->status.status = 0; // NavSatStatus::STATUS_FIX; break; +#if GPSD_API_MAJOR_VERSION < 6 case STATUS_DGPS_FIX: fix->status.status = 2; // NavSatStatus::STATUS_GBAS_FIX; break; +#endif } fix->status.service = NavSatStatus::SERVICE_GPS;