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