/////////////////////////////////////////////////////////////////////////// // // 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. // /////////////////////////////////////////////////////////////////////////// /** @name Optional Tool APIs * The Linux SDK for UPnP Devices contains some additional, optional * utility APIs that can be helpful in writing applications using the * SDK. These additional APIs can be compiled out in order to save code * size in the SDK. Refer to the README for details. */ //@{ #ifndef UPNP_TOOLS_H #define UPNP_TOOLS_H #include "upnp.h" // Function declarations only if tools compiled into the library #if UPNP_HAVE_TOOLS #ifdef __cplusplus extern "C" { #endif /** {\bf UpnpResolveURL} combines a base URL and a relative URL into * a single absolute URL. The memory for {\bf AbsURL} needs to be * allocated by the caller and must be large enough to hold the * {\bf BaseURL} and {\bf RelURL} combined. * * @return [int] An integer representing one of the following: * \begin{itemize} * \item {\tt UPNP_E_SUCCESS}: The operation completed successfully. * \item {\tt UPNP_E_INVALID_PARAM}: {\bf RelURL} is {\tt NULL}. * \item {\tt UPNP_E_INVALID_URL}: The {\bf BaseURL} / {\bf RelURL} * combination does not form a valid URL. * \item {\tt UPNP_E_OUTOF_MEMORY}: Insufficient resources exist to * complete this operation. * \end{itemize} */ EXPORT_SPEC int UpnpResolveURL( IN const char * BaseURL, /** The base URL to combine. */ IN const char * RelURL, /** The relative URL to {\bf BaseURL}. */ OUT char * AbsURL /** A pointer to a buffer to store the absolute URL. */ ); /** {\bf UpnpMakeAction} creates an action request packet based on its input * parameters (status variable name and value pair). Any number of input * parameters can be passed to this function but every input variable name * should have a matching value argument. * * @return [IXML_Document*] The action node of {\bf Upnp_Document} type or * {\tt NULL} if the operation failed. */ EXPORT_SPEC IXML_Document* UpnpMakeAction( IN const char * ActionName, /** The action name. */ IN const char * ServType, /** The service type. */ IN int NumArg, /** Number of argument pairs to be passed. */ IN const char * Arg, /** Status variable name and value pair. */ IN ... /* Other status variable name and value pairs. */ ); /** {\bf UpnpAddToAction} creates an action request packet based on its input * parameters (status variable name and value pair). This API is specially * suitable inside a loop to add any number input parameters into an existing * action. If no action document exists in the beginning then a * {\bf Upnp_Document} variable initialized with {\tt NULL} should be passed * as a parameter. * * @return [int] An integer representing one of the following: * \begin{itemize} * \item {\tt UPNP_E_SUCCESS}: The operation completed successfully. * \item {\tt UPNP_E_INVALID_PARAM}: One or more of the parameters * are invalid. * \item {\tt UPNP_E_OUTOF_MEMORY}: Insufficient resources exist to * complete this operation. * \end{itemize} */ EXPORT_SPEC int UpnpAddToAction( IN OUT IXML_Document ** ActionDoc, /** A pointer to store the action document node. */ IN const char * ActionName, /** The action name. */ IN const char * ServType, /** The service type. */ IN const char * ArgName, /** The status variable name. */ IN const char * ArgVal /** The status variable value. */ ); /** {\bf UpnpMakeActionResponse} creates an action response packet based * on its output parameters (status variable name and value pair). Any * number of input parameters can be passed to this function but every output * variable name should have a matching value argument. * * @return [IXML_Document*] The action node of {\bf Upnp_Document} type or * {\tt NULL} if the operation failed. */ EXPORT_SPEC IXML_Document* UpnpMakeActionResponse( IN const char * ActionName, /** The action name. */ IN const char * ServType, /** The service type. */ IN int NumArg, /** The number of argument pairs passed. */ IN const char * Arg, /** The status variable name and value pair. */ IN ... /* Other status variable name and value pairs. */ ); /** {\bf UpnpAddToActionResponse} creates an action response * packet based on its output parameters (status variable name * and value pair). This API is especially suitable inside * a loop to add any number of input parameters into an existing action * response. If no action document exists in the beginning, a * {\bf Upnp_Document} variable initialized with {\tt NULL} should be passed * as a parameter. * * @return [int] An integer representing one of the following: * \begin{itemize} * \item {\tt UPNP_E_SUCCESS}: The operation completed successfully. * \item {\tt UPNP_E_INVALID_PARAM}: One or more of the parameters * are invalid. * \item {\tt UPNP_E_OUTOF_MEMORY}: Insufficient resources exist to * complete this operation. * \end{itemize} */ EXPORT_SPEC int UpnpAddToActionResponse( IN OUT IXML_Document ** ActionResponse, /** Pointer to a document to store the action document node. */ IN const char * ActionName, /** The action name. */ IN const char * ServType, /** The service type. */ IN const char * ArgName, /** The status variable name. */ IN const char * ArgVal /** The status variable value. */ ); /** {\bf UpnpAddToPropertySet} can be used when an application needs to * transfer the status of many variables at once. It can be used * (inside a loop) to add some extra status variables into an existing * property set. If the application does not already have a property * set document, the application should create a variable initialized * with {\tt NULL} and pass that as the first parameter. * * @return [int] An integer representing one of the following: * \begin{itemize} * \item {\tt UPNP_E_SUCCESS}: The operation completed successfully. * \item {\tt UPNP_E_INVALID_PARAM}: One or more of the parameters * are invalid. * \item {\tt UPNP_E_OUTOF_MEMORY}: Insufficient resources exist to * complete this operation. * \end{itemize} * */ EXPORT_SPEC int UpnpAddToPropertySet( IN OUT IXML_Document **PropSet, /** A pointer to the document containing the property set document node. */ IN const char * ArgName, /** The status variable name. */ IN const char * ArgVal /** The status variable value. */ ); /** {\bf UpnpCreatePropertySet} creates a property set * message packet. Any number of input parameters can be passed * to this function but every input variable name should have * a matching value input argument. * * @return [IXML_Document*] {\tt NULL} on failure, or the property-set * document node. * */ EXPORT_SPEC IXML_Document* UpnpCreatePropertySet( IN int NumArg, /** The number of argument pairs passed. */ IN const char* Arg, /** The status variable name and value pair. */ IN ... ); /** {\bf UpnpGetErrorMessage} converts an SDK error code into a * string error message suitable for display. The memory returned * from this function should NOT be freed. * * @return [char*] An ASCII text string representation of the error message * associated with the error code. */ EXPORT_SPEC const char * UpnpGetErrorMessage( int errorcode /** The SDK error code to convert. */ ); //@} #ifdef __cplusplus } #endif #endif // UPNP_HAVE_TOOLS #endif // UPNP_TOOLS_H