void CodecCommander::onTimerAction() { // if infinite checks are enabled - essentially are for monitoring fugue state, sleep is fine with finite check if (checkInfinite) { // check if hda codec is powered parseCodecPowerState(); // if no power after semi-sleep (fugue) state and power was restored - set EAPD bit if (eapdPoweredDown && (hdaCurrentPowerState == 0x1 || hdaCurrentPowerState == 0x2)) { DEBUG_LOG("CodecCommander: cc: --> hda codec power restored\n"); setOutputs(); // if popping requested - generate stream at fugue-wake if (!coldBoot && generatePop){ createAudioStream(); } // simulate headphone jack replug simulateHedphoneJack(); // <------ makes sure this is needed? } } // check if audio stream is up on given output parseAudioEngineState(); // get EAPD bit status from command response if audio stream went up if (hdaEngineState == 0x1) { getOutputs(); // if engine output stream has started, but EAPD isn't up if(response == 0x0) { // set EAPD bit setOutputs(); } } fTimer->setTimeoutMS(updateInterval); }
/****************************************************************************** * CodecCommander::onTimerAction - repeats the action each time timer fires ******************************************************************************/ void CodecCommander::onTimerAction() { // check if hda codec is powered - we are monitoring ocurrences of fugue state parseCodecPowerState(); // if no power after semi-sleep (fugue) state and power was restored - set EAPD bit if (eapdPoweredDown && hdaCurrentPowerState != 0x0) { DEBUG_LOG("CodecCommander: cc: --> hda codec power restored\n"); handleStateChange(kStateWake); } mTimer->setTimeoutMS(mConfiguration->getInterval()); }