Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3320de98 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add pushing many batterystats events to statsd"

parents 9fe1908e c1a050ad
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -130,12 +130,12 @@ static StatsdConfig build_fake_config() {
    int APP_USAGE_FOREGROUND = 1;
    int APP_USAGE_BACKGROUND = 0;

    int SCREEN_EVENT_TAG_ID = 2;
    int SCREEN_EVENT_TAG_ID = 29;
    int SCREEN_EVENT_STATE_KEY = 1;
    int SCREEN_EVENT_ON_VALUE = 2;
    int SCREEN_EVENT_OFF_VALUE = 1;

    int UID_PROCESS_STATE_TAG_ID = 3;
    int UID_PROCESS_STATE_TAG_ID = 27;
    int UID_PROCESS_STATE_UID_KEY = 1;

    // Count Screen ON events.
+344 −11
Original line number Diff line number Diff line
@@ -36,9 +36,28 @@ option java_outer_classname = "StatsEventProto";
 */
message StatsEvent {
    oneof event {
        ScreenStateChanged screen_state_changed = 1;
        ProcessStateChanged process_state_changed = 2;
        WakeLockChanged wakelock_changed = 3;
        // For StatsLog reasons, 1 is illegal and will not work. Must start at 2.
        BleScanStateChanged ble_scan_state_changed = 2;
        BleUnoptimizedScanStateChanged ble_unoptimized_scan_state_changed = 3;
        BleScanResultReceived ble_scan_result_received = 4;
        SensorStateChanged sensor_state_changed = 5;
        GpsScanStateChanged gps_scan_state_changed = 6; // TODO: untested
        SyncStateChanged sync_state_changed = 7;
        ScheduledJobStateChanged scheduled_job_state_changed = 8;
        ScreenBrightnessChanged screen_brightness_changed = 9;
        // 10-20 are temporarily reserved for wakelocks etc.
        UidWakelockStateChanged uid_wakelock_state_changed = 11;
        LongPartialWakelockStateChanged long_partial_wakelock_state_changed = 12;
        BatterySaverModeStateChanged battery_saver_mode_state_changed = 21;
        DeviceIdleModeStateChanged device_idle_mode_state_changed = 22;
        AudioStateChanged audio_state_changed = 23;
        MediaCodecActivityChanged media_codec_activity_changed = 24;
        CameraStateChanged camera_state_changed = 25;
        FlashlightStateChanged flashlight_state_changed = 26;
        UidProcessStateChanged uid_process_state_changed = 27;
        ProcessLifeCycleStateChanged process_life_cycle_state_changed = 28;
        ScreenStateChanged screen_state_changed = 29;
        // TODO: Reorder the numbering so that the most frequent occur events occur in the first 15.
    }
}

@@ -72,7 +91,7 @@ message WorkSource {
 *     and those UIDs will be translated in xxx to those strings.
 *
 * CONVENTIONS:
 *   - Events are past tense. e.g. ScreenStateChanged, not ScreenStateChange
 *   - Events are past tense. e.g. ScreenStateChanged, not ScreenStateChange.
 *   - If there is a UID, it goes first. Think in an object-oriented fashion.
 * *****************************************************************************
 */
@@ -98,33 +117,347 @@ message ScreenStateChanged {
}

/**
 * Logs that the state of a process state, as per the activity manager has changed.
 * Logs that the state of a process state, as per the activity manager, has changed.
 *
 * Logged from:
 *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
 */
message ProcessStateChanged {
    // TODO: Use the real (mapped) process states.
message UidProcessStateChanged {
    optional int32 uid = 1; // TODO: should be a string tagged w/ uid annotation

    // The state.
    // TODO: Use the real (mapped) process states.
    optional int32 state = 2;
}

/**
 * Logs that the state of a wakelock has changed.
 * Logs that a process started, finished, crashed, or ANRed.
 *
 * Logged from:
 *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
 */
message ProcessLifeCycleStateChanged {
    // TODO: Use the real (mapped) process states.
    optional int32 uid = 1; // TODO: should be a string tagged w/ uid annotation

    // TODO: What is this?
    optional string name = 2;

    // The state.
    // TODO: Use an enum.
    optional int32 event = 3;
}



/**
 * Logs when the ble scan state changes.
 *
 * Logged from:
 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
 */
message BleScanStateChanged {
    // TODO: Add attribution instead of uid.
    optional int32 uid = 1;

    enum State {
        OFF = 0;
        ON = 1;
    }
    optional State state = 2;
}

/**
 * Logs when an unoptimized ble scan state changes.
 *
 * Logged from:
 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
 */
// TODO: Consider changing to tracking per-scanner-id (log from AppScanStats).
message BleUnoptimizedScanStateChanged {
    // TODO: Add attribution instead of uid.
    optional int32 uid = 1;

    enum State {
        OFF = 0;
        ON = 1;
    }
    optional State state = 2;
}

/**
 * Logs reporting of a ble scan finding results.
 *
 * Logged from:
 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
 */
// TODO: Consider changing to tracking per-scanner-id (log from AppScanStats).
message BleScanResultReceived {
    // TODO: Add attribution instead of uid.
    optional int32 uid = 1;

    // Number of ble scan results returned.
    optional int32 num_of_results = 2;
}

/**
 * Logs when a sensor state changes.
 *
 * Logged from:
 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
 */
message SensorStateChanged {
    // TODO: Add attribution instead of uid.
    optional int32 uid = 1;

    // TODO: Is there a way to get the actual name of the sensor?
    // The id (int) of the sensor.
    optional int32 sensor_id = 2;

    enum State {
        OFF = 0;
        ON = 1;
    }
    optional State state = 3;
}


/**
 * Logs when GPS state changes.
 *
 * Logged from:
 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
 */
message GpsScanStateChanged {
    // TODO: Add attribution instead of uid.
    optional int32 uid = 1;

    enum State {
        OFF = 0;
        ON = 1;
    }
    optional State state = 2;
}


/**
 * Logs when a sync manager sync state changes.
 *
 * Logged from:
 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
 */
message SyncStateChanged {
    // TODO: Add attribution instead of uid.
    optional int32 uid = 1;

    // Name of the sync (as named in the app)
    optional string name = 2;

    enum State {
        OFF = 0;
        ON = 1;
    }
    optional State state = 3;
}

/**
 * Logs when a job scheduler job state changes.
 *
 * Logged from:
 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
 */
message ScheduledJobStateChanged {
    // TODO: Add attribution instead of uid.
    optional int32 uid = 1;

    // Name of the job (as named in the app)
    optional string name = 2;

    enum State {
        OFF = 0;
        ON = 1;
    }
    optional State state = 3;

    // TODO: Consider adding the stopReason (int)
}

/**
 * Logs when the audio state changes.
 *
 * Logged from:
 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
 */
message AudioStateChanged {
    // TODO: Add attribution instead of uid.
    optional int32 uid = 1;

    enum State {
        OFF = 0;
        ON = 1;
    }
    optional State state = 2;
}

/**
 * Logs when the video codec state changes.
 *
 * Logged from:
 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
 */
message MediaCodecActivityChanged {
    // TODO: Add attribution instead of uid.
    optional int32 uid = 1;

    enum State {
        OFF = 0;
        ON = 1;
    }
    optional State state = 2;
}

/**
 * Logs when the flashlight state changes.
 *
 * Logged from:
 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
 */
message FlashlightStateChanged {
    // TODO: Add attribution instead of uid.
    optional int32 uid = 1;

    enum State {
        OFF = 0;
        ON = 1;
    }
    optional State state = 2;
}

/**
 * Logs when the camera state changes.
 *
 * Logged from:
 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
 */
message CameraStateChanged {
    // TODO: Add attribution instead of uid.
    optional int32 uid = 1;

    enum State {
        OFF = 0;
        ON = 1;
    }
    optional State state = 2;
}

/**
 * Logs that the state of a wakelock (per app and per wakelock name) has changed.
 *
 * Logged from:
 *   TODO
 */
message WakeLockChanged {
message WakelockChanged {
    // TODO: Add attribution instead of uid.
    optional int32 uid = 1;

    // Type of wakelock.
    enum Type {
        PARTIAL = 0;
        FULL = 1;
        WINDOW = 2;
    }
    optional int32 type = 2;

    // The wakelock tag (Called tag in the Java API, sometimes name elsewhere).
    optional string tag = 3;

    enum State {
        OFF = 0;
        ON = 1;
    }
    optional State state = 4;
}

/**
 * Logs when an app is holding a wakelock, regardless of the wakelock's name.
 *
 * Logged from:
 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
 */
message UidWakelockStateChanged {
    // TODO: Add attribution instead of uid.
    optional int32 uid = 1;

    // Type of wakelock.
    enum Type {
        PARTIAL = 0;
        FULL = 1;
        WINDOW = 2;
    }
    optional int32 type = 2;

    enum State {
        OFF = 0;
        ON = 1;
    }
    optional State state = 3;
}

/**
 * Logs when a partial wakelock is considered 'long' (over 1 min).
 *
 * Logged from:
 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
 */
message LongPartialWakelockStateChanged {
    // TODO: Add attribution instead of uid?
    optional int32 uid = 1;

    // The wakelock tag (Called tag in the Java API, sometimes name elsewhere).
    optional string tag = 2;

    // TODO: Use a constant instead of boolean?
    optional bool state = 3;
    // TODO: I have no idea what this is.
    optional string history_tag = 3;

    enum State {
        OFF = 0;
        ON = 1;
    }
    optional State state = 4;
}

/**
 * Logs Battery Saver state change.
 *
 * Logged from:
 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
 */
message BatterySaverModeStateChanged {
    enum State {
        OFF = 0;
        ON = 1;
    }
    optional State state = 1;
}

/**
 * Logs Doze mode state change.
 *
 * Logged from:
 *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
 */
message DeviceIdleModeStateChanged {
    // TODO: Use the enum matching BatteryStats.DEVICE_IDLE_MODE_.
    optional int32 state = 1;
}

/**
 * Logs screen brightness level.
 *
 * Logged from:
 *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
 */
message ScreenBrightnessChanged {
    // Screen brightness level. Should be in [-1, 255] according to PowerManager.java.
    optional int32 level = 1;
}
 No newline at end of file
+88 −0
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ import android.util.Slog;
import android.util.SparseArray;
import android.util.SparseIntArray;
import android.util.SparseLongArray;
import android.util.StatsLog;
import android.util.TimeUtils;
import android.util.Xml;
import android.view.Display;
@@ -4030,6 +4031,7 @@ public class BatteryStatsImpl extends BatteryStats {
        }
        addHistoryEventLocked(elapsedRealtime, uptime, HistoryItem.EVENT_LONG_WAKE_LOCK_START,
                historyName, uid);
        StatsLog.write(StatsLog.LONG_PARTIAL_WAKELOCK_STATE_CHANGED, uid, name, historyName, 1);
    }
    public void noteLongPartialWakelockFinish(String name, String historyName, int uid) {
@@ -4045,6 +4047,7 @@ public class BatteryStatsImpl extends BatteryStats {
        }
        addHistoryEventLocked(elapsedRealtime, uptime, HistoryItem.EVENT_LONG_WAKE_LOCK_FINISH,
                historyName, uid);
        StatsLog.write(StatsLog.LONG_PARTIAL_WAKELOCK_STATE_CHANGED, uid, name, historyName, 0);
    }
    void aggregateLastWakeupUptimeLocked(long uptimeMs) {
@@ -4403,6 +4406,7 @@ public class BatteryStatsImpl extends BatteryStats {
                mPowerSaveModeEnabledTimer.stopRunningLocked(elapsedRealtime);
            }
            addHistoryRecordLocked(elapsedRealtime, uptime);
            StatsLog.write(StatsLog.BATTERY_SAVER_MODE_STATE_CHANGED, enabled ? 1 : 0);
        }
    }
@@ -6180,17 +6184,25 @@ public class BatteryStatsImpl extends BatteryStats {
        public void noteAudioTurnedOnLocked(long elapsedRealtimeMs) {
            createAudioTurnedOnTimerLocked().startRunningLocked(elapsedRealtimeMs);
            // TODO(statsd): Possibly use a worksource instead of a uid.
            StatsLog.write(StatsLog.AUDIO_STATE_CHANGED, getUid(), 1);
        }
        public void noteAudioTurnedOffLocked(long elapsedRealtimeMs) {
            if (mAudioTurnedOnTimer != null) {
                mAudioTurnedOnTimer.stopRunningLocked(elapsedRealtimeMs);
                if (!mAudioTurnedOnTimer.isRunningLocked()) { // only tell statsd if truly stopped
                    // TODO(statsd): Possibly use a worksource instead of a uid.
                    StatsLog.write(StatsLog.AUDIO_STATE_CHANGED, getUid(), 0);
                }
            }
        }
        public void noteResetAudioLocked(long elapsedRealtimeMs) {
            if (mAudioTurnedOnTimer != null) {
                mAudioTurnedOnTimer.stopAllRunningLocked(elapsedRealtimeMs);
                // TODO(statsd): Possibly use a worksource instead of a uid.
                StatsLog.write(StatsLog.AUDIO_STATE_CHANGED, getUid(), 0);
            }
        }
@@ -6204,17 +6216,25 @@ public class BatteryStatsImpl extends BatteryStats {
        public void noteVideoTurnedOnLocked(long elapsedRealtimeMs) {
            createVideoTurnedOnTimerLocked().startRunningLocked(elapsedRealtimeMs);
            // TODO(statsd): Possibly use a worksource instead of a uid.
            StatsLog.write(StatsLog.MEDIA_CODEC_ACTIVITY_CHANGED, getUid(), 1);
        }
        public void noteVideoTurnedOffLocked(long elapsedRealtimeMs) {
            if (mVideoTurnedOnTimer != null) {
                mVideoTurnedOnTimer.stopRunningLocked(elapsedRealtimeMs);
                if (!mVideoTurnedOnTimer.isRunningLocked()) { // only tell statsd if truly stopped
                    // TODO(statsd): Possibly use a worksource instead of a uid.
                    StatsLog.write(StatsLog.MEDIA_CODEC_ACTIVITY_CHANGED, getUid(), 0);
                }
            }
        }
        public void noteResetVideoLocked(long elapsedRealtimeMs) {
            if (mVideoTurnedOnTimer != null) {
                mVideoTurnedOnTimer.stopAllRunningLocked(elapsedRealtimeMs);
                // TODO(statsd): Possibly use a worksource instead of a uid.
                StatsLog.write(StatsLog.MEDIA_CODEC_ACTIVITY_CHANGED, getUid(), 0);
            }
        }
@@ -6228,17 +6248,25 @@ public class BatteryStatsImpl extends BatteryStats {
        public void noteFlashlightTurnedOnLocked(long elapsedRealtimeMs) {
            createFlashlightTurnedOnTimerLocked().startRunningLocked(elapsedRealtimeMs);
            // TODO(statsd): Possibly use a worksource instead of a uid.
            StatsLog.write(StatsLog.FLASHLIGHT_STATE_CHANGED, getUid(), 1);
        }
        public void noteFlashlightTurnedOffLocked(long elapsedRealtimeMs) {
            if (mFlashlightTurnedOnTimer != null) {
                mFlashlightTurnedOnTimer.stopRunningLocked(elapsedRealtimeMs);
                if (!mFlashlightTurnedOnTimer.isRunningLocked()) {
                    // TODO(statsd): Possibly use a worksource instead of a uid.
                    StatsLog.write(StatsLog.FLASHLIGHT_STATE_CHANGED, getUid(), 0);
                }
            }
        }
        public void noteResetFlashlightLocked(long elapsedRealtimeMs) {
            if (mFlashlightTurnedOnTimer != null) {
                mFlashlightTurnedOnTimer.stopAllRunningLocked(elapsedRealtimeMs);
                // TODO(statsd): Possibly use a worksource instead of a uid.
                StatsLog.write(StatsLog.FLASHLIGHT_STATE_CHANGED, getUid(), 0);
            }
        }
@@ -6252,17 +6280,25 @@ public class BatteryStatsImpl extends BatteryStats {
        public void noteCameraTurnedOnLocked(long elapsedRealtimeMs) {
            createCameraTurnedOnTimerLocked().startRunningLocked(elapsedRealtimeMs);
            // TODO(statsd): Possibly use a worksource instead of a uid.
            StatsLog.write(StatsLog.CAMERA_STATE_CHANGED, getUid(), 1);
        }
        public void noteCameraTurnedOffLocked(long elapsedRealtimeMs) {
            if (mCameraTurnedOnTimer != null) {
                mCameraTurnedOnTimer.stopRunningLocked(elapsedRealtimeMs);
                if (!mCameraTurnedOnTimer.isRunningLocked()) { // only tell statsd if truly stopped
                    // TODO(statsd): Possibly use a worksource instead of a uid.
                    StatsLog.write(StatsLog.CAMERA_STATE_CHANGED, getUid(), 0);
                }
            }
        }
        public void noteResetCameraLocked(long elapsedRealtimeMs) {
            if (mCameraTurnedOnTimer != null) {
                mCameraTurnedOnTimer.stopAllRunningLocked(elapsedRealtimeMs);
                // TODO(statsd): Possibly use a worksource instead of a uid.
                StatsLog.write(StatsLog.CAMERA_STATE_CHANGED, getUid(), 0);
            }
        }
@@ -6311,26 +6347,42 @@ public class BatteryStatsImpl extends BatteryStats {
        public void noteBluetoothScanStartedLocked(long elapsedRealtimeMs, boolean isUnoptimized) {
            createBluetoothScanTimerLocked().startRunningLocked(elapsedRealtimeMs);
            // TODO(statsd): Possibly use a worksource instead of a uid.
            StatsLog.write(StatsLog.BLE_SCAN_STATE_CHANGED, getUid(), 1);
            if (isUnoptimized) {
                createBluetoothUnoptimizedScanTimerLocked().startRunningLocked(elapsedRealtimeMs);
                // TODO(statsd): Possibly use a worksource instead of a uid.
                StatsLog.write(StatsLog.BLE_UNOPTIMIZED_SCAN_STATE_CHANGED, getUid(), 1);
            }
        }
        public void noteBluetoothScanStoppedLocked(long elapsedRealtimeMs, boolean isUnoptimized) {
            if (mBluetoothScanTimer != null) {
                mBluetoothScanTimer.stopRunningLocked(elapsedRealtimeMs);
                if (!mBluetoothScanTimer.isRunningLocked()) { // only tell statsd if truly stopped
                    // TODO(statsd): Possibly use a worksource instead of a uid.
                    StatsLog.write(StatsLog.BLE_SCAN_STATE_CHANGED, getUid(), 0);
                }
            }
            if (isUnoptimized && mBluetoothUnoptimizedScanTimer != null) {
                mBluetoothUnoptimizedScanTimer.stopRunningLocked(elapsedRealtimeMs);
                if (!mBluetoothUnoptimizedScanTimer.isRunningLocked()) {
                    // TODO(statsd): Possibly use a worksource instead of a uid.
                    StatsLog.write(StatsLog.BLE_UNOPTIMIZED_SCAN_STATE_CHANGED, getUid(), 0);
                }
            }
        }
        public void noteResetBluetoothScanLocked(long elapsedRealtimeMs) {
            if (mBluetoothScanTimer != null) {
                mBluetoothScanTimer.stopAllRunningLocked(elapsedRealtimeMs);
                // TODO(statsd): Possibly use a worksource instead of a uid.
                StatsLog.write(StatsLog.BLE_SCAN_STATE_CHANGED, getUid(), 0);
            }
            if (mBluetoothUnoptimizedScanTimer != null) {
                mBluetoothUnoptimizedScanTimer.stopAllRunningLocked(elapsedRealtimeMs);
                // TODO(statsd): Possibly use a worksource instead of a uid.
                StatsLog.write(StatsLog.BLE_UNOPTIMIZED_SCAN_STATE_CHANGED, getUid(), 0);
            }
        }
@@ -6352,6 +6404,9 @@ public class BatteryStatsImpl extends BatteryStats {
            createBluetoothScanResultCounterLocked().addAtomic(numNewResults);
            // Uses background timebase, so the count will only be incremented if uid in background.
            createBluetoothScanResultBgCounterLocked().addAtomic(numNewResults);
            // TODO(statsd): Possibly use a worksource instead of a uid.
            // TODO(statsd): This could be in AppScanStats instead, if desired.
            StatsLog.write(StatsLog.BLE_SCAN_RESULT_RECEIVED, getUid(), numNewResults);
        }
        @Override
@@ -8725,6 +8780,8 @@ public class BatteryStatsImpl extends BatteryStats {
            DualTimer t = mSyncStats.startObject(name);
            if (t != null) {
                t.startRunningLocked(elapsedRealtimeMs);
                // TODO(statsd): Possibly use a worksource instead of a uid.
                StatsLog.write(StatsLog.SYNC_STATE_CHANGED, getUid(), name, 1);
            }
        }
@@ -8732,6 +8789,10 @@ public class BatteryStatsImpl extends BatteryStats {
            DualTimer t = mSyncStats.stopObject(name);
            if (t != null) {
                t.stopRunningLocked(elapsedRealtimeMs);
                if (!t.isRunningLocked()) { // only tell statsd if truly stopped
                    // TODO(statsd): Possibly use a worksource instead of a uid.
                    StatsLog.write(StatsLog.SYNC_STATE_CHANGED, getUid(), name, 0);
                }
            }
        }
@@ -8739,6 +8800,8 @@ public class BatteryStatsImpl extends BatteryStats {
            DualTimer t = mJobStats.startObject(name);
            if (t != null) {
                t.startRunningLocked(elapsedRealtimeMs);
                // TODO(statsd): Possibly use a worksource instead of a uid.
                StatsLog.write(StatsLog.SCHEDULED_JOB_STATE_CHANGED, getUid(), name, 1);
            }
        }
@@ -8746,6 +8809,10 @@ public class BatteryStatsImpl extends BatteryStats {
            DualTimer t = mJobStats.stopObject(name);
            if (t != null) {
                t.stopRunningLocked(elapsedRealtimeMs);
                if (!t.isRunningLocked()) { // only tell statsd if truly stopped
                    // TODO(statsd): Possibly use a worksource instead of a uid.
                    StatsLog.write(StatsLog.SCHEDULED_JOB_STATE_CHANGED, getUid(), name, 0);
                }
            }
            if (mBsi.mOnBatteryTimeBase.isRunning()) {
                SparseIntArray types = mJobCompletions.get(name);
@@ -8812,6 +8879,8 @@ public class BatteryStatsImpl extends BatteryStats {
            }
            if (type == WAKE_TYPE_PARTIAL) {
                createAggregatedPartialWakelockTimerLocked().startRunningLocked(elapsedRealtimeMs);
                // TODO(statsd): Possibly use a worksource instead of a uid.
                StatsLog.write(StatsLog.UID_WAKELOCK_STATE_CHANGED, getUid(), type, 1);
                if (pid >= 0) {
                    Pid p = getPidStatsLocked(pid);
                    if (p.mWakeNesting++ == 0) {
@@ -8829,6 +8898,11 @@ public class BatteryStatsImpl extends BatteryStats {
            if (type == WAKE_TYPE_PARTIAL) {
                if (mAggregatedPartialWakelockTimer != null) {
                    mAggregatedPartialWakelockTimer.stopRunningLocked(elapsedRealtimeMs);
                    if (!mAggregatedPartialWakelockTimer.isRunningLocked()) {
                        // TODO(statsd): Possibly use a worksource instead of a uid.
                        StatsLog.write(StatsLog.UID_WAKELOCK_STATE_CHANGED, getUid(), type,
                                0);
                    }
                }
                if (pid >= 0) {
                    Pid p = mPids.get(pid);
@@ -8852,6 +8926,12 @@ public class BatteryStatsImpl extends BatteryStats {
        public void noteStartSensor(int sensor, long elapsedRealtimeMs) {
            DualTimer t = getSensorTimerLocked(sensor, /* create= */ true);
            t.startRunningLocked(elapsedRealtimeMs);
            // TODO(statsd): Possibly use a worksource instead of a uid.
            if (sensor == Sensor.GPS) {
                StatsLog.write(StatsLog.GPS_SCAN_STATE_CHANGED, getUid(), 1);
            } else {
                StatsLog.write(StatsLog.SENSOR_STATE_CHANGED, getUid(), sensor, 1);
            }
        }
        public void noteStopSensor(int sensor, long elapsedRealtimeMs) {
@@ -8859,6 +8939,14 @@ public class BatteryStatsImpl extends BatteryStats {
            DualTimer t = getSensorTimerLocked(sensor, false);
            if (t != null) {
                t.stopRunningLocked(elapsedRealtimeMs);
                if (!t.isRunningLocked()) { // only tell statsd if truly stopped
                    // TODO(statsd): Possibly use a worksource instead of a uid.
                    if (sensor == Sensor.GPS) {
                        StatsLog.write(StatsLog.GPS_SCAN_STATE_CHANGED, getUid(), 0);
                    } else {
                        StatsLog.write(StatsLog.SENSOR_STATE_CHANGED, getUid(), sensor, 0);
                    }
                }
            }
        }
+11 −1

File changed.

Preview size limit exceeded, changes collapsed.