61 #define EXTERN_C extern "C" 73 #define XML_VERSION "<?xml version='1.0' encoding='ISO-8859-1' ?>\n" 74 #define XML_PROPERTYSET_HEADER \ 75 "<e:propertyset xmlns:e=\"urn:schemas-upnp-org:event-1-0\">\n" 78 #define UNABLE_MEMORY "HTTP/1.1 500 Internal Server Error\r\n\r\n" 79 #define UNABLE_SERVICE_UNKNOWN "HTTP/1.1 404 Not Found\r\n\r\n" 80 #define UNABLE_SERVICE_NOT_ACCEPT "HTTP/1.1 503 Service Not Available\r\n\r\n" 83 #define NOT_IMPLEMENTED "HTTP/1.1 501 Not Implemented\r\n\r\n" 84 #define BAD_REQUEST "HTTP/1.1 400 Bad Request\r\n\r\n" 85 #define INVALID_NT BAD_CALLBACK 86 #define BAD_CALLBACK "HTTP/1.1 412 Precondition Failed\r\n\r\n" 87 #define HTTP_OK_CRLF "HTTP/1.1 200 OK\r\n\r\n" 88 #define HTTP_OK_STR "HTTP/1.1 200 OK\r\n" 89 #define INVALID_SID BAD_CALLBACK 90 #define MISSING_SID BAD_CALLBACK 91 #define MAX_CONTENT_LENGTH 20 92 #define MAX_SECONDS 10 94 #define MAX_PORT_SIZE 10 97 #define GENA_E_BAD_RESPONSE UPNP_E_BAD_RESPONSE 98 #define GENA_E_BAD_SERVICE UPNP_E_INVALID_SERVICE 99 #define GENA_E_SUBSCRIPTION_UNACCEPTED UPNP_E_SUBSCRIBE_UNACCEPTED 100 #define GENA_E_BAD_SID UPNP_E_INVALID_SID 101 #define GENA_E_UNSUBSCRIBE_UNACCEPTED UPNP_E_UNSUBSCRIBE_UNACCEPTED 102 #define GENA_E_NOTIFY_UNACCEPTED UPNP_E_NOTIFY_UNACCEPTED 103 #define GENA_E_NOTIFY_UNACCEPTED_REMOVE_SUB -9 104 #define GENA_E_BAD_HANDLE UPNP_E_INVALID_HANDLE 108 #define XML_SUCCESS UPNP_E_SUCCESS 109 #define GENA_SUCCESS UPNP_E_SUCCESS 112 #define CALLBACK_SUCCESS 0 113 #define DEFAULT_TIMEOUT 1801 122 #define SubscribeLock() \ 123 UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, \ 124 "Trying Subscribe Lock"); \ 125 ithread_mutex_lock(&GlobalClientSubscribeMutex); \ 126 UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, \ 133 #define SubscribeUnlock() \ 134 UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, \ 135 "Trying Subscribe UnLock"); \ 136 ithread_mutex_unlock(&GlobalClientSubscribeMutex); \ 137 UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, \ 151 int *reference_count;
181 #ifdef INCLUDE_CLIENT_APIS 207 #ifdef INCLUDE_CLIENT_APIS 225 #ifdef INCLUDE_CLIENT_APIS 242 #ifdef INCLUDE_DEVICE_APIS 259 #ifdef INCLUDE_CLIENT_APIS 279 #ifdef INCLUDE_DEVICE_APIS 304 #ifdef INCLUDE_DEVICE_APIS 325 #ifdef INCLUDE_DEVICE_APIS 354 #ifdef INCLUDE_DEVICE_APIS int genaRenewSubscription(UpnpClient_Handle client_handle, const UpnpString *in_sid, int *TimeOut)
Renews a SID.
Definition: gena_ctrlpt.c:598
int UpnpClient_Handle
Returned when a control point application registers with UpnpRegisterClient.
Definition: upnp.h:426
void error_respond(SOCKINFO *info, int error_code, http_message_t *hmsg)
Sends an error message to the control point in the case of incorrect GENA requests.
int genaSubscribe(UpnpClient_Handle client_handle, const UpnpString *PublisherURL, int *TimeOut, UpnpString *out_sid)
This function subscribes to a PublisherURL (also mentioned as EventURL in some places).
Definition: gena_ctrlpt.c:509
Definition: httpparser.h:179
struct NOTIFY_THREAD_STRUCT notify_thread_struct
int genaUnSubscribe(UpnpClient_Handle client_handle, const UpnpString *in_sid)
Unsubscribes a SID.
Definition: gena_ctrlpt.c:457
int genaInitNotify(UpnpDevice_Handle device_handle, char *UDN, char *servId, char **VarNames, char **VarValues, int var_count, const Upnp_SID sid)
Sends the intial state table dump to newly subscribed control point.
Definition: gena_device.c:624
UpnpString object declaration.
int genaUnregisterClient(UpnpClient_Handle client_handle)
Unsubcribes all the outstanding subscriptions and cleans the subscription list.
Definition: gena_ctrlpt.c:411
void genaCallback(http_parser_t *parser, http_message_t *request, SOCKINFO *info)
This is the callback function called by the miniserver to handle incoming GENA requests.
int UpnpDevice_Handle
Returned when a device application registers with UpnpRegisterRootDevice, UpnpRegisterRootDevice2, UpnpRegisterRootDevice3 or UpnpRegisterRootDevice4.
Definition: upnp.h:436
int genaInitNotifyExt(UpnpDevice_Handle device_handle, char *UDN, char *servId, IXML_Document *PropSet, const Upnp_SID sid)
Similar to the genaInitNofity. The only difference is that it takes the xml document for the state ta...
Definition: gena_device.c:666
ithread_mutex_t GlobalClientSubscribeMutex
Definition: upnpapi.c:105
#define DOMString
The type of DOM strings.
Definition: ixml.h:59
int genaNotifyAll(UpnpDevice_Handle device_handle, char *UDN, char *servId, char **VarNames, char **VarValues, int var_count)
Sends a notification to all the subscribed control points.
Definition: gena_device.c:927
int genaUnregisterDevice(UpnpDevice_Handle device_handle)
Cleans the service table of the device.
Definition: gena_device.c:66
Definition: httpparser.h:213
Data structure representing the DOM Document.
Definition: ixml.h:197
struct s_UpnpString UpnpString
Type of the string objects inside libupnp.
Definition: UpnpString.h:38
char Upnp_SID[44]
Holds the subscription identifier for a subscription between a client and a device.
Definition: upnp.h:445
int genaNotifyAllExt(UpnpDevice_Handle device_handle, char *UDN, char *servId, IXML_Document *PropSet)
Sends a notification to all the subscribed control points.
Definition: gena_device.c:891