Add register/unregister methods for SvStatus and NMEA
(hardware/interfaces)
Bug: 213375506
Test: atest VtsHalGnssTargetTest
Change-Id: I7468336b5e1759f4ce90a42fbfd19e3bb17baaa9
diff --git a/gnss/aidl/default/Gnss.cpp b/gnss/aidl/default/Gnss.cpp
index eb17bbf..af1dd5c 100644
--- a/gnss/aidl/default/Gnss.cpp
+++ b/gnss/aidl/default/Gnss.cpp
@@ -87,15 +87,13 @@
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 @@
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 @@
}
}
-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 @@
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;