summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2019-07-06 15:33:11 -0700
committerLinux Build Service Account <lnxbuild@localhost>2019-07-06 15:33:11 -0700
commitedc638da38eab6bf1c139774bf1535195537c063 (patch)
tree6ae88cb6c4e1635f709e215f84d596da5f8f7585
parent3814dc922d81130b699fef713c934a64e896c3bd (diff)
parent18d9283e40353e7064f8e190e045e1d4d6bfe587 (diff)
downloadgps-edc638da38eab6bf1c139774bf1535195537c063.tar.gz
Merge 18d9283e40353e7064f8e190e045e1d4d6bfe587 on remote branch
Change-Id: Ie897b532f6211f0dd8d3965ac29bcd2b9aee702f
-rw-r--r--android/1.0/AGnssRil.cpp2
-rw-r--r--android/1.1/AGnssRil.cpp2
-rw-r--r--android/2.0/Gnss.cpp67
-rw-r--r--gnss/GnssAdapter.cpp17
-rw-r--r--gnss/GnssAdapter.h1
-rw-r--r--location/LocationDataTypes.h2
-rw-r--r--utils/gps_extended_c.h22
7 files changed, 73 insertions, 40 deletions
diff --git a/android/1.0/AGnssRil.cpp b/android/1.0/AGnssRil.cpp
index 0ab4fad..0437cf1 100644
--- a/android/1.0/AGnssRil.cpp
+++ b/android/1.0/AGnssRil.cpp
@@ -102,7 +102,7 @@ Return<bool> AGnssRil::updateNetworkState(bool connected, NetworkType type, bool
}
break;
}
- mGnss->getGnssInterface()->updateConnectionStatus(connected, typeout);
+ mGnss->getGnssInterface()->updateConnectionStatus(connected, false, typeout, 0);
}
return true;
}
diff --git a/android/1.1/AGnssRil.cpp b/android/1.1/AGnssRil.cpp
index 96e3597..1e774f1 100644
--- a/android/1.1/AGnssRil.cpp
+++ b/android/1.1/AGnssRil.cpp
@@ -102,7 +102,7 @@ Return<bool> AGnssRil::updateNetworkState(bool connected, NetworkType type, bool
}
break;
}
- mGnss->getGnssInterface()->updateConnectionStatus(connected, typeout);
+ mGnss->getGnssInterface()->updateConnectionStatus(connected, false, typeout, 0);
}
return true;
}
diff --git a/android/2.0/Gnss.cpp b/android/2.0/Gnss.cpp
index 4fa5b63..af76b72 100644
--- a/android/2.0/Gnss.cpp
+++ b/android/2.0/Gnss.cpp
@@ -170,6 +170,23 @@ const GnssInterface* Gnss::getGnssInterface() {
Return<bool> Gnss::setCallback(const sp<V1_0::IGnssCallback>& callback) {
ENTRY_LOG_CALLFLOW();
+
+ // In case where previous call to setCallback_1_1 or setCallback_2_0, then
+ // we need to cleanup these interfaces/callbacks here since we no longer
+ // do so in cleanup() function to keep callbacks around after cleanup()
+ if (mApi != nullptr) {
+ mApi->gnssUpdateCallbacks_2_0(nullptr);
+ }
+ if (mGnssCbIface_1_1 != nullptr) {
+ mGnssCbIface_1_1->unlinkToDeath(mGnssDeathRecipient);
+ mGnssCbIface_1_1 = nullptr;
+ }
+ if (mGnssCbIface_2_0 != nullptr) {
+ mGnssCbIface_2_0->unlinkToDeath(mGnssDeathRecipient);
+ mGnssCbIface_2_0 = nullptr;
+ }
+
+
if (mGnssCbIface != nullptr) {
mGnssCbIface->unlinkToDeath(mGnssDeathRecipient);
}
@@ -291,21 +308,6 @@ Return<void> Gnss::cleanup() {
if (mApi != nullptr) {
mApi->gnssStop();
mApi->gnssDisable();
- mApi->gnssUpdateCallbacks(nullptr, nullptr);
- mApi->gnssUpdateCallbacks_2_0(nullptr);
- }
- mGnssNiCbIface = nullptr;
- if (mGnssCbIface != nullptr) {
- mGnssCbIface->unlinkToDeath(mGnssDeathRecipient);
- mGnssCbIface = nullptr;
- }
- if (mGnssCbIface_1_1 != nullptr) {
- mGnssCbIface_1_1->unlinkToDeath(mGnssDeathRecipient);
- mGnssCbIface_1_1 = nullptr;
- }
- if (mGnssCbIface_2_0 != nullptr) {
- mGnssCbIface_2_0->unlinkToDeath(mGnssDeathRecipient);
- mGnssCbIface_2_0 = nullptr;
}
return Void();
@@ -417,6 +419,23 @@ Return<bool> Gnss::setCallback_1_1(const sp<V1_1::IGnssCallback>& callback) {
LOC_LOGE("%s] Error from gnssNameCb description=%s",
__func__, r.description().c_str());
}
+
+ // In case where previous call to setCallback or setCallback_2_1, then
+ // we need to cleanup these interfaces/callbacks here since we no longer
+ // do so in cleanup() function to keep callbacks around after cleanup()
+ if (mApi != nullptr) {
+ mApi->gnssUpdateCallbacks_2_0(nullptr);
+ }
+ if (mGnssCbIface != nullptr) {
+ mGnssCbIface->unlinkToDeath(mGnssDeathRecipient);
+ mGnssCbIface = nullptr;
+ }
+ if (mGnssCbIface_2_0 != nullptr) {
+ mGnssCbIface_2_0->unlinkToDeath(mGnssDeathRecipient);
+ mGnssCbIface_2_0 = nullptr;
+ }
+
+
if (mGnssCbIface_1_1 != nullptr) {
mGnssCbIface_1_1->unlinkToDeath(mGnssDeathRecipient);
}
@@ -497,6 +516,7 @@ void Gnss::odcpiRequestCb(const OdcpiRequestInfo& request) {
// For emergency mode, request DBH (Device based hybrid) location
// Mark Independent from GNSS flag to false.
if (ODCPI_REQUEST_TYPE_START == request.type) {
+ LOC_LOGd("gnssRequestLocationCb_2_0 isUserEmergency = %d", request.isEmergencyMode);
auto r = mGnssCbIface_2_0->gnssRequestLocationCb_2_0(!request.isEmergencyMode,
request.isEmergencyMode);
if (!r.isOk()) {
@@ -529,6 +549,23 @@ Return<bool> Gnss::setCallback_2_0(const sp<V2_0::IGnssCallback>& callback) {
LOC_LOGE("%s] Error from gnssNameCb description=%s",
__func__, r.description().c_str());
}
+
+ // In case where previous call to setCallback or setCallback_1_1, then
+ // we need to cleanup these interfaces/callbacks here since we no longer
+ // do so in cleanup() function to keep callbacks around after cleanup()
+ if (mApi != nullptr) {
+ mApi->gnssUpdateCallbacks(nullptr, nullptr);
+ }
+ mGnssNiCbIface = nullptr;
+ if (mGnssCbIface != nullptr) {
+ mGnssCbIface->unlinkToDeath(mGnssDeathRecipient);
+ mGnssCbIface = nullptr;
+ }
+ if (mGnssCbIface_1_1 != nullptr) {
+ mGnssCbIface_1_1->unlinkToDeath(mGnssDeathRecipient);
+ mGnssCbIface_1_1 = nullptr;
+ }
+
if (mGnssCbIface_2_0 != nullptr) {
mGnssCbIface_2_0->unlinkToDeath(mGnssDeathRecipient);
}
diff --git a/gnss/GnssAdapter.cpp b/gnss/GnssAdapter.cpp
index 5eb7b91..8c65c82 100644
--- a/gnss/GnssAdapter.cpp
+++ b/gnss/GnssAdapter.cpp
@@ -97,8 +97,7 @@ GnssAdapter::GnssAdapter() :
mPowerStateCb(nullptr),
mIsE911Session(NULL),
mGnssMbSvIdUsedInPosition{},
- mGnssMbSvIdUsedInPosAvail(false),
- mGnssSignalType()
+ mGnssMbSvIdUsedInPosAvail(false)
{
LOC_LOGD("%s]: Constructor %p", __func__, this);
mLocPositionMode.mode = LOC_POSITION_MODE_INVALID;
@@ -3206,9 +3205,6 @@ GnssAdapter::reportPosition(const UlpLocation& ulpLocation,
if (locationExtended.flags & GPS_LOCATION_EXTENDED_HAS_MULTIBAND) {
mGnssMbSvIdUsedInPosAvail = true;
mGnssMbSvIdUsedInPosition = locationExtended.gnss_mb_sv_used_ids;
- for (int i = 0; i < GNSS_SV_MAX; i++) {
- mGnssSignalType[i] = locationExtended.measUsageInfo[i].gnssSignalType;
- }
}
}
@@ -3277,11 +3273,12 @@ GnssAdapter::reportSv(GnssSvNotification& svNotify)
for (int i=0; i < numSv; i++) {
svUsedIdMask = 0;
gnssSvId = svNotify.gnssSvs[i].svId;
+ GnssSignalTypeMask signalTypeMask = svNotify.gnssSvs[i].gnssSignalTypeMask;
switch (svNotify.gnssSvs[i].type) {
case GNSS_SV_TYPE_GPS:
if (mGnssSvIdUsedInPosAvail) {
if (mGnssMbSvIdUsedInPosAvail) {
- switch (mGnssSignalType[i]) {
+ switch (signalTypeMask) {
case GNSS_SIGNAL_GPS_L1CA:
svUsedIdMask = mGnssMbSvIdUsedInPosition.gps_l1ca_sv_used_ids_mask;
break;
@@ -3303,7 +3300,7 @@ GnssAdapter::reportSv(GnssSvNotification& svNotify)
case GNSS_SV_TYPE_GLONASS:
if (mGnssSvIdUsedInPosAvail) {
if (mGnssMbSvIdUsedInPosAvail) {
- switch (mGnssSignalType[i]) {
+ switch (signalTypeMask) {
case GNSS_SIGNAL_GLONASS_G1:
svUsedIdMask = mGnssMbSvIdUsedInPosition.glo_g1_sv_used_ids_mask;
break;
@@ -3319,7 +3316,7 @@ GnssAdapter::reportSv(GnssSvNotification& svNotify)
case GNSS_SV_TYPE_BEIDOU:
if (mGnssSvIdUsedInPosAvail) {
if (mGnssMbSvIdUsedInPosAvail) {
- switch (mGnssSignalType[i]) {
+ switch (signalTypeMask) {
case GNSS_SIGNAL_BEIDOU_B1I:
svUsedIdMask = mGnssMbSvIdUsedInPosition.bds_b1i_sv_used_ids_mask;
break;
@@ -3344,7 +3341,7 @@ GnssAdapter::reportSv(GnssSvNotification& svNotify)
case GNSS_SV_TYPE_GALILEO:
if (mGnssSvIdUsedInPosAvail) {
if (mGnssMbSvIdUsedInPosAvail) {
- switch (mGnssSignalType[i]) {
+ switch (signalTypeMask) {
case GNSS_SIGNAL_GALILEO_E1:
svUsedIdMask = mGnssMbSvIdUsedInPosition.gal_e1_sv_used_ids_mask;
break;
@@ -3363,7 +3360,7 @@ GnssAdapter::reportSv(GnssSvNotification& svNotify)
case GNSS_SV_TYPE_QZSS:
if (mGnssSvIdUsedInPosAvail) {
if (mGnssMbSvIdUsedInPosAvail) {
- switch (mGnssSignalType[i]) {
+ switch (signalTypeMask) {
case GNSS_SIGNAL_QZSS_L1CA:
svUsedIdMask = mGnssMbSvIdUsedInPosition.qzss_l1ca_sv_used_ids_mask;
break;
diff --git a/gnss/GnssAdapter.h b/gnss/GnssAdapter.h
index 1e6d1b8..9a727a2 100644
--- a/gnss/GnssAdapter.h
+++ b/gnss/GnssAdapter.h
@@ -147,7 +147,6 @@ class GnssAdapter : public LocAdapterBase {
bool mGnssSvIdUsedInPosAvail;
GnssSvMbUsedInPosition mGnssMbSvIdUsedInPosition;
bool mGnssMbSvIdUsedInPosAvail;
- GnssSignalTypeMask mGnssSignalType[GNSS_SV_MAX];
/* ==== CONTROL ======================================================================== */
LocationControlCallbacks mControlCallbacks;
diff --git a/location/LocationDataTypes.h b/location/LocationDataTypes.h
index 0d0753f..49822fa 100644
--- a/location/LocationDataTypes.h
+++ b/location/LocationDataTypes.h
@@ -596,7 +596,7 @@ typedef enum {
GNSS_SIGNAL_BEIDOU_B1I | GNSS_SIGNAL_BEIDOU_B1C | GNSS_SIGNAL_BEIDOU_B2I|\
GNSS_SIGNAL_BEIDOU_B2AI | GNSS_SIGNAL_QZSS_L1CA | GNSS_SIGNAL_QZSS_L1S |\
GNSS_SIGNAL_QZSS_L2| GNSS_SIGNAL_QZSS_L5 | GNSS_SIGNAL_SBAS_L1 |\
- GNSS_SIGNAL_NAVIC_L5) | GNSS_SIGNAL_BEIDOU_B2AQ
+ GNSS_SIGNAL_NAVIC_L5 | GNSS_SIGNAL_BEIDOU_B2AQ)
typedef enum
{
diff --git a/utils/gps_extended_c.h b/utils/gps_extended_c.h
index d1a2811..3d7eb97 100644
--- a/utils/gps_extended_c.h
+++ b/utils/gps_extended_c.h
@@ -1393,16 +1393,15 @@ typedef uint64_t GpsSvMeasHeaderFlags;
#define GNSS_SV_MEAS_HEADER_HAS_GAL_SYSTEM_TIME_EXT 0x00008000
#define GNSS_SV_MEAS_HEADER_HAS_BDS_SYSTEM_TIME_EXT 0x00010000
#define GNSS_SV_MEAS_HEADER_HAS_QZSS_SYSTEM_TIME_EXT 0x00020000
-#define GNSS_SV_MEAS_HEADER_HAS_GPSL1L5_TIME_BIAS 0x00040000
-#define GNSS_SV_MEAS_HEADER_HAS_GALE1E5A_TIME_BIAS 0x00080000
-#define GNSS_SV_MEAS_HEADER_HAS_GPS_NAVIC_INTER_SYSTEM_BIAS 0x00100000
-#define GNSS_SV_MEAS_HEADER_HAS_GAL_NAVIC_INTER_SYSTEM_BIAS 0x00200000
-#define GNSS_SV_MEAS_HEADER_HAS_GLO_NAVIC_INTER_SYSTEM_BIAS 0x00400000
-#define GNSS_SV_MEAS_HEADER_HAS_BDS_NAVIC_INTER_SYSTEM_BIAS 0x00800000
-#define GNSS_SV_MEAS_HEADER_HAS_NAVIC_SYSTEM_TIME 0x01000000
-#define GNSS_SV_MEAS_HEADER_HAS_NAVIC_SYSTEM_TIME_EXT 0x02000000
-
-
+#define GNSS_SV_MEAS_HEADER_HAS_GLO_SYSTEM_TIME_EXT 0x00040000
+#define GNSS_SV_MEAS_HEADER_HAS_GPSL1L5_TIME_BIAS 0x00080000
+#define GNSS_SV_MEAS_HEADER_HAS_GALE1E5A_TIME_BIAS 0x00100000
+#define GNSS_SV_MEAS_HEADER_HAS_GPS_NAVIC_INTER_SYSTEM_BIAS 0x00200000
+#define GNSS_SV_MEAS_HEADER_HAS_GAL_NAVIC_INTER_SYSTEM_BIAS 0x00400000
+#define GNSS_SV_MEAS_HEADER_HAS_GLO_NAVIC_INTER_SYSTEM_BIAS 0x00800000
+#define GNSS_SV_MEAS_HEADER_HAS_BDS_NAVIC_INTER_SYSTEM_BIAS 0x01000000
+#define GNSS_SV_MEAS_HEADER_HAS_NAVIC_SYSTEM_TIME 0x02000000
+#define GNSS_SV_MEAS_HEADER_HAS_NAVIC_SYSTEM_TIME_EXT 0x04000000
typedef struct
{
@@ -1444,9 +1443,10 @@ typedef struct
Gnss_LocGnssTimeExtStructType bdsSystemTimeExt;
/** QZSS system RTC time information. */
Gnss_LocGnssTimeExtStructType qzssSystemTimeExt;
+ /** GLONASS system RTC time information. */
+ Gnss_LocGnssTimeExtStructType gloSystemTimeExt;
/** NAVIC system RTC time information. */
Gnss_LocGnssTimeExtStructType navicSystemTimeExt;
-
} GnssSvMeasurementHeader;
typedef struct {