libUPnP 1.8.4
tv_ctrlpt.h
Go to the documentation of this file.
1#ifndef UPNP_TV_CTRLPT_H
2#define UPNP_TV_CTRLPT_H
3
4/**************************************************************************
5 *
6 * Copyright (c) 2000-2003 Intel Corporation
7 * All rights reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions are met:
11 *
12 * - Redistributions of source code must retain the above copyright notice,
13 * this list of conditions and the following disclaimer.
14 * - Redistributions in binary form must reproduce the above copyright notice,
15 * this list of conditions and the following disclaimer in the documentation
16 * and/or other materials provided with the distribution.
17 * - Neither name of Intel Corporation nor the names of its contributors
18 * may be used to endorse or promote products derived from this software
19 * without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
25 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
26 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
27 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
28 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
29 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
30 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
31 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 *
33 **************************************************************************/
34
47#ifdef __cplusplus
48extern "C" {
49#endif
50
51#include "sample_util.h"
52
53#include "upnp.h"
54#include "UpnpString.h"
55#include "upnptools.h"
56
57#include <signal.h>
58#include <stdarg.h>
59#include <stdio.h>
60
61#define TV_SERVICE_SERVCOUNT 2
62#define TV_SERVICE_CONTROL 0
63#define TV_SERVICE_PICTURE 1
64
65#define TV_CONTROL_VARCOUNT 3
66#define TV_CONTROL_POWER 0
67#define TV_CONTROL_CHANNEL 1
68#define TV_CONTROL_VOLUME 2
69
70#define TV_PICTURE_VARCOUNT 4
71#define TV_PICTURE_COLOR 0
72#define TV_PICTURE_TINT 1
73#define TV_PICTURE_CONTRAST 2
74#define TV_PICTURE_BRIGHTNESS 3
75
76#define TV_MAX_VAL_LEN 5
77
78#define TV_SUCCESS 0
79#define TV_ERROR (-1)
80#define TV_WARNING 1
81
82/* This should be the maximum VARCOUNT from above */
83#define TV_MAXVARS TV_PICTURE_VARCOUNT
84
85extern const char *TvServiceName[];
86extern const char *TvVarName[TV_SERVICE_SERVCOUNT][TV_MAXVARS];
87extern char TvVarCount[];
88
89struct tv_service {
90 char ServiceId[NAME_SIZE];
91 char ServiceType[NAME_SIZE];
92 char *VariableStrVal[TV_MAXVARS];
93 char EventURL[NAME_SIZE];
94 char ControlURL[NAME_SIZE];
95 char SID[NAME_SIZE];
96};
97
98extern struct TvDeviceNode *GlobalDeviceList;
99
100struct TvDevice {
101 char UDN[250];
102 char DescDocURL[250];
103 char FriendlyName[250];
104 char PresURL[250];
105 int AdvrTimeOut;
107};
108
110 struct TvDevice device;
111 struct TvDeviceNode *next;
112};
113
114extern ithread_mutex_t DeviceListMutex;
115
116extern UpnpClient_Handle ctrlpt_handle;
117
118void TvCtrlPointPrintHelp(void);
119int TvCtrlPointDeleteNode(struct TvDeviceNode *);
120int TvCtrlPointRemoveDevice(const char *);
121int TvCtrlPointRemoveAll(void);
122int TvCtrlPointRefresh(void);
123
124int TvCtrlPointSendAction(int, int, const char *, const char **, char **, int);
125int TvCtrlPointSendActionNumericArg(int devnum, int service, const char *actionName, const char *paramName, int paramValue);
126int TvCtrlPointSendPowerOn(int devnum);
127int TvCtrlPointSendPowerOff(int devnum);
128int TvCtrlPointSendSetChannel(int, int);
129int TvCtrlPointSendSetVolume(int, int);
130int TvCtrlPointSendSetColor(int, int);
131int TvCtrlPointSendSetTint(int, int);
132int TvCtrlPointSendSetContrast(int, int);
133int TvCtrlPointSendSetBrightness(int, int);
134
135int TvCtrlPointGetVar(int, int, const char *);
136int TvCtrlPointGetPower(int devnum);
137int TvCtrlPointGetChannel(int);
138int TvCtrlPointGetVolume(int);
139int TvCtrlPointGetColor(int);
140int TvCtrlPointGetTint(int);
141int TvCtrlPointGetContrast(int);
142int TvCtrlPointGetBrightness(int);
143
144int TvCtrlPointGetDevice(int, struct TvDeviceNode **);
145int TvCtrlPointPrintList(void);
146int TvCtrlPointPrintDevice(int);
147void TvCtrlPointAddDevice(IXML_Document *, const char *, int);
148void TvCtrlPointHandleGetVar(const char *, const char *, const DOMString);
149
156void TvStateUpdate(
158 char *UDN,
160 int Service,
162 IXML_Document *ChangedVariables,
164 char **State);
165
166void TvCtrlPointHandleEvent(const char *, int, IXML_Document *);
167void TvCtrlPointHandleSubscribeUpdate(const char *, const Upnp_SID, int);
168int TvCtrlPointCallbackEventHandler(Upnp_EventType, const void *, void *);
169
181 int incr);
182
183void TvCtrlPointPrintCommands(void);
184void* TvCtrlPointCommandLoop(void *);
185int TvCtrlPointStart(print_string printFunctionPtr, state_update updateFunctionPtr, int combo);
186int TvCtrlPointStop(void);
187int TvCtrlPointProcessCommand(char *cmdline);
188
193
197void TvCtrlPointPrintLongHelp(void);
198
202void TvCtrlPointPrintCommands(void);
203
209void *TvCtrlPointCommandLoop(void *args);
210
214int TvCtrlPointProcessCommand(char *cmdline);
215
216#ifdef __cplusplus
217};
218#endif
219
220
225#endif /* UPNP_TV_CTRLPT_H */
UpnpString object declaration.
char Upnp_SID[44]
Holds the subscription identifier for a subscription between a client and a device.
Definition upnp.h:445
int UpnpClient_Handle
Returned when a control point application registers with UpnpRegisterClient.
Definition upnp.h:426
int TvCtrlPointStart(print_string printFunctionPtr, state_update updateFunctionPtr, int combo)
Call this function to initialize the UPnP library and start the TV Control Point. This function creat...
Definition tv_ctrlpt.c:1216
void TvCtrlPointVerifyTimeouts(int incr)
Checks the advertisement each device in the global device list.
Definition tv_ctrlpt.c:1144
#define TV_MAXVARS
Definition tv_ctrlpt.h:83
#define TV_SERVICE_SERVCOUNT
Definition tv_ctrlpt.h:61
ithread_mutex_t DeviceListMutex
Definition tv_ctrlpt.c:53
void * TvCtrlPointCommandLoop(void *args)
Function that receives commands from the user at the command prompt during the lifetime of the device...
Definition tv_ctrlpt.c:1458
void TvCtrlPointPrintCommands(void)
Definition tv_ctrlpt.c:1445
void TvCtrlPointPrintShortHelp(void)
Print help info for this application.
Definition tv_ctrlpt.c:1283
const char * TvVarName[2][4]
Definition tv_ctrlpt.c:67
const char * TvServiceName[]
Definition tv_ctrlpt.c:61
void TvStateUpdate(char *UDN, int Service, IXML_Document *ChangedVariables, char **State)
Update a Tv state table. Called when an event is received.
Definition tv_ctrlpt.c:811
void(* state_update)(const char *varName, const char *varValue, const char *UDN, eventType type)
Prototype for passing back state changes.
Definition sample_util.h:179
void(* print_string)(const char *string,...)
Prototype for displaying strings. All printing done by the device, control point, and sample util,...
Definition sample_util.h:162
void TvCtrlPointPrintLongHelp(void)
Print long help info for this application.
Definition tv_ctrlpt.c:1307
struct TvDeviceNode * GlobalDeviceList
Definition tv_ctrlpt.c:82
#define DOMString
The type of DOM strings.
Definition ixml.h:59
Definition tv_ctrlpt.h:109
Definition tv_ctrlpt.h:100
Definition tv_device.h:154
Data structure representing the DOM Document.
Definition ixml.h:198
Definition tv_ctrlpt.h:89