summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Cailean <mcailean@codeaurora.org>2018-02-06 16:36:27 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2018-06-16 11:27:26 -0700
commit7dfa87b244f3acc601c7db5721d6d5ebc50320f3 (patch)
treeb0e99684d2c8b7326d55a2e40fa3e1cc1ef9082b
parent271cfd8a00f97f13a937877cc8ef66ef0392a087 (diff)
downloadgps-7dfa87b244f3acc601c7db5721d6d5ebc50320f3.tar.gz
Support Multiband feature
Add carrierFrequency to GNSS Measurements reporting. Also, add AGC level from QMI LOC message to GNSS measurements (as opposed to adding it from NMEA debug messages). CRs-fixed: 2186144 Change-Id: Ia3995ba9e09ef4c68e8922b7570f7af0eb50098a
-rw-r--r--android/location_api/GnssAPIClient.cpp3
-rw-r--r--core/LocApiBase.cpp3
-rw-r--r--location/LocationDataTypes.h9
-rw-r--r--utils/gps_extended_c.h2
-rw-r--r--utils/loc_gps.h1
5 files changed, 14 insertions, 4 deletions
diff --git a/android/location_api/GnssAPIClient.cpp b/android/location_api/GnssAPIClient.cpp
index 24d94aa..9fbbb27 100644
--- a/android/location_api/GnssAPIClient.cpp
+++ b/android/location_api/GnssAPIClient.cpp
@@ -525,6 +525,7 @@ static void convertGnssSvStatus(GnssSvNotification& in, IGnssCallback::GnssSvSta
info.cN0Dbhz = in.gnssSvs[i].cN0Dbhz;
info.elevationDegrees = in.gnssSvs[i].elevation;
info.azimuthDegrees = in.gnssSvs[i].azimuth;
+ info.carrierFrequencyHz = in.gnssSvs[i].carrierFrequencyHz;
info.svFlag = static_cast<uint8_t>(IGnssCallback::GnssSvFlags::NONE);
if (in.gnssSvs[i].gnssSvOptionsMask & GNSS_SV_OPTIONS_HAS_EPHEMER_BIT)
info.svFlag |= IGnssCallback::GnssSvFlags::HAS_EPHEMERIS_DATA;
@@ -532,6 +533,8 @@ static void convertGnssSvStatus(GnssSvNotification& in, IGnssCallback::GnssSvSta
info.svFlag |= IGnssCallback::GnssSvFlags::HAS_ALMANAC_DATA;
if (in.gnssSvs[i].gnssSvOptionsMask & GNSS_SV_OPTIONS_USED_IN_FIX_BIT)
info.svFlag |= IGnssCallback::GnssSvFlags::USED_IN_FIX;
+ if (in.gnssSvs[i].gnssSvOptionsMask & GNSS_SV_OPTIONS_HAS_CARRIER_FREQUENCY_BIT)
+ info.svFlag |= IGnssCallback::GnssSvFlags::HAS_CARRIER_FREQUENCY;
}
}
diff --git a/core/LocApiBase.cpp b/core/LocApiBase.cpp
index 650de92..30fecec 100644
--- a/core/LocApiBase.cpp
+++ b/core/LocApiBase.cpp
@@ -320,7 +320,7 @@ void LocApiBase::reportSv(GnssSvNotification& svNotify)
sizeof(constellationString) / sizeof(constellationString[0]) - 1) {
svNotify.gnssSvs[i].type = GNSS_SV_TYPE_UNKNOWN;
}
- LOC_LOGV(" %03zu: %*s %02d %f %f %f 0x%02X",
+ LOC_LOGV(" %03zu: %*s %02d %f %f %f %f 0x%02X",
i,
13,
constellationString[svNotify.gnssSvs[i].type],
@@ -328,6 +328,7 @@ void LocApiBase::reportSv(GnssSvNotification& svNotify)
svNotify.gnssSvs[i].cN0Dbhz,
svNotify.gnssSvs[i].elevation,
svNotify.gnssSvs[i].azimuth,
+ svNotify.gnssSvs[i].carrierFrequencyHz,
svNotify.gnssSvs[i].gnssSvOptionsMask);
}
// loop through adapters, and deliver to all adapters.
diff --git a/location/LocationDataTypes.h b/location/LocationDataTypes.h
index 1ebcb33..29bae91 100644
--- a/location/LocationDataTypes.h
+++ b/location/LocationDataTypes.h
@@ -345,9 +345,10 @@ typedef enum {
typedef uint16_t GnssSvOptionsMask;
typedef enum {
- GNSS_SV_OPTIONS_HAS_EPHEMER_BIT = (1<<0),
- GNSS_SV_OPTIONS_HAS_ALMANAC_BIT = (1<<1),
- GNSS_SV_OPTIONS_USED_IN_FIX_BIT = (1<<2),
+ GNSS_SV_OPTIONS_HAS_EPHEMER_BIT = (1<<0),
+ GNSS_SV_OPTIONS_HAS_ALMANAC_BIT = (1<<1),
+ GNSS_SV_OPTIONS_USED_IN_FIX_BIT = (1<<2),
+ GNSS_SV_OPTIONS_HAS_CARRIER_FREQUENCY_BIT = (1<<3),
} GnssSvOptionsBits;
typedef enum {
@@ -454,6 +455,7 @@ typedef enum {
GNSS_AIDING_DATA_SV_NO_EXIST_BIT = (1<<8), // SV does not exist
GNSS_AIDING_DATA_SV_IONOSPHERE_BIT = (1<<9), // ionosphere correction
GNSS_AIDING_DATA_SV_TIME_BIT = (1<<10),// reset satellite time
+ GNSS_AIDING_DATA_SV_MB_DATA = (1 << 11),// delete multiband data
} GnssAidingDataSvBits;
typedef uint32_t GnssAidingDataSvTypeMask;
@@ -794,6 +796,7 @@ typedef struct {
float elevation; // elevation of SV (in degrees)
float azimuth; // azimuth of SV (in degrees)
GnssSvOptionsMask gnssSvOptionsMask; // Bitwise OR of GnssSvOptionsBits
+ float carrierFrequencyHz; // carrier frequency of the signal tracked
} GnssSv;
struct GnssConfigSetAssistanceServer {
diff --git a/utils/gps_extended_c.h b/utils/gps_extended_c.h
index f2b5b9f..481889f 100644
--- a/utils/gps_extended_c.h
+++ b/utils/gps_extended_c.h
@@ -57,6 +57,8 @@ extern "C" {
/** LocGpsLocation has valid map index */
#define LOC_GPS_LOCATION_HAS_MAP_INDEX 0x0200
+#define GNSS_INVALID_JAMMER_IND 0x7FFFFFFF
+
/** Sizes for indoor fields */
#define GPS_LOCATION_MAP_URL_SIZE 400
#define GPS_LOCATION_MAP_INDEX_SIZE 16
diff --git a/utils/loc_gps.h b/utils/loc_gps.h
index 95d0c21..505060c 100644
--- a/utils/loc_gps.h
+++ b/utils/loc_gps.h
@@ -151,6 +151,7 @@ typedef uint16_t LocGpsAidingData;
#define LOC_GPS_DELETE_SVSTEER 0x0100
#define LOC_GPS_DELETE_SADATA 0x0200
#define LOC_GPS_DELETE_RTI 0x0400
+#define LOC_GPS_DELETE_MB_DATA 0x0800
#define LOC_GPS_DELETE_CELLDB_INFO 0x8000
#define LOC_GPS_DELETE_ALL 0xFFFF