📄 sample_util.h
字号:
/////////////////////////////////////////////////////////////////////////////// Copyright (c) 2000-2003 Intel Corporation // All rights reserved. //// Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: //// * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither name of Intel Corporation nor the names of its contributors // may be used to endorse or promote products derived from this software // without specific prior written permission.// // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY // OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE./////////////////////////////////////////////////////////////////////////////#ifndef SAMPLE_UTIL_H#define SAMPLE_UTIL_H#ifdef __cplusplusextern "C" {#endif#include <stdlib.h>#include <string.h>#include "upnptools.h"#include "ixml.h"//mutex to control displaying of eventsextern ithread_mutex_t display_mutex ;typedef enum { STATE_UPDATE = 0, DEVICE_ADDED =1, DEVICE_REMOVED=2, GET_VAR_COMPLETE=3} eventType;/******************************************************************************** * SampleUtil_GetElementValue * * Description: * Given a DOM node such as <Channel>11</Channel>, this routine * extracts the value (e.g., 11) from the node and returns it as * a string. The string must be freed by the caller using * free. * * Parameters: * node -- The DOM node from which to extract the value * ********************************************************************************/char * SampleUtil_GetElementValue(IN IXML_Element *element);/******************************************************************************** * SampleUtil_GetFirstServiceList * * Description: * Given a DOM node representing a UPnP Device Description Document, * this routine parses the document and finds the first service list * (i.e., the service list for the root device). The service list * is returned as a DOM node list. The NodeList must be freed using * NodeList_free. * * Parameters: * node -- The DOM node from which to extract the service list * ********************************************************************************/IXML_NodeList *SampleUtil_GetFirstServiceList(IN IXML_Document * doc); /******************************************************************************** * SampleUtil_GetFirstDocumentItem * * Description: * Given a document node, this routine searches for the first element * named by the input string item, and returns its value as a string. * String must be freed by caller using free. * Parameters: * doc -- The DOM document from which to extract the value * item -- The item to search for * ********************************************************************************/char * SampleUtil_GetFirstDocumentItem(IN IXML_Document *doc, IN const char *item); /******************************************************************************** * SampleUtil_GetFirstElementItem * * Description: * Given a DOM element, this routine searches for the first element * named by the input string item, and returns its value as a string. * The string must be freed using free. * Parameters: * node -- The DOM element from which to extract the value * item -- The item to search for * ********************************************************************************/char * SampleUtil_GetFirstElementItem(IN IXML_Element *element, IN const char *item); /******************************************************************************** * SampleUtil_PrintEventType * * Description: * Prints a callback event type as a string. * * Parameters: * S -- The callback event * ********************************************************************************/void SampleUtil_PrintEventType(IN Upnp_EventType S);/******************************************************************************** * SampleUtil_PrintEvent * * Description: * Prints callback event structure details. * * Parameters: * EventType -- The type of callback event * Event -- The callback event structure * ********************************************************************************/int SampleUtil_PrintEvent(IN Upnp_EventType EventType, IN void *Event);/******************************************************************************** * SampleUtil_FindAndParseService * * Description: * This routine finds the first occurance of a service in a DOM representation * of a description document and parses it. Note that this function currently * assumes that the eventURL and controlURL values in the service definitions * are full URLs. Relative URLs are not handled here. * * Parameters: * DescDoc -- The DOM description document * location -- The location of the description document * serviceSearchType -- The type of service to search for * serviceId -- OUT -- The service ID * eventURL -- OUT -- The event URL for the service * controlURL -- OUT -- The control URL for the service * ********************************************************************************/int SampleUtil_FindAndParseService (IN IXML_Document *DescDoc, IN char* location, IN char *serviceType, OUT char **serviceId, OUT char **eventURL, OUT char **controlURL);/******************************************************************************** * print_string * * Description: * Prototype for displaying strings. All printing done by the device, * control point, and sample util, ultimately use this to display strings * to the user. * * Parameters: * const char * string. * ********************************************************************************/typedef void (*print_string)(const char *string);//global print function used by sample utilextern print_string gPrintFun;/******************************************************************************** * state_update * * Description: * Prototype for passing back state changes * * Parameters: * const char * varName * const char * varValue * const char * UDN * int newDevice ********************************************************************************/typedef void (*state_update)( const char *varName, const char *varValue, const char *UDN, eventType type);//global state update function used by smaple utilextern state_update gStateUpdateFun;/******************************************************************************** * SampleUtil_Initialize * * Description: * Initializes the sample util. Must be called before any sample util * functions. May be called multiple times. * * Parameters: * print_function - print function to use in SampleUtil_Print * ********************************************************************************/int SampleUtil_Initialize(print_string print_function);/******************************************************************************** * SampleUtil_Finish * * Description: * Releases Resources held by sample util. * * Parameters: * ********************************************************************************/int SampleUtil_Finish(void);/******************************************************************************** * SampleUtil_Print * * Description: * Function emulating printf that ultimately calls the registered print * function with the formatted string. * * Parameters: * fmt - format (see printf) * . . . - variable number of args. (see printf) * ********************************************************************************/int SampleUtil_Print( char *fmt, ... );/******************************************************************************** * SampleUtil_RegisterUpdateFunction * * Description: * * Parameters: * ********************************************************************************/int SampleUtil_RegisterUpdateFunction( state_update update_function );/******************************************************************************** * SampleUtil_StateUpdate * * Description: * * Parameters: * ********************************************************************************/void SampleUtil_StateUpdate( const char *varName, const char *varValue, const char *UDN, eventType type);#ifdef __cplusplus};#endif#endif /* UPNPSDK_UTIL_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -