From a71197282eef021f0dcd4c50b18d383dc0ee185b Mon Sep 17 00:00:00 2001 From: J-F Martel Date: Fri, 14 Aug 2015 18:12:21 -0400 Subject: [PATCH] Start implementation of AVReceiverDevice --- MasterCtrl.pro | 6 +- Sources/AVReceiverDevice.cpp | 222 +++++++++++++++++++++++++++++++++++ Sources/AVReceiverDevice.h | 34 ++++++ Sources/GlobalDefine.h | 3 + Sources/MasterCtrl.cpp | 8 ++ Sources/MasterCtrl.h | 2 + 6 files changed, 273 insertions(+), 2 deletions(-) create mode 100644 Sources/AVReceiverDevice.cpp create mode 100644 Sources/AVReceiverDevice.h diff --git a/MasterCtrl.pro b/MasterCtrl.pro index 737bec1..bd7f974 100644 --- a/MasterCtrl.pro +++ b/MasterCtrl.pro @@ -11,7 +11,8 @@ HEADERS += \ Sources/AbstractNetworkInterface.h \ Sources/DeadboltDevice.h \ Sources/AbstractDevice.h \ - Sources/ProtocolDefs.h + Sources/ProtocolDefs.h \ + Sources/AVReceiverDevice.h SOURCES += \ Sources/main.cpp \ @@ -20,7 +21,8 @@ SOURCES += \ Sources/232NetworkCommIF.cpp \ Sources/EthernetNetworkCommIF.cpp \ Sources/NetworkProtocol.cpp \ - Sources/DeadboltDevice.cpp + Sources/DeadboltDevice.cpp \ + Sources/AVReceiverDevice.cpp #win32:SOURCES += $$PWD/Source/qextserialport/win_qextserialport.cpp \ diff --git a/Sources/AVReceiverDevice.cpp b/Sources/AVReceiverDevice.cpp new file mode 100644 index 0000000..625c92f --- /dev/null +++ b/Sources/AVReceiverDevice.cpp @@ -0,0 +1,222 @@ +#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()); + +} + diff --git a/Sources/AVReceiverDevice.h b/Sources/AVReceiverDevice.h new file mode 100644 index 0000000..e8ee350 --- /dev/null +++ b/Sources/AVReceiverDevice.h @@ -0,0 +1,34 @@ +#ifndef AVRECEIVERDEVICE_H +#define AVRECEIVERDEVICE_H + +#include + +#define RECEIVER_PORT 23 +#define RECEIVER_IP_ADDRESS "192.168.0.104" + +class CAVReceiverDevice : QObject +{ + Q_OBJECT + +public: + CAVReceiverDevice(); + ~CAVReceiverDevice(); + + int ConnectToReceiver(); + int DisconnectReceiver(); + +private: + QTcpSocket *mReceiverSocket; + int AnalyseRxData(QByteArray data); + + int mReceiverVolume; + + bool mIsConnected; + +public slots: + void SocketConnected(); + void SocketDisconnected(); + void SocketRX(); +}; + +#endif // AVRECEIVERDEVICE_H diff --git a/Sources/GlobalDefine.h b/Sources/GlobalDefine.h index 7b14d03..670535f 100644 --- a/Sources/GlobalDefine.h +++ b/Sources/GlobalDefine.h @@ -3,4 +3,7 @@ #include "QDebug" +#define RET_OK 1 +#define RET_ERROR 0 + #endif // GLOBALDEFINE_H diff --git a/Sources/MasterCtrl.cpp b/Sources/MasterCtrl.cpp index 05599c3..f3cd8ed 100644 --- a/Sources/MasterCtrl.cpp +++ b/Sources/MasterCtrl.cpp @@ -4,13 +4,21 @@ CMasterCtrl::CMasterCtrl() { qDebug("Creation..."); mDeadBoltDevice = new CDeadboltDevice(1); + mAVReceiverDevice = new CAVReceiverDevice; + + } CMasterCtrl::~CMasterCtrl() { + mAVReceiverDevice->DisconnectReceiver(); + delete mDeadBoltDevice; + delete mAVReceiverDevice; } void CMasterCtrl::Start() { qDebug("Started!"); + + mAVReceiverDevice->ConnectToReceiver(); } diff --git a/Sources/MasterCtrl.h b/Sources/MasterCtrl.h index dc764c1..ab1bf26 100644 --- a/Sources/MasterCtrl.h +++ b/Sources/MasterCtrl.h @@ -3,6 +3,7 @@ #include "GlobalDefine.h" #include "DeadboltDevice.h" +#include "AVReceiverDevice.h" class CMasterCtrl { @@ -12,6 +13,7 @@ public: void Start(void); CDeadboltDevice *mDeadBoltDevice; + CAVReceiverDevice *mAVReceiverDevice; }; #endif // MASTERCTRL_H