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