libUPnP  1.14.19
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 <signal.h>
48 #include <stdio.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 
135 #define IP_MODE_IPV4 1
136 #define IP_MODE_IPV6_LLA 2
137 #define IP_MODE_IPV6_ULA_GUA 3
138 
149 typedef int (*upnp_action)(
151  IXML_Document *request,
153  IXML_Document **out,
155  const char **errorString);
156 
158 struct TvService
159 {
161  char UDN[NAME_SIZE];
163  char ServiceId[NAME_SIZE];
165  char ServiceType[NAME_SIZE];
167  const char *VariableName[TV_MAXVARS];
176 };
177 
179 extern struct TvService tv_service_table[];
180 
183 
188 extern ithread_mutex_t TVDevMutex;
189 
196 int SetActionTable(
198  int serviceType,
200  struct TvService *out);
201 
212  char *DescDocURL);
213 
222  const UpnpSubscriptionRequest *sr_event);
223 
232  UpnpStateVarRequest *cgv_event);
233 
242  UpnpActionRequest *ca_event);
243 
257  Upnp_EventType,
259  const void *Event,
261  void *Cookie);
262 
274  unsigned int service,
278  int variable,
280  char *value);
281 
282 /* Control Service Actions */
283 
287 int TvDevicePowerOn(
289  IXML_Document *in,
291  IXML_Document **out,
293  const char **errorString);
294 
298 int TvDevicePowerOff(
300  IXML_Document *in,
302  IXML_Document **out,
304  const char **errorString);
305 
313  IXML_Document *in,
315  IXML_Document **out,
317  const char **errorString);
318 
324  IXML_Document *in,
326  IXML_Document **out,
328  const char **errorString);
329 
335  IXML_Document *in,
337  IXML_Document **out,
339  const char **errorString);
340 
348  IXML_Document *in,
350  IXML_Document **out,
352  const char **errorString);
353 
359  IXML_Document *in,
361  IXML_Document **out,
363  const char **errorString);
364 
370  IXML_Document *in,
372  IXML_Document **out,
374  const char **errorString);
375 
376 /*Picture Service Actions */
377 
383 int TvDeviceSetColor(
385  IXML_Document *in,
387  IXML_Document **out,
389  const char **errorString);
390 
396  IXML_Document *in,
398  IXML_Document **out,
400  const char **errorString);
401 
407  IXML_Document *in,
409  IXML_Document **out,
411  const char **errorString);
412 
418 int TvDeviceSetTint(
420  IXML_Document *in,
422  IXML_Document **out,
424  const char **errorString);
425 
431  IXML_Document *in,
433  IXML_Document **out,
435  const char **errorString);
436 
442  IXML_Document *in,
444  IXML_Document **out,
446  const char **errorString);
447 
455  IXML_Document *in,
457  IXML_Document **out,
459  const char **errorString);
460 
466  IXML_Document *in,
468  IXML_Document **out,
470  const char **errorString);
471 
477  IXML_Document *in,
479  IXML_Document **out,
481  const char **errorString);
482 
490  IXML_Document *in,
492  IXML_Document **out,
494  const char **errorString);
495 
501  IXML_Document *in,
503  IXML_Document **out,
505  const char **errorString);
506 
512  IXML_Document *in,
514  IXML_Document **out,
516  const char **errorString);
517 
522 int TvDeviceStart(
525  char *iface,
528  unsigned short port,
531  const char *desc_doc_name,
534  const char *web_dir_path,
537  int ip_mode,
539  print_string pfun,
541  int combo);
542 
546 int TvDeviceStop(void);
547 
554 void *TvDeviceCommandLoop(void *args);
555 
570 int device_main(int argc, char *argv[]);
571 
572 #ifdef __cplusplus
573 }
574 #endif
575 
580 #endif /* UPNP_TV_DEVICE_H */
int UpnpDevice_Handle
Returned when a device application registers with UpnpRegisterRootDevice, UpnpRegisterRootDevice2,...
Definition: upnp.h:439
int TvDeviceDecreaseVolume(IXML_Document *in, IXML_Document **out, const char **errorString)
Decrease the volume.
Definition: tv_device.c:835
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:1240
#define TV_MAXACTIONS
Definition: tv_device.h:130
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:619
int TvDeviceDecreaseContrast(IXML_Document *in, IXML_Document **out, const char **errorString)
Decrease the contrast.
Definition: tv_device.c:1234
int TvDeviceDecreaseColor(IXML_Document *in, IXML_Document **out, const char **errorString)
Decrease the color.
Definition: tv_device.c:946
int TvDeviceCallbackEventHandler(Upnp_EventType EventType, const void *Event, void *Cookie)
The callback handler registered with the SDK while registering root device.
Definition: tv_device.c:1359
int TvDevicePowerOff(IXML_Document *in, IXML_Document **out, const char **errorString)
Turn the power off.
Definition: tv_device.c:594
int TvDeviceHandleGetVarRequest(UpnpStateVarRequest *cgv_event)
Called during a get variable request callback.
Definition: tv_device.c:364
int TvDevicePowerOn(IXML_Document *in, IXML_Document **out, const char **errorString)
Turn the power on.
Definition: tv_device.c:568
#define TV_MAXVARS
Definition: tv_device.h:133
int SetActionTable(int serviceType, struct TvService *out)
Initializes the action table for the specified service.
Definition: tv_device.c:171
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:841
int TvDeviceDecreaseBrightness(IXML_Document *in, IXML_Document **out, const char **errorString)
Decrease brightnesss.
Definition: tv_device.c:1353
int TvDeviceIncreaseVolume(IXML_Document *in, IXML_Document **out, const char **errorString)
Increase the volume.
Definition: tv_device.c:829
int device_main(int argc, char *argv[])
Main entry point for tv device application.
Definition: tv_device.c:1569
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:149
int TvDeviceHandleSubscriptionRequest(const UpnpSubscriptionRequest *sr_event)
Called during a subscription request callback.
Definition: tv_device.c:308
struct TvService tv_service_table[]
Definition: tv_device.c:75
int TvDeviceIncreaseChannel(IXML_Document *in, IXML_Document **out, const char **errorString)
Increase the channel.
Definition: tv_device.c:717
int TvDeviceIncreaseContrast(IXML_Document *in, IXML_Document **out, const char **errorString)
Increase the contrast.
Definition: tv_device.c:1228
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...
Definition: tv_device.c:1121
UpnpDevice_Handle device_handle
Definition: tv_device.c:78
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:958
ithread_mutex_t TVDevMutex
Definition: tv_device.c:84
int TvDeviceStart(char *iface, unsigned short port, const char *desc_doc_name, const char *web_dir_path, int ip_mode, print_string pfun, int combo)
Initializes the UPnP Sdk, registers the device, and sends out advertisements.
Definition: tv_device.c:1397
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:507
int TvDeviceDecreaseTint(IXML_Document *in, IXML_Document **out, const char **errorString)
Decrease tint.
Definition: tv_device.c:1100
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 * TvDeviceCommandLoop(void *args)
Function that receives commands from the user at the command prompt during the lifetime of the device...
Definition: tv_device.c:1535
int TvDeviceDecreaseChannel(IXML_Document *in, IXML_Document **out, const char **errorString)
Decrease the channel.
Definition: tv_device.c:711
int TvDeviceIncreaseTint(IXML_Document *in, IXML_Document **out, const char **errorString)
Increase tint.
Definition: tv_device.c:1081
int TvDeviceIncreaseBrightness(IXML_Document *in, IXML_Document **out, const char **errorString)
Increase brightnesss.
Definition: tv_device.c:1347
int TvDeviceStop(void)
Stops the device. Uninitializes the sdk.
Definition: tv_device.c:1525
int TvDeviceIncreaseColor(IXML_Document *in, IXML_Document **out, const char **errorString)
Increase the color.
Definition: tv_device.c:952
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:723
int TvDeviceStateTableInit(char *DescDocURL)
Initialize the device state table for this TvDevice, pulling identifier info from the description Doc...
Definition: tv_device.c:226
int TvDeviceHandleActionRequest(UpnpActionRequest *ca_event)
Called during an action request callback.
Definition: tv_device.c:420
Definition: tv_device.h:159
int VariableCount
Definition: tv_device.h:175
char UDN[NAME_SIZE]
Definition: tv_device.h:161
upnp_action actions[12]
Definition: tv_device.h:173
const char * VariableName[4]
Definition: tv_device.h:167
char * VariableStrVal[4]
Definition: tv_device.h:169
char ServiceType[NAME_SIZE]
Definition: tv_device.h:165
const char * ActionNames[12]
Definition: tv_device.h:171
char ServiceId[NAME_SIZE]
Definition: tv_device.h:163
Data structure representing the DOM Document.
Definition: ixml.h:160
Definition: UpnpActionRequest.c:19
Definition: UpnpStateVarRequest.c:19
Definition: UpnpSubscriptionRequest.c:19