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());
}