diff options
author | Yu-Han Yang <yuhany@google.com> | 2022-01-21 13:03:32 -0800 |
---|---|---|
committer | Yu-Han Yang <yuhany@google.com> | 2022-01-28 18:59:13 -0800 |
commit | 69f0f8bae08637abf248ecb200de0a0d610d38a2 (patch) | |
tree | 02fa30caca5cdaf20184a663ea96355dc014f1d1 /gnss/aidl/default/Gnss.cpp | |
parent | d9657d01b0fdb51f116f84430f901c727d7601dc (diff) |
Add register/unregister methods for SvStatus and NMEA
(hardware/interfaces)
Bug: 213375506
Test: atest VtsHalGnssTargetTest
Change-Id: I7468336b5e1759f4ce90a42fbfd19e3bb17baaa9
Diffstat (limited to 'gnss/aidl/default/Gnss.cpp')
-rw-r--r-- | gnss/aidl/default/Gnss.cpp | 36 |
1 files changed, 31 insertions, 5 deletions
diff --git a/gnss/aidl/default/Gnss.cpp b/gnss/aidl/default/Gnss.cpp index eb17bbfed3..af1dd5c538 100644 --- a/gnss/aidl/default/Gnss.cpp +++ b/gnss/aidl/default/Gnss.cpp @@ -87,15 +87,13 @@ ScopedAStatus Gnss::start() { mIsActive = true; this->reportGnssStatusValue(IGnssCallback::GnssStatusValue::SESSION_BEGIN); mThread = std::thread([this]() { - auto svStatus = filterBlocklistedSatellites(Utils::getMockSvInfoList()); - this->reportSvStatus(svStatus); + this->reportSvStatus(); if (!mFirstFixReceived) { std::this_thread::sleep_for(std::chrono::milliseconds(TTFF_MILLIS)); mFirstFixReceived = true; } while (mIsActive == true) { - auto svStatus = filterBlocklistedSatellites(Utils::getMockSvInfoList()); - this->reportSvStatus(svStatus); + this->reportSvStatus(); auto currentLocation = getLocationFromHW(); mGnssPowerIndication->notePowerConsumption(); @@ -124,6 +122,13 @@ void Gnss::reportLocation(const GnssLocation& location) const { return; } +void Gnss::reportSvStatus() const { + if (mIsSvStatusActive) { + auto svStatus = filterBlocklistedSatellites(Utils::getMockSvInfoList()); + reportSvStatus(svStatus); + } +} + void Gnss::reportSvStatus(const std::vector<GnssSvInfo>& svInfoList) const { std::unique_lock<std::mutex> lock(mMutex); if (sGnssCallback == nullptr) { @@ -136,7 +141,8 @@ void Gnss::reportSvStatus(const std::vector<GnssSvInfo>& svInfoList) const { } } -std::vector<GnssSvInfo> Gnss::filterBlocklistedSatellites(std::vector<GnssSvInfo> gnssSvInfoList) { +std::vector<GnssSvInfo> Gnss::filterBlocklistedSatellites( + std::vector<GnssSvInfo> gnssSvInfoList) const { ALOGD("filterBlocklistedSatellites"); for (uint32_t i = 0; i < gnssSvInfoList.size(); i++) { if (mGnssConfiguration->isBlocklisted(gnssSvInfoList[i])) { @@ -168,6 +174,26 @@ ScopedAStatus Gnss::stop() { return ScopedAStatus::ok(); } +ScopedAStatus Gnss::startSvStatus() { + ALOGD("startSvStatus"); + mIsSvStatusActive = true; + return ScopedAStatus::ok(); +} + +ScopedAStatus Gnss::stopSvStatus() { + ALOGD("stopSvStatus"); + mIsSvStatusActive = false; + return ScopedAStatus::ok(); +} +ScopedAStatus Gnss::startNmea() { + ALOGD("startNmea"); + return ScopedAStatus::ok(); +} +ScopedAStatus Gnss::stopNmea() { + ALOGD("stopNmea"); + return ScopedAStatus::ok(); +} + ScopedAStatus Gnss::close() { ALOGD("close"); sGnssCallback = nullptr; |