pupnp (libupnp) snapshot from SourceForge: git clone git://pupnp.git.sourceforge...
[igd2-for-linux:pandonghui1211s-igd2-for-linux.git] / pupnp_branch-1.6.x / upnp / sample / tvctrlpt / upnp_tv_ctrlpt.h
1 ///////////////////////////////////////////////////////////////////////////
2 //
3 // Copyright (c) 2000-2003 Intel Corporation 
4 // All rights reserved. 
5 //
6 // Redistribution and use in source and binary forms, with or without 
7 // modification, are permitted provided that the following conditions are met: 
8 //
9 // * Redistributions of source code must retain the above copyright notice, 
10 // this list of conditions and the following disclaimer. 
11 // * Redistributions in binary form must reproduce the above copyright notice, 
12 // this list of conditions and the following disclaimer in the documentation 
13 // and/or other materials provided with the distribution. 
14 // * Neither name of Intel Corporation nor the names of its contributors 
15 // may be used to endorse or promote products derived from this software 
16 // without specific prior written permission.
17 // 
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
19 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
20 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
21 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR 
22 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
23 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
24 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
25 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
26 // OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
27 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
28 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 //
30 ///////////////////////////////////////////////////////////////////////////
31
32 #ifndef UPNP_TV_CTRLPT_H
33 #define UPNP_TV_CTRLPT_H
34
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38
39 #include <stdio.h>
40
41 #include "ithread.h"
42 #ifndef WIN32
43 #include <unistd.h>
44 #endif
45 #include <stdarg.h>
46 #include <stdlib.h>
47 #include <signal.h>
48 #include <string.h>
49
50 #include "upnp.h"
51 #include "upnptools.h"
52 #include "sample_util.h"
53
54 #define TV_SERVICE_SERVCOUNT    2
55 #define TV_SERVICE_CONTROL              0
56 #define TV_SERVICE_PICTURE              1
57
58 #define TV_CONTROL_VARCOUNT             3
59 #define TV_CONTROL_POWER                0
60 #define TV_CONTROL_CHANNEL              1
61 #define TV_CONTROL_VOLUME               2
62
63 #define TV_PICTURE_VARCOUNT             4
64 #define TV_PICTURE_COLOR                0
65 #define TV_PICTURE_TINT                 1
66 #define TV_PICTURE_CONTRAST             2
67 #define TV_PICTURE_BRIGHTNESS   3
68
69 #define TV_MAX_VAL_LEN                  5
70
71 #define TV_SUCCESS                              0
72 #define TV_ERROR                                (-1)
73 #define TV_WARNING                              1
74
75 /* This should be the maximum VARCOUNT from above */
76 #define TV_MAXVARS                              TV_PICTURE_VARCOUNT
77
78 extern char TvDeviceType[];
79 extern char *TvServiceType[];
80 extern char *TvServiceName[];
81 extern char *TvVarName[TV_SERVICE_SERVCOUNT][TV_MAXVARS];
82 extern char TvVarCount[];
83
84 struct tv_service {
85     char ServiceId[NAME_SIZE];
86     char ServiceType[NAME_SIZE];
87     char *VariableStrVal[TV_MAXVARS];
88     char EventURL[NAME_SIZE];
89     char ControlURL[NAME_SIZE];
90     char SID[NAME_SIZE];
91 };
92
93 extern struct TvDeviceNode *GlobalDeviceList;
94
95 struct TvDevice {
96     char UDN[250];
97     char DescDocURL[250];
98     char FriendlyName[250];
99     char PresURL[250];
100     int  AdvrTimeOut;
101     struct tv_service TvService[TV_SERVICE_SERVCOUNT];
102 };
103
104 struct TvDeviceNode {
105     struct TvDevice device;
106     struct TvDeviceNode *next;
107 };
108
109 extern ithread_mutex_t DeviceListMutex;
110
111 extern UpnpClient_Handle ctrlpt_handle;
112
113 void    TvCtrlPointPrintHelp( void );
114 int             TvCtrlPointDeleteNode(struct TvDeviceNode*);
115 int             TvCtrlPointRemoveDevice(char*);
116 int             TvCtrlPointRemoveAll( void );
117 int             TvCtrlPointRefresh( void );
118
119
120 int             TvCtrlPointSendAction(int, int, char *, char **, char **, int);
121 int             TvCtrlPointSendActionNumericArg(int devnum, int service, char *actionName, char *paramName, int paramValue);
122 int             TvCtrlPointSendPowerOn(int devnum);
123 int             TvCtrlPointSendPowerOff(int devnum);
124 int             TvCtrlPointSendSetChannel(int, int);
125 int             TvCtrlPointSendSetVolume(int, int);
126 int             TvCtrlPointSendSetColor(int, int);
127 int             TvCtrlPointSendSetTint(int, int);
128 int             TvCtrlPointSendSetContrast(int, int);
129 int             TvCtrlPointSendSetBrightness(int, int);
130
131 int             TvCtrlPointGetVar(int, int, char*);
132 int             TvCtrlPointGetPower(int devnum);
133 int             TvCtrlPointGetChannel(int);
134 int             TvCtrlPointGetVolume(int);
135 int             TvCtrlPointGetColor(int);
136 int             TvCtrlPointGetTint(int);
137 int             TvCtrlPointGetContrast(int);
138 int             TvCtrlPointGetBrightness(int);
139
140 int             TvCtrlPointGetDevice(int, struct TvDeviceNode **);
141 int             TvCtrlPointPrintList( void );
142 int             TvCtrlPointPrintDevice(int);
143 void    TvCtrlPointAddDevice (IXML_Document *, char *, int); 
144 void    TvCtrlPointHandleGetVar(char *,char *,DOMString);
145 void    TvStateUpdate(char*,int, IXML_Document * , char **);
146 void    TvCtrlPointHandleEvent(Upnp_SID, int, IXML_Document *); 
147 void    TvCtrlPointHandleSubscribeUpdate(char *, Upnp_SID, int); 
148 int             TvCtrlPointCallbackEventHandler(Upnp_EventType, void *, void *);
149 void    TvCtrlPointVerifyTimeouts(int);
150 void    TvCtrlPointPrintCommands( void );
151 void*   TvCtrlPointCommandLoop( void* );
152 int             TvCtrlPointStart( print_string printFunctionPtr, state_update updateFunctionPtr );
153 int             TvCtrlPointStop( void );
154 int             TvCtrlPointProcessCommand( char *cmdline );
155
156 #ifdef __cplusplus
157 };
158 #endif
159
160 #endif //UPNP_TV_CTRLPT_H