diff options
author | Enrico Granata <egranata@google.com> | 2022-02-16 20:37:09 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2022-02-16 20:37:09 +0000 |
commit | d2b51ce406d1abc51e81c0ced291c020ceee9f07 (patch) | |
tree | 5482830451bf6449712f2543379b9d841a180aad /gnss/aidl/default/GnssMeasurementInterface.cpp | |
parent | 07c1601d5f7c683a16e8ffb8a041b7e2b2d31f05 (diff) | |
parent | 974b5ee2ca97524ca643b7dc8fc9d4800beef0b7 (diff) |
Merge changes from topics "presubmit-am-125395c1a55c4e859af27656b2c26312", "presubmit-am-b14104e5e9774385913debfdc01994b2" into sc-v2-dev-plus-aosp
* changes:
[automerge] fix potential use-after-frees of stack memory 2p: 3f467bd10f
fix potential use-after-frees of stack memory
Refactor and reuse some read device file logic Add skeleton on HAL for Gnss raw measurement injection
Diffstat (limited to 'gnss/aidl/default/GnssMeasurementInterface.cpp')
-rw-r--r-- | gnss/aidl/default/GnssMeasurementInterface.cpp | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/gnss/aidl/default/GnssMeasurementInterface.cpp b/gnss/aidl/default/GnssMeasurementInterface.cpp index fcc1f986cc..0e489c59e4 100644 --- a/gnss/aidl/default/GnssMeasurementInterface.cpp +++ b/gnss/aidl/default/GnssMeasurementInterface.cpp @@ -19,11 +19,13 @@ #include "GnssMeasurementInterface.h" #include <aidl/android/hardware/gnss/BnGnss.h> #include <log/log.h> +#include "GnssReplayUtils.h" #include "Utils.h" namespace aidl::android::hardware::gnss { using Utils = ::android::hardware::gnss::common::Utils; +using ReplayUtils = ::android::hardware::gnss::common::ReplayUtils; std::shared_ptr<IGnssMeasurementCallback> GnssMeasurementInterface::sCallback = nullptr; @@ -63,9 +65,22 @@ void GnssMeasurementInterface::start(const bool enableCorrVecOutputs) { mIsActive = true; mThread = std::thread([this, enableCorrVecOutputs]() { while (mIsActive == true) { - auto measurement = Utils::getMockMeasurement(enableCorrVecOutputs); - this->reportMeasurement(measurement); - + std::string rawMeasurementStr = ""; + if (ReplayUtils::hasGnssDeviceFile() && + ReplayUtils::isGnssRawMeasurement( + rawMeasurementStr = ReplayUtils::getDataFromDeviceFile( + std::string( + ::android::hardware::gnss::common::CMD_GET_RAWMEASUREMENT), + mMinIntervalMillis))) { + // TODO: implement rawMeasurementStr parser and report measurement. + ALOGD("rawMeasurementStr(size: %zu) from device file: %s", rawMeasurementStr.size(), + rawMeasurementStr.c_str()); + auto measurement = Utils::getMockMeasurement(enableCorrVecOutputs); + this->reportMeasurement(measurement); + } else { + auto measurement = Utils::getMockMeasurement(enableCorrVecOutputs); + this->reportMeasurement(measurement); + } std::this_thread::sleep_for(std::chrono::milliseconds(mMinIntervalMillis)); } }); |