赞
踩
在一些传感器异常的问题中我们常常需要看最近的sensor日志,那么我们可以通过dumpsys sensorservice来看最近sensor上报的数据。
我们在SensorService.cpp中有一个std::unordered_map<int, RecentEventLogger*> mRecentEvent;对象,这个对象是专门用来记录sensor日志的,每个sensor注册时会添加到这个mRecentEvent中
- const Sensor& SensorService::registerSensor(SensorInterface* s, bool isDebug, bool isVirtual) {
- int handle = s->getSensor().getHandle();
- int type = s->getSensor().getType();
- if (mSensors.add(handle, s, isDebug, isVirtual)){
- mRecentEvent.emplace(handle, new RecentEventLogger(type));
- return s->getSensor();
- } else {
- return mSensors.getNonSensor();
- }
- }
RecentEventLogger的构造方法:
- RecentEventLogger::RecentEventLogger(int sensorType) :
- mSensorType(sensorType), mEventSize(eventSizeBySensorType(mSensorType)),
- mRecentEvents(logSizeBySensorType(sensorType)), mMaskData(false),
- mIsLastEventCurrent(false) {
- // blank
- }
这里会初始化mSensorType,mEventSize,mRecentEvents,mMaskData,mIsLastEventCurrent。
我们看到logSizeBySensorType(sensorType):
- constexpr size_t LOG_SIZE = 10;
- constexpr size_t LOG_SIZE_LARGE = 50; // larger samples for debugging
-
- size_t RecentEventLogger::logSizeBySensorType(int sensorType) {
- return (sensorType == SENSOR_TYPE_STEP_COUNTER ||
- sensorType == SENSOR_TYPE_SIGNIFICANT_MOTION ||
- sensorType == SENSOR_TYPE_ACCELEROMETER ||
- sensorType == SENSOR_TYPE_LIGHT) ? LOG_SIZE_LARGE : LOG_SIZE;
- }
这里会根据不同的sensor来初始化mRecentEvents的大
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。