From 5a959c2e1d28628a653ca6461ddfc9aec9bbd5ce Mon Sep 17 00:00:00 2001 From: Helmut Schmidt Date: Wed, 4 Nov 2015 12:06:26 +0100 Subject: EnhancedPositionService Configuration interface: PoC improvement to demonstrate link to GNSS API --- .../dbus/src/configuration.cpp | 28 ++++++++++++++++++++-- gnss-service/src/gnss-use-nmea.cpp | 20 ++++++++-------- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/enhanced-position-service/dbus/src/configuration.cpp b/enhanced-position-service/dbus/src/configuration.cpp index b39eb94..0f6eca4 100644 --- a/enhanced-position-service/dbus/src/configuration.cpp +++ b/enhanced-position-service/dbus/src/configuration.cpp @@ -117,10 +117,34 @@ void Configuration::SetProperty(const std::string& name, const ::DBus::Variant& if(name == "SatelliteSystem") { + uint32_t requestedSystems = value; //magic conversion variant -> uint32_t + uint32_t activateSystems = 0; + if (requestedSystems & GENIVI_ENHANCEDPOSITIONSERVICE_GPS) + { + activateSystems |= GNSS_SYSTEM_GPS; + } + if (requestedSystems & GENIVI_ENHANCEDPOSITIONSERVICE_GLONASS) + { + activateSystems |= GNSS_SYSTEM_GLONASS; + } + if (requestedSystems & GENIVI_ENHANCEDPOSITIONSERVICE_GALILEO) + { + activateSystems |= GNSS_SYSTEM_GALILEO; + } + if (requestedSystems & GENIVI_ENHANCEDPOSITIONSERVICE_GPS) + { + activateSystems |= GNSS_SYSTEM_BEIDOU; + } + gnssConfigGNSSSystems(activateSystems); + + //For a real implementation the property should only be changed + //when the the configuration request has become effective as reported + //by the TGNSSPosition.activatedSystems from the GNSSPositionCallback. + //As currently the GNSS PoC has only dummy implementations of + //gnssConfigGNSSSystems(), the property change is triggered immediately + //for demonstration purposes. mSatelliteSystem = value; - LOG_INFO(gCtx,"SatelliteSystem = %d", mSatelliteSystem); - PropertyChanged("SatelliteSystem", value); } diff --git a/gnss-service/src/gnss-use-nmea.cpp b/gnss-service/src/gnss-use-nmea.cpp index 721c3b3..a817d48 100644 --- a/gnss-service/src/gnss-use-nmea.cpp +++ b/gnss-service/src/gnss-use-nmea.cpp @@ -131,45 +131,45 @@ bool extractPosition(const GPS_DATA& gps_data, uint64_t timestamp, TGNSSPosition } } if (gps_data.valid & GPS_DATA_SPEED) - { + { gnss_pos.hSpeed = gps_data.speed; gnss_pos.validityBits |= GNSS_POSITION_HSPEED_VALID; } gnss_pos.vSpeed = 9999; //not available if (gps_data.valid & GPS_DATA_SPEED) - { + { gnss_pos.heading = gps_data.course; gnss_pos.validityBits |= GPS_DATA_COURSE; } if (gps_data.valid & GPS_DATA_PDOP) - { + { gnss_pos.pdop = gps_data.pdop; gnss_pos.validityBits |= GNSS_POSITION_PDOP_VALID; } if (gps_data.valid & GPS_DATA_HDOP) - { + { gnss_pos.hdop = gps_data.hdop; gnss_pos.validityBits |= GNSS_POSITION_HDOP_VALID; } if (gps_data.valid & GPS_DATA_VDOP) - { + { gnss_pos.vdop = gps_data.vdop; gnss_pos.validityBits |= GNSS_POSITION_VDOP_VALID; } if (gps_data.valid & GPS_DATA_USAT) - { + { gnss_pos.usedSatellites = gps_data.usat; gnss_pos.validityBits |= GNSS_POSITION_USAT_VALID; } gnss_pos.trackedSatellites = 9999; //not available gnss_pos.visibleSatellites = 9999; //not available if (gps_data.valid & GPS_DATA_HACC) - { + { gnss_pos.sigmaHPosition = gps_data.hacc; gnss_pos.validityBits |= GNSS_POSITION_SHPOS_VALID; } if (gps_data.valid & GPS_DATA_HACC) - { + { gnss_pos.sigmaAltitude = gps_data.vacc; gnss_pos.validityBits |= GNSS_POSITION_SALT_VALID; } @@ -177,11 +177,11 @@ bool extractPosition(const GPS_DATA& gps_data, uint64_t timestamp, TGNSSPosition gnss_pos.sigmaHSpeed = 9999; //not available gnss_pos.sigmaVSpeed = 9999; //not available gnss_pos.sigmaHeading = 9999; //not available - + + gnss_pos.validityBits |= GNSS_POSITION_STAT_VALID; //always valid gnss_pos.fixStatus = GNSS_FIX_STATUS_NO; if (gps_data.valid & GPS_DATA_FIX2D) { - gnss_pos.validityBits |= GNSS_POSITION_STAT_VALID; if (gps_data.fix2d) { gnss_pos.fixStatus = GNSS_FIX_STATUS_2D; -- cgit v1.2.1