diff options
-rw-r--r-- | vdr-vdrmanager/vdrmanager.cpp | 169 | ||||
-rw-r--r-- | vdr-vdrmanager/vdrmanagerthread.cpp | 5 | ||||
-rw-r--r-- | vdr-vdrmanager/vdrmanagerthread.h | 3 |
3 files changed, 97 insertions, 80 deletions
diff --git a/vdr-vdrmanager/vdrmanager.cpp b/vdr-vdrmanager/vdrmanager.cpp index b885981..dfc3bfe 100644 --- a/vdr-vdrmanager/vdrmanager.cpp +++ b/vdr-vdrmanager/vdrmanager.cpp @@ -15,108 +15,123 @@ #define ANDROVDR_PORT 6420 -const char *VERSION = "0.2"; -static const char *DESCRIPTION = "VDR-Manager support plugin"; +const char *VERSION = "0.2"; +static const char *DESCRIPTION = "VDR-Manager support plugin"; -class cPluginAndroVdr : public cPlugin { +class cPluginAndroVdr: public cPlugin { private: - // Add any member variables or functions you may need here. - cAndroVdrThread * Thread; - int port; - const char * password; + // Add any member variables or functions you may need here. + cAndroVdrThread * Thread; + int port; + const char * password; + bool forceCheckSvdrp; protected: public: - cPluginAndroVdr(void); - virtual ~cPluginAndroVdr(); - virtual const char *Version(void) { return VERSION; } - virtual const char *Description(void) { return DESCRIPTION; } - virtual const char *CommandLineHelp(void); - virtual bool Initialize(void); - virtual bool Start(void); - virtual void Stop(void); - virtual void Housekeeping(void); - virtual const char *MainMenuEntry(void) { return NULL; } - virtual cOsdObject *MainMenuAction(void); - virtual cMenuSetupPage *SetupMenu(void); - virtual bool ProcessArgs(int argc, char *argv[]); + cPluginAndroVdr(void); + virtual ~cPluginAndroVdr(); + virtual const char *Version(void) { + return VERSION; + } + virtual const char *Description(void) { + return DESCRIPTION; + } + virtual const char *CommandLineHelp(void); + virtual bool Initialize(void); + virtual bool Start(void); + virtual void Stop(void); + virtual void Housekeeping(void); + virtual const char *MainMenuEntry(void) { + return NULL; + } + virtual cOsdObject *MainMenuAction(void); + virtual cMenuSetupPage *SetupMenu(void); + virtual bool ProcessArgs(int argc, char *argv[]); }; -cPluginAndroVdr::cPluginAndroVdr(void) -{ - // Initialize any member variables here. - // DON'T DO ANYTHING ELSE THAT MAY HAVE SIDE EFFECTS, REQUIRE GLOBAL - // VDR OBJECTS TO EXIST OR PRODUCE ANY OUTPUT! - Thread = NULL; - port = ANDROVDR_PORT; - password = ""; +cPluginAndroVdr::cPluginAndroVdr(void) { + // Initialize any member variables here. + // DON'T DO ANYTHING ELSE THAT MAY HAVE SIDE EFFECTS, REQUIRE GLOBAL + // VDR OBJECTS TO EXIST OR PRODUCE ANY OUTPUT! + Thread = NULL; + port = ANDROVDR_PORT; + password = ""; } -cPluginAndroVdr::~cPluginAndroVdr() -{ - // Clean up after yourself! +cPluginAndroVdr::~cPluginAndroVdr() { + // Clean up after yourself! } -cOsdObject * cPluginAndroVdr::MainMenuAction(void) -{ - return NULL; +cOsdObject * cPluginAndroVdr::MainMenuAction(void) { + return NULL; } -cMenuSetupPage * cPluginAndroVdr::SetupMenu(void) -{ - return NULL; +cMenuSetupPage * cPluginAndroVdr::SetupMenu(void) { + return NULL; } - -const char * cPluginAndroVdr::CommandLineHelp(void) -{ - return " -p port port number to listen to\n" - " -P password password (none if not given)"; + +const char * cPluginAndroVdr::CommandLineHelp(void) { + return " -p port port number to listen to\n" + " -P password password (none if not given)" + " -s force check against svdrphosts.conf"; } -bool cPluginAndroVdr::ProcessArgs(int argc, char *argv[]) -{ - for(int i = 1; i < argc; i++) { - if (i < argc - 1) { - if (strcmp(argv[i], "-p") == 0) { - port = atoi(argv[++i]); - } else if (strcmp(argv[i], "-P") == 0) { - password = argv[++i]; - } - } - } - - // default port - if (port <= 0) - port = ANDROVDR_PORT; - - return true; +bool cPluginAndroVdr::ProcessArgs(int argc, char *argv[]) { + dsyslog("forceCheckSvdrp = true %d", argc); + + int c; + while ((c = getopt(argc, argv, "p:P:s")) != -1) + switch (c) { + case 'p': + port = atoi(optarg); + break; + case 'P': + password = optarg; + break; + case 's': + forceCheckSvdrp = true; + break; + case '?': + if (optopt == 'c') { + fprintf(stderr, "Option -%c requires an argument.\n", optopt); + } else if (isprint(optopt)) + fprintf(stderr, "Unknown option `-%c'.\n", optopt); + else + fprintf(stderr, "Unknown option character `\\x%x'.\n", optopt); + return false; + default: + return false; + } + +// default port + if (port <= 0) + port = ANDROVDR_PORT; + + return true; } -bool cPluginAndroVdr::Initialize(void) -{ - // Initialize any background activities the plugin shall perform. +bool cPluginAndroVdr::Initialize(void) { +// Initialize any background activities the plugin shall perform. - // Start any background activities the plugin shall perform. - Thread = new cAndroVdrThread(port, password); +// Start any background activities the plugin shall perform. + Thread = new cAndroVdrThread(port, password, forceCheckSvdrp); - return Thread != NULL; + return Thread != NULL; } -bool cPluginAndroVdr::Start(void) -{ - Thread->Start(); +bool cPluginAndroVdr::Start(void) { + Thread->Start(); - return true; + return true; } -void cPluginAndroVdr::Stop(void) -{ - // Stop any background activities the plugin shall perform. - Thread->Shutdown(); +void cPluginAndroVdr::Stop(void) { +// Stop any background activities the plugin shall perform. + Thread->Shutdown(); } -void cPluginAndroVdr::Housekeeping(void) -{ - // Perform any cleanup or other regular tasks. +void cPluginAndroVdr::Housekeeping(void) { +// Perform any cleanup or other regular tasks. } -VDRPLUGINCREATOR(cPluginAndroVdr); // Don't touch this! +VDRPLUGINCREATOR(cPluginAndroVdr); +// Don't touch this! diff --git a/vdr-vdrmanager/vdrmanagerthread.cpp b/vdr-vdrmanager/vdrmanagerthread.cpp index fc72cf1..7c72444 100644 --- a/vdr-vdrmanager/vdrmanagerthread.cpp +++ b/vdr-vdrmanager/vdrmanagerthread.cpp @@ -8,11 +8,12 @@ #include "select.h" #include "helpers.h" -cAndroVdrThread::cAndroVdrThread(int port, const char * password) +cAndroVdrThread::cAndroVdrThread(int port, const char * password, bool forceCheckSvdrp) { select = NULL; this->port = port; this->password = password; + this->forceCheckSvdrp = forceCheckSvdrp; } cAndroVdrThread::~cAndroVdrThread() @@ -42,7 +43,7 @@ bool cAndroVdrThread::Init() // create server socket cVdrmanagerServerSocket * sock = new cVdrmanagerServerSocket(); - if (sock == NULL || !sock->Create(port, password)) + if (sock == NULL || !sock->Create(port, password, forceCheckSvdrp)) return false; // register server socket diff --git a/vdr-vdrmanager/vdrmanagerthread.h b/vdr-vdrmanager/vdrmanagerthread.h index 320f4ee..223f253 100644 --- a/vdr-vdrmanager/vdrmanagerthread.h +++ b/vdr-vdrmanager/vdrmanagerthread.h @@ -21,8 +21,9 @@ private: cSelect * select; int port; const char * password; + bool forceCheckSvdrp; public: - cAndroVdrThread(int port, const char * password); + cAndroVdrThread(int port, const char * password, bool forceCheckSvdrp); virtual void Action(void); void Shutdown(); private: |