diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2019-07-06 15:33:11 -0700 |
---|---|---|
committer | Linux Build Service Account <lnxbuild@localhost> | 2019-07-06 15:33:11 -0700 |
commit | edc638da38eab6bf1c139774bf1535195537c063 (patch) | |
tree | 6ae88cb6c4e1635f709e215f84d596da5f8f7585 | |
parent | 3814dc922d81130b699fef713c934a64e896c3bd (diff) | |
parent | 18d9283e40353e7064f8e190e045e1d4d6bfe587 (diff) | |
download | gps-edc638da38eab6bf1c139774bf1535195537c063.tar.gz |
Merge 18d9283e40353e7064f8e190e045e1d4d6bfe587 on remote branch
Change-Id: Ie897b532f6211f0dd8d3965ac29bcd2b9aee702f
-rw-r--r-- | android/1.0/AGnssRil.cpp | 2 | ||||
-rw-r--r-- | android/1.1/AGnssRil.cpp | 2 | ||||
-rw-r--r-- | android/2.0/Gnss.cpp | 67 | ||||
-rw-r--r-- | gnss/GnssAdapter.cpp | 17 | ||||
-rw-r--r-- | gnss/GnssAdapter.h | 1 | ||||
-rw-r--r-- | location/LocationDataTypes.h | 2 | ||||
-rw-r--r-- | utils/gps_extended_c.h | 22 |
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 { |