Exemple #1
0
/**
 * Parse the service description from the service's SCPD URL. Do not call
 * this from user applications.
 * 
 * @param service The service in question
 * @return true if successful; otherwise false
 */
bool mupnp_controlpoint_parsescservicescpd(mUpnpService *service)
{
	mUpnpNetURL *scpdURL;
	bool scpdParseSuccess;
	
	mupnp_log_debug_l4("Entering...\n");

	scpdURL = mupnp_service_getscpdurl(service); 

	if ( NULL == scpdURL )		
		return false;
	
	mupnp_log_debug_s("SCPD URL: %s\n", mupnp_net_url_getrequest(scpdURL));
	scpdParseSuccess = mupnp_service_parsedescriptionurl(service, scpdURL);
	
	mupnp_net_url_delete(scpdURL);
	if (scpdParseSuccess == true)
		return true;

#if defined(MUPNP_USE_STDDCP)
	if (mupnp_service_hasstddcp(service)) {
		char *stdDCP = mupnp_service_getstddcp(service);
		scpdParseSuccess = mupnp_service_parsedescription(service, stdDCP, mupnp_strlen(stdDCP));
	}
#endif

	mupnp_log_debug_l4("Leaving...\n");

	return scpdParseSuccess;
}
bool mupnp_upnpav_dms_condir_init(mUpnpAvServer *dms)
{
	mUpnpDevice *dev;
	mUpnpService *service;
	mUpnpAction* action;

	dev = mupnp_upnpav_dms_getdevice(dms);
	if (!dev)
		return false;

	service = mupnp_device_getservicebytype(dev, CG_UPNPAV_DMS_CONTENTDIRECTORY_SERVICE_TYPE);
	if (!service)
		return false;

	if (mupnp_service_parsedescription(service, CG_UPNPAV_DMS_CONTENTDIRECTORY_SERVICE_DESCRIPTION, mupnp_strlen(CG_UPNPAV_DMS_CONTENTDIRECTORY_SERVICE_DESCRIPTION)) == false)
		return false;

	mupnp_service_setactionlistener(service, mupnp_upnpav_dms_condir_actionreceived);
	for (action=mupnp_service_getactions(service); action; action=mupnp_action_next(action))
		mupnp_action_setuserdata(action, dms);

	mupnp_upnpav_dms_condir_setsystemupdateid(dms, 1);


	return true;
}
Exemple #3
0
mUpnpDevice *upnp_clock_device_new()
{
	mUpnpDevice *clockDev;
	mUpnpService *timeService;
	 
	clockDev = mupnp_device_new();
	
	if (mupnp_device_parsedescription(clockDev, CLOCK_DEVICE_DESCRIPTION, strlen(CLOCK_DEVICE_DESCRIPTION)) == FALSE) {
		mupnp_device_delete(clockDev);
		return NULL;
	}

	timeService = mupnp_device_getservicebyexacttype(clockDev, "urn:schemas-upnp-org:service:timer:1");
	if (timeService == NULL) {
		mupnp_device_delete(clockDev);
		return NULL;
	}
	
	if (mupnp_service_parsedescription(timeService, CLOCK_SERVICE_DESCRIPTION, strlen(CLOCK_SERVICE_DESCRIPTION)) == FALSE) {
		mupnp_device_delete(clockDev);
		return NULL;
	}

	mupnp_device_setactionlistener(clockDev, upnp_clock_actionreceived);
	mupnp_device_setquerylistener(clockDev, upnp_clock_queryreceived);
	mupnp_device_sethttplistener(clockDev, upnp_clock_device_httprequestrecieved);

	return clockDev;
}
Exemple #4
0
RoundUpnpServer* round_upnp_server_new(void)
{
  RoundUpnpServer* server = (RoundUpnpServer*)malloc(sizeof(RoundUpnpServer));

  if (!server)
    return NULL;

  server->dev = mupnp_device_new();

  if (!server->dev) {
    round_upnp_server_delete(server);
    return NULL;
  }

  // Setup UPnP Device

  if (!mupnp_device_parsedescription(server->dev, ROUND_UPNP_SERVER_DEVICE_DESCRIPTION, strlen(ROUND_UPNP_SERVER_DEVICE_DESCRIPTION))) {
    mupnp_device_delete(server->dev);
    return NULL;
  }

  mUpnpService* upnpSrv = mupnp_device_getservicebyexacttype(server->dev, ROUND_UPNP_SERVICE_TYPE);
  if (upnpSrv == NULL) {
    mupnp_device_delete(server->dev);
    return NULL;
  }

  if (!mupnp_service_parsedescription(upnpSrv, ROUND_UPNP_SERVER_SERVICE_DESCRIPTION, strlen(ROUND_UPNP_SERVER_SERVICE_DESCRIPTION))) {
    mupnp_device_delete(server->dev);
    return NULL;
  }

  mupnp_device_setactionlistener(server->dev, round_upnp_server_actionreceived);
  mupnp_device_setquerylistener(server->dev, round_upnp_server_queryreceived);
  mupnp_device_sethttplistener(server->dev, round_upnp_server_httprequestrecieved);

  // Set Listener

  round_upnp_server_setrpcrequestlistener(server, NULL);

  return server;
}