Start implementing support for changing the socket name and password.
This commit is contained in:
parent
e17074384a
commit
06aeb187d5
13
main.cpp
13
main.cpp
|
@ -29,7 +29,7 @@ int main(int argc, char *argv[])
|
|||
QUdpSocket *udpSocketGet = new QUdpSocket();
|
||||
|
||||
udpSocketSend->connectToHost(QHostAddress::Broadcast, 10000);
|
||||
udpSocketGet->bind(QHostAddress::Any, 10000);
|
||||
udpSocketGet->bind(QHostAddress::Any, 10000, QUdpSocket::ShareAddress | QUdpSocket::ReuseAddressHint);
|
||||
|
||||
udpSocketSend->write(discover);
|
||||
udpSocketSend->disconnectFromHost();
|
||||
|
@ -45,13 +45,19 @@ int main(int argc, char *argv[])
|
|||
while (cont)
|
||||
{
|
||||
listSockets(sockets);
|
||||
std::cout << "d - show table data\ns - pick another socket (default is 1)\np - toggle power state\nq - quit" << std::endl;
|
||||
std::cout << "d - update table data\nn - change socket name\ns - pick another socket (default is 1)\np - toggle power state\nq - quit" << std::endl;
|
||||
std::cin >> command;
|
||||
switch (command)
|
||||
{
|
||||
case 'd':
|
||||
sockets[number].tableData();
|
||||
break;
|
||||
case 'n':
|
||||
// std::cout << "Enter new name (max 16 characters)" << std::endl;
|
||||
// string name;
|
||||
// std::cin >> name;
|
||||
sockets[number].changeSocketName();
|
||||
break;
|
||||
case 'p':
|
||||
sockets[number].toggle();
|
||||
break;
|
||||
|
@ -73,6 +79,9 @@ void listSockets(std::vector<Socket> const &sockets)
|
|||
{
|
||||
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 << "Socket Name: " << i->name.toStdString() << "\t Remote Password: " << i->remotePassword.toStdString() << std::endl;
|
||||
}
|
||||
std::cout << "___________________________________________________________________________\n" << std::endl;
|
||||
}
|
||||
|
|
137
socket.cpp
137
socket.cpp
File diff suppressed because one or more lines are too long
10
socket.h
10
socket.h
|
@ -25,21 +25,25 @@ public:
|
|||
Socket(QHostAddress, QByteArray);
|
||||
void toggle();
|
||||
void tableData();
|
||||
void changeSocketName(/*QString name*/);
|
||||
bool parseReply(QByteArray);
|
||||
|
||||
QHostAddress ip;
|
||||
QHostAddress ip, localIP;
|
||||
QByteArray mac;
|
||||
bool powered;
|
||||
QString name, remotePassword;
|
||||
|
||||
private:
|
||||
enum Datagram {Subscribe, PowerOff, PowerOn, TableData, SocketData, TimingData, MaxCommands};
|
||||
enum Datagram {Subscribe, PowerOff, PowerOn, TableData, SocketData, TimingData, WriteSocketData, MaxCommands};
|
||||
|
||||
void sendDatagram(Datagram);
|
||||
void readDatagrams(QUdpSocket *udpSocketGet, Datagram d);
|
||||
void readDatagrams(QUdpSocket *udpSocketGet);
|
||||
QByteArray fromIP(unsigned char, unsigned char, unsigned char, unsigned char);
|
||||
|
||||
QByteArray commandID[MaxCommands];
|
||||
QByteArray datagram[MaxCommands];
|
||||
QByteArray rmac; // Reveresed mac
|
||||
QByteArray socketTableNumber, socketTableVersion, timingTableNumber, timingTableVersion;
|
||||
|
||||
const QByteArray magicKey = QByteArray::fromHex("68 64"); // recognize datagrams from the socket
|
||||
const QByteArray twenties = QByteArray::fromHex("20 20 20 20 20 20"); // mac address padding
|
||||
|
|
Loading…
Reference in New Issue