| /* |
| * Copyright (C) 2020 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.systemui.doze |
| |
| import com.android.systemui.doze.DozeLog.Reason |
| import com.android.systemui.doze.DozeLog.reasonToString |
| import com.android.systemui.log.LogBuffer |
| import com.android.systemui.log.LogLevel.DEBUG |
| import com.android.systemui.log.LogLevel.ERROR |
| import com.android.systemui.log.LogLevel.INFO |
| import com.android.systemui.log.dagger.DozeLog |
| import java.text.SimpleDateFormat |
| import java.util.Date |
| import java.util.Locale |
| import javax.inject.Inject |
| |
| /** Interface for logging messages to the [DozeLog]. */ |
| class DozeLogger @Inject constructor( |
| @DozeLog private val buffer: LogBuffer |
| ) { |
| fun logPickupWakeup(isWithinVibrationThreshold: Boolean) { |
| buffer.log(TAG, DEBUG, { |
| bool1 = isWithinVibrationThreshold |
| }, { |
| "PickupWakeup withinVibrationThreshold=$bool1" |
| }) |
| } |
| |
| fun logPulseStart(@Reason reason: Int) { |
| buffer.log(TAG, INFO, { |
| int1 = reason |
| }, { |
| "Pulse start, reason=${reasonToString(int1)}" |
| }) |
| } |
| |
| fun logPulseFinish() { |
| buffer.log(TAG, INFO, {}, { "Pulse finish" }) |
| } |
| |
| fun logNotificationPulse() { |
| buffer.log(TAG, INFO, {}, { "Notification pulse" }) |
| } |
| |
| fun logDozing(isDozing: Boolean) { |
| buffer.log(TAG, INFO, { |
| bool1 = isDozing |
| }, { |
| "Dozing=$bool1" |
| }) |
| } |
| |
| fun logFling( |
| expand: Boolean, |
| aboveThreshold: Boolean, |
| thresholdNeeded: Boolean, |
| screenOnFromTouch: Boolean |
| ) { |
| buffer.log(TAG, DEBUG, { |
| bool1 = expand |
| bool2 = aboveThreshold |
| bool3 = thresholdNeeded |
| bool4 = screenOnFromTouch |
| }, { |
| "Fling expand=$bool1 aboveThreshold=$bool2 thresholdNeeded=$bool3 " + |
| "screenOnFromTouch=$bool4" |
| }) |
| } |
| |
| fun logEmergencyCall() { |
| buffer.log(TAG, INFO, {}, { "Emergency call" }) |
| } |
| |
| fun logKeyguardBouncerChanged(isShowing: Boolean) { |
| buffer.log(TAG, INFO, { |
| bool1 = isShowing |
| }, { |
| "Keyguard bouncer changed, showing=$bool1" |
| }) |
| } |
| |
| fun logScreenOn(isPulsing: Boolean) { |
| buffer.log(TAG, INFO, { |
| bool1 = isPulsing |
| }, { |
| "Screen on, pulsing=$bool1" |
| }) |
| } |
| |
| fun logScreenOff(why: Int) { |
| buffer.log(TAG, INFO, { |
| int1 = why |
| }, { |
| "Screen off, why=$int1" |
| }) |
| } |
| |
| fun logMissedTick(delay: String) { |
| buffer.log(TAG, ERROR, { |
| str1 = delay |
| }, { |
| "Missed AOD time tick by $str1" |
| }) |
| } |
| |
| fun logTimeTickScheduled(whenAt: Long, triggerAt: Long) { |
| buffer.log(TAG, DEBUG, { |
| long1 = whenAt |
| long2 = triggerAt |
| }, { |
| "Time tick scheduledAt=${DATE_FORMAT.format(Date(long1))} " + |
| "triggerAt=${DATE_FORMAT.format(Date(long2))}" |
| }) |
| } |
| |
| fun logKeyguardVisibilityChange(isShowing: Boolean) { |
| buffer.log(TAG, INFO, { |
| bool1 = isShowing |
| }, { |
| "Keyguard visibility change, isShowing=$bool1" |
| }) |
| } |
| |
| fun logDozeStateChanged(state: DozeMachine.State) { |
| buffer.log(TAG, INFO, { |
| str1 = state.name |
| }, { |
| "Doze state changed to $str1" |
| }) |
| } |
| |
| fun logWakeDisplay(isAwake: Boolean) { |
| buffer.log(TAG, DEBUG, { |
| bool1 = isAwake |
| }, { |
| "Display wakefulness changed, isAwake=$bool1" |
| }) |
| } |
| |
| fun logProximityResult(isNear: Boolean, millis: Long, @Reason reason: Int) { |
| buffer.log(TAG, DEBUG, { |
| bool1 = isNear |
| long1 = millis |
| int1 = reason |
| }, { |
| "Proximity result reason=${reasonToString(int1)} near=$bool1 millis=$long1" |
| }) |
| } |
| |
| fun logPulseDropped(pulsePending: Boolean, state: DozeMachine.State, blocked: Boolean) { |
| buffer.log(TAG, INFO, { |
| bool1 = pulsePending |
| str1 = state.name |
| bool2 = blocked |
| }, { |
| "Pulse dropped, pulsePending=$bool1 state=$str1 blocked=$bool2" |
| }) |
| } |
| |
| fun logPulseDropped(reason: String) { |
| buffer.log(TAG, INFO, { |
| str1 = reason |
| }, { |
| "Pulse dropped, why=$str1" |
| }) |
| } |
| |
| fun logPulseTouchDisabledByProx(disabled: Boolean) { |
| buffer.log(TAG, DEBUG, { |
| bool1 = disabled |
| }, { |
| "Pulse touch modified by prox, disabled=$bool1" |
| }) |
| } |
| |
| fun logSensorTriggered(@Reason reason: Int) { |
| buffer.log(TAG, DEBUG, { |
| int1 = reason |
| }, { |
| "Sensor triggered, type=${reasonToString(int1)}" |
| }) |
| } |
| } |
| |
| private const val TAG = "DozeLog" |
| |
| val DATE_FORMAT = SimpleDateFormat("MM-dd HH:mm:ss.S", Locale.US) |