summaryrefslogtreecommitdiff
path: root/msm8998/gnss/GnssAdapter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'msm8998/gnss/GnssAdapter.cpp')
-rw-r--r--msm8998/gnss/GnssAdapter.cpp71
1 files changed, 40 insertions, 31 deletions
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