Merge branch 'master' of mercury.wipsl.com:/var/git/irwi
[irwi] / src / irctrl.cpp
1 #include <cstdlib>
2
3 #include <QTcpSocket>
4 #include <QSettings>
5 #include <QString>
6 #include <QIODevice>
7 #include <QHostAddress>
8 #include <QAbstractSocket>
9 #include <QSettings>
10
11 #include "irctrl.h"
12
13 IrCtrl::IrCtrl()
14     : settings(NULL)
15 {
16     settings = new QSettings(this);
17     std::system("lircctl start");
18 }
19
20 IrCtrl::~IrCtrl()
21 {
22     delete settings;
23     settings = NULL;
24     std::system("lircctl stop");
25 }
26
27 void IrCtrl::genericSendCmd(const QString &commandName)
28 {
29     QTcpSocket sock(this);
30 //    sock.setSocketOption(QAbstractSocket::LowDelayOption, 1);
31     sock.connectToHost(QHostAddress::LocalHost, 
32             settings->value("lircPort", LIRC_PORT).toInt(),
33             QIODevice::WriteOnly|QIODevice::Unbuffered);
34     sock.waitForConnected();
35     QString remoteName =
36         settings->value("remoteName", "REMOTE_NAME_MISSING").toString();
37     QString cmd = "SEND_ONCE " + remoteName + " " + commandName + "\n";
38     sock.write(cmd.toAscii());
39     sock.waitForBytesWritten();
40     sock.close();
41 }
42
43 void IrCtrl::sendCmd0()
44 {
45     genericSendCmd(settings->value("cmd0", "VOL+").toString());
46 }
47
48 void IrCtrl::sendCmd1()
49 {
50     genericSendCmd(settings->value("cmd1", "VOL-").toString());
51 }
52
53 void IrCtrl::sendCmd2()
54 {
55     genericSendCmd(settings->value("cmd2", "P+").toString());
56 }
57
58 void IrCtrl::sendCmd3()
59 {
60     genericSendCmd(settings->value("cmd3", "P-").toString());
61 }
62
63 void IrCtrl::sendCmd4()
64 {
65     genericSendCmd(settings->value("cmd4", "ON/OFF").toString());
66 }
67
68 void IrCtrl::sendCmd5()
69 {
70     genericSendCmd(settings->value("cmd5", "MUTE").toString());
71 }
72