More implementation
[irwi] / src / irctrl.cpp
index 92b4942..4f40027 100644 (file)
@@ -1,72 +1,51 @@
 #include <cstdlib>
 
-#include <QTcpSocket>
-#include <QSettings>
-#include <QString>
-#include <QIODevice>
-#include <QHostAddress>
-#include <QAbstractSocket>
 #include <QSettings>
+#include <QTimer>
 
 #include "irctrl.h"
 
-IrCtrl::IrCtrl()
-    : settings(NULL)
+IrCtrl::IrCtrl(QObject *parent)
+    : QObject(parent)
 {
-    settings = new QSettings(this);
-    std::system("lircctl start");
 }
-
+    
 IrCtrl::~IrCtrl()
 {
-    delete settings;
-    settings = NULL;
-    std::system("lircctl stop");
 }
 
-void IrCtrl::genericSendCmd(const QString &commandName)
+void IrCtrl::sendCmd(const QString &remoteName, const QString &cmd)
 {
-    QTcpSocket sock(this);
-//    sock.setSocketOption(QAbstractSocket::LowDelayOption, 1);
-    sock.connectToHost(QHostAddress::LocalHost, 
-            settings->value("lircPort", LIRC_PORT).toInt(),
-            QIODevice::WriteOnly|QIODevice::Unbuffered);
-    sock.waitForConnected();
-    QString remoteName =
-        settings->value("remoteName", "REMOTE_NAME_MISSING").toString();
-    QString cmd = "SEND_ONCE " + remoteName + " " + commandName + "\n";
-    sock.write(cmd.toAscii());
-    sock.waitForBytesWritten();
-    sock.close();
-}
+    if (!killLircTimer->isActive()) {
+        startLirc();
+    } else {
+        killLircTimer->stop();
+    }
 
-void IrCtrl::sendCmd0()
-{
-    genericSendCmd(settings->value("cmd0", "VOL+").toString());
-}
+//    QTcpSocket sock;
+//    QSettings settings(this);
+//    sock.setSocketOption(QAbstractSocket::LowDelayOption, 1);
+//    sock.connectToHost(QHostAddress::LocalHost, 
+//            settings.value("lircPort", LIRC_PORT).toInt(),
+//            QIODevice::WriteOnly|QIODevice::Unbuffered);
+//    sock.waitForConnected();
+//    QString cmdStr = "SEND_ONCE " + cmd.remoteName + " " + cmd.cmd + "\n";
+//    sock.write(cmdStr.toAscii());
+//    sock.waitForBytesWritten();
+//    sock.close();
 
-void IrCtrl::sendCmd1()
-{
-    genericSendCmd(settings->value("cmd1", "VOL-").toString());
+    killLircTimer->start();
 }
 
-void IrCtrl::sendCmd2()
-{
-    genericSendCmd(settings->value("cmd2", "P+").toString());
-}
 
-void IrCtrl::sendCmd3()
+void IrCtrl::stopLirc()
 {
-    genericSendCmd(settings->value("cmd3", "P-").toString());
+    std::system("sudo /etc/init.d/lirc stop");
 }
 
-void IrCtrl::sendCmd4()
+void IrCtrl::startLirc()
 {
-    genericSendCmd(settings->value("cmd4", "ON/OFF").toString());
+    std::system("sudo /etc/init.d/lirc start");
 }
 
-void IrCtrl::sendCmd5()
-{
-    genericSendCmd(settings->value("cmd5", "MUTE").toString());
-}