diff --git a/consolereader.cpp b/consolereader.cpp index 53bc423..61cb794 100644 --- a/consolereader.cpp +++ b/consolereader.cpp @@ -43,10 +43,12 @@ void ConsoleReader::run() 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 password; + std::string ssid, password; + std::cout << "Wireless name (\"c\" for current wifi): "; + std::cin >> ssid; std::cout << "Password: "; std::cin >> password; - Server *server = new Server(48899, 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; } case 'A': @@ -75,6 +77,12 @@ void ConsoleReader::run() case 'p': (*sockets) [number]->toggle(); break; + case 'o': + if (command == "off") + (*sockets) [number]->powerOff(); + else if (command == "on") + (*sockets) [number]->powerOn(); + break; case 'P': { std::string password; diff --git a/s20.pro b/s20.pro index fcc94b7..55db181 100644 --- a/s20.pro +++ b/s20.pro @@ -1,4 +1,4 @@ SOURCES = consolereader.cpp main.cpp server.cpp socket.cpp HEADERS = consolereader.h server.h socket.h QT += network -CONFIG += c++11 +CONFIG += console c++11 diff --git a/server.cpp b/server.cpp index e5c6bd9..bd477c5 100644 --- a/server.cpp +++ b/server.cpp @@ -40,14 +40,19 @@ Server::Server ( std::vector *sockets_vector ) start(); } -Server::Server(uint16_t port, QByteArray password) +Server::Server(uint16_t port, QByteArray ssid, QByteArray password) { QNetworkConfiguration *cfgInitial = new QNetworkConfiguration; QNetworkConfiguration *cfg = new QNetworkConfiguration; QNetworkConfigurationManager *ncm = new QNetworkConfigurationManager; ncm->updateConfigurations(); *cfgInitial = ncm->defaultConfiguration(); - QByteArray ssid = cfgInitial->name().toLocal8Bit(); + + if (ssid == "c") + { + ssid = cfgInitial->name().toLocal8Bit(); + qDebug() << "SSID unspecified, using current network: " << ssid; + } bool stop = false; while ( !stop ) diff --git a/server.h b/server.h index 2cd011e..87a53df 100644 --- a/server.h +++ b/server.h @@ -30,7 +30,7 @@ Q_OBJECT public: Server ( std::vector *sockets_vector ); - Server ( uint16_t port, QByteArray password ); + Server ( uint16_t port, QByteArray ssid, QByteArray password ); ~Server(); void discoverSockets(); diff --git a/socket.cpp b/socket.cpp index fb44fd2..9b31296 100644 --- a/socket.cpp +++ b/socket.cpp @@ -127,6 +127,20 @@ void Socket::toggle() sendDatagram ( powered ? PowerOff : PowerOn ); } +void Socket::powerOff() +{ + if (powered) + sendDatagram ( PowerOff ); + Q_EMIT stateChanged(); +} + +void Socket::powerOn() +{ + if (!powered) + sendDatagram ( PowerOn ); + Q_EMIT stateChanged(); +} + void Socket::changeSocketName ( QString newName ) { QByteArray name = newName.toLatin1().leftJustified(16, ' ', true); diff --git a/socket.h b/socket.h index e91a89d..6aff2a1 100644 --- a/socket.h +++ b/socket.h @@ -41,6 +41,8 @@ public: Socket ( QHostAddress, QByteArray ); // from discovery packet ~Socket(); void toggle(); + void powerOff(); + void powerOn(); void discover(); void tableData(); void changeSocketName ( QString newName );