diff options
| author | 2016-09-08 12:36:59 -0700 | |
|---|---|---|
| committer | 2016-09-08 19:44:41 +0000 | |
| commit | 2c238fc281da578d382f64443a7c9d7df89b2f39 (patch) | |
| tree | c246870281a9444e2dff2cf156c3d0e1db5124b5 | |
| parent | 432cefbfa249ccc4f74348e6004346ed0560b470 (diff) | |
Show masked value for sensor with permission
Show masked values in sensor event log in dump even if sensor
requires permission. Information about number of event and timestamp
will aid debugging.
Bug: 31065418
Change-Id: If038d2884a7b13b853183df037a9d2dcacfb5284
| -rw-r--r-- | services/sensorservice/RecentEventLogger.cpp | 24 | ||||
| -rw-r--r-- | services/sensorservice/RecentEventLogger.h | 3 | ||||
| -rw-r--r-- | services/sensorservice/SensorService.cpp | 9 |
3 files changed, 28 insertions, 8 deletions
diff --git a/services/sensorservice/RecentEventLogger.cpp b/services/sensorservice/RecentEventLogger.cpp index 754b60393d..62e9ce0616 100644 --- a/services/sensorservice/RecentEventLogger.cpp +++ b/services/sensorservice/RecentEventLogger.cpp @@ -31,7 +31,7 @@ namespace { RecentEventLogger::RecentEventLogger(int sensorType) : mSensorType(sensorType), mEventSize(eventSizeBySensorType(mSensorType)), - mRecentEvents(logSizeBySensorType(sensorType)) { + mRecentEvents(logSizeBySensorType(sensorType)), mMaskData(false) { // blank } @@ -60,18 +60,30 @@ std::string RecentEventLogger::dump() const { (int) ns2ms(ev.mWallTime.tv_nsec)); // data - if (mSensorType == SENSOR_TYPE_STEP_COUNTER) { - buffer.appendFormat("%" PRIu64 ", ", ev.mEvent.u64.step_counter); - } else { - for (size_t k = 0; k < mEventSize; ++k) { - buffer.appendFormat("%.2f, ", ev.mEvent.data[k]); + if (!mMaskData) { + if (mSensorType == SENSOR_TYPE_STEP_COUNTER) { + buffer.appendFormat("%" PRIu64 ", ", ev.mEvent.u64.step_counter); + } else { + for (size_t k = 0; k < mEventSize; ++k) { + buffer.appendFormat("%.2f, ", ev.mEvent.data[k]); + } } + } else { + buffer.append("[value masked]"); } buffer.append("\n"); } return std::string(buffer.string()); } +void RecentEventLogger::setFormat(std::string format) { + if (format == "mask_data" ) { + mMaskData = true; + } else { + mMaskData = false; + } +} + bool RecentEventLogger::populateLastEvent(sensors_event_t *event) const { std::lock_guard<std::mutex> lk(mLock); diff --git a/services/sensorservice/RecentEventLogger.h b/services/sensorservice/RecentEventLogger.h index 4f9bc4af1a..8b15e5a007 100644 --- a/services/sensorservice/RecentEventLogger.h +++ b/services/sensorservice/RecentEventLogger.h @@ -43,6 +43,7 @@ public: // Dumpable interface virtual std::string dump() const override; + virtual void setFormat(std::string format) override; protected: struct SensorEventLog { @@ -57,6 +58,8 @@ protected: mutable std::mutex mLock; RingBuffer<SensorEventLog> mRecentEvents; + bool mMaskData; + private: static size_t logSizeBySensorType(int sensorType); }; diff --git a/services/sensorservice/SensorService.cpp b/services/sensorservice/SensorService.cpp index dbd06244cb..2930637664 100644 --- a/services/sensorservice/SensorService.cpp +++ b/services/sensorservice/SensorService.cpp @@ -322,6 +322,7 @@ status_t SensorService::dump(int fd, const Vector<String16>& args) { IPCThreadState::self()->getCallingPid(), IPCThreadState::self()->getCallingUid()); } else { + bool privileged = IPCThreadState::self()->getCallingUid() == 0; if (args.size() > 2) { return INVALID_OPERATION; } @@ -393,8 +394,12 @@ status_t SensorService::dump(int fd, const Vector<String16>& args) { result.append("Recent Sensor events:\n"); for (auto&& i : mRecentEvent) { sp<SensorInterface> s = mSensors.getInterface(i.first); - if (!i.second->isEmpty() && - s->getSensor().getRequiredPermission().isEmpty()) { + if (!i.second->isEmpty()) { + if (privileged || s->getSensor().getRequiredPermission().isEmpty()) { + i.second->setFormat("normal"); + } else { + i.second->setFormat("mask_data"); + } // if there is events and sensor does not need special permission. result.appendFormat("%s: ", s->getSensor().getName().string()); result.append(i.second->dump().c_str()); |