summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Tang <quic_zhikait@quicinc.com>2019-10-03 18:24:32 -0700
committerandroid-build-merger <android-build-merger@google.com>2019-10-03 18:24:32 -0700
commit81467e9585cdfef796e8d8eaacfa28a48b5ff9d3 (patch)
treeec3216c9aa23a029d3355d2f6a9f7049246f9fe4
parent34bfa5225636dd99fe1a99e4949e32b49fc17b6e (diff)
parent5aa8de4a0f30c9507de5fcdab29caeb962356c1a (diff)
downloadgps-81467e9585cdfef796e8d8eaacfa28a48b5ff9d3.tar.gz
Support PQWP7 parsing without NAVIC
am: 5aa8de4a0f Change-Id: I4e1b846a928f410cbb4b516c640dfed22d1989d9
-rw-r--r--core/SystemStatus.cpp12
-rw-r--r--core/SystemStatus.h3
2 files changed, 12 insertions, 3 deletions
diff --git a/core/SystemStatus.cpp b/core/SystemStatus.cpp
index 9ca126f..7d76651 100644
--- a/core/SystemStatus.cpp
+++ b/core/SystemStatus.cpp
@@ -660,6 +660,7 @@ private:
{
eTalker = 0,
eUtcTime = 1,
+ eMin = 2 + SV_ALL_NUM_MIN*3,
eMax = 2 + SV_ALL_NUM*3
};
SystemStatusPQWP7 mP7;
@@ -668,11 +669,18 @@ public:
SystemStatusPQWP7parser(const char *str_in, uint32_t len_in)
: SystemStatusNmeaBase(str_in, len_in)
{
- if (mField.size() < eMax) {
+ uint32_t svLimit = SV_ALL_NUM;
+ if (mField.size() < eMin) {
LOC_LOGE("PQWP7parser - invalid size=%zu", mField.size());
return;
}
- for (uint32_t i=0; i<SV_ALL_NUM; i++) {
+ if (mField.size() < eMax) {
+ // Try reducing limit, accounting for possibly missing NAVIC support
+ svLimit = SV_ALL_NUM_MIN;
+ }
+
+ memset(mP7.mNav, 0, sizeof(mP7.mNav));
+ for (uint32_t i=0; i<svLimit; i++) {
mP7.mNav[i].mType = GnssEphemerisType(atoi(mField[i*3+2].c_str()));
mP7.mNav[i].mSource = GnssEphemerisSource(atoi(mField[i*3+3].c_str()));
mP7.mNav[i].mAgeSec = atoi(mField[i*3+4].c_str());
diff --git a/core/SystemStatus.h b/core/SystemStatus.h
index d119a1c..2cfb25d 100644
--- a/core/SystemStatus.h
+++ b/core/SystemStatus.h
@@ -59,7 +59,8 @@
#define BDS_NUM (37)
#define GAL_NUM (36)
#define NAVIC_NUM (14)
-#define SV_ALL_NUM (GPS_NUM+GLO_NUM+QZSS_NUM+BDS_NUM+GAL_NUM+NAVIC_NUM) //=148
+#define SV_ALL_NUM_MIN (GPS_NUM + GLO_NUM + QZSS_NUM + BDS_NUM + GAL_NUM) //=134
+#define SV_ALL_NUM (SV_ALL_NUM_MIN + NAVIC_NUM) //=148
namespace loc_core
{