summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2017-11-29 00:09:53 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2017-11-29 00:09:53 +0000
commit64f3680b7d35e145791a6d8ece776ae95a46f88b (patch)
treedc95a4239c3af3154314385ff157178af169977c
parent0977482b01d5a746e16f0195d3183df8946ab7bc (diff)
parent97babdb926e3def2991d9cbd83e9c7b6d3965015 (diff)
downloadgps-oreo-m5-release.tar.gz
Change-Id: Ib09b608f33da8d16f505459687e43f9977ac9300
-rw-r--r--msm8996/loc_api/libloc_api_50001/loc.cpp5
-rw-r--r--msm8998/android/AGnssRil.cpp6
-rw-r--r--msm8998/gnss/GnssAdapter.cpp71
3 files changed, 45 insertions, 37 deletions
diff --git a/msm8996/loc_api/libloc_api_50001/loc.cpp b/msm8996/loc_api/libloc_api_50001/loc.cpp
index 99548c6..4970915 100644
--- a/msm8996/loc_api/libloc_api_50001/loc.cpp
+++ b/msm8996/loc_api/libloc_api_50001/loc.cpp
@@ -170,7 +170,7 @@ static inline void closeSocket(const int socketFd) {
}
}
-static inline bool sendConnectionEvent(const bool connected, const uint8_t type) {
+static inline bool sendConnectionEvent(const bool connected, const int8_t type) {
int socketFd = createSocket();
if (socketFd < 0) {
LOC_LOGe("XTRA unreachable. sending failed.");
@@ -1063,8 +1063,7 @@ static void loc_agps_ril_ni_message(uint8_t *msg, size_t len) {}
static void loc_agps_ril_update_network_state(int connected, int type, int roaming, const char* extra_info) {
ENTRY_LOG();
// for XTRA
- sendConnectionEvent((connected != 0) ? true : false,
- (uint8_t)type);
+ sendConnectionEvent((connected != 0) ? true : false, type);
EXIT_LOG(%s, VOID_RET);
}
diff --git a/msm8998/android/AGnssRil.cpp b/msm8998/android/AGnssRil.cpp
index b19f55f..f3bbe7c 100644
--- a/msm8998/android/AGnssRil.cpp
+++ b/msm8998/android/AGnssRil.cpp
@@ -37,7 +37,7 @@ namespace gnss {
namespace V1_0 {
namespace implementation {
-static bool sendConnectionEvent(const bool connected, const uint8_t type);
+static bool sendConnectionEvent(const bool connected, const int8_t type);
AGnssRil::AGnssRil(Gnss* gnss) : mGnss(gnss) {
ENTRY_LOG_CALLFLOW();
@@ -51,7 +51,7 @@ Return<bool> AGnssRil::updateNetworkState(bool connected, NetworkType type, bool
ENTRY_LOG_CALLFLOW();
// for XTRA
- sendConnectionEvent(connected, (uint8_t)type);
+ sendConnectionEvent(connected, (int8_t)type);
return true;
}
@@ -88,7 +88,7 @@ static inline void closeSocket(const int socketFd) {
}
}
-static inline bool sendConnectionEvent(const bool connected, const uint8_t type) {
+static inline bool sendConnectionEvent(const bool connected, const int8_t type) {
int socketFd = createSocket();
if (socketFd < 0) {
LOC_LOGe("XTRA unreachable. sending failed.");
diff --git a/msm8998/gnss/GnssAdapter.cpp b/msm8998/gnss/GnssAdapter.cpp
index a697391..6202a0e 100644
--- a/msm8998/gnss/GnssAdapter.cpp
+++ b/msm8998/gnss/GnssAdapter.cpp
@@ -47,6 +47,8 @@
#include <vector>
#include <string>
+#define RAD2DEG (180.0 / M_PI)
+
using namespace loc_core;
GnssAdapter::GnssAdapter() :
@@ -1939,39 +1941,51 @@ GnssAdapter::reportSvEvent(const GnssSvNotification& svNotify,
void
GnssAdapter::reportSv(GnssSvNotification& svNotify)
{
- if (mGnssSvIdUsedInPosAvail) {
- int numSv = svNotify.count;
- int16_t gnssSvId = 0;
- uint64_t svUsedIdMask = 0;
- for (int i=0; i < numSv; i++) {
- gnssSvId = svNotify.gnssSvs[i].svId;
- switch(svNotify.gnssSvs[i].type) {
+ int numSv = svNotify.count;
+ int16_t gnssSvId = 0;
+ uint64_t svUsedIdMask = 0;
+ for (int i=0; i < numSv; i++) {
+ svUsedIdMask = 0;
+ gnssSvId = svNotify.gnssSvs[i].svId;
+ switch (svNotify.gnssSvs[i].type) {
case GNSS_SV_TYPE_GPS:
- svUsedIdMask = mGnssSvIdUsedInPosition.gps_sv_used_ids_mask;
+ if (mGnssSvIdUsedInPosAvail) {
+ svUsedIdMask = mGnssSvIdUsedInPosition.gps_sv_used_ids_mask;
+ }
break;
case GNSS_SV_TYPE_GLONASS:
- svUsedIdMask = mGnssSvIdUsedInPosition.glo_sv_used_ids_mask;
+ if (mGnssSvIdUsedInPosAvail) {
+ svUsedIdMask = mGnssSvIdUsedInPosition.glo_sv_used_ids_mask;
+ }
break;
case GNSS_SV_TYPE_BEIDOU:
- svUsedIdMask = mGnssSvIdUsedInPosition.bds_sv_used_ids_mask;
+ if (mGnssSvIdUsedInPosAvail) {
+ svUsedIdMask = mGnssSvIdUsedInPosition.bds_sv_used_ids_mask;
+ }
break;
case GNSS_SV_TYPE_GALILEO:
- svUsedIdMask = mGnssSvIdUsedInPosition.gal_sv_used_ids_mask;
+ if (mGnssSvIdUsedInPosAvail) {
+ svUsedIdMask = mGnssSvIdUsedInPosition.gal_sv_used_ids_mask;
+ }
break;
case GNSS_SV_TYPE_QZSS:
- svUsedIdMask = mGnssSvIdUsedInPosition.qzss_sv_used_ids_mask;
- break;
- case GNSS_SV_TYPE_SBAS:
+ if (mGnssSvIdUsedInPosAvail) {
+ svUsedIdMask = mGnssSvIdUsedInPosition.qzss_sv_used_ids_mask;
+ }
+ // QZSS SV id's need to reported as it is to framework, since
+ // framework expects it as it is. See GnssStatus.java.
+ // SV id passed to here by LocApi is 1-based.
+ svNotify.gnssSvs[i].svId += (QZSS_SV_PRN_MIN - 1);
break;
default:
+ svUsedIdMask = 0;
break;
- }
+ }
- // If SV ID was used in previous position fix, then set USED_IN_FIX
- // flag, else clear the USED_IN_FIX flag.
- if (svUsedIdMask & (1 << (gnssSvId - 1))) {
- svNotify.gnssSvs[i].gnssSvOptionsMask |= GNSS_SV_OPTIONS_USED_IN_FIX_BIT;
- }
+ // If SV ID was used in previous position fix, then set USED_IN_FIX
+ // flag, else clear the USED_IN_FIX flag.
+ if (svUsedIdMask & (1 << (gnssSvId - 1))) {
+ svNotify.gnssSvs[i].gnssSvOptionsMask |= GNSS_SV_OPTIONS_USED_IN_FIX_BIT;
}
}
@@ -2785,16 +2799,12 @@ bool GnssAdapter::getDebugReport(GnssDebugReport& r)
}
else if(!reports.mBestPosition.empty() && reports.mBestPosition.back().mValid) {
r.mLocation.mValid = true;
- r.mLocation.mLocation.latitude =
- (double)(reports.mBestPosition.back().mBestLat);
+ r.mLocation.mLocation.latitude =
+ (double)(reports.mBestPosition.back().mBestLat) * RAD2DEG;
r.mLocation.mLocation.longitude =
- (double)(reports.mBestPosition.back().mBestLon);
- r.mLocation.mLocation.altitude =
- reports.mBestPosition.back().mBestAlt;
-
- r.mLocation.mLocation.timestamp =
- reports.mBestPosition.back().mUtcReported.tv_sec * 1000ULL +
- reports.mBestPosition.back().mUtcReported.tv_nsec / 1000000ULL;
+ (double)(reports.mBestPosition.back().mBestLon) * RAD2DEG;
+ r.mLocation.mLocation.altitude = reports.mBestPosition.back().mBestAlt;
+ r.mLocation.mUtcReported = reports.mBestPosition.back().mUtcReported;
}
else {
r.mLocation.mValid = false;
@@ -2840,5 +2850,4 @@ bool GnssAdapter::getDebugReport(GnssDebugReport& r)
LOC_LOGV("getDebugReport - satellite=%lu", r.mSatelliteInfo.size());
return true;
-}
-
+} \ No newline at end of file