#include "AudioConsoleLedMgr.h" #include "timer.h" //BtnLedDimmer_t mLinkZ2LEDDimmer; //int DimmerSlope = 5; BtnLedDimmer_t mLedDimmerList[AUDIO_CONSOLE_NB_LED]; BtnLedDimmer_t mLinkZ2LEDDimmer; int DimmerSlope = 5; void AudioConsoleLedMgrInit() { mLinkZ2LEDDimmer.IsON = false; mLinkZ2LEDDimmer.TotalPeriod = 200; mLinkZ2LEDDimmer.ONPeriod = 200; mLinkZ2LEDDimmer.Counter = 0; mLinkZ2LEDDimmer.BreathEffect = true; int i; for(i = 0; i < AUDIO_CONSOLE_NB_LED; i++) { mLedDimmerList[i].IsON = false; mLedDimmerList[i].TotalPeriod = 200; mLedDimmerList[i].ONPeriod = 200; mLedDimmerList[i].Counter = 0; mLedDimmerList[i].BreathEffect = false; mLedDimmerList[i].DimmerSlope = 5; } TimerStart(LED_EFFECT_TIMER,LED_EFFECT_TIMEOUT); } void AudioConsoleLedMgrTick() { if(IsTimerExpired(LED_EFFECT_TIMER) == true) //Reuse pushbutton timer :) { // if(mLinkZ2LEDDimmer.BreathEffect == true && mLinkZ2LEDDimmer.IsON == true) // { // mLinkZ2LEDDimmer.ONPeriod += DimmerSlope; // if(mLinkZ2LEDDimmer.ONPeriod >= mLinkZ2LEDDimmer.TotalPeriod) // { // DimmerSlope = -5; // mLinkZ2LEDDimmer.ONPeriod = mLinkZ2LEDDimmer.TotalPeriod - 5; // } // else if(mLinkZ2LEDDimmer.ONPeriod <= 5) // mLinkZ2LEDDimmer.ONPeriod = DimmerSlope = 5; // } int i; for(i = 0; i < AUDIO_CONSOLE_NB_LED; i++) { if(mLedDimmerList[i].BreathEffect == true && mLedDimmerList[i].IsON == true) { mLedDimmerList[i].ONPeriod += mLedDimmerList[i].DimmerSlope; if(mLedDimmerList[i].ONPeriod >= mLedDimmerList[i].TotalPeriod) { mLedDimmerList[i].DimmerSlope = -5; mLedDimmerList[i].ONPeriod = mLedDimmerList[i].TotalPeriod - 5; } else if(mLedDimmerList[i].ONPeriod <= 5) { mLedDimmerList[i].DimmerSlope = 5; } } } TimerStart(LED_EFFECT_TIMER,LED_EFFECT_TIMEOUT); } // if(mLinkZ2LEDDimmer.IsON) // { // if(mLinkZ2LEDDimmer.Counter++ >= mLinkZ2LEDDimmer.ONPeriod) // { // AUDIO_CONSOLE_LINK_Z2_STATUS_LED = LED_OFF; // if(mLinkZ2LEDDimmer.Counter >= mLinkZ2LEDDimmer.TotalPeriod) // { // AUDIO_CONSOLE_LINK_Z2_STATUS_LED = LED_ON; // mLinkZ2LEDDimmer.Counter = 0; // } // } // } int i; for(i = 0; i < AUDIO_CONSOLE_NB_LED; i++) { if(mLedDimmerList[i].IsON) { if(mLedDimmerList[i].Counter++ >= mLedDimmerList[i].ONPeriod) { TurnOFF(i); if(mLedDimmerList[i].Counter >= mLedDimmerList[i].TotalPeriod) { TurnON(i); mLedDimmerList[i].Counter = 0; } } } } } int UpdatePushButtonLEDs(AVReceiverStatus_t *MainZoneStatus, AVReceiverStatus_t* Z2Status) { if(MainZoneStatus->MainPwrStatus == true) { LedMgrSetLED(AUDIO_CONSOLE_MAIN_PWR_LED,true,100,false); // AUDIO_CONSOLE_MAIN_PWR_STATUS_LED = LED_ON; } else { LedMgrSetLED(AUDIO_CONSOLE_MAIN_PWR_LED,false,100,false); // AUDIO_CONSOLE_MAIN_PWR_STATUS_LED = LED_OFF; } if(Z2Status->MainPwrStatus == true) { LedMgrSetLED(AUDIO_CONSOLE_Z2_PWR_LED,true,100,false); // AUDIO_CONSOLE_ZONE2_PWR_STATUS_LED = LED_ON; } else { LedMgrSetLED(AUDIO_CONSOLE_Z2_PWR_LED,false,100,false); // AUDIO_CONSOLE_ZONE2_PWR_STATUS_LED = LED_OFF; } if(MainZoneStatus->SyncZones == true) { LedMgrSetLED(AUDIO_CONSOLE_SYNC_Z2_LED,true,100,true); // AUDIO_CONSOLE_LINK_Z2_STATUS_LED = LED_ON; // mLinkZ2LEDDimmer.IsON = true; // mLinkZ2LEDDimmer.Counter = 0; } else { LedMgrSetLED(AUDIO_CONSOLE_SYNC_Z2_LED,false,100,false); // AUDIO_CONSOLE_LINK_Z2_STATUS_LED = LED_OFF; // mLinkZ2LEDDimmer.IsON = false; } return RET_OK; } int LedMgrSetLED(int LedID, bool ON, int Percent, bool breathe) { if(LedID >= AUDIO_CONSOLE_NB_LED) return RET_ERROR; if(Percent > 100) return RET_ERROR; if(ON == true) { TurnON(LedID); } else { TurnOFF(LedID); } if(ON != mLedDimmerList[LedID].IsON || breathe == false) { mLedDimmerList[LedID].ONPeriod = (((float)Percent/100)*mLedDimmerList[LedID].TotalPeriod); mLedDimmerList[LedID].Counter = 0; } mLedDimmerList[LedID].IsON = ON; mLedDimmerList[LedID].BreathEffect = breathe; return RET_OK; } int TurnON(int LedID) { switch(LedID) { case AUDIO_CONSOLE_SYNC_Z2_LED: { AUDIO_CONSOLE_LINK_Z2_STATUS_LED = LED_ON; break; } case AUDIO_CONSOLE_MAIN_PWR_LED: { AUDIO_CONSOLE_MAIN_PWR_STATUS_LED = LED_ON; break; } case AUDIO_CONSOLE_Z2_PWR_LED: { AUDIO_CONSOLE_ZONE2_PWR_STATUS_LED = LED_ON; break; } case AUDIO_CONSOLE_PUSHBTN_2_LED: { PUSH_BUTTON_LED2_PIN = LED_ON; break; } case AUDIO_CONSOLE_PUSHBTN_3_LED: { PUSH_BUTTON_LED3_PIN = LED_ON; break; } case AUDIO_CONSOLE_PUSHBTN_4_LED: { PUSH_BUTTON_LED4_PIN = LED_ON; break; } case AUDIO_CONSOLE_PUSHBTN_5_LED: { PUSH_BUTTON_LED5_PIN = LED_ON; break; } case AUDIO_CONSOLE_PUSHBTN_6_LED: { PUSH_BUTTON_LED6_PIN = LED_ON; break; } case AUDIO_CONSOLE_PUSHBTN_7_LED: { PUSH_BUTTON_LED7_PIN = LED_ON; break; } } return RET_OK; } int TurnOFF(int LedID) { switch(LedID) { case AUDIO_CONSOLE_SYNC_Z2_LED: { AUDIO_CONSOLE_LINK_Z2_STATUS_LED = LED_OFF; break; } case AUDIO_CONSOLE_MAIN_PWR_LED: { AUDIO_CONSOLE_MAIN_PWR_STATUS_LED = LED_OFF; break; } case AUDIO_CONSOLE_Z2_PWR_LED: { AUDIO_CONSOLE_ZONE2_PWR_STATUS_LED = LED_OFF; break; } case AUDIO_CONSOLE_PUSHBTN_2_LED: { PUSH_BUTTON_LED2_PIN = LED_OFF; break; } case AUDIO_CONSOLE_PUSHBTN_3_LED: { PUSH_BUTTON_LED3_PIN = LED_OFF; break; } case AUDIO_CONSOLE_PUSHBTN_4_LED: { PUSH_BUTTON_LED4_PIN = LED_OFF; break; } case AUDIO_CONSOLE_PUSHBTN_5_LED: { PUSH_BUTTON_LED5_PIN = LED_OFF; break; } case AUDIO_CONSOLE_PUSHBTN_6_LED: { PUSH_BUTTON_LED6_PIN = LED_OFF; break; } case AUDIO_CONSOLE_PUSHBTN_7_LED: { PUSH_BUTTON_LED7_PIN = LED_OFF; break; } } return RET_OK; } int LedMgrShowOfflineMode(bool Offline) { int i = 0; bool ON = true; if(Offline == true) { ON = false; } for(i = 0; i < AUDIO_CONSOLE_NB_LED; i++) { LedMgrSetLED(i,ON,100,true); } }