Example #1
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;
}
Example #2
0
void mupnp_controlpoint_removedevicebyssdppacket(mUpnpControlPoint *ctrlPoint, mUpnpSSDPPacket *ssdpPkt)
{
	const char *usn;
	char udn[MUPNP_UDN_LEN_MAX];
	mUpnpDevice *dev;
	MUPNP_DEVICE_LISTENER listener = mupnp_controlpoint_getdevicelistener(ctrlPoint);
	
	mupnp_log_debug_l4("Entering...\n");

	usn = mupnp_ssdp_packet_getusn(ssdpPkt);
	mupnp_usn_getudn(usn, udn, sizeof(udn));
	
	mupnp_controlpoint_lock(ctrlPoint);
	
	dev = mupnp_controlpoint_getdevicebyudn(ctrlPoint, udn);

	if (dev == NULL) {
		mupnp_controlpoint_unlock(ctrlPoint);
		return;
	}
	
	if (listener != NULL)
	{
		mupnp_controlpoint_unlock(ctrlPoint);
		listener(ctrlPoint, udn, mUpnpDeviceStatusRemoved);
		mupnp_controlpoint_lock(ctrlPoint);
	}
	
	mupnp_device_delete(dev);
	
	mupnp_controlpoint_unlock(ctrlPoint);

	mupnp_log_debug_l4("Leaving...\n");
}
Example #3
0
static mUpnpDevice *mupnp_controlpoint_createdevicefromssdkpacket(mUpnpSSDPPacket *ssdpPkt)
{
	const char *location;
	mUpnpNetURL *url;
	mUpnpDevice *dev;
	bool parseSuccess;
	
	mupnp_log_debug_l4("Entering...\n");

	location = mupnp_ssdp_packet_getlocation(ssdpPkt);
	if (mupnp_strlen(location) <= 0)
		return NULL;
			
	dev = mupnp_device_new();
	
	url = mupnp_net_url_new();
	mupnp_net_url_set(url, location);
	parseSuccess =  mupnp_device_parsedescriptionurl(dev, url);
    if (parseSuccess) {
        mupnp_device_sethttpport(dev, mupnp_net_url_getport(url));
    }
	mupnp_net_url_delete(url);
	
	if (parseSuccess == false) {
		mupnp_device_delete(dev);
		return NULL;
	}

	mupnp_device_setssdppacket(dev, ssdpPkt);

#ifndef MUPNP_OPTIMIZED_CP_MODE
	if (mupnp_controlpoint_parseservicesfordevice(dev, ssdpPkt) == false)
	{
		mupnp_device_delete(dev);
		return NULL;
	}
#endif
	
	mupnp_log_debug_l4("Leaving...\n");

	return dev;
}
Example #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;
}
Example #5
0
bool round_upnp_server_delete(RoundUpnpServer* server)
{
  if (!server)
    return false;

  round_upnp_server_stop(server);

  mupnp_device_delete(server->dev);

  free(server);

  return true;
}
Example #6
0
void mupnp_upnpav_dmr_delete(mUpnpAvRenderer *dmr)
{
	if (dmr == NULL)
		return;

	if (dmr->mutex)
		mupnp_mutex_delete(dmr->mutex);

	if (dmr->protocolInfoList)
		mupnp_upnpav_protocolinfolist_delete(dmr->protocolInfoList);

	mupnp_device_delete(dmr->dev);

	free(dmr);
}
Example #7
0
void mupnp_upnpav_dms_delete(mUpnpAvServer *dms)
{
	if (dms == NULL)
		return;

	if (dms->rootContent)
		mupnp_upnpav_content_delete(dms->rootContent);

	if (dms->mutex)
		mupnp_mutex_delete(dms->mutex);

	if (dms->protocolInfoList)
		mupnp_upnpav_protocolinfolist_delete(dms->protocolInfoList);

	if (dms->networkInterfaceList)
		mupnp_net_interfacelist_delete(dms->networkInterfaceList);

	mupnp_device_delete(dms->dev);

	free(dms);
}
Example #8
0
void ExitApp()
{
	mupnp_device_stop(clockDev);
	mupnp_device_delete(clockDev);
}
Example #9
0
mUpnpAvRenderer *mupnp_upnpav_dmr_new()
{
	mUpnpAvRenderer *dmr;
	char *lastChange;

	dmr = (mUpnpAvRenderer *)malloc(sizeof(mUpnpAvRenderer));

	dmr->dev = mupnp_device_new();
	if (!dmr->dev) {
		free(dmr);
		return NULL;
	}

	if (mupnp_device_parsedescription(dmr->dev, CG_UPNPAV_DMR_DEVICE_DESCRIPTION, mupnp_strlen(CG_UPNPAV_DMR_DEVICE_DESCRIPTION)) == false) {
		mupnp_device_delete(dmr->dev);
		free(dmr);
		return NULL;
	}

	if (mupnp_upnpav_dmr_conmgr_init(dmr) == false) {
		mupnp_device_delete(dmr->dev);
		free(dmr);
		return NULL;
	}

	if (mupnp_upnpav_dmr_renderingctrl_init(dmr) == false) {
		mupnp_device_delete(dmr->dev);
		free(dmr);
		return NULL;
	}

	if (mupnp_upnpav_dmr_avtransport_init(dmr) == false) {
		mupnp_device_delete(dmr->dev);
		free(dmr);
		return NULL;
	}

	dmr->mutex = mupnp_mutex_new();
	if (!dmr->mutex) {
		mupnp_upnpav_dmr_delete(dmr);
		return NULL;
	}

	mupnp_device_setactionlistener(dmr->dev, mupnp_upnpav_dmr_actionreceived);
	mupnp_device_setquerylistener(dmr->dev, mupnp_upnpav_dmr_queryreceived);
	mupnp_device_sethttplistener(dmr->dev, mupnp_upnpav_dmr_device_httprequestrecieved);

	mupnp_upnpav_dmr_setactionlistener(dmr, NULL);
	mupnp_upnpav_dmr_setquerylistener(dmr, NULL);
	mupnp_upnpav_dmr_sethttplistener(dmr, NULL);

	mupnp_device_setuserdata(dmr->dev, dmr);
	mupnp_device_updateudn(dmr->dev);

	dmr->protocolInfoList = mupnp_upnpav_protocolinfolist_new();

	mupnp_upnpav_dmr_setavtransportlastchange(dmr,  "&lt;Event xmlns = &quot;urn:schemas-upnp-org:metadata-1-0/AVT/&quot;/&gt;");

	mupnp_upnpav_dmr_setsourceprotocolinfo(dmr, "");
	mupnp_upnpav_dmr_setcurrentconnectionids(dmr, "0");

	lastChange = "&lt;Event xmlns = &quot;urn:schemas-upnp-org:metadata-1-0/RCS/&quot;&gt;"
	"&lt;InstanceID val=&quot;0&quot;&gt;"
	"&lt;Volume val=&quot;100&quot; channel=&quot;RF&quot;/&gt;"
	"&lt;Volume val=&quot;100&quot; channel=&quot;LF&quot;/&gt;"
	"&lt;/InstanceID&gt;"
	"&lt;/Event&gt;";

	mupnp_upnpav_dmr_setrenderingcontrollastchange(dmr, lastChange);

	return dmr;
}
Example #10
0
mUpnpAvServer *mupnp_upnpav_dms_new()
{
	mUpnpAvServer *dms;

	dms = (mUpnpAvServer *)malloc(sizeof(mUpnpAvServer));

	dms->dev = mupnp_device_new();
	if (!dms->dev) {
		free(dms);
		return NULL;
	}

	if (mupnp_device_parsedescription(dms->dev, CG_UPNPAV_DMS_DEVICE_DESCRIPTION, mupnp_strlen(CG_UPNPAV_DMS_DEVICE_DESCRIPTION)) == false) {
		mupnp_device_delete(dms->dev);
		free(dms);
		return NULL;
	}

	if (mupnp_upnpav_dms_conmgr_init(dms) == false) {
		mupnp_device_delete(dms->dev);
		free(dms);
		return NULL;
	}

	if (mupnp_upnpav_dms_condir_init(dms) == false) {
		mupnp_device_delete(dms->dev);
		free(dms);
		return NULL;
	}

	if (mupnp_upnpav_dms_medrec_init(dms) == false) {
		mupnp_device_delete(dms->dev);
		free(dms);
		return NULL;
	}

	dms->rootContent = mupnp_upnpav_content_new();
	mupnp_upnpav_content_settype(dms->rootContent, CG_UPNPAV_CONTENT_CONTAINER);
    mupnp_upnpav_content_settitle(dms->rootContent, CG_UPNPAV_ROOT_CONTENT_TITLE);
	mupnp_upnpav_content_setid(dms->rootContent, CG_UPNPAV_ROOT_CONTENT_ID);
	mupnp_upnpav_content_setparentid(dms->rootContent, CG_UPNPAV_ROOT_CONTENT_PARENTID);

	if (!dms->rootContent) {
		mupnp_upnpav_dms_delete(dms);
		return NULL;
	}

	dms->mutex = mupnp_mutex_new();
	if (!dms->mutex) {
		mupnp_upnpav_dms_delete(dms);
		return NULL;
	}

	dms->networkInterfaceList = mupnp_net_interfacelist_new();
	if (!dms->networkInterfaceList) {
		mupnp_upnpav_dms_delete(dms);
		return NULL;
	}

	mupnp_device_setactionlistener(dms->dev, mupnp_upnpav_dms_actionreceived);
	mupnp_device_setquerylistener(dms->dev, mupnp_upnpav_dms_queryreceived);
	mupnp_device_sethttplistener(dms->dev, mupnp_upnpav_dms_device_httprequestrecieved);

	mupnp_upnpav_dms_setactionlistener(dms, NULL);
	mupnp_upnpav_dms_setquerylistener(dms, NULL);
	mupnp_upnpav_dms_sethttplistener(dms, NULL);

	mupnp_device_setuserdata(dms->dev, dms);
	mupnp_device_updateudn(dms->dev);

	dms->protocolInfoList = mupnp_upnpav_protocolinfolist_new();

	return dms;
}