summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHelmut Schmidt <Helmut.3.Schmidt@continental-corporation.com>2015-11-04 12:06:26 +0100
committerHelmut Schmidt <Helmut.3.Schmidt@continental-corporation.com>2015-11-04 12:06:26 +0100
commit5a959c2e1d28628a653ca6461ddfc9aec9bbd5ce (patch)
treeec6c049abed752bd4ee7f319714d38502e0f7de2
parent64b6cdb911fc26c81fd4c31537c615464df4a96c (diff)
downloadpositioning-5a959c2e1d28628a653ca6461ddfc9aec9bbd5ce.tar.gz
EnhancedPositionService Configuration interface: PoC improvement to demonstrate link to GNSS API
-rw-r--r--enhanced-position-service/dbus/src/configuration.cpp28
-rw-r--r--gnss-service/src/gnss-use-nmea.cpp20
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;