+#include <cstdlib>
+
+#include <QSettings>
+#include <QTcpSocket>
+#include <QHostAddress>
+
#include "irctrl.h"
-IrCtrl::IrCtrl()
+IrCtrl::IrCtrl(QObject *parent)
+ : QObject(parent)
{
+ QSettings settings;
+ m_killLircTimer.setInterval(
+ settings.value("idleTimeout", "300").toInt() * 100);
+ m_killLircTimer.setSingleShot(true);
+ connect(&m_killLircTimer, SIGNAL(timeout()),
+ this, SLOT(stopLirc()));
+ startLirc();
+ m_killLircTimer.start();
}
-
-void IrCtrl::sendCmd0(bool)
+
+IrCtrl::~IrCtrl()
{
}
-void IrCtrl::sendCmd1(bool)
+void IrCtrl::sendCmd(const QString &cmd)
{
+ if (!m_killLircTimer.isActive()) {
+ startLirc();
+ } else {
+ m_killLircTimer.stop();
+ }
+
+ 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 remoteName = settings.value("remoteName", "").toString();
+ QString cmdStr = "SEND_ONCE " + remoteName + " " + cmd + "\n";
+ sock.write(cmdStr.toAscii());
+ sock.waitForBytesWritten();
+ sock.close();
+
+ m_killLircTimer.start();
}
-void IrCtrl::sendCmd2(bool)
-{
-}
-void IrCtrl::sendCmd3(bool)
+void IrCtrl::stopLirc()
{
+ std::system("sudo /etc/init.d/lirc stop");
}
-void IrCtrl::sendCmd4(bool)
+void IrCtrl::startLirc()
{
+ std::system("sudo /etc/init.d/lirc start");
}
-void IrCtrl::sendCmd5(bool)
-{
-}