前言:
在前三篇中初步介绍了开机流程和STR流程,这里讲唤醒
唤醒
如上文所述,当唤醒的时候代码会继续往下执行
private void doHandleDeepSleep(boolean simulatedMode) {
// keep holding partial wakelock to prevent entering sleep before enterDeepSleep call
// enterDeepSleep should force sleep entry even if wake lock is kept.
mSystemInterface.switchToPartialWakeLock();
mHandler.cancelProcessingComplete();
synchronized (mLock) {
mLastSleepEntryTime = SystemClock.elapsedRealtime();
}
int nextListenerState;
if (simulatedMode) {
simulateSleepByWaiting();
nextListenerState = CarPowerStateListener.SHUTDOWN_CANCELLED;
} else {
boolean sleepSucceeded = suspendWithRetries();
if (!sleepSucceeded) {
// Suspend failed and we shut down instead.
// We either won't get here at all or we will power off very soon.
return;
}
// We suspended and have now resumed
nextListenerState = CarPowerStateListener.SUSPEND_EXIT;
}
synchronized (mLock) {
mIsResuming = true;
// Any wakeup time from before is no longer valid.
mNextWakeupSec = 0;
}
Slog.i(TAG, "Resuming after suspending");
//恢复屏幕亮度
mSystemInterface.refreshDisplayBrightness();
//发送状态给vhal
onApPowerStateChange(CpmsState.WAIT_FOR_VHAL, nextListenerState);
}
此时给vhal发送的信号状态是(信号:VehicleProperty.AP_POWER_STATE_REPORT,信号值CarPowerStateListener.SUSPEND_EXIT)
Vhal会上报ON状态,正常使用