summaryrefslogtreecommitdiff
path: root/qt/consoleserver/server.cpp
diff options
context:
space:
mode:
authordaniel-Jones <daniel@danieljon.es>2017-07-06 19:04:48 +0930
committerdaniel-Jones <daniel@danieljon.es>2017-07-06 19:04:48 +0930
commitd3624454f67e3afc026d7e16546f5549e67f6102 (patch)
treee370fc7bd48c58f9d4a523d9eb7c554ebf6b461e /qt/consoleserver/server.cpp
parent9834782c287b1dc6df59a03e5992911d8fb70a83 (diff)
downloadRGB-Controller-d3624454f67e3afc026d7e16546f5549e67f6102.tar.gz
RGB-Controller-d3624454f67e3afc026d7e16546f5549e67f6102.zip
Added console based server that allows clients to connect and send commands to the microcontroller, does not require X to use, includes the IRC bot. Also included my beginning works on a c ncurses based client.
Diffstat (limited to 'qt/consoleserver/server.cpp')
-rw-r--r--qt/consoleserver/server.cpp57
1 files changed, 57 insertions, 0 deletions
diff --git a/qt/consoleserver/server.cpp b/qt/consoleserver/server.cpp
new file mode 100644
index 0000000..401ee8d
--- /dev/null
+++ b/qt/consoleserver/server.cpp
@@ -0,0 +1,57 @@
+#include "server.h"
+
+server::server(QObject *parent) : QObject(parent)
+{
+ srv = new QTcpServer();
+ connect(srv, SIGNAL(newConnection()), this, SLOT(new_connection()));
+ qDebug() << "server loaded but not started";
+}
+
+bool server::server_start()
+{
+ qDebug() << "server started";
+ if (srv->listen(QHostAddress::Any, 3001))
+ {
+ qDebug() << "listening on 3001";
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
+
+bool server::server_stop()
+{
+ srv->close();
+ if (srv->isListening())
+ return false;
+ return true;
+}
+
+void server::new_connection()
+{
+ QTcpSocket *socket;
+ socket = srv->nextPendingConnection();
+ socket->waitForReadyRead(3000);
+ handle(QString(socket->readAll()).remove(QRegExp("[\\n\\t\\r]")));
+ socket->close();
+ delete socket;
+}
+
+void server::handle(QString msg)
+{
+ qDebug() << "received" << msg;
+ if (msg.contains(";"))
+ {
+ QStringList tmp = msg.split(";");
+ for (int x = 0; x < tmp.size(); x++)
+ {
+ emit sendcmd(tmp.at(x));
+ }
+ }
+ else
+ {
+ emit sendcmd(msg);
+ }
+}