1346b453175e623618ce28ce0657ed5d98b7eade
[irwi] / src / irctrl.cpp
1 #include <cstdlib>
2
3 #include <QSettings>
4 #include <QTcpSocket>
5 #include <QHostAddress>
6
7 #include "irctrl.h"
8
9 IrCtrl::IrCtrl(QObject *parent)
10     : QObject(parent)
11 {
12 }
13     
14 IrCtrl::~IrCtrl()
15 {
16 }
17
18 void IrCtrl::sendCmd(const QString &cmd)
19 {
20     if (!m_killLircTimer.isActive()) {
21         startLirc();
22     } else {
23         m_killLircTimer.stop();
24     }
25
26     QTcpSocket sock;
27     QSettings settings(this);
28     sock.setSocketOption(QAbstractSocket::LowDelayOption, 1);
29     sock.connectToHost(QHostAddress::LocalHost, 
30             settings.value("lircPort", LIRC_PORT).toInt(),
31             QIODevice::WriteOnly | QIODevice::Unbuffered);
32     sock.waitForConnected();
33     QString remoteName = settings.value("remoteName", "").toString();
34     QString cmdStr = "SEND_ONCE " + remoteName + " " + cmd + "\n";
35     sock.write(cmdStr.toAscii());
36     sock.waitForBytesWritten();
37     sock.close();
38
39     m_killLircTimer.start();
40 }
41
42
43 void IrCtrl::stopLirc()
44 {
45     std::system("sudo /etc/init.d/lirc stop");
46 }
47
48 void IrCtrl::startLirc()
49 {
50     std::system("sudo /etc/init.d/lirc start");
51 }
52
53