3 #include <sys/socket.h>
6 #include <netinet/in.h>
7 #include <netinet/ip.h>
8 #include <netinet/tcp.h>
17 IrCtrl::IrCtrl(QObject *parent)
21 m_killLircTimer.setInterval(
22 settings.value("idleTimeout", "300").toInt() * 1000);
23 m_killLircTimer.setSingleShot(true);
24 connect(&m_killLircTimer, SIGNAL(timeout()),
25 this, SLOT(stopLirc()));
27 m_killLircTimer.start();
34 void IrCtrl::sendCmd(const QString &cmd)
36 if (!m_killLircTimer.isActive()) {
39 m_killLircTimer.stop();
43 QString remoteName = settings.value("remoteName", "").toString();
44 QString cmdStr = "SEND_ONCE " + remoteName + " " + cmd + "\n";
45 QByteArray buf = cmdStr.toAscii();
48 memset(&addr, 0, sizeof(addr));
49 addr.sin_family = AF_INET;
50 addr.sin_addr.s_addr = INADDR_LOOPBACK;
51 addr.sin_port = LIRC_PORT;
52 int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
54 qDebug() << "Socket open fail";
56 int c = ::connect(sock, (sockaddr*)&addr, sizeof(sockaddr_in));
58 write(sock, buf.constData(), buf.count());
60 qDebug() << "Connect fail";
62 shutdown(sock, SHUT_RDWR);
66 m_killLircTimer.start();
70 void IrCtrl::stopLirc()
72 std::system("sudo /etc/init.d/lirc stop");
75 void IrCtrl::startLirc()
77 std::system("sudo /etc/init.d/lirc start");