444 lines
12 KiB
C
444 lines
12 KiB
C
#include "define.h"
|
|
#include "AudioConsole.h"
|
|
#include "timer.h"
|
|
|
|
#include "ProtocolDefs.h"
|
|
#include "NetworkProtocol.h"
|
|
#include "VUMeter.h"
|
|
#include "PushBtnMgr.h"
|
|
#include "AudioConsoleLedMgr.h"
|
|
|
|
AVReceiverStatus_t mMainZoneStatus, mZone2Status;
|
|
bool mMasterInterfaceConnected;
|
|
|
|
int mAudioConsoleState;
|
|
int mAudioConsoleStatusRetryCount;
|
|
|
|
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);
|
|
mAudioConsoleStatusRetryCount = 0;
|
|
mZone2Status.MainVolume = 0;
|
|
mMainZoneStatus.MainVolume = 0;
|
|
}
|
|
|
|
int AudioConsoleSetReceiverStatus(AVReceiverStatus_t *MainZone, AVReceiverStatus_t *Zone2)
|
|
{
|
|
mAudioConsoleStatusRetryCount = 0;
|
|
|
|
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;
|
|
|
|
VUMeterSetVolume(mMainZoneStatus.MainVolume,mZone2Status.MainVolume);
|
|
|
|
|
|
UpdatePushButtonLEDs(&mMainZoneStatus,&mZone2Status);
|
|
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:
|
|
{
|
|
if(IsWiFiConnected() == true)
|
|
{
|
|
if(ConnectAudioInterface() == RET_ERROR)
|
|
{
|
|
//Socket don't work anymore... not shure what to do.
|
|
int toto = 1;
|
|
toto ++;
|
|
}
|
|
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_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:
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case AUDIO_CONSOLE_CONNECTING_STATE:
|
|
{
|
|
switch(Event)
|
|
{
|
|
case AUDIO_CONSOLE_SM_TICK_EVENT:
|
|
{
|
|
if(IsWiFiConnected() == false)
|
|
{
|
|
AudioConsoleDisconnected();
|
|
}
|
|
else if(IsTimerExpired(CONSOLE_IF_CONNECT_TIMER))
|
|
{
|
|
AudioConsoleDisconnected(); //Retry to connect...
|
|
}
|
|
break;
|
|
}
|
|
case AUDIO_CONSOLE_SM_CONNECTED_EVENT:
|
|
{
|
|
TimerStart(CONSOLE_IF_CONNECT_TIMER,AUDIO_CONSOLE_STATUS_REQUEST_TIMEOUT);
|
|
RequestStatus();
|
|
mAudioConsoleState = AUDIO_CONSOLE_RUN_STATE;
|
|
LedMgrShowOfflineMode(false);
|
|
break;
|
|
}
|
|
case AUDIO_CONSOLE_SM_DISCONNECTED_EVENT:
|
|
{
|
|
AudioConsoleDisconnected();
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case AUDIO_CONSOLE_RUN_STATE:
|
|
{
|
|
switch(Event)
|
|
{
|
|
case AUDIO_CONSOLE_SM_TICK_EVENT:
|
|
{
|
|
if(IsAudioInterfaceConnected() == false || IsWiFiConnected() == false)
|
|
{
|
|
|
|
AudioConsoleDisconnected();
|
|
}
|
|
else if(IsTimerExpired(CONSOLE_IF_CONNECT_TIMER))
|
|
{
|
|
if(RequestStatus() == RET_OK)
|
|
{
|
|
TimerStart(CONSOLE_IF_CONNECT_TIMER,AUDIO_CONSOLE_STATUS_REQUEST_TIMEOUT);
|
|
}
|
|
else
|
|
{
|
|
AudioConsoleDisconnected();
|
|
}
|
|
|
|
}
|
|
break;
|
|
}
|
|
case AUDIO_CONSOLE_SM_CONNECTED_EVENT:
|
|
{
|
|
//Should not happen....
|
|
break;
|
|
}
|
|
case AUDIO_CONSOLE_SM_DISCONNECTED_EVENT:
|
|
{
|
|
AudioConsoleDisconnected();
|
|
|
|
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);
|
|
}
|
|
}
|
|
|
|
int RequestStatus()
|
|
{
|
|
if(mAudioConsoleStatusRetryCount >= AUDIO_CONSOLE_MAX_STATUS_RETRY)
|
|
{
|
|
return RET_ERROR;
|
|
}
|
|
|
|
mAudioConsoleStatusRetryCount++;
|
|
AudioConsoleSendCommand(AV_RECEIVER_INTERFACE_GENERAL_STATUS_REQUEST,0,0);
|
|
return RET_OK;
|
|
}
|
|
|
|
|
|
int SendMainVolumeToMaster()
|
|
{
|
|
char Volume = mMainZoneStatus.MainVolume;
|
|
AudioConsoleSendCommand(AV_RECEIVER_INTERFACE_SET_MAIN_VOLUME_REQUEST,&Volume,1);
|
|
return RET_OK;
|
|
}
|
|
int SendZone2VolumeToMaster()
|
|
{
|
|
char Volume = mZone2Status.MainVolume;
|
|
AudioConsoleSendCommand(AV_RECEIVER_INTERFACE_SET_ZONE2_VOLUME_REQUEST,&Volume,1);
|
|
return RET_OK;
|
|
}
|
|
int SendIncrementMainVolume(bool Increment)
|
|
{
|
|
char data;
|
|
if(Increment == true)
|
|
{
|
|
data = 1;
|
|
}
|
|
else
|
|
{
|
|
data = 0;
|
|
}
|
|
AudioConsoleSendCommand(AV_RECEIVER_INTERFACE_INCREMENT_MAIN_VOLUME_REQUEST,&data,1);
|
|
return RET_OK;
|
|
}
|
|
int SendIncrementZ2Volume(bool Increment)
|
|
{
|
|
char data;
|
|
if(Increment == true)
|
|
{
|
|
data = 1;
|
|
}
|
|
else
|
|
{
|
|
data = 0;
|
|
}
|
|
AudioConsoleSendCommand(AV_RECEIVER_INTERFACE_INCREMENT_Z2_VOLUME_REQUEST,&data,1);
|
|
return RET_OK;
|
|
}
|
|
|
|
int AudioConsoleDisconnected()
|
|
{
|
|
//TODO reset console display
|
|
ONBOARD_LED1_PIN = LED_OFF;
|
|
mAudioConsoleStatusRetryCount = 0;
|
|
DisconnectAudioInterface();
|
|
mAudioConsoleState = AUDIO_CONSOLE_DISCONNECTED_STATE;
|
|
TimerStop(CONSOLE_IF_CONNECT_TIMER);
|
|
LedMgrShowOfflineMode(true);
|
|
}
|
|
|
|
int AudioConsoleVolumeUp(int Zone)
|
|
{
|
|
switch(Zone)
|
|
{
|
|
case AUDIO_CONSOLE_SALON_ZONE:
|
|
{
|
|
// if(mMainZoneStatus.MainVolume == AUDIO_CONSOLE_MAX_VOLUME)
|
|
// return RET_OK;
|
|
//
|
|
// mMainZoneStatus.MainVolume += AUDIO_CONSOLE_VOLUME_INCREMENT;
|
|
// if(mMainZoneStatus.MainVolume > AUDIO_CONSOLE_MAX_VOLUME)
|
|
// {
|
|
// mMainZoneStatus.MainVolume =AUDIO_CONSOLE_MAX_VOLUME;
|
|
// }
|
|
// SendMainVolumeToMaster();
|
|
SendIncrementMainVolume(true);
|
|
break;
|
|
}
|
|
case AUDIO_CONSOLE_CUISINE_ZONE:
|
|
{
|
|
// if(mZone2Status.MainVolume == AUDIO_CONSOLE_MAX_VOLUME)
|
|
// {
|
|
// return RET_OK;
|
|
// }
|
|
//
|
|
// mZone2Status.MainVolume += AUDIO_CONSOLE_VOLUME_INCREMENT;
|
|
// if(mZone2Status.MainVolume > AUDIO_CONSOLE_MAX_VOLUME)
|
|
// {
|
|
// mZone2Status.MainVolume = AUDIO_CONSOLE_MAX_VOLUME;
|
|
// }
|
|
|
|
// SendZone2VolumeToMaster();
|
|
SendIncrementZ2Volume(true);
|
|
break;
|
|
}
|
|
}
|
|
RequestStatus();
|
|
return RET_OK;
|
|
}
|
|
int AudioConsoleVolumeDown(int Zone)
|
|
{
|
|
switch(Zone)
|
|
{
|
|
|
|
|
|
case AUDIO_CONSOLE_SALON_ZONE:
|
|
{
|
|
// if(mMainZoneStatus.MainVolume == 0)
|
|
// {
|
|
// return RET_OK;
|
|
// }
|
|
//
|
|
// if(mMainZoneStatus.MainVolume <= AUDIO_CONSOLE_VOLUME_INCREMENT)
|
|
// {
|
|
// mMainZoneStatus.MainVolume = 0;
|
|
// }
|
|
// else
|
|
// {
|
|
// mMainZoneStatus.MainVolume -= AUDIO_CONSOLE_VOLUME_INCREMENT;
|
|
// }
|
|
// SendMainVolumeToMaster();
|
|
SendIncrementMainVolume(false);
|
|
break;
|
|
}
|
|
case AUDIO_CONSOLE_CUISINE_ZONE:
|
|
{
|
|
// if(mZone2Status.MainVolume == 0)
|
|
// {
|
|
// return RET_OK;
|
|
// }
|
|
//
|
|
// if(mZone2Status.MainVolume <= AUDIO_CONSOLE_VOLUME_INCREMENT)
|
|
// {
|
|
// mZone2Status.MainVolume = 0;
|
|
// }
|
|
// else
|
|
// {
|
|
// mZone2Status.MainVolume -= AUDIO_CONSOLE_VOLUME_INCREMENT;
|
|
// }
|
|
//// SendZone2VolumeToMaster();
|
|
SendIncrementZ2Volume(false);
|
|
break;
|
|
}
|
|
|
|
}
|
|
RequestStatus();
|
|
return RET_OK;
|
|
}
|
|
|
|
int LinkZ2BtnPressed()
|
|
{
|
|
if(mMainZoneStatus.SyncZones == true)
|
|
{
|
|
SendLinkZ2VolumeToMaster(false);
|
|
}
|
|
else
|
|
{
|
|
SendLinkZ2VolumeToMaster(true);
|
|
}
|
|
RequestStatus();
|
|
return RET_OK;
|
|
}
|
|
int MainZonePwrBtnPressed()
|
|
{
|
|
if(mMainZoneStatus.MainPwrStatus == true)
|
|
{
|
|
SendMainZonePwrToMaster(false);
|
|
}
|
|
else
|
|
{
|
|
SendMainZonePwrToMaster(true);
|
|
}
|
|
RequestStatus();
|
|
return RET_OK;
|
|
}
|
|
int Zone2PwrBtnPressed()
|
|
{
|
|
if(mZone2Status.MainPwrStatus == true)
|
|
{
|
|
SendZone2PwrToMaster(false);
|
|
}
|
|
else
|
|
{
|
|
SendZone2PwrToMaster(true);
|
|
}
|
|
RequestStatus();
|
|
return RET_OK;
|
|
}
|
|
|
|
int SendLinkZ2VolumeToMaster(bool link)
|
|
{
|
|
char data;
|
|
if(link == true)
|
|
{
|
|
data = 1;
|
|
}
|
|
else
|
|
{
|
|
data = 0;
|
|
}
|
|
AudioConsoleSendCommand(AV_RECEIVER_INTERFACE_SET_SYNC_Z2_WITH_Z1_REQUEST,&data,1);
|
|
return RET_OK;
|
|
}
|
|
|
|
|
|
int SendMainZonePwrToMaster(bool ON)
|
|
{
|
|
char data;
|
|
if(ON == true)
|
|
{
|
|
data = 1;
|
|
}
|
|
else
|
|
{
|
|
data = 0;
|
|
}
|
|
AudioConsoleSendCommand(AV_RECEIVER_INTERFACE_SET_MAIN_POWER_REQUEST,&data,1);
|
|
return RET_OK;
|
|
}
|
|
int SendZone2PwrToMaster(bool ON)
|
|
{
|
|
char data;
|
|
if(ON == true)
|
|
{
|
|
data = 1;
|
|
}
|
|
else
|
|
{
|
|
data = 0;
|
|
}
|
|
AudioConsoleSendCommand(AV_RECEIVER_INTERFACE_SET_ZONE2_REQUEST,&data,1);
|
|
return RET_OK;
|
|
} |