SensorService fixes.
i) Add more debug stats (acks needed, acks received) ii) Comment out write failure message. Change-Id: Iac892a66530849a2dd023d6f5628cd070a79537d
This commit is contained in:
parent
61a4eecbe6
commit
e74baf6ca7
@ -924,6 +924,7 @@ SensorService::SensorEventConnection::SensorEventConnection(
|
|||||||
}
|
}
|
||||||
#if DEBUG_CONNECTIONS
|
#if DEBUG_CONNECTIONS
|
||||||
mEventsReceived = mEventsSentFromCache = mEventsSent = 0;
|
mEventsReceived = mEventsSentFromCache = mEventsSent = 0;
|
||||||
|
mTotalAcksNeeded = mTotalAcksReceived = 0;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -960,12 +961,15 @@ void SensorService::SensorEventConnection::dump(String8& result) {
|
|||||||
mCacheSize,
|
mCacheSize,
|
||||||
mMaxCacheSize);
|
mMaxCacheSize);
|
||||||
#if DEBUG_CONNECTIONS
|
#if DEBUG_CONNECTIONS
|
||||||
result.appendFormat("\t events recvd: %d | sent %d | cache %d | dropped %d\n",
|
result.appendFormat("\t events recvd: %d | sent %d | cache %d | dropped %d |"
|
||||||
|
" total_acks_needed %d | total_acks_recvd %d\n",
|
||||||
mEventsReceived,
|
mEventsReceived,
|
||||||
mEventsSent,
|
mEventsSent,
|
||||||
mEventsSentFromCache,
|
mEventsSentFromCache,
|
||||||
mEventsReceived - (mEventsSentFromCache
|
mEventsReceived - (mEventsSentFromCache +
|
||||||
mEventsSent + mCacheSize));
|
mEventsSent + mCacheSize),
|
||||||
|
mTotalAcksNeeded,
|
||||||
|
mTotalAcksReceived);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1125,6 +1129,9 @@ status_t SensorService::SensorEventConnection::sendEvents(
|
|||||||
if (index_wake_up_event >= 0) {
|
if (index_wake_up_event >= 0) {
|
||||||
scratch[index_wake_up_event].flags |= WAKE_UP_SENSOR_EVENT_NEEDS_ACK;
|
scratch[index_wake_up_event].flags |= WAKE_UP_SENSOR_EVENT_NEEDS_ACK;
|
||||||
++mWakeLockRefCount;
|
++mWakeLockRefCount;
|
||||||
|
#if DEBUG_CONNECTIONS
|
||||||
|
++mTotalAcksNeeded;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: ASensorEvent and sensors_event_t are the same type.
|
// NOTE: ASensorEvent and sensors_event_t are the same type.
|
||||||
@ -1136,6 +1143,9 @@ status_t SensorService::SensorEventConnection::sendEvents(
|
|||||||
// If there was a wake_up sensor_event, reset the flag.
|
// If there was a wake_up sensor_event, reset the flag.
|
||||||
scratch[index_wake_up_event].flags &= ~WAKE_UP_SENSOR_EVENT_NEEDS_ACK;
|
scratch[index_wake_up_event].flags &= ~WAKE_UP_SENSOR_EVENT_NEEDS_ACK;
|
||||||
--mWakeLockRefCount;
|
--mWakeLockRefCount;
|
||||||
|
#if DEBUG_CONNECTIONS
|
||||||
|
--mTotalAcksNeeded;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
if (mEventCache == NULL) {
|
if (mEventCache == NULL) {
|
||||||
mMaxCacheSize = computeMaxCacheSizeLocked();
|
mMaxCacheSize = computeMaxCacheSizeLocked();
|
||||||
@ -1214,6 +1224,9 @@ void SensorService::SensorEventConnection::writeToSocketFromCacheLocked() {
|
|||||||
mEventCache[index_wake_up_event + numEventsSent].flags |=
|
mEventCache[index_wake_up_event + numEventsSent].flags |=
|
||||||
WAKE_UP_SENSOR_EVENT_NEEDS_ACK;
|
WAKE_UP_SENSOR_EVENT_NEEDS_ACK;
|
||||||
++mWakeLockRefCount;
|
++mWakeLockRefCount;
|
||||||
|
#if DEBUG_CONNECTIONS
|
||||||
|
++mTotalAcksNeeded;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
ssize_t size = SensorEventQueue::write(mChannel,
|
ssize_t size = SensorEventQueue::write(mChannel,
|
||||||
@ -1225,6 +1238,9 @@ void SensorService::SensorEventConnection::writeToSocketFromCacheLocked() {
|
|||||||
mEventCache[index_wake_up_event + numEventsSent].flags &=
|
mEventCache[index_wake_up_event + numEventsSent].flags &=
|
||||||
~WAKE_UP_SENSOR_EVENT_NEEDS_ACK;
|
~WAKE_UP_SENSOR_EVENT_NEEDS_ACK;
|
||||||
--mWakeLockRefCount;
|
--mWakeLockRefCount;
|
||||||
|
#if DEBUG_CONNECTIONS
|
||||||
|
--mTotalAcksNeeded;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
memmove(mEventCache, &mEventCache[numEventsSent],
|
memmove(mEventCache, &mEventCache[numEventsSent],
|
||||||
(mCacheSize - numEventsSent) * sizeof(sensors_event_t));
|
(mCacheSize - numEventsSent) * sizeof(sensors_event_t));
|
||||||
@ -1333,6 +1349,9 @@ int SensorService::SensorEventConnection::handleEvent(int fd, int events, void*
|
|||||||
{
|
{
|
||||||
Mutex::Autolock _l(mConnectionLock);
|
Mutex::Autolock _l(mConnectionLock);
|
||||||
--mWakeLockRefCount;
|
--mWakeLockRefCount;
|
||||||
|
#if DEBUG_CONNECTIONS
|
||||||
|
++mTotalAcksReceived;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
// Check if wakelock can be released by sensorservice. mConnectionLock needs to be released
|
// Check if wakelock can be released by sensorservice. mConnectionLock needs to be released
|
||||||
// here as checkWakeLockState() will need it.
|
// here as checkWakeLockState() will need it.
|
||||||
@ -1380,7 +1399,7 @@ int SensorService::SensorEventConnection::computeMaxCacheSizeLocked() const {
|
|||||||
if (fifoWakeUpSensors + fifoNonWakeUpSensors == 0) {
|
if (fifoWakeUpSensors + fifoNonWakeUpSensors == 0) {
|
||||||
// It is extremely unlikely that there is a write failure in non batch mode. Return a cache
|
// It is extremely unlikely that there is a write failure in non batch mode. Return a cache
|
||||||
// size that is equal to that of the batch mode.
|
// size that is equal to that of the batch mode.
|
||||||
ALOGI("Write failure in non-batch mode");
|
// ALOGW("Write failure in non-batch mode");
|
||||||
return MAX_SOCKET_BUFFER_SIZE_BATCHED/sizeof(sensors_event_t);
|
return MAX_SOCKET_BUFFER_SIZE_BATCHED/sizeof(sensors_event_t);
|
||||||
}
|
}
|
||||||
return fifoWakeUpSensors + fifoNonWakeUpSensors;
|
return fifoWakeUpSensors + fifoNonWakeUpSensors;
|
||||||
|
@ -142,6 +142,7 @@ class SensorService :
|
|||||||
|
|
||||||
#if DEBUG_CONNECTIONS
|
#if DEBUG_CONNECTIONS
|
||||||
int mEventsReceived, mEventsSent, mEventsSentFromCache;
|
int mEventsReceived, mEventsSent, mEventsSentFromCache;
|
||||||
|
int mTotalAcksNeeded, mTotalAcksReceived;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
Loading…
Reference in New Issue
Block a user