Reformat with astyle.

This commit is contained in:
Andrius Štikonas 2015-08-18 15:29:09 +01:00
parent 4497d1e1c1
commit 482a2a0e5b
8 changed files with 168 additions and 215 deletions

View File

@ -20,7 +20,7 @@
#include "consolereader.h" #include "consolereader.h"
#include "server.h" #include "server.h"
ConsoleReader::ConsoleReader ( std::vector<Socket*> *sockets_vector ) ConsoleReader::ConsoleReader(std::vector<Socket*> *sockets_vector)
{ {
sockets = sockets_vector; sockets = sockets_vector;
start(); start();
@ -36,13 +36,10 @@ void ConsoleReader::run()
unsigned int number = 0; unsigned int number = 0;
bool cont = true; bool cont = true;
while ( cont ) while (cont) {
{
std::cin >> command; std::cin >> command;
switch ( command[0] ) switch (command[0]) {
{ case 'a': {
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::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::string ssid, password;
std::cout << "Wireless name (\"c\" for current wifi): "; 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 Server *server = new Server(48899, QByteArray::fromStdString(ssid), QByteArray::fromStdString(password)); // HF-LPB100 chip can be controlled over port 48899
break; break;
} }
case 'A': case 'A': {
{
std::cout << "Please set your Orvibo socket to factory reset mode (rapidly blinking red light)" << std::endl; std::cout << "Please set your Orvibo socket to factory reset mode (rapidly blinking red light)" << std::endl;
std::string password; std::string password;
std::cout << "Password: "; std::cout << "Password: ";
@ -76,8 +72,7 @@ void ConsoleReader::run()
case 'D': case 'D':
(*sockets) [number]->discover(); (*sockets) [number]->discover();
break; break;
case 'n': case 'n': {
{
std::string name; std::string name;
std::cout << "Please enter a new name: "; std::cout << "Please enter a new name: ";
std::cin >> name; std::cin >> name;
@ -93,8 +88,7 @@ void ConsoleReader::run()
else if (command == "on") else if (command == "on")
(*sockets) [number]->powerOn(); (*sockets) [number]->powerOn();
break; break;
case 'P': case 'P': {
{
std::string password; std::string password;
std::cout << "Please enter a new password: "; std::cout << "Please enter a new password: ";
std::cin >> password; std::cin >> password;
@ -103,15 +97,14 @@ void ConsoleReader::run()
} }
case 'q': case 'q':
cont = false; cont = false;
emit ( QCoreApplication::quit() ); emit(QCoreApplication::quit());
break; break;
case 's': case 's':
std::cin >> number; std::cin >> number;
--number; // count from 0 --number; // count from 0
listSockets(); listSockets();
break; break;
case 't': case 't': {
{
int timezone; int timezone;
std::cout << "Please enter a new timezone (integer from -11 to 12): "; std::cout << "Please enter a new timezone (integer from -11 to 12): ";
std::cin >> timezone; std::cin >> timezone;
@ -126,12 +119,11 @@ void ConsoleReader::run()
void ConsoleReader::listSockets() 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 << "_____________________________________________________________________________\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 << "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 << "_____________________________________________________________________________\n" << std::endl;
std::cout << "a - add unpaired socket (WiFi needed)\n"; std::cout << "a - add unpaired socket (WiFi needed)\n";
@ -148,8 +140,7 @@ void ConsoleReader::listSockets()
void ConsoleReader::connectSignals() 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); connect((*sockets)[i], &Socket::stateChanged, this, &ConsoleReader::listSockets);
} }
} }

View File

@ -26,7 +26,7 @@
class ConsoleReader : public QThread class ConsoleReader : public QThread
{ {
public: public:
ConsoleReader ( std::vector<Socket*> *sockets_vector ); ConsoleReader(std::vector<Socket*> *sockets_vector);
void run(); void run();
void listSockets(); void listSockets();
void connectSignals(); void connectSignals();

View File

@ -36,8 +36,7 @@ Dialog::~Dialog()
void Dialog::updateUi() 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->toggleButton->setText((*sockets)[i]->powered ? QStringLiteral("Turn off") : QStringLiteral("Turn on"));
ui->comboBox->setItemText(i, (*sockets)[i]->socketName); ui->comboBox->setItemText(i, (*sockets)[i]->socketName);
} }
@ -46,13 +45,12 @@ void Dialog::updateUi()
void Dialog::discovered() void Dialog::discovered()
{ {
ui->comboBox->clear(); 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(*i, &Socket::stateChanged, this, &Dialog::updateUi);
connect(ui->toggleButton, &QPushButton::clicked, this, &Dialog::togglePower); connect(ui->toggleButton, &QPushButton::clicked, this, &Dialog::togglePower);
ui->comboBox->addItem("Socket"); ui->comboBox->addItem("Socket");
} }
updateUi(); updateUi();
} }

View File

@ -22,7 +22,8 @@
#include <QDialog> #include <QDialog>
namespace Ui { namespace Ui
{
class Dialog; class Dialog;
} }

View File

@ -24,15 +24,15 @@
#include "consolereader.h" #include "consolereader.h"
#include "server.h" #include "server.h"
Server::Server ( std::vector<Socket*> *sockets_vector ) Server::Server(std::vector<Socket*> *sockets_vector)
{ {
sockets = sockets_vector; sockets = sockets_vector;
udpSocketGet = new QUdpSocket(); udpSocketGet = new QUdpSocket();
udpSocketGet->bind ( QHostAddress::Any, 10000 ); udpSocketGet->bind(QHostAddress::Any, 10000);
connect ( udpSocketGet, &QUdpSocket::readyRead, this, &Server::readPendingDatagrams); connect(udpSocketGet, &QUdpSocket::readyRead, this, &Server::readPendingDatagrams);
discoverSockets(); discoverSockets();
QTimer *discoverTimer = new QTimer(this); QTimer *discoverTimer = new QTimer(this);
discoverTimer->setInterval(1*60*1000); // 1 min discoverTimer->setInterval(1 * 60 * 1000); // 1 min
discoverTimer->setSingleShot(false); discoverTimer->setSingleShot(false);
connect(discoverTimer, &QTimer::timeout, this, &Server::discoverSockets); connect(discoverTimer, &QTimer::timeout, this, &Server::discoverSockets);
discoverTimer->start(); discoverTimer->start();
@ -48,25 +48,20 @@ Server::Server(uint16_t port, QByteArray ssid, QByteArray password)
ncm->updateConfigurations(); ncm->updateConfigurations();
*cfgInitial = ncm->defaultConfiguration(); *cfgInitial = ncm->defaultConfiguration();
if (ssid == "c") if (ssid == "c") {
{
ssid = cfgInitial->name().toLocal8Bit(); ssid = cfgInitial->name().toLocal8Bit();
qDebug() << "SSID unspecified, using current network: " << ssid; qDebug() << "SSID unspecified, using current network: " << ssid;
} }
bool stop = false; bool stop = false;
while ( !stop ) while (!stop) {
{
QThread::sleep(1); QThread::sleep(1);
auto nc = ncm->allConfigurations(); auto nc = ncm->allConfigurations();
for (auto &x : nc) for (auto & x : nc) {
{ if (x.bearerType() == QNetworkConfiguration::BearerWLAN) {
if (x.bearerType() == QNetworkConfiguration::BearerWLAN) if (x.name() == "WiWo-S20") {
{
if (x.name() == "WiWo-S20")
{
qWarning() << "Connecting to WiWo-S20 wireless"; qWarning() << "Connecting to WiWo-S20 wireless";
cfg = &x; cfg = &x;
stop = true; stop = true;
@ -83,24 +78,24 @@ Server::Server(uint16_t port, QByteArray ssid, QByteArray password)
QUdpSocket *udpSocketSend = new QUdpSocket(); QUdpSocket *udpSocketSend = new QUdpSocket();
udpSocketGet = new QUdpSocket(); udpSocketGet = new QUdpSocket();
udpSocketGet->bind ( QHostAddress::Any, port); udpSocketGet->bind(QHostAddress::Any, port);
QByteArray reply; 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")); reply = listen(QByteArray::fromStdString("HF-A11ASSISTHREAD"));
QList<QByteArray> list = reply.split(','); QList<QByteArray> list = reply.split(',');
QHostAddress ip(QString::fromLatin1(list[0])); QHostAddress ip(QString::fromLatin1(list[0]));
qWarning() << "IP: " << ip.toString(); qWarning() << "IP: " << ip.toString();
udpSocketGet->writeDatagram ( QByteArray::fromStdString("+ok"), ip, port ); udpSocketGet->writeDatagram(QByteArray::fromStdString("+ok"), ip, port);
udpSocketGet->writeDatagram ( QByteArray::fromStdString("AT+WSSSID=") + ssid + QByteArray::fromStdString("\r"), ip, port ); udpSocketGet->writeDatagram(QByteArray::fromStdString("AT+WSSSID=") + ssid + QByteArray::fromStdString("\r"), ip, port);
listen(); 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 // OPEN, SHARED, WPAPSK......NONE, WEP, TKIP, AES
listen(); listen();
udpSocketGet->writeDatagram ( QByteArray::fromStdString("AT+WMODE=STA\r"), ip, port ); udpSocketGet->writeDatagram(QByteArray::fromStdString("AT+WMODE=STA\r"), ip, port);
listen(); listen();
udpSocketGet->writeDatagram ( QByteArray::fromStdString("AT+Z\r"), ip, port ); // reboot udpSocketGet->writeDatagram(QByteArray::fromStdString("AT+Z\r"), ip, port); // reboot
session->close(); session->close();
// FIXME: discover the new socket // FIXME: discover the new socket
qWarning() << "Finished"; qWarning() << "Finished";
@ -122,15 +117,12 @@ QByteArray Server::listen(QByteArray message)
QHostAddress sender; QHostAddress sender;
quint16 senderPort; quint16 senderPort;
bool stop = false; bool stop = false;
while ( !stop ) while (!stop) {
{
QThread::msleep(50); QThread::msleep(50);
while ( udpSocketGet->hasPendingDatagrams() ) while (udpSocketGet->hasPendingDatagrams()) {
{ reply.resize(udpSocketGet->pendingDatagramSize());
reply.resize ( udpSocketGet->pendingDatagramSize() ); udpSocketGet->readDatagram(reply.data(), reply.size(), &sender, &senderPort);
udpSocketGet->readDatagram ( reply.data(), reply.size(), &sender, &senderPort ); if (reply != message) {
if (reply != message)
{
stop = true; stop = true;
} }
} }
@ -145,44 +137,34 @@ void Server::run()
void Server::readPendingDatagrams() void Server::readPendingDatagrams()
{ {
while ( udpSocketGet->hasPendingDatagrams() ) while (udpSocketGet->hasPendingDatagrams()) {
{
QByteArray reply, mac; QByteArray reply, mac;
reply.resize ( udpSocketGet->pendingDatagramSize() ); reply.resize(udpSocketGet->pendingDatagramSize());
QHostAddress sender; QHostAddress sender;
quint16 senderPort; 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 != 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.mid ( 4, 2 ) == QStringLiteral("qa").toLatin1() || reply.mid ( 4, 2 ) == QStringLiteral("qg").toLatin1()) // Reply to discover packet
{
bool duplicate = false; bool duplicate = false;
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) {
{ if ((*i)->ip == sender) {
if ( (*i)->ip == sender )
{
duplicate = true; duplicate = true;
break; break;
} }
} }
if ( !duplicate ) if (!duplicate) {
{ Socket *socket = new Socket(sender, reply);
Socket *socket = new Socket ( sender, reply ); sockets->push_back(socket);
sockets->push_back ( socket );
Q_EMIT discovered(); Q_EMIT discovered();
} }
mac = reply.mid(7,6); mac = reply.mid(7, 6);
} else {
mac = reply.mid(6, 6);
} }
else for (std::vector<Socket*>::iterator i = sockets->begin() ; i != sockets->end(); ++i) {
{ if ((*i)->mac == mac) {
mac = reply.mid(6,6);
}
for ( std::vector<Socket*>::iterator i = sockets->begin() ; i != sockets->end(); ++i )
{
if ( (*i)->mac == mac )
{
(*i)->parseReply(reply); (*i)->parseReply(reply);
break; break;
} }
@ -195,9 +177,9 @@ void Server::readPendingDatagrams()
void Server::discoverSockets() void Server::discoverSockets()
{ {
QUdpSocket *udpSocketSend = new QUdpSocket(); QUdpSocket *udpSocketSend = new QUdpSocket();
udpSocketSend->connectToHost ( QHostAddress::Broadcast, 10000 ); udpSocketSend->connectToHost(QHostAddress::Broadcast, 10000);
udpSocketSend->write ( discover ); udpSocketSend->write(discover);
udpSocketSend->write ( discover ); udpSocketSend->write(discover);
udpSocketSend->disconnectFromHost(); udpSocketSend->disconnectFromHost();
delete udpSocketSend; delete udpSocketSend;
} }
@ -205,37 +187,31 @@ void Server::discoverSockets()
void broadcastPassword(QString password) void broadcastPassword(QString password)
{ {
QUdpSocket *udpSocket = new QUdpSocket(); QUdpSocket *udpSocket = new QUdpSocket();
udpSocket->connectToHost ( QHostAddress::Broadcast, 49999 ); udpSocket->connectToHost(QHostAddress::Broadcast, 49999);
uint sleep = 15; 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; qWarning() << j;
for (unsigned short int i = 0; i < 200; ++i) for (unsigned short int i = 0; i < 200; ++i) {
{ udpSocket->write(fives(76));
udpSocket->write ( fives(76) );
QThread::msleep(sleep); QThread::msleep(sleep);
} }
for (unsigned short int i = 0; i < 3; ++i) for (unsigned short int i = 0; i < 3; ++i) {
{ udpSocket->write(fives(89));
udpSocket->write ( fives(89) );
QThread::msleep(sleep); QThread::msleep(sleep);
} }
QChar *data = password.data(); QChar *data = password.data();
while (!data->isNull()) while (!data->isNull()) {
{ udpSocket->write(fives(data->unicode() + 76));
udpSocket->write( fives(data->unicode() + 76) );
QThread::msleep(sleep); QThread::msleep(sleep);
++data; ++data;
} }
for (unsigned short int i = 0; i < 3; ++i) for (unsigned short int i = 0; i < 3; ++i) {
{ udpSocket->write(fives(86));
udpSocket->write ( fives(86) );
QThread::msleep(sleep); QThread::msleep(sleep);
} }
for (unsigned short int i = 0; i < 3; ++i) for (unsigned short int i = 0; i < 3; ++i) {
{ udpSocket->write(fives(332 + password.length()));
udpSocket->write ( fives(332 + password.length()) );
QThread::msleep(sleep); QThread::msleep(sleep);
} }
} }

View File

@ -26,11 +26,11 @@ class QUdpSocket;
class Server : public QThread class Server : public QThread
{ {
Q_OBJECT Q_OBJECT
public: public:
Server ( std::vector<Socket*> *sockets_vector ); Server(std::vector<Socket*> *sockets_vector);
Server ( uint16_t port, QByteArray ssid, QByteArray password ); Server(uint16_t port, QByteArray ssid, QByteArray password);
~Server(); ~Server();
void discoverSockets(); void discoverSockets();
@ -41,11 +41,11 @@ Q_SIGNALS:
void discovered(); void discovered();
private: private:
QByteArray discover = QByteArray::fromHex ( "68 64 00 06 71 61" ); QByteArray discover = QByteArray::fromHex("68 64 00 06 71 61");
QUdpSocket *udpSocketGet; QUdpSocket *udpSocketGet;
std::vector<Socket*> *sockets; std::vector<Socket*> *sockets;
QByteArray listen( QByteArray message = 0 ); QByteArray listen(QByteArray message = 0);
}; };
void broadcastPassword(QString password); void broadcastPassword(QString password);

File diff suppressed because one or more lines are too long

View File

@ -27,29 +27,29 @@
class QUdpSocket; 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 class Socket : public QThread
{ {
Q_OBJECT Q_OBJECT
Q_SIGNALS: Q_SIGNALS:
void stateChanged(); void stateChanged();
void datagramQueued(); void datagramQueued();
public: public:
Socket ( QHostAddress, QByteArray ); // from discovery packet Socket(QHostAddress, QByteArray); // from discovery packet
~Socket(); ~Socket();
void toggle(); void toggle();
void powerOff(); void powerOff();
void powerOn(); void powerOn();
void discover(); void discover();
void tableData(); void tableData();
void changeSocketName ( QString newName ); void changeSocketName(QString newName);
void changeSocketPassword ( QString newPassword ); void changeSocketPassword(QString newPassword);
void changeTimezone ( int8_t newTimezone ); void changeTimezone(int8_t newTimezone);
void setCountDown ( uint16_t countdown ); void setCountDown(uint16_t countdown);
bool parseReply ( QByteArray ); bool parseReply(QByteArray);
QHostAddress ip; QHostAddress ip;
QByteArray mac; QByteArray mac;
@ -72,13 +72,15 @@ private:
TimingData, TimingData,
TableModify, TableModify,
MaxCommands MaxCommands
}; };
void sendDatagram ( Datagram ); void sendDatagram(Datagram);
void subscribe(); void subscribe();
void processQueue() { start(); } void processQueue() {
start();
}
void run(); 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 commandID[MaxCommands];
QByteArray datagram[MaxCommands]; QByteArray datagram[MaxCommands];
@ -89,7 +91,7 @@ private:
QByteArray firmwareVersion; QByteArray firmwareVersion;
QByteArray wifiFirmwareVersion; // CC3000 firmware version QByteArray wifiFirmwareVersion; // CC3000 firmware version
QByteArray staticServerIP; 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 domainServerName;
QByteArray localIP; // same as QHostAddress ip but in QByteArray, maybe fix later... QByteArray localIP; // same as QHostAddress ip but in QByteArray, maybe fix later...
QByteArray localGatewayIP; QByteArray localGatewayIP;
@ -99,10 +101,10 @@ private:
QByteArray timeZoneSet; QByteArray timeZoneSet;
QByteArray socketTableNumber, socketTableVersion, timingTableNumber, timingTableVersion; // FIXME: not used yet 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 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 zeros = QByteArray::fromHex("00 00 00 00");
const QByteArray zero = QByteArray::fromHex ( "00" ); const QByteArray zero = QByteArray::fromHex("00");
const QByteArray one = QByteArray::fromHex ( "01" ); const QByteArray one = QByteArray::fromHex("01");
QUdpSocket *udpSocket; QUdpSocket *udpSocket;
QTimer *subscribeTimer; QTimer *subscribeTimer;