174 lines
5.3 KiB
C
174 lines
5.3 KiB
C
#include "define.h"
|
|
#include "AudioConsole.h"
|
|
#include "timer.h"
|
|
#include "BoardCfg.h"
|
|
#include "ProtocolDefs.h"
|
|
#include "NetworkProtocol.h"
|
|
|
|
AVReceiverStatus_t mMAinZoneStatus, mZone2Status;
|
|
bool mMasterInterfaceConnected;
|
|
|
|
int mAudioConsoleState;
|
|
|
|
int AudioConsoleInit()
|
|
{
|
|
ProtocolInit(NETWORK_PROTOCOL_USER_AUDIO_CONSOLE_IF);
|
|
mMasterInterfaceConnected = false;
|
|
mAudioConsoleState = AUDIO_CONSOLE_INIT_STATE;
|
|
TimerStart(CONSOLE_IF_CONNECT_TIMER,AUDIO_CONSOLE_WAIT_FOR_WIFI_TIMEOUT);
|
|
|
|
}
|
|
|
|
int AudioConsoleSetReceiverStatus(AVReceiverStatus_t *MainZone, AVReceiverStatus_t *Zone2)
|
|
{
|
|
mMAinZoneStatus.MainPwrStatus = MainZone ->MainPwrStatus;
|
|
mMAinZoneStatus.MainSleepStatus = MainZone->MainSleepStatus;
|
|
mMAinZoneStatus.IsMute = MainZone->IsMute;
|
|
mMAinZoneStatus.DataValid = MainZone->DataValid;
|
|
mMAinZoneStatus.ReceiverOnline = MainZone->ReceiverOnline;
|
|
mMAinZoneStatus.SyncZones = MainZone->SyncZones;
|
|
mMAinZoneStatus.MainVolume = MainZone->MainVolume;
|
|
|
|
mZone2Status.MainPwrStatus = Zone2 ->MainPwrStatus;
|
|
mZone2Status.MainSleepStatus = Zone2->MainSleepStatus;
|
|
mZone2Status.IsMute = Zone2->IsMute;
|
|
mZone2Status.DataValid = Zone2->DataValid;
|
|
mZone2Status.ReceiverOnline = Zone2->ReceiverOnline;
|
|
mZone2Status.SyncZones = Zone2->SyncZones;
|
|
mZone2Status.MainVolume = Zone2->MainVolume;
|
|
|
|
return RET_OK;
|
|
}
|
|
|
|
int AudioConsoleSM(int Event)
|
|
{
|
|
switch(mAudioConsoleState)
|
|
{
|
|
case AUDIO_CONSOLE_INIT_STATE:
|
|
{
|
|
//At boot, we wait for wifi to connect first...
|
|
if(IsTimerExpired(CONSOLE_IF_CONNECT_TIMER))
|
|
{
|
|
if(IsWiFiConnected() == true)
|
|
{
|
|
ConnectAudioInterface();
|
|
mAudioConsoleState = AUDIO_CONSOLE_CONNECTING_STATE;
|
|
TimerStart(CONSOLE_IF_CONNECT_TIMER,AUDIO_CONSOLE_WAIT_FOR_CONNECT_TIMEOUT);
|
|
}
|
|
else
|
|
{
|
|
TimerStart(CONSOLE_IF_CONNECT_TIMER,AUDIO_CONSOLE_WAIT_FOR_WIFI_TIMEOUT);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case AUDIO_CONSOLE_DISCONNECTED_STATE:
|
|
{
|
|
switch(Event)
|
|
{
|
|
case AUDIO_CONSOLE_SM_TICK_EVENT:
|
|
{
|
|
break;
|
|
}
|
|
case AUDIO_CONSOLE_SM_CONNECTED_EVENT:
|
|
{
|
|
break;
|
|
}
|
|
case AUDIO_CONSOLE_SM_DISCONNECTED_EVENT:
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case AUDIO_CONSOLE_CONNECTING_STATE:
|
|
{
|
|
switch(Event)
|
|
{
|
|
case AUDIO_CONSOLE_SM_TICK_EVENT:
|
|
{
|
|
if(IsAudioInterfaceConnected() == false)
|
|
{
|
|
//TODO reset console display
|
|
mAudioConsoleState = AUDIO_CONSOLE_INIT_STATE;
|
|
TimerStop(CONSOLE_IF_CONNECT_TIMER);
|
|
|
|
}
|
|
break;
|
|
}
|
|
case AUDIO_CONSOLE_SM_CONNECTED_EVENT:
|
|
{
|
|
TimerStart(CONSOLE_IF_CONNECT_TIMER,AUDIO_CONSOLE_STATUS_REQUEST_TIMEOUT);
|
|
RequestStatus();
|
|
mAudioConsoleState = AUDIO_CONSOLE_RUN_STATE;
|
|
break;
|
|
}
|
|
case AUDIO_CONSOLE_SM_DISCONNECTED_EVENT:
|
|
{
|
|
//Connection timed out.... trying again.
|
|
ConnectAudioInterface();
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case AUDIO_CONSOLE_RUN_STATE:
|
|
{
|
|
switch(Event)
|
|
{
|
|
case AUDIO_CONSOLE_SM_TICK_EVENT:
|
|
{
|
|
if(IsAudioInterfaceConnected() == false)
|
|
{
|
|
//TODO reset console display
|
|
mAudioConsoleState = AUDIO_CONSOLE_INIT_STATE;
|
|
TimerStop(CONSOLE_IF_CONNECT_TIMER);
|
|
|
|
}
|
|
if(IsTimerExpired(CONSOLE_IF_CONNECT_TIMER))
|
|
{
|
|
RequestStatus();
|
|
TimerStart(CONSOLE_IF_CONNECT_TIMER,AUDIO_CONSOLE_STATUS_REQUEST_TIMEOUT);
|
|
}
|
|
break;
|
|
}
|
|
case AUDIO_CONSOLE_SM_CONNECTED_EVENT:
|
|
{
|
|
//Should not happen....
|
|
break;
|
|
}
|
|
case AUDIO_CONSOLE_SM_DISCONNECTED_EVENT:
|
|
{
|
|
mAudioConsoleState = AUDIO_CONSOLE_INIT_STATE;
|
|
TimerStop(CONSOLE_IF_CONNECT_TIMER);
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void AudioConsoleTick()
|
|
{
|
|
AudioConsoleSM(AUDIO_CONSOLE_SM_TICK_EVENT);
|
|
}
|
|
|
|
int AudioConsoleSetIFConnectionStatus(bool Connected)
|
|
{
|
|
if(Connected == true)
|
|
{
|
|
ONBOARD_LED1_PIN = LED_ON;
|
|
AudioConsoleSM(AUDIO_CONSOLE_SM_CONNECTED_EVENT);
|
|
}
|
|
else
|
|
{
|
|
ONBOARD_LED1_PIN = LED_OFF;
|
|
AudioConsoleSM(AUDIO_CONSOLE_SM_DISCONNECTED_EVENT);
|
|
}
|
|
}
|
|
|
|
void RequestStatus()
|
|
{
|
|
AudioConsoleSendCommand(AV_RECEIVER_INTERFACE_GENERAL_STATUS_REQUEST,0,0);
|
|
} |