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