#ifndef AVRECEIVERDEVICE_H #define AVRECEIVERDEVICE_H #include #include #include "NetworkDevice.h" #include #include #include "AvReceiverData.h" #define RECEIVER_PORT 50000 #define RECEIVER_IP_ADDRESS "192.168.50.101" #define RECEIVER_STATE_UPDATE_TIMEOUT 3000 enum eReceiverSpkStatus { RECEIVER_OFF_SPK_STATUS, RECEIVER_A_ON_SPK_STATUS, RECEIVER_B_ON_SPK_STATUS, RECEIVER_A_B_ON_SPK_STATUS, RECEIVER_UNKNOWN_SPK_STATUS }; enum eSpkSetStateCmds { RECEIVER_SET_SPK_OFF, RECEIVER_SET_SPK_ON, RECEVIVER_TOGGLE_SPK, RECEIVER_DONT_CHANGE_SPK }; enum eReceiverSubUnits { SYS, MAIN, TUN, SIRIUS, IPOD, BT, UAW, RHAP, SIRIUSIR, PANDORA, NAPSTER, PC, NETRADIO, USB, IPODUSB }; class CAVReceiverDevice : QObject { Q_OBJECT public: CAVReceiverDevice(); ~CAVReceiverDevice(); int Start(); private: int ConnectToReceiver(); int DisconnectReceiver(); int DisconnectReceiverDelayed(int Delay = 500); int SendReceiverCommand(QString Command); int UpdateReceiverStateParam(QString SubUnit, QString Fcn, QString Param); public: //Network Interface Implementation int SetZone2(bool OnOff); int SetMainZone(bool OnOff); int SetSpeakers(int SpeakerA, int SpeakerB); int SendRawCommand(QString Cmd); int SelectScene(char Zone, char Scene); int SetMainVolume(float Volume); int SetZone2Volume(float Volume); QByteArray GetReceiverStatus(); private: QTcpSocket *mReceiverSocket; int AnalyseRxData(QByteArray data); QTimer *mDisconnectTimer, *mStateRequestTimer; CAvReceiverMainStatus mReceiverStatus; CAvReceiverMainStatus mZone2Status; bool mIsConnected; QString mPendingCommand; public slots: void SocketConnected(); void SocketDisconnected(); void SocketRX(); void DisconnectTimerExpired(); void StateRequestTimerExpired(); }; #endif // AVRECEIVERDEVICE_H