#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include static const char *VERSION = "0.0.1"; static const char *DESCRIPTION = "An automagic line-selector"; #define PARALLELPORT 0x378 #define VDRTERMINAL 8 class cWorkThread : public cThread { public: cWorkThread() { } ~cWorkThread() { Cancel(); ioperm(PARALLELPORT,1,1); outb(0, PARALLELPORT); } void Action(void); }; void cWorkThread::Action(void) { int tty_file_descriptor; struct vt_stat terminal_status; tty_file_descriptor = open("/dev/tty0", O_RDWR); if (tty_file_descriptor == -1) { return; } ioperm(PARALLELPORT,1,1); while(1) { usleep(100000); if (ioctl (tty_file_descriptor, VT_GETSTATE, &terminal_status) == -1) { return; } if( terminal_status.v_active == VDRTERMINAL ) { outb(0xff, PARALLELPORT); } else { outb(0, PARALLELPORT); } } } class cPluginSignal : public cPlugin { protected: cWorkThread *w; public: cPluginSignal(void); virtual ~cPluginSignal(); virtual const char *Version(void) { return VERSION; } virtual const char *Description(void) { return DESCRIPTION; } virtual bool Start(void); }; cPluginSignal::cPluginSignal(void) { } cPluginSignal::~cPluginSignal() { } bool cPluginSignal::Start(void) { w=new cWorkThread(); w->Start(); return true; } VDRPLUGINCREATOR(cPluginSignal); // Don't touch this!