⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sample_util.c

📁 upnpsdk-1.0.4.tar.gz Intel UPnP SDK Source
💻 C
📖 第 1 页 / 共 2 页
字号:
 *   Event -- The callback event structure * ********************************************************************************/int SampleUtil_PrintEvent(Upnp_EventType EventType, 	       void *Event){    printf("\n\n\n======================================================================\n");    printf("----------------------------------------------------------------------\n");    SampleUtil_PrintEventType(EventType);      switch ( EventType) {      	/* SSDP Stuff */    case UPNP_DISCOVERY_ADVERTISEMENT_ALIVE:    case UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE:    case UPNP_DISCOVERY_SEARCH_RESULT:    {	struct Upnp_Discovery *d_event = (struct Upnp_Discovery * ) Event;        	printf("ErrCode     =  %d\n",d_event->ErrCode);	printf("Expires     =  %d\n",d_event->Expires);	printf("DeviceId    =  %s\n",d_event->DeviceId); 	printf("DeviceType  =  %s\n",d_event->DeviceType);	printf("ServiceType =  %s\n",d_event->ServiceType);	//printf("ServiceVer  =  %s\n",d_event->ServiceVer);	printf("Location    =  %s\n",d_event->Location);	printf("OS          =  %s\n",d_event->Os);	printf("Ext         =  %s\n",d_event->Ext);	    }    break;          case UPNP_DISCOVERY_SEARCH_TIMEOUT:	// Nothing to print out here	break;    /* SOAP Stuff */    case UPNP_CONTROL_ACTION_REQUEST:    {	struct Upnp_Action_Request *a_event = (struct Upnp_Action_Request * ) Event;	char *xmlbuff=NULL;        	printf("ErrCode     =  %d\n",a_event->ErrCode);	printf("ErrStr      =  %s\n",a_event->ErrStr); 	printf("ActionName  =  %s\n",a_event->ActionName); 	printf("UDN         =  %s\n",a_event->DevUDN);	printf("ServiceID   =  %s\n",a_event->ServiceID);	if (a_event->ActionRequest) {	    xmlbuff = UpnpNewPrintDocument(a_event->ActionRequest);	    if (xmlbuff) printf("ActRequest  =  %s\n",xmlbuff);	    if (xmlbuff) free(xmlbuff);	    xmlbuff=NULL;	} else {	    printf("ActRequest  =  (null)\n");	}	if (a_event->ActionResult) {	    xmlbuff = UpnpNewPrintDocument(a_event->ActionResult);	    if (xmlbuff) printf("ActResult   =  %s\n",xmlbuff);	    if (xmlbuff) free(xmlbuff);	    xmlbuff=NULL;	} else {	    printf("ActResult   =  (null)\n");	}    }    break;          case UPNP_CONTROL_ACTION_COMPLETE:    {	struct Upnp_Action_Complete *a_event = (struct Upnp_Action_Complete * ) Event;	char *xmlbuff=NULL;        	printf("ErrCode     =  %d\n",a_event->ErrCode);	printf("CtrlUrl     =  %s\n",a_event->CtrlUrl);	if (a_event->ActionRequest) {	    xmlbuff = UpnpNewPrintDocument(a_event->ActionRequest);	    if (xmlbuff) printf("ActRequest  =  %s\n",xmlbuff);	    if (xmlbuff) free(xmlbuff);	    xmlbuff=NULL;	} else {	    printf("ActRequest  =  (null)\n");	}	if (a_event->ActionResult) {	    xmlbuff = UpnpNewPrintDocument(a_event->ActionResult);	    if (xmlbuff) printf("ActResult   =  %s\n",xmlbuff);	    if (xmlbuff) free(xmlbuff);	    xmlbuff=NULL;	} else {	    printf("ActResult   =  (null)\n");	}    }    break;          case UPNP_CONTROL_GET_VAR_REQUEST:    {	struct Upnp_State_Var_Request *sv_event = (struct Upnp_State_Var_Request * ) Event;        	printf("ErrCode     =  %d\n",sv_event->ErrCode);	printf("ErrStr      =  %s\n",sv_event->ErrStr); 	printf("UDN         =  %s\n",sv_event->DevUDN); 	printf("ServiceID   =  %s\n",sv_event->ServiceID); 	printf("StateVarName=  %s\n",sv_event->StateVarName); 	printf("CurrentVal  =  %s\n",sv_event->CurrentVal);    }    break;          case UPNP_CONTROL_GET_VAR_COMPLETE:    {	struct Upnp_State_Var_Complete *sv_event = (struct Upnp_State_Var_Complete * ) Event;        	printf("ErrCode     =  %d\n",sv_event->ErrCode);	printf("CtrlUrl     =  %s\n",sv_event->CtrlUrl); 	printf("StateVarName=  %s\n",sv_event->StateVarName); 	printf("CurrentVal  =  %s\n",sv_event->CurrentVal);    }    break;          /* GENA Stuff */    case UPNP_EVENT_SUBSCRIPTION_REQUEST:    {	struct Upnp_Subscription_Request *sr_event = (struct Upnp_Subscription_Request * ) Event;        	printf("ServiceID   =  %s\n",sr_event->ServiceId);	printf("UDN         =  %s\n",sr_event->UDN); 	printf("SID         =  %s\n",sr_event->Sid);    }    break;          case UPNP_EVENT_RECEIVED:    {	struct Upnp_Event *e_event = (struct Upnp_Event * ) Event;	char *xmlbuff=NULL;        	printf("SID         =  %s\n",e_event->Sid);	printf("EventKey    =  %d\n",e_event->EventKey);	xmlbuff = UpnpNewPrintDocument(e_event->ChangedVariables);	printf("ChangedVars =  %s\n",xmlbuff);	free(xmlbuff);	xmlbuff=NULL;    }    break;    case UPNP_EVENT_RENEWAL_COMPLETE:    {	struct Upnp_Event_Subscribe *es_event = (struct Upnp_Event_Subscribe * ) Event;        	printf("SID         =  %s\n",es_event->Sid);	printf("ErrCode     =  %d\n",es_event->ErrCode);	printf("TimeOut     =  %d\n",es_event->TimeOut);    }    break;    case UPNP_EVENT_SUBSCRIBE_COMPLETE:    case UPNP_EVENT_UNSUBSCRIBE_COMPLETE:    {	struct Upnp_Event_Subscribe *es_event = (struct Upnp_Event_Subscribe * ) Event;        	printf("SID         =  %s\n",es_event->Sid);	printf("ErrCode     =  %d\n",es_event->ErrCode);	printf("PublisherURL=  %s\n",es_event->PublisherUrl);	printf("TimeOut     =  %d\n",es_event->TimeOut);    }    break;    case UPNP_EVENT_AUTORENEWAL_FAILED:    case UPNP_EVENT_SUBSCRIPTION_EXPIRED:    {	struct Upnp_Event_Subscribe *es_event = (struct Upnp_Event_Subscribe * ) Event;        	printf("SID         =  %s\n",es_event->Sid);	printf("ErrCode     =  %d\n",es_event->ErrCode);	printf("PublisherURL=  %s\n",es_event->PublisherUrl);	printf("TimeOut     =  %d\n",es_event->TimeOut);    }    break;    }    printf("----------------------------------------------------------------------\n");    printf("======================================================================\n\n\n\n");    return(0);}/******************************************************************************** * 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 (Upnp_Document DescDoc, char* location, char *serviceSearchType, char **serviceId, char **eventURL, char **controlURL) {    int i, length, found=0;    int ret;    char *serviceType=NULL;    char *baseURL=NULL;    char *base;    char *relcontrolURL=NULL, *releventURL=NULL;    Upnp_NodeList serviceList=NULL;    Upnp_Node service=NULL;      baseURL = SampleUtil_GetFirstDocumentItem(DescDoc, "URLBase");    if (baseURL) 	base = baseURL;    else	base = location;    serviceList = SampleUtil_GetFirstServiceList(DescDoc);    length = UpnpNodeList_getLength(serviceList);    for (i=0;i<length;i++) { 	service = UpnpNodeList_item(serviceList, i);	serviceType = SampleUtil_GetFirstElementItem(service, "serviceType");	if (strcmp(serviceType, serviceSearchType) == 0) {	    printf("Found service: %s\n", serviceType);	    *serviceId = SampleUtil_GetFirstElementItem(service, "serviceId");	    relcontrolURL = SampleUtil_GetFirstElementItem(service, "controlURL");	    releventURL = SampleUtil_GetFirstElementItem(service, "eventSubURL");	    	    *controlURL = malloc(strlen(base) + strlen(relcontrolURL) + 1);	    if (*controlURL) {		ret = UpnpResolveURL(base, relcontrolURL, *controlURL);		if (ret!=UPNP_E_SUCCESS)		    printf("Error generating controlURL from %s + %s\n", base, relcontrolURL);	    }			    *eventURL = malloc(strlen(base) + strlen(releventURL) + 1);	    if (*eventURL) {		ret = UpnpResolveURL(base, releventURL, *eventURL);		if (ret!=UPNP_E_SUCCESS)		    printf("Error generating eventURL from %s + %s\n", base, releventURL);	    }	    if (relcontrolURL) free(relcontrolURL);	    if (releventURL) free(releventURL);	    relcontrolURL = releventURL = NULL;			    found=1;	    break;	}	if (service) UpnpNode_free(service);	service=NULL;	if (serviceType) free(serviceType);	serviceType=NULL;    }    if (service) UpnpNode_free(service);    if (serviceType) free(serviceType);    if (serviceList) UpnpNodeList_free(serviceList);    if (baseURL) free(baseURL);    return(found);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -