Merge "feat: Add timeuncNs in PQWM1 message"
This commit is contained in:
commit
9b6103421b
5 changed files with 46 additions and 20 deletions
|
@ -36,7 +36,8 @@ using ::android::hardware::hidl_vec;
|
||||||
#define GNSS_DEBUG_UNKNOWN_BEARING_ACCURACY_DEG (180)
|
#define GNSS_DEBUG_UNKNOWN_BEARING_ACCURACY_DEG (180)
|
||||||
|
|
||||||
#define GNSS_DEBUG_UNKNOWN_UTC_TIME (1483228800000LL) // 1/1/2017 00:00 GMT
|
#define GNSS_DEBUG_UNKNOWN_UTC_TIME (1483228800000LL) // 1/1/2017 00:00 GMT
|
||||||
#define GNSS_DEBUG_UNKNOWN_UTC_TIME_UNC (1.57783680E17) // 5 years in ns
|
#define GNSS_DEBUG_UNKNOWN_UTC_TIME_UNC_MIN (999) // 999 ns
|
||||||
|
#define GNSS_DEBUG_UNKNOWN_UTC_TIME_UNC_MAX (1.57783680E17) // 5 years in ns
|
||||||
#define GNSS_DEBUG_UNKNOWN_FREQ_UNC_NS_PER_SEC (2.0e5) // ppm
|
#define GNSS_DEBUG_UNKNOWN_FREQ_UNC_NS_PER_SEC (2.0e5) // ppm
|
||||||
|
|
||||||
GnssDebug::GnssDebug(Gnss* gnss) : mGnss(gnss)
|
GnssDebug::GnssDebug(Gnss* gnss) : mGnss(gnss)
|
||||||
|
@ -125,9 +126,10 @@ Return<void> GnssDebug::getDebugData(getDebugData_cb _hidl_cb)
|
||||||
if (data.time.timeEstimate < GNSS_DEBUG_UNKNOWN_UTC_TIME) {
|
if (data.time.timeEstimate < GNSS_DEBUG_UNKNOWN_UTC_TIME) {
|
||||||
data.time.timeEstimate = GNSS_DEBUG_UNKNOWN_UTC_TIME;
|
data.time.timeEstimate = GNSS_DEBUG_UNKNOWN_UTC_TIME;
|
||||||
}
|
}
|
||||||
if (data.time.timeUncertaintyNs <= 0 ||
|
if (data.time.timeUncertaintyNs <= 0) {
|
||||||
data.time.timeUncertaintyNs > (float)GNSS_DEBUG_UNKNOWN_UTC_TIME_UNC) {
|
data.time.timeUncertaintyNs = (float)GNSS_DEBUG_UNKNOWN_UTC_TIME_UNC_MIN;
|
||||||
data.time.timeUncertaintyNs = (float)GNSS_DEBUG_UNKNOWN_UTC_TIME_UNC;
|
} else if (data.time.timeUncertaintyNs > GNSS_DEBUG_UNKNOWN_UTC_TIME_UNC_MAX) {
|
||||||
|
data.time.timeUncertaintyNs = (float)GNSS_DEBUG_UNKNOWN_UTC_TIME_UNC_MAX;
|
||||||
}
|
}
|
||||||
if (data.time.frequencyUncertaintyNsPerSec <= 0 ||
|
if (data.time.frequencyUncertaintyNsPerSec <= 0 ||
|
||||||
data.time.frequencyUncertaintyNsPerSec > (float)GNSS_DEBUG_UNKNOWN_FREQ_UNC_NS_PER_SEC) {
|
data.time.frequencyUncertaintyNsPerSec > (float)GNSS_DEBUG_UNKNOWN_FREQ_UNC_NS_PER_SEC) {
|
||||||
|
|
|
@ -41,7 +41,8 @@ using ::android::hardware::gnss::V2_0::IGnssDebug;
|
||||||
#define GNSS_DEBUG_UNKNOWN_BEARING_ACCURACY_DEG (180)
|
#define GNSS_DEBUG_UNKNOWN_BEARING_ACCURACY_DEG (180)
|
||||||
|
|
||||||
#define GNSS_DEBUG_UNKNOWN_UTC_TIME (1483228800000LL) // 1/1/2017 00:00 GMT
|
#define GNSS_DEBUG_UNKNOWN_UTC_TIME (1483228800000LL) // 1/1/2017 00:00 GMT
|
||||||
#define GNSS_DEBUG_UNKNOWN_UTC_TIME_UNC (1.57783680E17) // 5 years in ns
|
#define GNSS_DEBUG_UNKNOWN_UTC_TIME_UNC_MIN (999) // 999 ns
|
||||||
|
#define GNSS_DEBUG_UNKNOWN_UTC_TIME_UNC_MAX (1.57783680E17) // 5 years in ns
|
||||||
#define GNSS_DEBUG_UNKNOWN_FREQ_UNC_NS_PER_SEC (2.0e5) // ppm
|
#define GNSS_DEBUG_UNKNOWN_FREQ_UNC_NS_PER_SEC (2.0e5) // ppm
|
||||||
|
|
||||||
GnssDebug::GnssDebug(Gnss* gnss) : mGnss(gnss)
|
GnssDebug::GnssDebug(Gnss* gnss) : mGnss(gnss)
|
||||||
|
@ -130,9 +131,10 @@ Return<void> GnssDebug::getDebugData(getDebugData_cb _hidl_cb)
|
||||||
if (data.time.timeEstimate < GNSS_DEBUG_UNKNOWN_UTC_TIME) {
|
if (data.time.timeEstimate < GNSS_DEBUG_UNKNOWN_UTC_TIME) {
|
||||||
data.time.timeEstimate = GNSS_DEBUG_UNKNOWN_UTC_TIME;
|
data.time.timeEstimate = GNSS_DEBUG_UNKNOWN_UTC_TIME;
|
||||||
}
|
}
|
||||||
if (data.time.timeUncertaintyNs <= 0 ||
|
if (data.time.timeUncertaintyNs <= 0) {
|
||||||
data.time.timeUncertaintyNs > (float)GNSS_DEBUG_UNKNOWN_UTC_TIME_UNC) {
|
data.time.timeUncertaintyNs = (float)GNSS_DEBUG_UNKNOWN_UTC_TIME_UNC_MIN;
|
||||||
data.time.timeUncertaintyNs = (float)GNSS_DEBUG_UNKNOWN_UTC_TIME_UNC;
|
} else if (data.time.timeUncertaintyNs > GNSS_DEBUG_UNKNOWN_UTC_TIME_UNC_MAX) {
|
||||||
|
data.time.timeUncertaintyNs = (float)GNSS_DEBUG_UNKNOWN_UTC_TIME_UNC_MAX;
|
||||||
}
|
}
|
||||||
if (data.time.frequencyUncertaintyNsPerSec <= 0 ||
|
if (data.time.frequencyUncertaintyNsPerSec <= 0 ||
|
||||||
data.time.frequencyUncertaintyNsPerSec > (float)GNSS_DEBUG_UNKNOWN_FREQ_UNC_NS_PER_SEC) {
|
data.time.frequencyUncertaintyNsPerSec > (float)GNSS_DEBUG_UNKNOWN_FREQ_UNC_NS_PER_SEC) {
|
||||||
|
@ -247,9 +249,11 @@ Return<void> GnssDebug::getDebugData_2_0(getDebugData_2_0_cb _hidl_cb)
|
||||||
if (data.time.timeEstimate < GNSS_DEBUG_UNKNOWN_UTC_TIME) {
|
if (data.time.timeEstimate < GNSS_DEBUG_UNKNOWN_UTC_TIME) {
|
||||||
data.time.timeEstimate = GNSS_DEBUG_UNKNOWN_UTC_TIME;
|
data.time.timeEstimate = GNSS_DEBUG_UNKNOWN_UTC_TIME;
|
||||||
}
|
}
|
||||||
if (data.time.timeUncertaintyNs <= 0 ||
|
if (data.time.timeUncertaintyNs <= 0) {
|
||||||
data.time.timeUncertaintyNs > (float)GNSS_DEBUG_UNKNOWN_UTC_TIME_UNC) {
|
data.time.timeUncertaintyNs = (float)GNSS_DEBUG_UNKNOWN_UTC_TIME_UNC_MIN;
|
||||||
data.time.timeUncertaintyNs = (float)GNSS_DEBUG_UNKNOWN_UTC_TIME_UNC;
|
}
|
||||||
|
else if (data.time.timeUncertaintyNs > GNSS_DEBUG_UNKNOWN_UTC_TIME_UNC_MAX) {
|
||||||
|
data.time.timeUncertaintyNs = (float)GNSS_DEBUG_UNKNOWN_UTC_TIME_UNC_MAX;
|
||||||
}
|
}
|
||||||
if (data.time.frequencyUncertaintyNsPerSec <= 0 ||
|
if (data.time.frequencyUncertaintyNsPerSec <= 0 ||
|
||||||
data.time.frequencyUncertaintyNsPerSec > (float)GNSS_DEBUG_UNKNOWN_FREQ_UNC_NS_PER_SEC) {
|
data.time.frequencyUncertaintyNsPerSec > (float)GNSS_DEBUG_UNKNOWN_FREQ_UNC_NS_PER_SEC) {
|
||||||
|
|
|
@ -126,6 +126,7 @@ public:
|
||||||
uint32_t mBdsBpAmpQ; // x1C
|
uint32_t mBdsBpAmpQ; // x1C
|
||||||
uint32_t mGalBpAmpI; // x1D
|
uint32_t mGalBpAmpI; // x1D
|
||||||
uint32_t mGalBpAmpQ; // x1E
|
uint32_t mGalBpAmpQ; // x1E
|
||||||
|
uint64_t mTimeUncNs; // x1F
|
||||||
};
|
};
|
||||||
|
|
||||||
// parser
|
// parser
|
||||||
|
@ -157,7 +158,6 @@ private:
|
||||||
eAgcGlo = 20,
|
eAgcGlo = 20,
|
||||||
eAgcBds = 21,
|
eAgcBds = 21,
|
||||||
eAgcGal = 22,
|
eAgcGal = 22,
|
||||||
eMax0 = eAgcGal,
|
|
||||||
eLeapSeconds = 23,
|
eLeapSeconds = 23,
|
||||||
eLeapSecUnc = 24,
|
eLeapSecUnc = 24,
|
||||||
eGloBpAmpI = 25,
|
eGloBpAmpI = 25,
|
||||||
|
@ -166,6 +166,8 @@ private:
|
||||||
eBdsBpAmpQ = 28,
|
eBdsBpAmpQ = 28,
|
||||||
eGalBpAmpI = 29,
|
eGalBpAmpI = 29,
|
||||||
eGalBpAmpQ = 30,
|
eGalBpAmpQ = 30,
|
||||||
|
eMax0 = eGalBpAmpQ,
|
||||||
|
eTimeUncNs = 31,
|
||||||
eMax
|
eMax
|
||||||
};
|
};
|
||||||
SystemStatusPQWM1 mM1;
|
SystemStatusPQWM1 mM1;
|
||||||
|
@ -201,6 +203,7 @@ public:
|
||||||
inline uint32_t getBdsBpAmpQ() { return mM1.mBdsBpAmpQ; }
|
inline uint32_t getBdsBpAmpQ() { return mM1.mBdsBpAmpQ; }
|
||||||
inline uint32_t getGalBpAmpI() { return mM1.mGalBpAmpI; }
|
inline uint32_t getGalBpAmpI() { return mM1.mGalBpAmpI; }
|
||||||
inline uint32_t getGalBpAmpQ() { return mM1.mGalBpAmpQ; }
|
inline uint32_t getGalBpAmpQ() { return mM1.mGalBpAmpQ; }
|
||||||
|
inline uint64_t getTimeUncNs() { return mM1.mTimeUncNs; }
|
||||||
|
|
||||||
SystemStatusPQWM1parser(const char *str_in, uint32_t len_in)
|
SystemStatusPQWM1parser(const char *str_in, uint32_t len_in)
|
||||||
: SystemStatusNmeaBase(str_in, len_in)
|
: SystemStatusNmeaBase(str_in, len_in)
|
||||||
|
@ -245,6 +248,9 @@ public:
|
||||||
mM1.mGalBpAmpI = atoi(mField[eGalBpAmpI].c_str());
|
mM1.mGalBpAmpI = atoi(mField[eGalBpAmpI].c_str());
|
||||||
mM1.mGalBpAmpQ = atoi(mField[eGalBpAmpQ].c_str());
|
mM1.mGalBpAmpQ = atoi(mField[eGalBpAmpQ].c_str());
|
||||||
}
|
}
|
||||||
|
if (mField.size() > eTimeUncNs) {
|
||||||
|
mM1.mTimeUncNs = strtoull(mField[eTimeUncNs].c_str(), nullptr, 10);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline SystemStatusPQWM1& get() { return mM1;} //getparser
|
inline SystemStatusPQWM1& get() { return mM1;} //getparser
|
||||||
|
@ -715,7 +721,8 @@ SystemStatusTimeAndClock::SystemStatusTimeAndClock(const SystemStatusPQWM1& nmea
|
||||||
mClockFreqBias(nmea.mClockFreqBias),
|
mClockFreqBias(nmea.mClockFreqBias),
|
||||||
mClockFreqBiasUnc(nmea.mClockFreqBiasUnc),
|
mClockFreqBiasUnc(nmea.mClockFreqBiasUnc),
|
||||||
mLeapSeconds(nmea.mLeapSeconds),
|
mLeapSeconds(nmea.mLeapSeconds),
|
||||||
mLeapSecUnc(nmea.mLeapSecUnc)
|
mLeapSecUnc(nmea.mLeapSecUnc),
|
||||||
|
mTimeUncNs(nmea.mTimeUncNs)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -729,7 +736,8 @@ bool SystemStatusTimeAndClock::equals(const SystemStatusTimeAndClock& peer)
|
||||||
(mClockFreqBias != peer.mClockFreqBias) ||
|
(mClockFreqBias != peer.mClockFreqBias) ||
|
||||||
(mClockFreqBiasUnc != peer.mClockFreqBiasUnc) ||
|
(mClockFreqBiasUnc != peer.mClockFreqBiasUnc) ||
|
||||||
(mLeapSeconds != peer.mLeapSeconds) ||
|
(mLeapSeconds != peer.mLeapSeconds) ||
|
||||||
(mLeapSecUnc != peer.mLeapSecUnc)) {
|
(mLeapSecUnc != peer.mLeapSecUnc) ||
|
||||||
|
(mTimeUncNs != peer.mTimeUncNs)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -737,7 +745,7 @@ bool SystemStatusTimeAndClock::equals(const SystemStatusTimeAndClock& peer)
|
||||||
|
|
||||||
void SystemStatusTimeAndClock::dump()
|
void SystemStatusTimeAndClock::dump()
|
||||||
{
|
{
|
||||||
LOC_LOGV("TimeAndClock: u=%ld:%ld g=%d:%d v=%d ts=%d tu=%d b=%d bu=%d ls=%d lu=%d",
|
LOC_LOGV("TimeAndClock: u=%ld:%ld g=%d:%d v=%d ts=%d tu=%d b=%d bu=%d ls=%d lu=%d un=%" PRIu64,
|
||||||
mUtcTime.tv_sec, mUtcTime.tv_nsec,
|
mUtcTime.tv_sec, mUtcTime.tv_nsec,
|
||||||
mGpsWeek,
|
mGpsWeek,
|
||||||
mGpsTowMs,
|
mGpsTowMs,
|
||||||
|
@ -747,7 +755,8 @@ void SystemStatusTimeAndClock::dump()
|
||||||
mClockFreqBias,
|
mClockFreqBias,
|
||||||
mClockFreqBiasUnc,
|
mClockFreqBiasUnc,
|
||||||
mLeapSeconds,
|
mLeapSeconds,
|
||||||
mLeapSecUnc);
|
mLeapSecUnc,
|
||||||
|
mTimeUncNs);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -116,6 +116,7 @@ public:
|
||||||
int32_t mClockFreqBiasUnc;
|
int32_t mClockFreqBiasUnc;
|
||||||
int32_t mLeapSeconds;
|
int32_t mLeapSeconds;
|
||||||
int32_t mLeapSecUnc;
|
int32_t mLeapSecUnc;
|
||||||
|
uint64_t mTimeUncNs;
|
||||||
inline SystemStatusTimeAndClock() :
|
inline SystemStatusTimeAndClock() :
|
||||||
mGpsWeek(0),
|
mGpsWeek(0),
|
||||||
mGpsTowMs(0),
|
mGpsTowMs(0),
|
||||||
|
@ -125,7 +126,8 @@ public:
|
||||||
mClockFreqBias(0),
|
mClockFreqBias(0),
|
||||||
mClockFreqBiasUnc(0),
|
mClockFreqBiasUnc(0),
|
||||||
mLeapSeconds(0),
|
mLeapSeconds(0),
|
||||||
mLeapSecUnc(0) {}
|
mLeapSecUnc(0),
|
||||||
|
mTimeUncNs(0ULL) {}
|
||||||
inline SystemStatusTimeAndClock(const SystemStatusPQWM1& nmea);
|
inline SystemStatusTimeAndClock(const SystemStatusPQWM1& nmea);
|
||||||
bool equals(const SystemStatusTimeAndClock& peer);
|
bool equals(const SystemStatusTimeAndClock& peer);
|
||||||
void dump(void);
|
void dump(void);
|
||||||
|
|
|
@ -4383,9 +4383,18 @@ bool GnssAdapter::getDebugReport(GnssDebugReport& r)
|
||||||
(int64_t)(reports.mTimeAndClock.back().mLeapSeconds))*1000ULL +
|
(int64_t)(reports.mTimeAndClock.back().mLeapSeconds))*1000ULL +
|
||||||
(int64_t)(reports.mTimeAndClock.back().mGpsTowMs);
|
(int64_t)(reports.mTimeAndClock.back().mGpsTowMs);
|
||||||
|
|
||||||
|
if (reports.mTimeAndClock.back().mTimeUncNs > 0) {
|
||||||
|
// TimeUncNs value is available
|
||||||
|
r.mTime.timeUncertaintyNs =
|
||||||
|
(float)(reports.mTimeAndClock.back().mLeapSecUnc)*1000.0f +
|
||||||
|
(float)(reports.mTimeAndClock.back().mTimeUncNs);
|
||||||
|
} else {
|
||||||
|
// fall back to legacy TimeUnc
|
||||||
r.mTime.timeUncertaintyNs =
|
r.mTime.timeUncertaintyNs =
|
||||||
((float)(reports.mTimeAndClock.back().mTimeUnc) +
|
((float)(reports.mTimeAndClock.back().mTimeUnc) +
|
||||||
(float)(reports.mTimeAndClock.back().mLeapSecUnc))*1000.0f;
|
(float)(reports.mTimeAndClock.back().mLeapSecUnc))*1000.0f;
|
||||||
|
}
|
||||||
|
|
||||||
r.mTime.frequencyUncertaintyNsPerSec =
|
r.mTime.frequencyUncertaintyNsPerSec =
|
||||||
(float)(reports.mTimeAndClock.back().mClockFreqBiasUnc);
|
(float)(reports.mTimeAndClock.back().mClockFreqBiasUnc);
|
||||||
LOC_LOGV("getDebugReport - timeestimate=%" PRIu64 " unc=%f frequnc=%f",
|
LOC_LOGV("getDebugReport - timeestimate=%" PRIu64 " unc=%f frequnc=%f",
|
||||||
|
|
Loading…
Reference in a new issue