summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show 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.cpp28
3 files changed, 45 insertions, 13 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
@@ -19,7 +19,6 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
-#include <sys/un.h>
#include <unistd.h>
#include <errno.h>
@@ -27,6 +26,7 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#include <qmessagebox.h>
#include <qobject.h>
#include <opie2/oprocess.h>
+#include <qpe/qcopenvelope_qws.h>
#include "lirchandler.h"
@@ -268,3 +268,26 @@ 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
@@ -17,6 +17,8 @@ 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:
@@ -33,6 +35,9 @@ public:
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
@@ -40,21 +40,25 @@ 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();
+ 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);
}
- return a.exec();
+ MainView w;
+ a.setMainWidget( &w );
+ QPEApplication::showWidget( &w );
+ int result = a.exec();
+
+ lh.stopLircd();
+ lh.cleanupModules();
+
+ return result;
}