diff options
| -rw-r--r-- | services/sensorservice/SensorDevice.cpp | 11 | ||||
| -rw-r--r-- | services/sensorservice/SensorDevice.h | 2 | ||||
| -rw-r--r-- | services/sensorservice/SensorEventConnection.cpp | 9 | ||||
| -rw-r--r-- | services/sensorservice/SensorService.cpp | 11 |
4 files changed, 27 insertions, 6 deletions
diff --git a/services/sensorservice/SensorDevice.cpp b/services/sensorservice/SensorDevice.cpp index 189ae36b78..a6ed75f1ac 100644 --- a/services/sensorservice/SensorDevice.cpp +++ b/services/sensorservice/SensorDevice.cpp @@ -359,7 +359,7 @@ std::string SensorDevice::dump() const { for (const auto & s : mSensorList) { int32_t handle = s.handle; const Info& info = mActivationCount.valueFor(handle); - if (info.batchParams.isEmpty()) continue; + if (info.numActiveClients() == 0) continue; result.appendFormat("0x%08x) active-count = %zu; ", handle, info.batchParams.size()); @@ -730,6 +730,15 @@ bool SensorDevice::isClientDisabledLocked(void* ident) { return mDisabledClients.indexOf(ident) >= 0; } +bool SensorDevice::isSensorActive(int handle) const { + Mutex::Autolock _l(mLock); + ssize_t activationIndex = mActivationCount.indexOfKey(handle); + if (activationIndex < 0) { + return false; + } + return mActivationCount.valueAt(activationIndex).numActiveClients() > 0; +} + void SensorDevice::enableAllSensors() { if (mSensors == nullptr) return; Mutex::Autolock _l(mLock); diff --git a/services/sensorservice/SensorDevice.h b/services/sensorservice/SensorDevice.h index 2a69654ba1..71b918f639 100644 --- a/services/sensorservice/SensorDevice.h +++ b/services/sensorservice/SensorDevice.h @@ -120,6 +120,8 @@ public: return mReconnecting; } + bool isSensorActive(int handle) const; + // Dumpable virtual std::string dump() const; private: diff --git a/services/sensorservice/SensorEventConnection.cpp b/services/sensorservice/SensorEventConnection.cpp index b66cbcfbe5..c4cfdc63bf 100644 --- a/services/sensorservice/SensorEventConnection.cpp +++ b/services/sensorservice/SensorEventConnection.cpp @@ -78,7 +78,14 @@ void SensorService::SensorEventConnection::resetWakeLockRefCount() { void SensorService::SensorEventConnection::dump(String8& result) { Mutex::Autolock _l(mConnectionLock); - result.appendFormat("\tOperating Mode: %s\n",mDataInjectionMode ? "DATA_INJECTION" : "NORMAL"); + result.appendFormat("\tOperating Mode: "); + if (!mService->isWhiteListedPackage(getPackageName())) { + result.append("RESTRICTED\n"); + } else if (mDataInjectionMode) { + result.append("DATA_INJECTION\n"); + } else { + result.append("NORMAL\n"); + } result.appendFormat("\t %s | WakeLockRefCount %d | uid %d | cache size %d | " "max cache size %d\n", mPackageName.string(), mWakeLockRefCount, mUid, mCacheSize, mMaxCacheSize); diff --git a/services/sensorservice/SensorService.cpp b/services/sensorservice/SensorService.cpp index 3fbd61e483..e3dfde4994 100644 --- a/services/sensorservice/SensorService.cpp +++ b/services/sensorservice/SensorService.cpp @@ -441,12 +441,15 @@ status_t SensorService::dump(int fd, const Vector<String16>& args) { } result.append("Active sensors:\n"); + SensorDevice& dev = SensorDevice::getInstance(); for (size_t i=0 ; i<mActiveSensors.size() ; i++) { int handle = mActiveSensors.keyAt(i); - result.appendFormat("%s (handle=0x%08x, connections=%zu)\n", - getSensorName(handle).string(), - handle, - mActiveSensors.valueAt(i)->getNumConnections()); + if (dev.isSensorActive(handle)) { + result.appendFormat("%s (handle=0x%08x, connections=%zu)\n", + getSensorName(handle).string(), + handle, + mActiveSensors.valueAt(i)->getNumConnections()); + } } result.appendFormat("Socket Buffer size = %zd events\n", |