Reformat with astyle.
This commit is contained in:
parent
4497d1e1c1
commit
482a2a0e5b
|
@ -20,7 +20,7 @@
|
|||
#include "consolereader.h"
|
||||
#include "server.h"
|
||||
|
||||
ConsoleReader::ConsoleReader ( std::vector<Socket*> *sockets_vector )
|
||||
ConsoleReader::ConsoleReader(std::vector<Socket*> *sockets_vector)
|
||||
{
|
||||
sockets = sockets_vector;
|
||||
start();
|
||||
|
@ -36,13 +36,10 @@ void ConsoleReader::run()
|
|||
unsigned int number = 0;
|
||||
bool cont = true;
|
||||
|
||||
while ( cont )
|
||||
{
|
||||
while (cont) {
|
||||
std::cin >> command;
|
||||
switch ( command[0] )
|
||||
{
|
||||
case 'a':
|
||||
{
|
||||
switch (command[0]) {
|
||||
case 'a': {
|
||||
std::cout << "Please set your Orvibo socket to pair mode (rapidly blinking blue light) and wait until new wifi network (WiWo-S20) appears" << std::endl;
|
||||
std::string ssid, password;
|
||||
std::cout << "Wireless name (\"c\" for current wifi): ";
|
||||
|
@ -52,8 +49,7 @@ void ConsoleReader::run()
|
|||
Server *server = new Server(48899, QByteArray::fromStdString(ssid), QByteArray::fromStdString(password)); // HF-LPB100 chip can be controlled over port 48899
|
||||
break;
|
||||
}
|
||||
case 'A':
|
||||
{
|
||||
case 'A': {
|
||||
std::cout << "Please set your Orvibo socket to factory reset mode (rapidly blinking red light)" << std::endl;
|
||||
std::string password;
|
||||
std::cout << "Password: ";
|
||||
|
@ -76,8 +72,7 @@ void ConsoleReader::run()
|
|||
case 'D':
|
||||
(*sockets) [number]->discover();
|
||||
break;
|
||||
case 'n':
|
||||
{
|
||||
case 'n': {
|
||||
std::string name;
|
||||
std::cout << "Please enter a new name: ";
|
||||
std::cin >> name;
|
||||
|
@ -93,8 +88,7 @@ void ConsoleReader::run()
|
|||
else if (command == "on")
|
||||
(*sockets) [number]->powerOn();
|
||||
break;
|
||||
case 'P':
|
||||
{
|
||||
case 'P': {
|
||||
std::string password;
|
||||
std::cout << "Please enter a new password: ";
|
||||
std::cin >> password;
|
||||
|
@ -103,15 +97,14 @@ void ConsoleReader::run()
|
|||
}
|
||||
case 'q':
|
||||
cont = false;
|
||||
emit ( QCoreApplication::quit() );
|
||||
emit(QCoreApplication::quit());
|
||||
break;
|
||||
case 's':
|
||||
std::cin >> number;
|
||||
--number; // count from 0
|
||||
listSockets();
|
||||
break;
|
||||
case 't':
|
||||
{
|
||||
case 't': {
|
||||
int timezone;
|
||||
std::cout << "Please enter a new timezone (integer from -11 to 12): ";
|
||||
std::cin >> timezone;
|
||||
|
@ -126,12 +119,11 @@ void ConsoleReader::run()
|
|||
|
||||
void ConsoleReader::listSockets()
|
||||
{
|
||||
for ( std::vector<Socket*>::const_iterator i = sockets->begin() ; i != sockets->end(); ++i )
|
||||
{
|
||||
for (std::vector<Socket*>::const_iterator i = sockets->begin() ; i != sockets->end(); ++i) {
|
||||
std::cout << "_____________________________________________________________________________\n" << std::endl;
|
||||
std::cout << "IP Address: " << (*i)->ip.toString().toStdString() << "\t MAC Address: " << (*i)->mac.toHex().toStdString() << "\t Power: " << ( (*i)->powered ? "On" : "Off" ) << std::endl;
|
||||
std::cout << "IP Address: " << (*i)->ip.toString().toStdString() << "\t MAC Address: " << (*i)->mac.toHex().toStdString() << "\t Power: " << ((*i)->powered ? "On" : "Off") << std::endl;
|
||||
std::cout << "Socket Name: " << (*i)->socketName.toStdString() << "\t Remote Password: " << (*i)->remotePassword.toStdString() << "\t Timezone: " << (*i)->timeZone.toHex().toStdString() << std::endl;
|
||||
std::cout << "Countdown: " << (*i)->countdown << " " << ( (*i)->countdownEnabled ? "(enabled)" : "(disabled)" ) << "\t\t Time: " << (*i)->socketDateTime.toString().toStdString() << std::endl;
|
||||
std::cout << "Countdown: " << (*i)->countdown << " " << ((*i)->countdownEnabled ? "(enabled)" : "(disabled)") << "\t\t Time: " << (*i)->socketDateTime.toString().toStdString() << std::endl;
|
||||
}
|
||||
std::cout << "_____________________________________________________________________________\n" << std::endl;
|
||||
std::cout << "a - add unpaired socket (WiFi needed)\n";
|
||||
|
@ -148,8 +140,7 @@ void ConsoleReader::listSockets()
|
|||
|
||||
void ConsoleReader::connectSignals()
|
||||
{
|
||||
for ( unsigned i = 0; i < sockets->size(); ++i )
|
||||
{
|
||||
for (unsigned i = 0; i < sockets->size(); ++i) {
|
||||
connect((*sockets)[i], &Socket::stateChanged, this, &ConsoleReader::listSockets);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
class ConsoleReader : public QThread
|
||||
{
|
||||
public:
|
||||
ConsoleReader ( std::vector<Socket*> *sockets_vector );
|
||||
ConsoleReader(std::vector<Socket*> *sockets_vector);
|
||||
void run();
|
||||
void listSockets();
|
||||
void connectSignals();
|
||||
|
|
|
@ -36,8 +36,7 @@ Dialog::~Dialog()
|
|||
|
||||
void Dialog::updateUi()
|
||||
{
|
||||
for ( unsigned int i = 0; i < (*sockets).size(); ++i)
|
||||
{
|
||||
for (unsigned int i = 0; i < (*sockets).size(); ++i) {
|
||||
ui->toggleButton->setText((*sockets)[i]->powered ? QStringLiteral("Turn off") : QStringLiteral("Turn on"));
|
||||
ui->comboBox->setItemText(i, (*sockets)[i]->socketName);
|
||||
}
|
||||
|
@ -46,13 +45,12 @@ void Dialog::updateUi()
|
|||
void Dialog::discovered()
|
||||
{
|
||||
ui->comboBox->clear();
|
||||
for ( std::vector<Socket*>::const_iterator i = sockets->begin() ; i != sockets->end(); ++i )
|
||||
{
|
||||
for (std::vector<Socket*>::const_iterator i = sockets->begin() ; i != sockets->end(); ++i) {
|
||||
connect(*i, &Socket::stateChanged, this, &Dialog::updateUi);
|
||||
connect(ui->toggleButton, &QPushButton::clicked, this, &Dialog::togglePower);
|
||||
ui->comboBox->addItem("Socket");
|
||||
}
|
||||
|
||||
|
||||
updateUi();
|
||||
}
|
||||
|
||||
|
|
3
dialog.h
3
dialog.h
|
@ -22,7 +22,8 @@
|
|||
|
||||
#include <QDialog>
|
||||
|
||||
namespace Ui {
|
||||
namespace Ui
|
||||
{
|
||||
class Dialog;
|
||||
}
|
||||
|
||||
|
|
126
server.cpp
126
server.cpp
|
@ -24,15 +24,15 @@
|
|||
#include "consolereader.h"
|
||||
#include "server.h"
|
||||
|
||||
Server::Server ( std::vector<Socket*> *sockets_vector )
|
||||
Server::Server(std::vector<Socket*> *sockets_vector)
|
||||
{
|
||||
sockets = sockets_vector;
|
||||
udpSocketGet = new QUdpSocket();
|
||||
udpSocketGet->bind ( QHostAddress::Any, 10000 );
|
||||
connect ( udpSocketGet, &QUdpSocket::readyRead, this, &Server::readPendingDatagrams);
|
||||
udpSocketGet->bind(QHostAddress::Any, 10000);
|
||||
connect(udpSocketGet, &QUdpSocket::readyRead, this, &Server::readPendingDatagrams);
|
||||
discoverSockets();
|
||||
QTimer *discoverTimer = new QTimer(this);
|
||||
discoverTimer->setInterval(1*60*1000); // 1 min
|
||||
discoverTimer->setInterval(1 * 60 * 1000); // 1 min
|
||||
discoverTimer->setSingleShot(false);
|
||||
connect(discoverTimer, &QTimer::timeout, this, &Server::discoverSockets);
|
||||
discoverTimer->start();
|
||||
|
@ -48,25 +48,20 @@ Server::Server(uint16_t port, QByteArray ssid, QByteArray password)
|
|||
ncm->updateConfigurations();
|
||||
*cfgInitial = ncm->defaultConfiguration();
|
||||
|
||||
if (ssid == "c")
|
||||
{
|
||||
if (ssid == "c") {
|
||||
ssid = cfgInitial->name().toLocal8Bit();
|
||||
qDebug() << "SSID unspecified, using current network: " << ssid;
|
||||
}
|
||||
|
||||
bool stop = false;
|
||||
while ( !stop )
|
||||
{
|
||||
while (!stop) {
|
||||
QThread::sleep(1);
|
||||
|
||||
auto nc = ncm->allConfigurations();
|
||||
|
||||
for (auto &x : nc)
|
||||
{
|
||||
if (x.bearerType() == QNetworkConfiguration::BearerWLAN)
|
||||
{
|
||||
if (x.name() == "WiWo-S20")
|
||||
{
|
||||
for (auto & x : nc) {
|
||||
if (x.bearerType() == QNetworkConfiguration::BearerWLAN) {
|
||||
if (x.name() == "WiWo-S20") {
|
||||
qWarning() << "Connecting to WiWo-S20 wireless";
|
||||
cfg = &x;
|
||||
stop = true;
|
||||
|
@ -83,24 +78,24 @@ Server::Server(uint16_t port, QByteArray ssid, QByteArray password)
|
|||
|
||||
QUdpSocket *udpSocketSend = new QUdpSocket();
|
||||
udpSocketGet = new QUdpSocket();
|
||||
udpSocketGet->bind ( QHostAddress::Any, port);
|
||||
udpSocketGet->bind(QHostAddress::Any, port);
|
||||
|
||||
QByteArray reply;
|
||||
|
||||
udpSocketGet->writeDatagram ( QByteArray::fromStdString("HF-A11ASSISTHREAD"), QHostAddress::Broadcast, port );
|
||||
udpSocketGet->writeDatagram(QByteArray::fromStdString("HF-A11ASSISTHREAD"), QHostAddress::Broadcast, port);
|
||||
reply = listen(QByteArray::fromStdString("HF-A11ASSISTHREAD"));
|
||||
QList<QByteArray> list = reply.split(',');
|
||||
QHostAddress ip(QString::fromLatin1(list[0]));
|
||||
qWarning() << "IP: " << ip.toString();
|
||||
udpSocketGet->writeDatagram ( QByteArray::fromStdString("+ok"), ip, port );
|
||||
udpSocketGet->writeDatagram ( QByteArray::fromStdString("AT+WSSSID=") + ssid + QByteArray::fromStdString("\r"), ip, port );
|
||||
udpSocketGet->writeDatagram(QByteArray::fromStdString("+ok"), ip, port);
|
||||
udpSocketGet->writeDatagram(QByteArray::fromStdString("AT+WSSSID=") + ssid + QByteArray::fromStdString("\r"), ip, port);
|
||||
listen();
|
||||
udpSocketGet->writeDatagram ( QByteArray::fromStdString("AT+WSKEY=WPA2PSK,AES,") + password + QByteArray::fromStdString("\r"), ip, port ); // FIXME: support different security settings
|
||||
udpSocketGet->writeDatagram(QByteArray::fromStdString("AT+WSKEY=WPA2PSK,AES,") + password + QByteArray::fromStdString("\r"), ip, port); // FIXME: support different security settings
|
||||
// OPEN, SHARED, WPAPSK......NONE, WEP, TKIP, AES
|
||||
listen();
|
||||
udpSocketGet->writeDatagram ( QByteArray::fromStdString("AT+WMODE=STA\r"), ip, port );
|
||||
udpSocketGet->writeDatagram(QByteArray::fromStdString("AT+WMODE=STA\r"), ip, port);
|
||||
listen();
|
||||
udpSocketGet->writeDatagram ( QByteArray::fromStdString("AT+Z\r"), ip, port ); // reboot
|
||||
udpSocketGet->writeDatagram(QByteArray::fromStdString("AT+Z\r"), ip, port); // reboot
|
||||
session->close();
|
||||
// FIXME: discover the new socket
|
||||
qWarning() << "Finished";
|
||||
|
@ -122,15 +117,12 @@ QByteArray Server::listen(QByteArray message)
|
|||
QHostAddress sender;
|
||||
quint16 senderPort;
|
||||
bool stop = false;
|
||||
while ( !stop )
|
||||
{
|
||||
while (!stop) {
|
||||
QThread::msleep(50);
|
||||
while ( udpSocketGet->hasPendingDatagrams() )
|
||||
{
|
||||
reply.resize ( udpSocketGet->pendingDatagramSize() );
|
||||
udpSocketGet->readDatagram ( reply.data(), reply.size(), &sender, &senderPort );
|
||||
if (reply != message)
|
||||
{
|
||||
while (udpSocketGet->hasPendingDatagrams()) {
|
||||
reply.resize(udpSocketGet->pendingDatagramSize());
|
||||
udpSocketGet->readDatagram(reply.data(), reply.size(), &sender, &senderPort);
|
||||
if (reply != message) {
|
||||
stop = true;
|
||||
}
|
||||
}
|
||||
|
@ -145,44 +137,34 @@ void Server::run()
|
|||
|
||||
void Server::readPendingDatagrams()
|
||||
{
|
||||
while ( udpSocketGet->hasPendingDatagrams() )
|
||||
{
|
||||
while (udpSocketGet->hasPendingDatagrams()) {
|
||||
QByteArray reply, mac;
|
||||
reply.resize ( udpSocketGet->pendingDatagramSize() );
|
||||
reply.resize(udpSocketGet->pendingDatagramSize());
|
||||
QHostAddress sender;
|
||||
quint16 senderPort;
|
||||
|
||||
udpSocketGet->readDatagram ( reply.data(), reply.size(), &sender, &senderPort );
|
||||
udpSocketGet->readDatagram(reply.data(), reply.size(), &sender, &senderPort);
|
||||
|
||||
if ( reply != discover && reply.left ( 2 ) == magicKey ) // check for Magic Key
|
||||
{
|
||||
if ( reply.mid ( 4, 2 ) == QStringLiteral("qa").toLatin1() || reply.mid ( 4, 2 ) == QStringLiteral("qg").toLatin1()) // Reply to discover packet
|
||||
{
|
||||
if (reply != discover && reply.left(2) == magicKey) { // check for Magic Key
|
||||
if (reply.mid(4, 2) == QStringLiteral("qa").toLatin1() || reply.mid(4, 2) == QStringLiteral("qg").toLatin1()) { // Reply to discover packet
|
||||
bool duplicate = false;
|
||||
for ( std::vector<Socket*>::const_iterator i = sockets->begin() ; i != sockets->end(); ++i )
|
||||
{
|
||||
if ( (*i)->ip == sender )
|
||||
{
|
||||
for (std::vector<Socket*>::const_iterator i = sockets->begin() ; i != sockets->end(); ++i) {
|
||||
if ((*i)->ip == sender) {
|
||||
duplicate = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ( !duplicate )
|
||||
{
|
||||
Socket *socket = new Socket ( sender, reply );
|
||||
sockets->push_back ( socket );
|
||||
if (!duplicate) {
|
||||
Socket *socket = new Socket(sender, reply);
|
||||
sockets->push_back(socket);
|
||||
Q_EMIT discovered();
|
||||
}
|
||||
mac = reply.mid(7,6);
|
||||
mac = reply.mid(7, 6);
|
||||
} else {
|
||||
mac = reply.mid(6, 6);
|
||||
}
|
||||
else
|
||||
{
|
||||
mac = reply.mid(6,6);
|
||||
}
|
||||
for ( std::vector<Socket*>::iterator i = sockets->begin() ; i != sockets->end(); ++i )
|
||||
{
|
||||
if ( (*i)->mac == mac )
|
||||
{
|
||||
for (std::vector<Socket*>::iterator i = sockets->begin() ; i != sockets->end(); ++i) {
|
||||
if ((*i)->mac == mac) {
|
||||
(*i)->parseReply(reply);
|
||||
break;
|
||||
}
|
||||
|
@ -195,9 +177,9 @@ void Server::readPendingDatagrams()
|
|||
void Server::discoverSockets()
|
||||
{
|
||||
QUdpSocket *udpSocketSend = new QUdpSocket();
|
||||
udpSocketSend->connectToHost ( QHostAddress::Broadcast, 10000 );
|
||||
udpSocketSend->write ( discover );
|
||||
udpSocketSend->write ( discover );
|
||||
udpSocketSend->connectToHost(QHostAddress::Broadcast, 10000);
|
||||
udpSocketSend->write(discover);
|
||||
udpSocketSend->write(discover);
|
||||
udpSocketSend->disconnectFromHost();
|
||||
delete udpSocketSend;
|
||||
}
|
||||
|
@ -205,37 +187,31 @@ void Server::discoverSockets()
|
|||
void broadcastPassword(QString password)
|
||||
{
|
||||
QUdpSocket *udpSocket = new QUdpSocket();
|
||||
udpSocket->connectToHost ( QHostAddress::Broadcast, 49999 );
|
||||
udpSocket->connectToHost(QHostAddress::Broadcast, 49999);
|
||||
uint sleep = 15;
|
||||
for (uint j=0; j < 4; ++j) // FIXME: stopping loop on discovery
|
||||
{
|
||||
for (uint j = 0; j < 4; ++j) { // FIXME: stopping loop on discovery
|
||||
qWarning() << j;
|
||||
for (unsigned short int i = 0; i < 200; ++i)
|
||||
{
|
||||
udpSocket->write ( fives(76) );
|
||||
for (unsigned short int i = 0; i < 200; ++i) {
|
||||
udpSocket->write(fives(76));
|
||||
QThread::msleep(sleep);
|
||||
}
|
||||
for (unsigned short int i = 0; i < 3; ++i)
|
||||
{
|
||||
udpSocket->write ( fives(89) );
|
||||
for (unsigned short int i = 0; i < 3; ++i) {
|
||||
udpSocket->write(fives(89));
|
||||
QThread::msleep(sleep);
|
||||
}
|
||||
|
||||
QChar *data = password.data();
|
||||
while (!data->isNull())
|
||||
{
|
||||
udpSocket->write( fives(data->unicode() + 76) );
|
||||
while (!data->isNull()) {
|
||||
udpSocket->write(fives(data->unicode() + 76));
|
||||
QThread::msleep(sleep);
|
||||
++data;
|
||||
}
|
||||
for (unsigned short int i = 0; i < 3; ++i)
|
||||
{
|
||||
udpSocket->write ( fives(86) );
|
||||
for (unsigned short int i = 0; i < 3; ++i) {
|
||||
udpSocket->write(fives(86));
|
||||
QThread::msleep(sleep);
|
||||
}
|
||||
for (unsigned short int i = 0; i < 3; ++i)
|
||||
{
|
||||
udpSocket->write ( fives(332 + password.length()) );
|
||||
for (unsigned short int i = 0; i < 3; ++i) {
|
||||
udpSocket->write(fives(332 + password.length()));
|
||||
QThread::msleep(sleep);
|
||||
}
|
||||
}
|
||||
|
|
10
server.h
10
server.h
|
@ -26,11 +26,11 @@ class QUdpSocket;
|
|||
|
||||
class Server : public QThread
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
Server ( std::vector<Socket*> *sockets_vector );
|
||||
Server ( uint16_t port, QByteArray ssid, QByteArray password );
|
||||
Server(std::vector<Socket*> *sockets_vector);
|
||||
Server(uint16_t port, QByteArray ssid, QByteArray password);
|
||||
~Server();
|
||||
|
||||
void discoverSockets();
|
||||
|
@ -41,11 +41,11 @@ Q_SIGNALS:
|
|||
void discovered();
|
||||
|
||||
private:
|
||||
QByteArray discover = QByteArray::fromHex ( "68 64 00 06 71 61" );
|
||||
QByteArray discover = QByteArray::fromHex("68 64 00 06 71 61");
|
||||
QUdpSocket *udpSocketGet;
|
||||
std::vector<Socket*> *sockets;
|
||||
|
||||
QByteArray listen( QByteArray message = 0 );
|
||||
QByteArray listen(QByteArray message = 0);
|
||||
};
|
||||
|
||||
void broadcastPassword(QString password);
|
||||
|
|
163
socket.cpp
163
socket.cpp
File diff suppressed because one or more lines are too long
36
socket.h
36
socket.h
|
@ -27,29 +27,29 @@
|
|||
|
||||
class QUdpSocket;
|
||||
|
||||
const QByteArray magicKey = QByteArray::fromHex ( "68 64" ); // recognize datagrams from the socket
|
||||
const QByteArray magicKey = QByteArray::fromHex("68 64"); // recognize datagrams from the socket
|
||||
|
||||
class Socket : public QThread
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_OBJECT
|
||||
|
||||
Q_SIGNALS:
|
||||
void stateChanged();
|
||||
void datagramQueued();
|
||||
|
||||
public:
|
||||
Socket ( QHostAddress, QByteArray ); // from discovery packet
|
||||
Socket(QHostAddress, QByteArray); // from discovery packet
|
||||
~Socket();
|
||||
void toggle();
|
||||
void powerOff();
|
||||
void powerOn();
|
||||
void discover();
|
||||
void tableData();
|
||||
void changeSocketName ( QString newName );
|
||||
void changeSocketPassword ( QString newPassword );
|
||||
void changeTimezone ( int8_t newTimezone );
|
||||
void setCountDown ( uint16_t countdown );
|
||||
bool parseReply ( QByteArray );
|
||||
void changeSocketName(QString newName);
|
||||
void changeSocketPassword(QString newPassword);
|
||||
void changeTimezone(int8_t newTimezone);
|
||||
void setCountDown(uint16_t countdown);
|
||||
bool parseReply(QByteArray);
|
||||
|
||||
QHostAddress ip;
|
||||
QByteArray mac;
|
||||
|
@ -72,13 +72,15 @@ private:
|
|||
TimingData,
|
||||
TableModify,
|
||||
MaxCommands
|
||||
};
|
||||
};
|
||||
|
||||
void sendDatagram ( Datagram );
|
||||
void sendDatagram(Datagram);
|
||||
void subscribe();
|
||||
void processQueue() { start(); }
|
||||
void processQueue() {
|
||||
start();
|
||||
}
|
||||
void run();
|
||||
void writeSocketData (QByteArray socketName, QByteArray remotePassword, QByteArray timeZone, uint16_t countdown);
|
||||
void writeSocketData(QByteArray socketName, QByteArray remotePassword, QByteArray timeZone, uint16_t countdown);
|
||||
|
||||
QByteArray commandID[MaxCommands];
|
||||
QByteArray datagram[MaxCommands];
|
||||
|
@ -89,7 +91,7 @@ private:
|
|||
QByteArray firmwareVersion;
|
||||
QByteArray wifiFirmwareVersion; // CC3000 firmware version
|
||||
QByteArray staticServerIP;
|
||||
QByteArray port = QByteArray::fromHex ( "10:27" ); // 10000 in hex (little endian)
|
||||
QByteArray port = QByteArray::fromHex("10:27"); // 10000 in hex (little endian)
|
||||
QByteArray domainServerName;
|
||||
QByteArray localIP; // same as QHostAddress ip but in QByteArray, maybe fix later...
|
||||
QByteArray localGatewayIP;
|
||||
|
@ -99,10 +101,10 @@ private:
|
|||
QByteArray timeZoneSet;
|
||||
QByteArray socketTableNumber, socketTableVersion, timingTableNumber, timingTableVersion; // FIXME: not used yet
|
||||
|
||||
const QByteArray twenties = QByteArray::fromHex ( "20 20 20 20 20 20" ); // mac address padding, 6 spaces
|
||||
const QByteArray zeros = QByteArray::fromHex ( "00 00 00 00" );
|
||||
const QByteArray zero = QByteArray::fromHex ( "00" );
|
||||
const QByteArray one = QByteArray::fromHex ( "01" );
|
||||
const QByteArray twenties = QByteArray::fromHex("20 20 20 20 20 20"); // mac address padding, 6 spaces
|
||||
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;
|
||||
|
|
Loading…
Reference in New Issue