summaryrefslogtreecommitdiff
path: root/gnss/aidl/default/GnssMeasurementInterface.cpp
diff options
context:
space:
mode:
authorEnrico Granata <egranata@google.com>2022-02-16 20:37:09 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2022-02-16 20:37:09 +0000
commitd2b51ce406d1abc51e81c0ced291c020ceee9f07 (patch)
tree5482830451bf6449712f2543379b9d841a180aad /gnss/aidl/default/GnssMeasurementInterface.cpp
parent07c1601d5f7c683a16e8ffb8a041b7e2b2d31f05 (diff)
parent974b5ee2ca97524ca643b7dc8fc9d4800beef0b7 (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.cpp21
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));
}
});