コード例 #1
0
ファイル: cmediaserver_device.c プロジェクト: jink2005/mupnpc
bool mupnp_upnpav_dms_queryreceived(mUpnpStateVariable *statVar)
{
	mUpnpDevice *dev;
	mUpnpService *service;
	mUpnpAvServer *dms;
	CG_UPNPAV_STATEVARIABLE_LISTNER userQueryListener;

	service = mupnp_statevariable_getservice(statVar);
	if (!service)
		return false;

	dev = (mUpnpDevice *)mupnp_service_getdevice(service);
	if (!dev)
		return false;

	dms = (mUpnpAvServer *)mupnp_device_getuserdata(dev);
	if (!dms)
		return false;

	userQueryListener = mupnp_upnpav_dms_getquerylistener(dms);
	if (userQueryListener) {
		if (userQueryListener(statVar))
			return true;
	}

	if (mupnp_streq(mupnp_service_getservicetype(service), CG_UPNPAV_DMS_CONTENTDIRECTORY_SERVICE_TYPE))
		return mupnp_upnpav_dms_condir_queryreceived(statVar);

	return false;
}
コード例 #2
0
void mupnp_service_ssdpmessagereceived(mUpnpService *service, mUpnpSSDPPacket *ssdpPkt)
{
    mUpnpDevice *dev;
    const char *ssdpST;
    const char *serviceType;
    char serviceNT[MUPNP_SSDP_HEADER_LINE_MAXSIZE];
    char serviceUSN[MUPNP_SSDP_HEADER_LINE_MAXSIZE];

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

    ssdpST = mupnp_ssdp_packet_getst(ssdpPkt);
    if (mupnp_strlen(ssdpST) <= 0)
        return;

    dev = mupnp_service_getdevice(service);

    mupnp_service_getnotifyservicetypent(service, serviceNT, sizeof(serviceNT));
    mupnp_service_getnotifyservicetypeusn(service, serviceUSN, sizeof(serviceUSN));

    if (mupnp_st_isalldevice(ssdpST) == true) {
        mupnp_device_postsearchresponse(dev, ssdpPkt, serviceNT, serviceUSN);
    }
    else if (mupnp_st_isurn(ssdpST)  == true) {
        serviceType = mupnp_service_getservicetype(service);
        if (mupnp_streq(ssdpST, serviceType) == true)
            mupnp_device_postsearchresponse(dev, ssdpPkt, serviceType, serviceUSN);
    }

    mupnp_log_debug_l4("Leaving...\n");
}
コード例 #3
0
ファイル: ccontentdir_service.c プロジェクト: jink2005/mupnpc
bool mupnp_upnpav_dms_condir_queryreceived(mUpnpStateVariable *var)
{
	mUpnpAvServer *dms;
	mUpnpDevice *dev;
	char *varName;
	char intBuf[MUPNP_STRING_INTEGER_BUFLEN];

	varName = (char*)mupnp_statevariable_getname(var);
	if (mupnp_strlen(varName) <= 0)
		return false;

	dev = (mUpnpDevice *)mupnp_service_getdevice(mupnp_statevariable_getservice(var));
	if (!dev)
		return false;

	dms = (mUpnpAvServer *)mupnp_device_getuserdata(dev);
	if (!dms)
		return false;

	/* Sort Capabilities */
	if (mupnp_streq(varName, CG_UPNPAV_DMS_CONTENTDIRECTORY_SORT_CAPABILITIES)) {
		mupnp_statevariable_setvalue(var, "");
		return true;
	}

	/* Search Capabilities */
	if (mupnp_streq(varName, CG_UPNPAV_DMS_CONTENTDIRECTORY_SEARCH_CAPABILITIES)) {
		mupnp_statevariable_setvalue(var, "");
		return true;
	}

	/* System Update ID */
	if (mupnp_streq(varName, CG_UPNPAV_DMS_CONTENTDIRECTORY_SYSTEM_UPDATE_ID)) {
		mupnp_statevariable_setvalue(var, mupnp_int2str(mupnp_upnpav_dms_condir_getsystemupdateid(dms), intBuf, MUPNP_STRING_INTEGER_BUFLEN));
		return true;
	}

	return false;
}
コード例 #4
0
bool mupnp_upnpav_dmr_queryreceived(mUpnpStateVariable *statVar)
{
	mUpnpDevice *dev;
	mUpnpService *service;
	mUpnpAvRenderer *dmr;
	CG_UPNPAV_STATEVARIABLE_LISTNER userQueryListener;

	service = mupnp_statevariable_getservice(statVar);
	if (!service)
		return false;

	dev = (mUpnpDevice *)mupnp_service_getdevice(service);
	if (!dev)
		return false;

	dmr = (mUpnpAvRenderer *)mupnp_device_getuserdata(dev);
	if (!dmr)
		return false;

	userQueryListener = mupnp_upnpav_dmr_getquerylistener(dmr);
	if (userQueryListener) {
		if (userQueryListener(statVar))
			return true;
	}

	if (mupnp_streq(mupnp_service_getservicetype(service), CG_UPNPAV_DMR_AVTRANSPORT_SERVICE_TYPE))
		return mupnp_upnpav_dmr_avtransport_queryreceived(statVar);

	if (mupnp_streq(mupnp_service_getservicetype(service), CG_UPNPAV_DMR_RENDERINGCONTROL_SERVICE_TYPE))
		return mupnp_upnpav_dmr_renderingctrl_queryreceived(statVar);

	if (mupnp_streq(mupnp_service_getservicetype(service), CG_UPNPAV_DMR_CONNECTIONMANAGER_SERVICE_TYPE))
		return mupnp_upnpav_dmr_conmgr_queryreceived(statVar);

	return false;
}
コード例 #5
0
bool mupnp_upnpav_dmr_actionreceived(mUpnpAction *action)
{
	mUpnpDevice *dev;
	mUpnpService *service;
	mUpnpAvRenderer *dmr;
	CG_UPNPAV_ACTION_LISTNER userActionListener;

	service = mupnp_action_getservice(action);
	if (!service)
		return false;

	dev = (mUpnpDevice *)mupnp_service_getdevice(service);
	if (!dev)
		return false;

	dmr = (mUpnpAvRenderer *)mupnp_device_getuserdata(dev);
	if (!dmr)
		return false;

	userActionListener = mupnp_upnpav_dmr_getactionlistener(dmr);
	if (userActionListener) {
		if (userActionListener(action))
			return true;
	}

	if (mupnp_streq(mupnp_service_getservicetype(service), CG_UPNPAV_DMR_AVTRANSPORT_SERVICE_TYPE))
		return mupnp_upnpav_dmr_avtransport_actionreceived(action);

	if (mupnp_streq(mupnp_service_getservicetype(service), CG_UPNPAV_DMR_RENDERINGCONTROL_SERVICE_TYPE))
		return mupnp_upnpav_dmr_renderingctrl_actionreceived(action);

	if (mupnp_streq(mupnp_service_getservicetype(service), CG_UPNPAV_DMR_CONNECTIONMANAGER_SERVICE_TYPE))
		return mupnp_upnpav_dmr_conmgr_actionreceived(action);

	return false;
}
コード例 #6
0
ファイル: cmediaserver_device.c プロジェクト: jink2005/mupnpc
bool mupnp_upnpav_dms_actionreceived(mUpnpAction *action)
{
	mUpnpDevice *dev;
	mUpnpService *service;
	mUpnpAvServer *dms;
	CG_UPNPAV_ACTION_LISTNER userActionListener;

	service = mupnp_action_getservice(action);
	if (!service)
		return false;

	dev = (mUpnpDevice *)mupnp_service_getdevice(service);
	if (!dev)
		return false;

	dms = (mUpnpAvServer *)mupnp_device_getuserdata(dev);
	if (!dms)
		return false;

	userActionListener = mupnp_upnpav_dms_getactionlistener(dms);
	if (userActionListener) {
		if (userActionListener(action))
			return true;
	}

	if (mupnp_streq(mupnp_service_getservicetype(service), CG_UPNPAV_DMS_CONTENTDIRECTORY_SERVICE_TYPE))
		return mupnp_upnpav_dms_condir_actionreceived(action);

	if (mupnp_streq(mupnp_service_getservicetype(service), CG_UPNPAV_DMS_MEDIARECEIVER_SERVICE_TYPE))
		return mupnp_upnpav_dms_medrec_actionreceived(action);

	if (mupnp_streq(mupnp_service_getservicetype(service), CG_UPNPAV_DMS_CONNECTIONMANAGER_SERVICE_TYPE))
		return mupnp_upnpav_dms_conmgr_actionreceived(action);

	return false;
}
コード例 #7
0
ファイル: ccontentdir_service.c プロジェクト: jink2005/mupnpc
bool mupnp_upnpav_dms_condir_actionreceived(mUpnpAction *action)
{
	mUpnpAvServer *dms;
	mUpnpDevice *dev;
	char *actionName;
	mUpnpArgument *arg;
	char *argValue;
	char intBuf[MUPNP_STRING_INTEGER_BUFLEN];

	actionName = (char*)mupnp_action_getname(action);
	if (mupnp_strlen(actionName) <= 0)
		return false;

	dev = (mUpnpDevice *)mupnp_service_getdevice(mupnp_action_getservice(action));
	if (!dev)
		return false;

	dms = (mUpnpAvServer *)mupnp_device_getuserdata(dev);
	if (!dms)
		return false;

	/* Browse */
	if (mupnp_streq(actionName, CG_UPNPAV_DMS_CONTENTDIRECTORY_BROWSE))
	{
		arg = mupnp_action_getargumentbyname(action, CG_UPNPAV_DMS_CONTENTDIRECTORY_BROWSE_BROWSE_FLAG);
		if (!arg)
			return false;
		argValue = mupnp_argument_getvalue(arg);
		if (mupnp_streq(argValue, CG_UPNPAV_DMS_CONTENTDIRECTORY_BROWSE_BROWSE_METADATA))
			return mupnp_upnpav_dms_condir_browsemetadata(dms, action);
		if (mupnp_streq(argValue, CG_UPNPAV_DMS_CONTENTDIRECTORY_BROWSE_BROWSE_DIRECT_CHILDREN))
			return mupnp_upnpav_dms_condir_browsedirectchildren(dms, action);
		return false;
	}

	/* Search */
	if (mupnp_streq(actionName, CG_UPNPAV_DMS_CONTENTDIRECTORY_SEARCH)) {
		/* Not Implemented */
		return false;
	}

	/* Sort Capabilities */
	if (mupnp_streq(actionName, CG_UPNPAV_DMS_CONTENTDIRECTORY_GET_SORT_CAPABILITIES)) {
		arg = mupnp_action_getargumentbyname(action, CG_UPNPAV_DMS_CONTENTDIRECTORY_SORT_CAPS);
		if (!arg)
			return false;
		mupnp_argument_setvalue(arg, "");
		return true;
	}

	/* Search Capabilities */
	if (mupnp_streq(actionName, CG_UPNPAV_DMS_CONTENTDIRECTORY_GET_SEARCH_CAPABILITIES)) {
		arg = mupnp_action_getargumentbyname(action, CG_UPNPAV_DMS_CONTENTDIRECTORY_SEARCH_CAPS);
		if (!arg)
			return false;
		mupnp_argument_setvalue(arg, "");
		return true;
	}

	/* System Update ID */
	if (mupnp_streq(actionName, CG_UPNPAV_DMS_CONTENTDIRECTORY_GET_SYSTEM_UPDATE_ID)) {
		arg = mupnp_action_getargumentbyname(action, CG_UPNPAV_DMS_CONTENTDIRECTORY_ID);
		if (!arg)
			return false;
		mupnp_argument_setvalue(arg, mupnp_int2str(mupnp_upnpav_dms_condir_getsystemupdateid(dms), intBuf, MUPNP_STRING_INTEGER_BUFLEN));
		return true;
	}

	return false;
}