223 lines
6.0 KiB
C++
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());
|
|
|
|
}
|
|
|