summaryrefslogtreecommitdiff
path: root/vdr-vdrmanager/vdrmanager.cpp
blob: 2196b40ca5c22eefc234d6eccc2aba9525477f18 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/*
 * vdrmon.c: A plugin for the Video Disk Recorder
 *
 * See the README file for copyright information and how to reach the author.
 *
 * $Id$
 */

#include <vdr/plugin.h>
#include <vdr/thread.h>
#include <vdr/status.h>
#include <vdr/device.h>
#include <vdr/player.h>
#include "vdrmanagerthread.h"

#define ANDROVDR_PORT		6420

const char *VERSION        = "0.1";
static const char *DESCRIPTION    = "VDR-Manager support plugin";

class cPluginAndroVdr : public cPlugin {
private:
  // Add any member variables or functions you may need here.
  cAndroVdrThread * Thread;
  int port;
  const char * password;
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::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!
}

cOsdObject * cPluginAndroVdr::MainMenuAction(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)";
}

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::Initialize(void)
{
  // Initialize any background activities the plugin shall perform.

  // Start any background activities the plugin shall perform.
  Thread = new cAndroVdrThread(port, password);

  return Thread != NULL;
}

bool cPluginAndroVdr::Start(void)
{
  Thread->Start();

  return true;
}

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.
}

VDRPLUGINCREATOR(cPluginAndroVdr); // Don't touch this!