-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathplugin.c
121 lines (104 loc) · 3.22 KB
/
plugin.c
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
/*
* powermate plugin for VDR
*
* plugin.c - main plugin class
*
* Copyright (C) 2003 Andreas Regel <[email protected]>
*
* This code is distributed under the terms and conditions of the
* GNU GENERAL PUBLIC LICENSE. See the file COPYING for details.
*/
#include <getopt.h>
#include "powermate.h"
#include "setup.h"
#include <vdr/plugin.h>
static const char *VERSION = "0.0.5";
static const char *DESCRIPTION = trNOOP("Controls VDR through a Griffin PowerMate");
static const char *MAINMENUENTRY = NULL;
class cPluginPowermate : public cPlugin
{
private:
// Add any member variables or functions you may need here.
public:
cPluginPowermate(void);
virtual ~cPluginPowermate();
virtual const char *Version(void) { return VERSION; }
virtual const char *Description(void) { return tr(DESCRIPTION); }
virtual const char *CommandLineHelp(void);
virtual bool ProcessArgs(int argc, char *argv[]);
virtual bool Initialize(void);
virtual bool Start(void);
virtual void Housekeeping(void);
virtual const char *MainMenuEntry(void) { return MAINMENUENTRY; }
virtual cOsdObject *MainMenuAction(void);
virtual cMenuSetupPage *SetupMenu(void);
virtual bool SetupParse(const char *Name, const char *Value);
};
cPluginPowermate::cPluginPowermate(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!
}
cPluginPowermate::~cPluginPowermate()
{
// Clean up after yourself!
delete PowerMate;
}
const char *cPluginPowermate::CommandLineHelp(void)
{
// Return a string that describes all known command line options.
return " -d DEV, --device=DEV use DEV as the PowerMate device (default is /dev/input/event0)\n";
}
bool cPluginPowermate::ProcessArgs(int argc, char *argv[])
{
// Implement command line argument processing here if applicable.
static struct option long_options[] = {
{ "device", required_argument, NULL, 'd' },
{ NULL }
};
int c;
strcpy(PowerMateSetup.device, "/dev/input/event0");
while ((c = getopt_long(argc, argv, "d:", long_options, NULL)) != -1)
{
switch (c)
{
case 'd':
strcpy(PowerMateSetup.device, optarg);
break;
default:
return false;
}
}
return true;
}
bool cPluginPowermate::Initialize(void)
{
// Initialize any background activities the plugin shall perform.
return true;
}
bool cPluginPowermate::Start(void)
{
// Start any background activities the plugin shall perform.
PowerMate = new cPowerMate();
return true;
}
void cPluginPowermate::Housekeeping(void)
{
// Perform any cleanup or other regular tasks.
}
cOsdObject *cPluginPowermate::MainMenuAction(void)
{
// Perform the action when selected from the main VDR menu.
return NULL;
}
cMenuSetupPage *cPluginPowermate::SetupMenu(void)
{
// Return a setup menu in case the plugin supports one.
return new cPowerMateSetupPage();
}
bool cPluginPowermate::SetupParse(const char *Name, const char *Value)
{
return PowerMateSetup.Parse(Name, Value);
}
VDRPLUGINCREATOR(cPluginPowermate); // Don't touch this!