/************************************************************************* * Copyright (C) 2015 by Andrius Štikonas * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see .* *************************************************************************/ #ifndef SOCKET_H #define SOCKET_H #include #include #include #include const QByteArray magicKey = QByteArray::fromHex ( "68 64" ); // recognize datagrams from the socket class Socket : public QObject { Q_OBJECT Q_SIGNALS: void stateChanged(); public: Socket ( QHostAddress, QByteArray ); ~Socket(); void toggle(); void tableData(); void changeSocketName ( /*QString name*/ ); bool parseReply ( QByteArray ); QHostAddress ip, localIP; QByteArray mac; bool powered; QString name, remotePassword; private: enum Datagram {Subscribe, PowerOff, PowerOn, TableData, SocketData, TimingData, WriteSocketData, MaxCommands}; void sendDatagram ( Datagram ); QByteArray fromIP ( unsigned char, unsigned char, unsigned char, unsigned char ); void subscribe(); QByteArray commandID[MaxCommands]; QByteArray datagram[MaxCommands]; QByteArray rmac; // Reveresed mac QByteArray socketTableNumber, socketTableVersion, timingTableNumber, timingTableVersion; const QByteArray twenties = QByteArray::fromHex ( "20 20 20 20 20 20" ); // mac address padding const QByteArray zeros = QByteArray::fromHex ( "00 00 00 00" ); const QByteArray zero = QByteArray::fromHex ( "00" ); const QByteArray one = QByteArray::fromHex ( "01" ); QUdpSocket *udpSocket; QTimer *subscribeTimer; }; #endif /* SOCKET_H */