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