libUPnP  1.6.17
tv_device.h
Go to the documentation of this file.
1 #ifndef UPNP_TV_DEVICE_H
2 #define UPNP_TV_DEVICE_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 #include <stdio.h>
48 #include <signal.h>
49 
50 #ifdef __cplusplus
51 extern "C" {
52 #endif
53 
54 #include "sample_util.h"
55 
56 #include "ithread.h"
57 #include "upnp.h"
58 
59 #include <stdlib.h>
60 #include <string.h>
61 
63 #define MAX_COLOR 10
64 #define MIN_COLOR 1
65 
67 #define MAX_BRIGHTNESS 10
68 #define MIN_BRIGHTNESS 1
69 
71 #define POWER_ON 1
72 #define POWER_OFF 0
73 
75 #define MAX_TINT 10
76 #define MIN_TINT 1
77 
79 #define MAX_VOLUME 10
80 #define MIN_VOLUME 1
81 
83 #define MAX_CONTRAST 10
84 #define MIN_CONTRAST 1
85 
87 #define MAX_CHANNEL 100
88 #define MIN_CHANNEL 1
89 
91 #define TV_SERVICE_SERVCOUNT 2
92 
94 #define TV_SERVICE_CONTROL 0
95 
97 #define TV_SERVICE_PICTURE 1
98 
100 #define TV_CONTROL_VARCOUNT 3
101 
103 #define TV_CONTROL_POWER 0
104 
106 #define TV_CONTROL_CHANNEL 1
107 
109 #define TV_CONTROL_VOLUME 2
110 
112 #define TV_PICTURE_VARCOUNT 4
113 
115 #define TV_PICTURE_COLOR 0
116 
118 #define TV_PICTURE_TINT 1
119 
121 #define TV_PICTURE_CONTRAST 2
122 
124 #define TV_PICTURE_BRIGHTNESS 3
125 
127 #define TV_MAX_VAL_LEN 5
128 
130 #define TV_MAXACTIONS 12
131 
133 #define TV_MAXVARS TV_PICTURE_VARCOUNT
134 
145 typedef int (*upnp_action)(
147  IXML_Document *request,
149  IXML_Document **out,
151  const char **errorString);
152 
154 struct TvService {
156  char UDN[NAME_SIZE];
158  char ServiceId[NAME_SIZE];
160  char ServiceType[NAME_SIZE];
162  const char *VariableName[TV_MAXVARS];
171 };
172 
174 extern struct TvService tv_service_table[];
175 
178 
183 extern ithread_mutex_t TVDevMutex;
184 
191 int SetActionTable(
193  int serviceType,
195  struct TvService *out);
196 
207  char *DescDocURL);
208 
217  struct Upnp_Subscription_Request *sr_event);
218 
227  struct Upnp_State_Var_Request *cgv_event);
228 
237  struct Upnp_Action_Request *ca_event);
238 
252  Upnp_EventType,
254  void *Event,
256  void *Cookie);
257 
268  unsigned int service,
272  int variable,
274  char *value);
275 
276 /* Control Service Actions */
277 
281 int TvDevicePowerOn(
283  IXML_Document *in,
285  IXML_Document **out,
287  const char **errorString);
288 
292 int TvDevicePowerOff(
294  IXML_Document *in,
296  IXML_Document **out,
298  const char **errorString);
299 
307  IXML_Document *in,
309  IXML_Document **out,
311  const char **errorString);
312 
318  IXML_Document *in,
320  IXML_Document **out,
322  const char **errorString);
323 
329  IXML_Document *in,
331  IXML_Document **out,
333  const char **errorString);
334 
342  IXML_Document *in,
344  IXML_Document **out,
346  const char **errorString);
347 
353  IXML_Document *in,
355  IXML_Document **out,
357  const char **errorString);
358 
364  IXML_Document *in,
366  IXML_Document **out,
368  const char **errorString);
369 
370 /*Picture Service Actions */
371 
377 int TvDeviceSetColor(
379  IXML_Document *in,
381  IXML_Document **out,
383  const char **errorString);
384 
390  IXML_Document *in,
392  IXML_Document **out,
394  const char **errorString);
395 
401  IXML_Document *in,
403  IXML_Document **out,
405  const char **errorString);
406 
412 int TvDeviceSetTint(
414  IXML_Document *in,
416  IXML_Document **out,
418  const char **errorString);
419 
425  IXML_Document *in,
427  IXML_Document **out,
429  const char **errorString);
430 
436  IXML_Document *in,
438  IXML_Document **out,
440  const char **errorString);
441 
449  IXML_Document *in,
451  IXML_Document **out,
453  const char **errorString);
454 
460  IXML_Document *in,
462  IXML_Document **out,
464  const char **errorString);
465 
471  IXML_Document *in,
473  IXML_Document **out,
475  const char **errorString);
476 
484  IXML_Document *in,
486  IXML_Document **out,
488  const char **errorString);
489 
495  IXML_Document *in,
497  IXML_Document **out,
499  const char **errorString);
500 
506  IXML_Document *in,
508  IXML_Document **out,
510  const char **errorString);
511 
516 int TvDeviceStart(
519  char *ip_address,
522  unsigned short port,
525  const char *desc_doc_name,
528  const char *web_dir_path,
530  print_string pfun,
532  int combo);
533 
537 int TvDeviceStop(void);
538 
545 void *TvDeviceCommandLoop(void *args);
546 
561 int device_main(int argc, char *argv[]);
562 
563 #ifdef __cplusplus
564 }
565 #endif
566 
571 #endif /* UPNP_TV_DEVICE_H */
int TvDeviceDecreaseVolume(IXML_Document *in, IXML_Document **out, const char **errorString)
Decrease the volume.
Definition: tv_device.c:775
int TvDeviceSetContrast(IXML_Document *in, IXML_Document **out, const char **errorString)
Change the contrast, update the TvDevice picture service state table, and notify all subscribed contr...
int SetActionTable(int serviceType, struct TvService *out)
Initializes the action table for the specified service.
Definition: tv_device.c:164
UpnpDevice_Handle device_handle
Definition: tv_device.c:73
int TvDeviceDecreaseColor(IXML_Document *in, IXML_Document **out, const char **errorString)
Decrease the color.
Definition: tv_device.c:876
int TvDeviceSetTint(IXML_Document *in, IXML_Document **out, const char **errorString)
Change the tint, update the TvDevice picture service state table, and notify all subscribed control p...
Definition: tv_device.c:888
int TvDeviceSetBrightness(IXML_Document *in, IXML_Document **out, const char **errorString)
Change the brightness, update the TvDevice picture service state table, and notify all subscribed con...
Definition: tv_device.c:1151
char UDN[NAME_SIZE]
Definition: tv_device.h:156
int TvDeviceSetChannel(IXML_Document *in, IXML_Document **out, const char **errorString)
Change the channel, update the TvDevice control service state table, and notify all subscribed contro...
Definition: tv_device.c:571
int TvDeviceSetVolume(IXML_Document *in, IXML_Document **out, const char **errorString)
Change the volume, update the TvDevice control service state table, and notify all subscribed control...
Definition: tv_device.c:672
struct TvService tv_service_table[]
Definition: tv_device.c:70
int TvDeviceDecreaseTint(IXML_Document *in, IXML_Document **out, const char **errorString)
Decrease tint.
int(* upnp_action)(IXML_Document *request, IXML_Document **out, const char **errorString)
Prototype for all actions. For each action that a service implements, there is a corresponding functi...
Definition: tv_device.h:145
int TvDevicePowerOn(IXML_Document *in, IXML_Document **out, const char **errorString)
Turn the power on.
Definition: tv_device.c:526
#define TV_MAXVARS
Definition: tv_device.h:133
int TvDeviceHandleSubscriptionRequest(struct Upnp_Subscription_Request *sr_event)
Called during a subscription request callback.
Definition: tv_device.c:291
int TvDeviceIncreaseVolume(IXML_Document *in, IXML_Document **out, const char **errorString)
Increase the volume.
Definition: tv_device.c:769
int TvDeviceDecreaseBrightness(IXML_Document *in, IXML_Document **out, const char **errorString)
Decrease brightnesss.
Definition: tv_device.c:1255
char ServiceId[NAME_SIZE]
Definition: tv_device.h:158
int TvDeviceStart(char *ip_address, unsigned short port, const char *desc_doc_name, const char *web_dir_path, print_string pfun, int combo)
Initializes the UPnP Sdk, registers the device, and sends out advertisements.
Definition: tv_device.c:1302
Definition: upnp.h:606
Definition: upnp.h:790
int TvDeviceIncreaseTint(IXML_Document *in, IXML_Document **out, const char **errorString)
Increase tint.
int device_main(int argc, char *argv[])
Main entry point for tv device application.
Definition: tv_device.c:1417
#define TV_MAXACTIONS
Definition: tv_device.h:130
Definition: upnp.h:659
int TvDeviceIncreaseContrast(IXML_Document *in, IXML_Document **out, const char **errorString)
Increase the contrast.
Definition: tv_device.c:1139
int TvDeviceDecreaseChannel(IXML_Document *in, IXML_Document **out, const char **errorString)
Decrease the channel.
Definition: tv_device.c:660
int UpnpDevice_Handle
Returned when a device application registers with UpnpRegisterRootDevice, UpnpRegisterRootDevice2, UpnpRegisterRootDevice3 or UpnpRegisterRootDevice4.
Definition: upnp.h:435
int TvDeviceStateTableInit(char *DescDocURL)
Initialize the device state table for this TvDevice, pulling identifier info from the description Doc...
Definition: tv_device.c:219
int TvDeviceHandleActionRequest(struct Upnp_Action_Request *ca_event)
Called during an action request callback.
Definition: tv_device.c:393
const char * ActionNames[12]
Definition: tv_device.h:166
const char * VariableName[4]
Definition: tv_device.h:162
int TvDeviceSetServiceTableVar(unsigned int service, int variable, char *value)
Update the TvDevice service state table, and notify all subscribed control points of the updated stat...
Definition: tv_device.c:468
int TvDeviceIncreaseChannel(IXML_Document *in, IXML_Document **out, const char **errorString)
Increase the channel.
Definition: tv_device.c:666
int TvDeviceIncreaseBrightness(IXML_Document *in, IXML_Document **out, const char **errorString)
Increase brightnesss.
Definition: tv_device.c:1249
int TvDeviceCallbackEventHandler(Upnp_EventType EventType, void *Event, void *Cookie)
The callback handler registered with the SDK while registering root device.
Definition: tv_device.c:1261
int TvDevicePowerOff(IXML_Document *in, IXML_Document **out, const char **errorString)
Turn the power off.
Definition: tv_device.c:549
void * TvDeviceCommandLoop(void *args)
Function that receives commands from the user at the command prompt during the lifetime of the device...
Definition: tv_device.c:1389
Definition: tv_device.h:154
int TvDeviceIncreaseColor(IXML_Document *in, IXML_Document **out, const char **errorString)
Increase the color.
Definition: tv_device.c:882
int TvDeviceSetColor(IXML_Document *in, IXML_Document **out, const char **errorString)
Change the color, update the TvDevice picture service state table, and notify all subscribed control ...
Definition: tv_device.c:781
Data structure representing the DOM Document.
Definition: ixml.h:187
int TvDeviceDecreaseContrast(IXML_Document *in, IXML_Document **out, const char **errorString)
Decrease the contrast.
Definition: tv_device.c:1145
upnp_action actions[12]
Definition: tv_device.h:168
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
char * VariableStrVal[4]
Definition: tv_device.h:164
int TvDeviceHandleGetVarRequest(struct Upnp_State_Var_Request *cgv_event)
Called during a get variable request callback.
Definition: tv_device.c:348
int VariableCount
Definition: tv_device.h:170
int TvDeviceStop(void)
Stops the device. Uninitializes the sdk.
Definition: tv_device.c:1379
char ServiceType[NAME_SIZE]
Definition: tv_device.h:160
ithread_mutex_t TVDevMutex
Definition: tv_device.c:79