AudioConsole/AudioConsole.X/Source/AudioConsoleLedMgr.c
2025-02-23 18:13:27 -05:00

253 lines
6.0 KiB
C

#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 :)
{
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);
}
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);
}
else
{
LedMgrSetLED(AUDIO_CONSOLE_MAIN_PWR_LED,false,100,false);
}
if(Z2Status->MainPwrStatus == true)
{
LedMgrSetLED(AUDIO_CONSOLE_Z2_PWR_LED,true,100,false);
}
else
{
LedMgrSetLED(AUDIO_CONSOLE_Z2_PWR_LED,false,100,false);
}
if(MainZoneStatus->SyncZones == true)
{
LedMgrSetLED(AUDIO_CONSOLE_SYNC_Z2_LED,true,100,false);
}
else
{
LedMgrSetLED(AUDIO_CONSOLE_SYNC_Z2_LED,false,100,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;
for(i = 0; i < AUDIO_CONSOLE_NB_LED; i++)
{
LedMgrSetLED(i,Offline,100,true);
}
}