summaryrefslogtreecommitdiff
path: root/vdr-vdrmanager
diff options
context:
space:
mode:
Diffstat (limited to 'vdr-vdrmanager')
-rw-r--r--vdr-vdrmanager/vdrmanager.cpp169
-rw-r--r--vdr-vdrmanager/vdrmanagerthread.cpp5
-rw-r--r--vdr-vdrmanager/vdrmanagerthread.h3
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: