diff options
author | 2024-08-06 00:19:01 +0000 | |
---|---|---|
committer | 2024-09-11 16:18:01 +0000 | |
commit | e7fd95421228207660fdbff5331d089ca1116c8d (patch) | |
tree | f920e57b9aee95867f813ab5f3757d846269315d | |
parent | c69b08521f8325504d675a419e083eb01549d95a (diff) |
Dump sensor register status and sensor name
Fixes: 356622719
Fixes: 356637587
Flag: EXEMPT bug fix
Test: dumpsys and see the expected output
Change-Id: I97ba13c837bf890eecb8b378e27c3269ba38affd
-rw-r--r-- | services/sensorservice/SensorRegistrationInfo.h | 47 | ||||
-rw-r--r-- | services/sensorservice/SensorService.cpp | 21 |
2 files changed, 41 insertions, 27 deletions
diff --git a/services/sensorservice/SensorRegistrationInfo.h b/services/sensorservice/SensorRegistrationInfo.h index dc9e8215e7..a8a773ad6b 100644 --- a/services/sensorservice/SensorRegistrationInfo.h +++ b/services/sensorservice/SensorRegistrationInfo.h @@ -38,10 +38,11 @@ public: mActivated = false; } - SensorRegistrationInfo(int32_t handle, const String8 &packageName, - int64_t samplingRateNs, int64_t maxReportLatencyNs, bool activate) { + SensorRegistrationInfo(int32_t handle, const String8& packageName, int64_t samplingRateNs, + int64_t maxReportLatencyNs, bool activate, status_t registerStatus) { mSensorHandle = handle; mPackageName = packageName; + mRegisteredStatus = registerStatus; mSamplingRateUs = static_cast<int64_t>(samplingRateNs/1000); mMaxReportLatencyUs = static_cast<int64_t>(maxReportLatencyNs/1000); @@ -60,28 +61,43 @@ public: return (info.mSensorHandle == INT32_MIN && info.mRealtimeSec == 0); } - // Dumpable interface - virtual std::string dump() const override { + std::string dump(SensorService* sensorService) const { struct tm* timeinfo = localtime(&mRealtimeSec); const int8_t hour = static_cast<int8_t>(timeinfo->tm_hour); const int8_t min = static_cast<int8_t>(timeinfo->tm_min); const int8_t sec = static_cast<int8_t>(timeinfo->tm_sec); std::ostringstream ss; - ss << std::setfill('0') << std::setw(2) << static_cast<int>(hour) << ":" - << std::setw(2) << static_cast<int>(min) << ":" - << std::setw(2) << static_cast<int>(sec) - << (mActivated ? " +" : " -") - << " 0x" << std::hex << std::setw(8) << mSensorHandle << std::dec - << std::setfill(' ') << " pid=" << std::setw(5) << mPid - << " uid=" << std::setw(5) << mUid << " package=" << mPackageName; - if (mActivated) { - ss << " samplingPeriod=" << mSamplingRateUs << "us" - << " batchingPeriod=" << mMaxReportLatencyUs << "us"; - }; + ss << std::setfill('0') << std::setw(2) << static_cast<int>(hour) << ":" << std::setw(2) + << static_cast<int>(min) << ":" << std::setw(2) << static_cast<int>(sec) + << (mActivated ? " +" : " -") << " 0x" << std::hex << std::setw(8) << mSensorHandle; + ss << std::dec << std::setfill(' ') << " pid=" << std::setw(5) << mPid + << " uid=" << std::setw(5) << mUid; + + std::string samplingRate = + mActivated ? std::to_string(mSamplingRateUs) : " N/A "; + std::string batchingInterval = + mActivated ? std::to_string(mMaxReportLatencyUs) : " N/A "; + ss << " samplingPeriod=" << std::setfill(' ') << std::setw(8) + << samplingRate << "us" << " batchingPeriod=" << std::setfill(' ') + << std::setw(8) << batchingInterval << "us" + << " result=" << statusToString(mRegisteredStatus) + << " (sensor, package): (" << std::setfill(' ') << std::left + << std::setw(27); + + if (sensorService != nullptr) { + ss << sensorService->getSensorName(mSensorHandle); + } else { + ss << "null"; + } + ss << ", " << mPackageName << ")"; + return ss.str(); } + // Dumpable interface + virtual std::string dump() const override { return dump(static_cast<SensorService*>(nullptr)); } + /** * Dump debugging information as android.service.SensorRegistrationInfoProto protobuf message * using ProtoOutputStream. @@ -110,6 +126,7 @@ private: int64_t mMaxReportLatencyUs; bool mActivated; time_t mRealtimeSec; + status_t mRegisteredStatus; }; } // namespace android; diff --git a/services/sensorservice/SensorService.cpp b/services/sensorservice/SensorService.cpp index 57b473bd37..060508ca25 100644 --- a/services/sensorservice/SensorService.cpp +++ b/services/sensorservice/SensorService.cpp @@ -708,7 +708,7 @@ status_t SensorService::dump(int fd, const Vector<String16>& args) { SENSOR_REGISTRATIONS_BUF_SIZE; continue; } - result.appendFormat("%s\n", reg_info.dump().c_str()); + result.appendFormat("%s\n", reg_info.dump(this).c_str()); currentIndex = (currentIndex - 1 + SENSOR_REGISTRATIONS_BUF_SIZE) % SENSOR_REGISTRATIONS_BUF_SIZE; } while(startIndex != currentIndex); @@ -2167,17 +2167,17 @@ status_t SensorService::enable(const sp<SensorEventConnection>& connection, sensor->getSensor().getRequiredAppOp() >= 0) { connection->mHandleToAppOp[handle] = sensor->getSensor().getRequiredAppOp(); } - - mLastNSensorRegistrations.editItemAt(mNextSensorRegIndex) = - SensorRegistrationInfo(handle, connection->getPackageName(), - samplingPeriodNs, maxBatchReportLatencyNs, true); - mNextSensorRegIndex = (mNextSensorRegIndex + 1) % SENSOR_REGISTRATIONS_BUF_SIZE; } if (err != NO_ERROR) { // batch/activate has failed, reset our state. cleanupWithoutDisableLocked(connection, handle); } + + mLastNSensorRegistrations.editItemAt(mNextSensorRegIndex) = + SensorRegistrationInfo(handle, connection->getPackageName(), samplingPeriodNs, + maxBatchReportLatencyNs, /*activate=*/ true, err); + mNextSensorRegIndex = (mNextSensorRegIndex + 1) % SENSOR_REGISTRATIONS_BUF_SIZE; return err; } @@ -2190,13 +2190,10 @@ status_t SensorService::disable(const sp<SensorEventConnection>& connection, int if (err == NO_ERROR) { std::shared_ptr<SensorInterface> sensor = getSensorInterfaceFromHandle(handle); err = sensor != nullptr ? sensor->activate(connection.get(), false) : status_t(BAD_VALUE); - - } - if (err == NO_ERROR) { - mLastNSensorRegistrations.editItemAt(mNextSensorRegIndex) = - SensorRegistrationInfo(handle, connection->getPackageName(), 0, 0, false); - mNextSensorRegIndex = (mNextSensorRegIndex + 1) % SENSOR_REGISTRATIONS_BUF_SIZE; } + mLastNSensorRegistrations.editItemAt(mNextSensorRegIndex) = + SensorRegistrationInfo(handle, connection->getPackageName(), 0, 0, /*activate=*/ false, err); + mNextSensorRegIndex = (mNextSensorRegIndex + 1) % SENSOR_REGISTRATIONS_BUF_SIZE; return err; } |