Masterctrl/Sources/AVReceiverDevice.cpp
2015-08-14 18:12:21 -04:00

223 lines
6.0 KiB
C++

#include "AVReceiverDevice.h"
#include "GlobalDefine.h"
CAVReceiverDevice::CAVReceiverDevice()
{
mReceiverSocket = new QTcpSocket;
connect(mReceiverSocket,SIGNAL(connected()),this,SLOT(SocketConnected()));
connect(mReceiverSocket,SIGNAL(disconnected()),this,SLOT(SocketDisconnected()));
connect(mReceiverSocket,SIGNAL(readyRead()),this,SLOT(SocketRX()));
}
CAVReceiverDevice::~CAVReceiverDevice()
{
mReceiverSocket->disconnectFromHost();
mReceiverSocket->waitForDisconnected();
delete mReceiverSocket;
}
int CAVReceiverDevice::ConnectToReceiver()
{
if(mReceiverSocket->state() != QAbstractSocket::ConnectedState)
{
mReceiverSocket->connectToHost(RECEIVER_IP_ADDRESS,RECEIVER_PORT);
}
return RET_OK;
}
int CAVReceiverDevice::DisconnectReceiver()
{
if(mReceiverSocket->state() != QAbstractSocket::ConnectedState)
return RET_ERROR;
mReceiverSocket->disconnectFromHost();
return RET_OK;
}
int CAVReceiverDevice::AnalyseRxData(QByteArray data)
{
QString Data(data);
if(data == "\r\n")
{
qDebug("AV Receiver: Heartbeat received");
return RET_OK;
}
QStringList Commands = Data.split("\r\n",QString::SkipEmptyParts);
for(int i = 0; i < Commands.size(); i++)
{
QString CurCmd = Commands.at(i);
if(CurCmd.contains("PWR"))
{
qDebug("AV Receiver: POWER status received");
}
else if(CurCmd.contains("VOL"))
{
CurCmd.remove("VOL");
mReceiverVolume = CurCmd.toInt();
qDebug("AV Receiver: VOLUME status received %d",mReceiverVolume);
}
else if(CurCmd.contains("MUT"))
{
qDebug("AV Receiver: MUTE status received");
}
else if(CurCmd.contains("FN"))
{
qDebug("AV Receiver: INPUT SRC status received");
}
else if(CurCmd.contains("SR"))
{
qDebug("AV Receiver: LISTENING MODE SET feedback received");
}
else if(CurCmd.contains("LM"))
{
qDebug("AV Receiver: LISTENING MODE status received");
}
else if(CurCmd.contains("SPK"))
{
qDebug("AV Receiver: SPEAKERS status received");
}
else if(CurCmd.contains("HO"))
{
qDebug("AV Receiver: HDMI OUTPUT SELECTION status received");
}
else if(CurCmd.contains("EX"))
{
qDebug("AV Receiver: SBch PROCESSING status received");
}
else if(CurCmd.contains("MC"))
{
qDebug("AV Receiver: MCACC MEMORY status received");
}
else if(CurCmd.contains("IS"))
{
qDebug("AV Receiver: PHASE CONTROL status received");
}
else if(CurCmd.contains("TO"))
{
qDebug("AV Receiver: TONE status received");
}
else if(CurCmd.contains("BA"))
{
qDebug("AV Receiver: BASS status received");
}
else if(CurCmd.contains("TR"))
{
qDebug("AV Receiver: TREBLE status received");
}
else if(CurCmd.contains("HA"))
{
qDebug("AV Receiver: HDMI AUDIO status received");
}
else if(CurCmd.contains("PR"))
{
qDebug("AV Receiver: TUNER PRESET status received");
}
else if(CurCmd.contains("FR"))
{
qDebug("AV Receiver: TUNER FREQUENCY status received");
}
else if(CurCmd.contains("XM"))
{
qDebug("AV Receiver: XM CHANNEL status received");
}
else if(CurCmd.contains("SIR"))
{
qDebug("AV Receiver: SIRIUS CHANNEL status received");
}
else if(CurCmd.contains("APR"))
{
qDebug("AV Receiver: ZONE 2 POWER status received");
}
else if(CurCmd.contains("BPR"))
{
qDebug("AV Receiver: ZONE 3 POWER status received");
}
else if(CurCmd.contains("ZV"))
{
qDebug("AV Receiver: ZONE 2 VOLUME status received");
}
else if(CurCmd.contains("YV"))
{
qDebug("AV Receiver: ZONE 3 VOLUME status received");
}
else if(CurCmd.contains("Z2MUT"))
{
qDebug("AV Receiver: ZONE 2 MUTE status received");
}
else if(CurCmd.contains("Z3MUT"))
{
qDebug("AV Receiver: ZONE 3 MUTE status received");
}
else if(CurCmd.contains("Z2F"))
{
qDebug("AV Receiver: ZONE 2 INPUT status received");
}
else if(CurCmd.contains("Z3F"))
{
qDebug("AV Receiver: ZONE 3 INPUT status received");
}
else if(CurCmd.contains("PQ"))
{
qDebug("AV Receiver: PQLS status received");
}
else if(CurCmd.contains("CLV"))
{
qDebug("AV Receiver: CHANNEL LEVEL status received");
}
else if(CurCmd.contains("VSB"))
{
qDebug("AV Receiver: VIRTUAL SB status received");
}
else if(CurCmd.contains("VHT"))
{
qDebug("AV Receiver: VIRTUAL HEIGHT status received");
}
else if(CurCmd.contains("FL"))
{
CurCmd.remove("FL");
QString FlString = "";
for(int i = 0; i < CurCmd.size()/2; i++)
{
QString FlChar = CurCmd.left(2);
CurCmd.remove(0,2);
int CharIndex = FlChar.toInt(0,16);
FlString.append(QChar(CharIndex));
}
qDebug("AV Receiver: DISPLAY DATA received: %s",FlString.toUtf8().data());
}
else if(CurCmd.contains("RGB"))
{
qDebug("AV Receiver: INPUT NAME INFO received");
}
}
return RET_OK;
}
void CAVReceiverDevice::SocketConnected()
{
qDebug("Receiver Connected");
}
void CAVReceiverDevice::SocketDisconnected()
{
qDebug("Receiver Disconnected");
}
void CAVReceiverDevice::SocketRX()
{
AnalyseRxData(mReceiverSocket->readAll());
}