Preprocessor directives for using either
authorJari Jarvi <t7jaja00@students.oamk.fi>
Thu, 24 Jun 2010 08:12:54 +0000 (11:12 +0300)
committerJari Jarvi <t7jaja00@students.oamk.fi>
Thu, 24 Jun 2010 08:12:54 +0000 (11:12 +0300)
Qt or bsd socket

src/irctrl.cpp
src/src.pro

index c81ca5b..1b2501e 100644 (file)
@@ -1,11 +1,16 @@
 #include <cstdlib>
 
+#ifdef LIRC_USEQTSOCKET
+#include <QTcpSocket>
+#include <QHostAddress>
+#else
 #include <sys/socket.h>
 #include <unistd.h>
 #include <sys/types.h>
 #include <netinet/in.h>
 #include <netinet/ip.h>
 #include <netinet/tcp.h>
+#endif
 
 #include <QSettings>
 #include <QByteArray>
@@ -40,15 +45,28 @@ void IrCtrl::sendCmd(const QString &cmd)
     }
 
     QSettings settings;
+    // Integer demotion. QVariant has no support for unsigned short
+    unsigned short lircPort = (unsigned short)
+        settings.value("lircPort", LIRC_PORT).toInt();
     QString remoteName = settings.value("remoteName", "").toString();
     QString cmdStr = "SEND_ONCE " + remoteName + " " + cmd + "\n";
     QByteArray buf = cmdStr.toAscii();
 
+#ifdef LIRC_USEQTSOCKET
+    QTcpSocket sock;
+    sock.setSocketOption(QAbstractSocket::LowDelayOption, 1);
+    sock.connectToHost(QHostAddress::LocalHost, lircPort
+            QIODevice::WriteOnly | QIODevice::Unbuffered);
+    sock.waitForConnected();
+    sock.write(buf);
+    sock.waitForBytesWritten();
+    sock.close();
+#else
     sockaddr_in addr;
     memset(&addr, 0, sizeof(addr));
     addr.sin_family      = AF_INET;
     addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
-    addr.sin_port        = htons(LIRC_PORT);
+    addr.sin_port        = htons(lircPort);
     int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
     if (sock == -1) {
         qDebug() << "Socket open fail";
@@ -62,11 +80,11 @@ void IrCtrl::sendCmd(const QString &cmd)
         shutdown(sock, SHUT_RDWR);
         close(sock);
     }
+#endif
 
     m_killLircTimer.start();
 }
 
-
 void IrCtrl::stopLirc()
 {
     std::system("sudo /etc/init.d/lirc stop");
index 03bd6fd..d631d74 100644 (file)
@@ -1,6 +1,8 @@
 TEMPLATE = app
 TARGET = irwi
 
+# DEFINES += LIRC_USEQTSOCKET
+
 SOURCES += rating.cpp
 SOURCES += settingsdlg.cpp
 SOURCES += main.cpp