summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/tools/remote/lirchandler.cpp25
-rw-r--r--noncore/tools/remote/lirchandler.h5
-rw-r--r--noncore/tools/remote/remote.cpp40
3 files changed, 51 insertions, 19 deletions
diff --git a/noncore/tools/remote/lirchandler.cpp b/noncore/tools/remote/lirchandler.cpp
index 263b740..ec1e275 100644
--- a/noncore/tools/remote/lirchandler.cpp
+++ b/noncore/tools/remote/lirchandler.cpp
@@ -18,16 +18,16 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
-#include <sys/un.h>
#include <unistd.h>
#include <errno.h>
#include <qstring.h>
#include <qmessagebox.h>
#include <qobject.h>
#include <opie2/oprocess.h>
+#include <qpe/qcopenvelope_qws.h>
#include "lirchandler.h"
#define PACKET_SIZE 256
@@ -267,4 +267,27 @@ bool LircHandler::stopLircd(void)
bool LircHandler::isLircdRunning(void)
{
return (OProcess::processPID("lircd") != 0);
}
+
+bool LircHandler::setupModules(void)
+{
+ // Remove IrDA modules which get in the way
+ system("rmmod ircomm-tty ircomm");
+ // Load LIRC device driver
+ system("modprobe lirc_sir");
+ return true;
+}
+
+bool LircHandler::cleanupModules(void)
+{
+ // Unload LIRC device driver
+ system("rmmod lirc_sir");
+ // Load IrDA drivers back in
+ system("modprobe ircomm-tty");
+ return true;
+}
+
+void LircHandler::disableIrDA(void)
+{
+ QCopEnvelope e("QPE/IrDaApplet", "disableIrda()");
+}
diff --git a/noncore/tools/remote/lirchandler.h b/noncore/tools/remote/lirchandler.h
index c7665cb..4e56b6b 100644
--- a/noncore/tools/remote/lirchandler.h
+++ b/noncore/tools/remote/lirchandler.h
@@ -16,8 +16,10 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#ifndef LIRCHANDLER_H
#define LIRCHANDLER_H
+#include <sys/un.h>
+
class LircHandler
{
private:
bool connectLirc(void);
@@ -32,7 +34,10 @@ public:
int sendIR(const char *lircaction);
bool startLircd(void);
bool stopLircd(void);
bool isLircdRunning(void);
+ bool setupModules(void);
+ bool cleanupModules(void);
+ void disableIrDA(void);
};
#endif
diff --git a/noncore/tools/remote/remote.cpp b/noncore/tools/remote/remote.cpp
index 67fc57d..5b756cb 100644
--- a/noncore/tools/remote/remote.cpp
+++ b/noncore/tools/remote/remote.cpp
@@ -38,23 +38,27 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
int main( int argc, char **argv )
{
- QPEApplication a( argc, argv );
- MainView w;
- a.setMainWidget( &w );
- QPEApplication::showWidget( &w );
-
- LircHandler lh;
- if(!lh.isLircdRunning()) {
- QMessageBox mb("Error!",
- "Lircd is not running",
- QMessageBox::NoIcon,
- QMessageBox::Ok,
- QMessageBox::NoButton,
- QMessageBox::NoButton);
- mb.exec();
-
- }
-
- return a.exec();
+ QPEApplication a( argc, argv );
+
+ LircHandler lh;
+
+ lh.disableIrDA();
+ lh.setupModules();
+ lh.startLircd();
+ if(!lh.isLircdRunning()) {
+ QMessageBox::critical(NULL, QObject::tr("Error"),
+ QObject::tr("Unable to start lircd"),
+ QMessageBox::Ok, QMessageBox::NoButton);
+ }
+
+ MainView w;
+ a.setMainWidget( &w );
+ QPEApplication::showWidget( &w );
+ int result = a.exec();
+
+ lh.stopLircd();
+ lh.cleanupModules();
+
+ return result;
}