Masterctrl/Sources/AvReceiver/AVReceiverDevice.cpp
J-F Martel c7c015dab3 Moved sources to subdirs in project
Add sprinkler device
2017-04-12 13:23:46 -04:00

581 lines
25 KiB
C++

#include "AVReceiverDevice.h"
#include "GlobalDefine.h"
#include "ProtocolDefs.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()));
mInputsHash.insert(4,"DVD");
mInputsHash.insert(25,"BD");
mInputsHash.insert(5,"TV/SAT");
mInputsHash.insert(15,"DVR/BDR");
mInputsHash.insert(10,"VIDEO 1");
mInputsHash.insert(14,"VIDEO 2");
mInputsHash.insert(19,"HDMI 1");
mInputsHash.insert(20,"HDMI 2");
mInputsHash.insert(21,"HDMI 3");
mInputsHash.insert(22,"HDMI 4");
mInputsHash.insert(23,"HDMI 5");
mInputsHash.insert(26,"INTERNET RADIO");
mInputsHash.insert(17,"iPod/US");
mInputsHash.insert(18,"XM RADIO");
mInputsHash.insert(1,"CD");
mInputsHash.insert(3,"CD-R/TAPE");
mInputsHash.insert(2,"TUNER");
mInputsHash.insert(0,"PHONO");
mInputsHash.insert(12,"MULTI CH IN");
mInputsHash.insert(33,"ADAPTER PORT");
mInputsHash.insert(27,"SIRIUS");
mInputsHash.insert(31,"HDMI (cyclic)");
//Listening mode SET strings
mListeningModesHash.insert(0x1,"STEREO (cyclic)");
mListeningModesHash.insert(0x10,"STANDARD");
mListeningModesHash.insert(0x9,"STEREO (direct set)");
mListeningModesHash.insert(0x11,"(2ch source)");
mListeningModesHash.insert(0x13,"PRO LOGIC2 MOVIE");
mListeningModesHash.insert(0x18,"PRO LOGIC2x MOVIE");
mListeningModesHash.insert(0x14,"PRO LOGIC2 MUSIC");
mListeningModesHash.insert(0x19,"PRO LOGIC2x MUSIC");
mListeningModesHash.insert(0x15,"PRO LOGIC2 GAME");
mListeningModesHash.insert(0x20,"PRO LOGIC2x GAME");
mListeningModesHash.insert(0x31,"PRO LOGIC2z HEIGHT");
mListeningModesHash.insert(0x32,"WIDE SURROUND MOVIE");
mListeningModesHash.insert(0x33,"WIDE SURROUND MUSIC");
mListeningModesHash.insert(0x12,"PRO LOGIC");
mListeningModesHash.insert(0x16,"Neo:6 CINEMA");
mListeningModesHash.insert(0x17,"Neo:6 MUSIC");
mListeningModesHash.insert(0x28,"XM HD SURROUND");
mListeningModesHash.insert(0x29,"NEURAL SURROUND");
mListeningModesHash.insert(0x37,"Neo:X CINEMA");
mListeningModesHash.insert(0x38,"Neo:X MUSIC");
mListeningModesHash.insert(0x39,"Neo:X GAME");
mListeningModesHash.insert(0x40,"NEURAL SURROUND+Neo:X CINEMA");
mListeningModesHash.insert(0x41,"NEURAL SURROUND+Neo:X MUSIC");
mListeningModesHash.insert(0x42,"NEURAL SURROUND+Neo:X GAME");
mListeningModesHash.insert(0x21,"(Multi ch source)");
mListeningModesHash.insert(0x22,"(Multi ch source)+DOLBY EX");
mListeningModesHash.insert(0x23,"(Multi ch source)+PRO LOGIC2x MOVIE");
mListeningModesHash.insert(0x24,"(Multi ch source)+PRO LOGIC2x MUSIC");
mListeningModesHash.insert(0x34,"(Multi-ch Source)+PRO LOGIC2z HEIGHT");
mListeningModesHash.insert(0x35,"(Multi-ch Source)+WIDE SURROUND MOVIE");
mListeningModesHash.insert(0x36,"(Multi-ch Source)+WIDE SURROUND MUSIC");
mListeningModesHash.insert(0x25,"(Multi ch source)DTS-ES Neo:6");
mListeningModesHash.insert(0x26,"(Multi ch source)DTS-ES matrix");
mListeningModesHash.insert(0x27,"(Multi ch source)DTS-ES discrete");
mListeningModesHash.insert(0x30,"(Multi ch source)DTS-ES 8ch discrete");
mListeningModesHash.insert(0x43,"(Multi ch source)+Neo:X CINEMA");
mListeningModesHash.insert(0x44,"(Multi ch source)+Neo:X MUSIC");
mListeningModesHash.insert(0x45,"(Multi ch source)+Neo:X GAME");
mListeningModesHash.insert(0x100,"ADVANCED SURROUND (cyclic)");
mListeningModesHash.insert(0x101,"ACTION");
mListeningModesHash.insert(0x103,"DRAMA");
mListeningModesHash.insert(0x102,"SCI-FI");
mListeningModesHash.insert(0x105,"MONO FILM");
mListeningModesHash.insert(0x104,"ENTERTAINMENT SHOW");
mListeningModesHash.insert(0x106,"EXPANDED THEATER");
mListeningModesHash.insert(0x116,"TV SURROUND");
mListeningModesHash.insert(0x118,"ADVANCED GAME");
mListeningModesHash.insert(0x117,"SPORTS");
mListeningModesHash.insert(0x107,"CLASSICAL");
mListeningModesHash.insert(0x110,"ROCK/POP");
mListeningModesHash.insert(0x109,"UNPLUGGED");
mListeningModesHash.insert(0x112,"EXTENDED STEREO");
mListeningModesHash.insert(0x3,"Front Stage Surround Advance Focus");
mListeningModesHash.insert(0x4,"Front Stage Surround Advance Wide");
mListeningModesHash.insert(0x153,"RETRIEVER AIR");
mListeningModesHash.insert(0x113,"PHONES SURROUND");
mListeningModesHash.insert(0x50,"THX (cyclic)");
mListeningModesHash.insert(0x51,"PROLOGIC + THX CINEMA");
mListeningModesHash.insert(0x52,"PL2 MOVIE + THX CINEMA");
mListeningModesHash.insert(0x53,"Neo:6 CINEMA + THX CINEMA");
mListeningModesHash.insert(0x54,"PL2x MOVIE + THX CINEMA");
mListeningModesHash.insert(0x92,"PL2z HEIGHT + THX CINEMA");
mListeningModesHash.insert(0x55,"THX SELECT2 GAMES");
mListeningModesHash.insert(0x68,"THX CINEMA (for 2ch)");
mListeningModesHash.insert(0x69,"THX MUSIC (for 2ch)");
mListeningModesHash.insert(0x70,"THX GAMES (for 2ch)");
mListeningModesHash.insert(0x71,"PL2 MUSIC + THX MUSIC");
mListeningModesHash.insert(0x72,"PL2x MUSIC + THX MUSIC");
mListeningModesHash.insert(0x93,"PL2z HEIGHT + THX MUSIC");
mListeningModesHash.insert(0x73,"Neo:6 MUSIC + THX MUSIC");
mListeningModesHash.insert(0x74,"PL2 GAME + THX GAMES");
mListeningModesHash.insert(0x75,"PL2x GAME + THX GAMES");
mListeningModesHash.insert(0x94,"PL2z HEIGHT + THX GAMES");
mListeningModesHash.insert(0x76,"THX ULTRA2 GAMES");
mListeningModesHash.insert(0x77,"PROLOGIC + THX MUSIC");
mListeningModesHash.insert(0x78,"PROLOGIC + THX GAMES");
mListeningModesHash.insert(0x201,"Neo:X CINEMA + THX CINEMA");
mListeningModesHash.insert(0x202,"Neo:X MUSIC + THX MUSIC");
mListeningModesHash.insert(0x203,"Neo:X GAME + THX GAMES");
mListeningModesHash.insert(0x56,"THX CINEMA (for multi ch)");
mListeningModesHash.insert(0x57,"THX SURROUND EX (for multi ch)");
mListeningModesHash.insert(0x58,"PL2x MOVIE + THX CINEMA (for multi ch)");
mListeningModesHash.insert(0x95,"PL2z HEIGHT + THX CINEMA (for multi ch)");
mListeningModesHash.insert(0x59,"ES Neo:6 + THX CINEMA (for multi ch)");
mListeningModesHash.insert(0x60,"ES MATRIX + THX CINEMA (for multi ch)");
mListeningModesHash.insert(0x61,"ES DISCRETE + THX CINEMA (for multi ch)");
mListeningModesHash.insert(0x67,"ES 8ch DISCRETE + THX CINEMA (for multi ch)");
mListeningModesHash.insert(0x62,"THX SELECT2 CINEMA (for multi ch)");
mListeningModesHash.insert(0x63,"THX SELECT2 MUSIC (for multi ch)");
mListeningModesHash.insert(0x64,"THX SELECT2 GAMES (for multi ch)");
mListeningModesHash.insert(0x65,"THX ULTRA2 CINEMA (for multi ch)");
mListeningModesHash.insert(0x66,"THX ULTRA2 MUSIC (for multi ch)");
mListeningModesHash.insert(0x79,"THX ULTRA2 GAMES (for multi ch)");
mListeningModesHash.insert(0x80,"THX MUSIC (for multi ch)");
mListeningModesHash.insert(0x81,"THX GAMES (for multi ch)");
mListeningModesHash.insert(0x82,"PL2x MUSIC + THX MUSIC (for multi ch)");
mListeningModesHash.insert(0x96,"PL2z HEIGHT + THX MUSIC (for multi ch)");
mListeningModesHash.insert(0x83,"EX + THX GAMES (for multi ch)");
mListeningModesHash.insert(0x97,"PL2z HEIGHT + THX GAMES (for multi ch)");
mListeningModesHash.insert(0x84,"Neo:6 + THX MUSIC (for multi ch)");
mListeningModesHash.insert(0x85,"Neo:6 + THX GAMES (for multi ch)");
mListeningModesHash.insert(0x86,"ES MATRIX + THX MUSIC (for multi ch)");
mListeningModesHash.insert(0x87,"ES MATRIX + THX GAMES (for multi ch)");
mListeningModesHash.insert(0x88,"ES DISCRETE + THX MUSIC (for multi ch)");
mListeningModesHash.insert(0x89,"ES DISCRETE + THX GAMES (for multi ch)");
mListeningModesHash.insert(0x90,"ES 8CH DISCRETE + THX MUSIC (for multi ch)");
mListeningModesHash.insert(0x91,"ES 8CH DISCRETE + THX GAMES (for multi ch)");
mListeningModesHash.insert(0x204,"Neo:X CINEMA + THX CINEMA (for multi ch)");
mListeningModesHash.insert(0x205,"Neo:X MUSIC + THX MUSIC (for multi ch)");
mListeningModesHash.insert(0x206,"Neo:X GAME + THX GAMES (for multi ch)");
mListeningModesHash.insert(0x5,"AUTO SURR/STREAM DIRECT (cyclic)");
mListeningModesHash.insert(0x6,"AUTO SURROUND");
mListeningModesHash.insert(0x151,"Auto Level Control (A.L.C.)");
mListeningModesHash.insert(0x7,"DIRECT");
mListeningModesHash.insert(0x8,"PURE DIRECT");
mListeningModesHash.insert(0x152,"OPTIMUM SURROUND");
mPlayingLMHash.insert(0x0101,"[)(]PLIIx MOVIE");
mPlayingLMHash.insert(0x0102,"[)(]PLII MOVIE");
mPlayingLMHash.insert(0x0103,"[)(]PLIIx MUSIC");
mPlayingLMHash.insert(0x0104,"[)(]PLII MUSIC");
mPlayingLMHash.insert(0x0105,"[)(]PLIIx GAME");
mPlayingLMHash.insert(0x0106,"[)(]PLII GAME");
mPlayingLMHash.insert(0x0107,"[)(]PROLOGIC");
mPlayingLMHash.insert(0x0108,"Neo:6 CINEMA");
mPlayingLMHash.insert(0x0109,"Neo:6 MUSIC");
mPlayingLMHash.insert(0x010a,"XM HD Surround");
mPlayingLMHash.insert(0x010b,"NEURAL SURR");
mPlayingLMHash.insert(0x010c,"2ch Straight Decode");
mPlayingLMHash.insert(0x010d,"[)(]PLIIz HEIGHT");
mPlayingLMHash.insert(0x010e,"WIDE SURR MOVIE");
mPlayingLMHash.insert(0x010f,"WIDE SURR MUSIC");
mPlayingLMHash.insert(0x0110,"STEREO");
mPlayingLMHash.insert(0x0111,"Neo:X CINEMA");
mPlayingLMHash.insert(0x0112,"Neo:X MUSIC");
mPlayingLMHash.insert(0x0113,"Neo:X GAME");
mPlayingLMHash.insert(0x0114,"NEURAL SURROUND+Neo:X CINEMA");
mPlayingLMHash.insert(0x0115,"NEURAL SURROUND+Neo:X MUSIC");
mPlayingLMHash.insert(0x0116,"NEURAL SURROUND+Neo:X GAMES");
mPlayingLMHash.insert(0x1101,"[)(]PLIIx MOVIE");
mPlayingLMHash.insert(0x1102,"[)(]PLIIx MUSIC");
mPlayingLMHash.insert(0x1103,"[)(]DIGITAL EX");
mPlayingLMHash.insert(0x1104,"DTS +Neo:6 / DTS-HD +Neo:6");
mPlayingLMHash.insert(0x1105,"ES MATRIX");
mPlayingLMHash.insert(0x1106,"ES DISCRETE");
mPlayingLMHash.insert(0x1107,"DTS-ES 8ch");
mPlayingLMHash.insert(0x1108,"multi ch Straight Decode");
mPlayingLMHash.insert(0x1109,"[)(]PLIIz HEIGHT");
mPlayingLMHash.insert(0x110a,"WIDE SURR MOVIE");
mPlayingLMHash.insert(0x110b,"WIDE SURR MUSIC");
mPlayingLMHash.insert(0x110c,"Neo:X CINEMA");
mPlayingLMHash.insert(0x110d,"Neo:X MUSIC");
mPlayingLMHash.insert(0x110e,"Neo:X GAME");
mPlayingLMHash.insert(0x0201,"ACTION");
mPlayingLMHash.insert(0x0202,"DRAMA");
mPlayingLMHash.insert(0x0203,"SCI-FI");
mPlayingLMHash.insert(0x0204,"MONOFILM");
mPlayingLMHash.insert(0x0205,"ENT.SHOW");
mPlayingLMHash.insert(0x0206,"EXPANDED");
mPlayingLMHash.insert(0x0207,"TV SURROUND");
mPlayingLMHash.insert(0x0208,"ADVANCEDGAME");
mPlayingLMHash.insert(0x0209,"SPORTS");
mPlayingLMHash.insert(0x020a,"CLASSICAL");
mPlayingLMHash.insert(0x020b,"ROCK/POP");
mPlayingLMHash.insert(0x020c,"UNPLUGGED");
mPlayingLMHash.insert(0x020d,"EXT.STEREO");
mPlayingLMHash.insert(0x020e,"PHONES SURR.");
mPlayingLMHash.insert(0x020f,"FRONT STAGE SURROUND ADVANCE FOCUS");
mPlayingLMHash.insert(0x0210,"FRONT STAGE SURROUND ADVANCE WIDE");
mPlayingLMHash.insert(0x0211,"SOUND RETRIEVER AIR");
mPlayingLMHash.insert(0x0301,"[)(]PLIIx MOVIE +THX");
mPlayingLMHash.insert(0x0302,"[)(]PLII MOVIE +THX");
mPlayingLMHash.insert(0x0303,"[)(]PL +THX CINEMA");
mPlayingLMHash.insert(0x0304,"Neo:6 CINEMA +THX");
mPlayingLMHash.insert(0x0305,"THX CINEMA");
mPlayingLMHash.insert(0x0306,"[)(]PLIIx MUSIC +THX");
mPlayingLMHash.insert(0x0307,"[)(]PLII MUSIC +THX");
mPlayingLMHash.insert(0x0308,"[)(]PL +THX MUSIC");
mPlayingLMHash.insert(0x0309,"Neo:6 MUSIC +THX");
mPlayingLMHash.insert(0x030a,"THX MUSIC");
mPlayingLMHash.insert(0x030b,"[)(]PLIIx GAME +THX");
mPlayingLMHash.insert(0x030c,"[)(]PLII GAME +THX");
mPlayingLMHash.insert(0x030d,"[)(]PL +THX GAMES");
mPlayingLMHash.insert(0x030e,"THX ULTRA2 GAMES");
mPlayingLMHash.insert(0x030f,"THX SELECT2 GAMES");
mPlayingLMHash.insert(0x0310,"THX GAMES");
mPlayingLMHash.insert(0x0311,"[)(]PLIIz +THX CINEMA");
mPlayingLMHash.insert(0x0312,"[)(]PLIIz +THX MUSIC");
mPlayingLMHash.insert(0x0313,"[)(]PLIIz +THX GAMES");
mPlayingLMHash.insert(0x0314,"Neo:X CINEMA + THX CINEMA");
mPlayingLMHash.insert(0x0315,"Neo:X MUSIC + THX MUSIC");
mPlayingLMHash.insert(0x0316,"Neo:X GAMES + THX GAMES");
mPlayingLMHash.insert(0x1301,"THX Surr EX");
mPlayingLMHash.insert(0x1302,"Neo:6 +THX CINEMA");
mPlayingLMHash.insert(0x1303,"ES MTRX +THX CINEMA");
mPlayingLMHash.insert(0x1304,"ES DISC +THX CINEMA");
mPlayingLMHash.insert(0x1305,"ES 8ch +THX CINEMA");
mPlayingLMHash.insert(0x1306,"[)(]PLIIx MOVIE +THX");
mPlayingLMHash.insert(0x1307,"THX ULTRA2 CINEMA");
mPlayingLMHash.insert(0x1308,"THX SELECT2 CINEMA");
mPlayingLMHash.insert(0x1309,"THX CINEMA");
mPlayingLMHash.insert(0x130a,"Neo:6 +THX MUSIC");
mPlayingLMHash.insert(0x130b,"ES MTRX +THX MUSIC");
mPlayingLMHash.insert(0x130c,"ES DISC +THX MUSIC");
mPlayingLMHash.insert(0x130d,"ES 8ch +THX MUSIC");
mPlayingLMHash.insert(0x130e,"[)(]PLIIx MUSIC +THX");
mPlayingLMHash.insert(0x130f,"THX ULTRA2 MUSIC");
mPlayingLMHash.insert(0x1310,"THX SELECT2 MUSIC");
mPlayingLMHash.insert(0x1311,"THX MUSIC");
mPlayingLMHash.insert(0x1312,"Neo:6 +THX GAMES");
mPlayingLMHash.insert(0x1313,"ES MTRX +THX GAMES");
mPlayingLMHash.insert(0x1314,"ES DISC +THX GAMES");
mPlayingLMHash.insert(0x1315,"ES 8ch +THX GAMES");
mPlayingLMHash.insert(0x1316,"[)(]EX +THX GAMES");
mPlayingLMHash.insert(0x1317,"THX ULTRA2 GAMES");
mPlayingLMHash.insert(0x1318,"THX SELECT2 GAMES");
mPlayingLMHash.insert(0x1319,"THX GAMES");
mPlayingLMHash.insert(0x131a,"[)(]PLIIz +THX CINEMA");
mPlayingLMHash.insert(0x131b,"[)(]PLIIz +THX MUSIC");
mPlayingLMHash.insert(0x131c,"[)(]PLIIz +THX GAMES");
mPlayingLMHash.insert(0x131d,"Neo:X CINEMA + THX CINEMA");
mPlayingLMHash.insert(0x131e,"Neo:X MUSIC + THX MUSIC");
mPlayingLMHash.insert(0x131f,"Neo:X GAME + THX GAMES");
mPlayingLMHash.insert(0x0401,"STEREO");
mPlayingLMHash.insert(0x0402,"[)(]PLII MOVIE");
mPlayingLMHash.insert(0x0403,"[)(]PLIIx MOVIE");
mPlayingLMHash.insert(0x0404,"Neo:6 CINEMA");
mPlayingLMHash.insert(0x0405,"AUTO SURROUND Straight Decode");
mPlayingLMHash.insert(0x0406,"[)(]DIGITAL EX");
mPlayingLMHash.insert(0x0407,"[)(]PLIIx MOVIE");
mPlayingLMHash.insert(0x0408,"DTS +Neo:6");
mPlayingLMHash.insert(0x0409,"ES MATRIX");
mPlayingLMHash.insert(0x040a,"ES DISCRETE");
mPlayingLMHash.insert(0x040b,"DTS-ES 8ch");
mPlayingLMHash.insert(0x040c,"XM HD Surround");
mPlayingLMHash.insert(0x040d,"NEURAL SURR");
mPlayingLMHash.insert(0x040e,"RETRIEVER AIR");
mPlayingLMHash.insert(0x040f,"Neo:X CINEMA");
mPlayingLMHash.insert(0x0410,"Neo:X CINEMA");
mPlayingLMHash.insert(0x0501,"STEREO");
mPlayingLMHash.insert(0x0502,"[)(]PLII MOVIE");
mPlayingLMHash.insert(0x0503,"[)(]PLIIx MOVIE");
mPlayingLMHash.insert(0x0504,"Neo:6 CINEMA");
mPlayingLMHash.insert(0x0505,"ALC Straight Decode");
mPlayingLMHash.insert(0x0506,"[)(]DIGITAL EX");
mPlayingLMHash.insert(0x0507,"[)(]PLIIx MOVIE");
mPlayingLMHash.insert(0x0508,"DTS +Neo:6");
mPlayingLMHash.insert(0x0509,"ES MATRIX");
mPlayingLMHash.insert(0x050a,"ES DISCRETE");
mPlayingLMHash.insert(0x050b,"DTS-ES 8ch");
mPlayingLMHash.insert(0x050c,"XM HD Surround");
mPlayingLMHash.insert(0x050d,"NEURAL SURR");
mPlayingLMHash.insert(0x050e,"RETRIEVER AIR");
mPlayingLMHash.insert(0x050f,"Neo:X CINEMA");
mPlayingLMHash.insert(0x0510,"Neo:X CINEMA");
mPlayingLMHash.insert(0x0601,"STEREO");
mPlayingLMHash.insert(0x0602,"[)(]PLII MOVIE");
mPlayingLMHash.insert(0x0603,"[)(]PLIIx MOVIE");
mPlayingLMHash.insert(0x0604,"Neo:6 CINEMA");
mPlayingLMHash.insert(0x0605,"STREAM DIRECT NORMAL Straight Decode");
mPlayingLMHash.insert(0x0606,"[)(]DIGITAL EX");
mPlayingLMHash.insert(0x0607,"[)(]PLIIx MOVIE");
mPlayingLMHash.insert(0x0608,"(nothing)");
mPlayingLMHash.insert(0x0609,"ES MATRIX");
mPlayingLMHash.insert(0x060a,"ES DISCRETE");
mPlayingLMHash.insert(0x060b,"DTS-ES 8ch");
mPlayingLMHash.insert(0x060c,"Neo:X CINEMA");
mPlayingLMHash.insert(0x060d,"Neo:X CINEMA");
mPlayingLMHash.insert(0x0701,"STREAM DIRECT PURE 2ch");
mPlayingLMHash.insert(0x0702,"[)(]PLII MOVIE");
mPlayingLMHash.insert(0x0703,"[)(]PLIIx MOVIE");
mPlayingLMHash.insert(0x0704,"Neo:6 CINEMA");
mPlayingLMHash.insert(0x0705,"STREAM DIRECT PURE Straight Decode");
mPlayingLMHash.insert(0x0706,"[)(]DIGITAL EX");
mPlayingLMHash.insert(0x0707,"[)(]PLIIx MOVIE");
mPlayingLMHash.insert(0x0708,"(nothing)");
mPlayingLMHash.insert(0x0709,"ES MATRIX");
mPlayingLMHash.insert(0x070a,"ES DISCRETE");
mPlayingLMHash.insert(0x070b,"DTS-ES 8ch");
mPlayingLMHash.insert(0x070c,"Neo:X CINEMA");
mPlayingLMHash.insert(0x070d,"Neo:X CINEMA");
mPlayingLMHash.insert(0x0881,"OPTIMUM");
mPlayingLMHash.insert(0x0e01,"HDMI THROUGH");
mPlayingLMHash.insert(0x0f01,"MULTI CH IN");
mSpeakerStatusHash.insert(0,"SPEAKERS OFF");
mSpeakerStatusHash.insert(1,"SPEAKER A ON");
mSpeakerStatusHash.insert(2,"SPEAKER B ON");
mSpeakerStatusHash.insert(3,"SPEAKERS A+B ON");
mHDMIOutSelectHash.insert(0,"HDMI ALL");
mHDMIOutSelectHash.insert(1,"HDMI 1");
mHDMIOutSelectHash.insert(2,"HDMI 2");
mHDMIOutSelectHash.insert(3,"HDMI (cyclic)");
}
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"))
{
CurCmd.remove("VOL");
mReceiverMute = (bool)CurCmd.toInt();
qDebug("AV Receiver: MUTE status received %d",mReceiverMute);
}
else if(CurCmd.contains("FN"))
{
CurCmd.remove("FN");
mReceiverCurInput = CurCmd.toInt();
if(mInputsHash.contains(mReceiverCurInput))
{
qDebug("AV Receiver: INPUT SRC status received: %s [%d]",mInputsHash.value(mReceiverCurInput).toUtf8().data(),mReceiverCurInput);
}
qDebug("AV Receiver: INPUT SRC status received (unknown hash): %d",mReceiverCurInput);
}
else if(CurCmd.contains("SR"))
{
CurCmd.remove("SR");
mReceiverListeningModeSet = CurCmd.toInt(0,16);
if(mListeningModesHash.contains(mReceiverListeningModeSet))
{
qDebug("AV Receiver: LISTENING MODE SET feedback received: %s [0x%X]",mListeningModesHash.value(mReceiverListeningModeSet).toUtf8().data(),mReceiverListeningModeSet);
}
qDebug("AV Receiver: LISTENING MODE SET feedback received (unknown hash): %d",mReceiverListeningModeSet);
}
else if(CurCmd.contains("LM"))
{
CurCmd.remove("LM");
mReceiverPlayingLM = CurCmd.toInt(0,16);
if(mPlayingLMHash.contains(mReceiverPlayingLM))
{
qDebug("AV Receiver: PLAYING LISTENING MODE status received: %s [0x%X]",mPlayingLMHash.value(mReceiverPlayingLM).toUtf8().data(),mReceiverPlayingLM);
}
qDebug("AV Receiver: PLAYING LISTENING MODE status received (unknown hash): %d",mReceiverPlayingLM);
}
else if(CurCmd.contains("SPK"))
{
CurCmd.remove("SPK");
mReceiverSpkStatus = CurCmd.toInt();
qDebug("AV Receiver: SPEAKERS status received: %s, [%d]",mSpeakerStatusHash.value(mReceiverSpkStatus).toUtf8().data(),mReceiverSpkStatus);
}
else if(CurCmd.contains("HO"))
{
CurCmd.remove("HO");
mReceiverHDMIOutSel = CurCmd.toInt();
qDebug("AV Receiver: HDMI OUTPUT SELECTION status received: %s, [%d]",mHDMIOutSelectHash.value(mReceiverHDMIOutSel).toUtf8().data(),mReceiverHDMIOutSel);
}
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");
// int DisplayFlags = CurCmd.left(2).toInt(0,16);
CurCmd.remove(0,2);
int StrLength = CurCmd.size()/2;
QString FlString = "";
for(int i = 0; i < StrLength; 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");
}
else
{
qDebug("AV Receiver: Unknown cmd received: %s",CurCmd.toUtf8().data());
}
}
return RET_OK;
}
void CAVReceiverDevice::SocketConnected()
{
qDebug("Receiver Connected");
}
void CAVReceiverDevice::SocketDisconnected()
{
qDebug("Receiver Disconnected");
}
void CAVReceiverDevice::SocketRX()
{
AnalyseRxData(mReceiverSocket->readAll());
}