コード例 #1
0
ファイル: query_ctrl.c プロジェクト: Coramo/mupnp
bool mupnp_statevariable_performlistner(mUpnpStateVariable* statVar, mUpnpQueryRequest* queryReq)
{
  MUPNP_STATEVARIABLE_LISTNER listener;
  mUpnpQueryResponse* queryRes;
  mUpnpHttpRequest* queryReqHttpReq;
  mUpnpHttpResponse* queryResHttpRes;

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

  listener = mupnp_statevariable_getlistener(statVar);
  if (listener == NULL)
    return false;

  queryRes = mupnp_control_query_response_new();

  mupnp_statevariable_setstatuscode(statVar, MUPNP_STATUS_INVALID_ACTION);
  mupnp_statevariable_setstatusdescription(statVar, mupnp_status_code2string(MUPNP_STATUS_INVALID_ACTION));
  mupnp_statevariable_setvalue(statVar, "");

  if (listener(statVar) == true)
    mupnp_control_query_response_setresponse(queryRes, statVar);
  else
    mupnp_control_soap_response_setfaultresponse(mupnp_control_query_response_getsoapresponse(queryRes), mupnp_statevariable_getstatuscode(statVar), mupnp_statevariable_getstatusdescription(statVar));

  queryReqHttpReq = mupnp_soap_request_gethttprequest(mupnp_control_query_request_getsoaprequest(queryReq));
  queryResHttpRes = mupnp_soap_response_gethttpresponse(mupnp_control_query_response_getsoapresponse(queryRes));
  mupnp_http_request_postresponse(queryReqHttpReq, queryResHttpRes);

  mupnp_control_query_response_delete(queryRes);

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

  return true;
}
コード例 #2
0
void mupnp_upnpav_dmr_setcurrentconnectionids(mUpnpAvRenderer *dmr, char *value)
{
	mUpnpService *service;
	mUpnpStateVariable *stateVar;

	service = mupnp_device_getservicebyexacttype(dmr->dev, CG_UPNPAV_DMR_CONNECTIONMANAGER_SERVICE_TYPE);
	stateVar = mupnp_service_getstatevariablebyname(service, CG_UPNPAV_DMR_CONNECTIONMANAGER_CURRENTCONNECTIONIDS);
	mupnp_statevariable_setvalue(stateVar, value);
}
コード例 #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
ファイル: clock_device.c プロジェクト: dwlinux/mupnpc
BOOL upnp_clock_queryreceived(mUpnpStateVariable *statVar)
{
	const char *varName;
	mUpnpTime currTime;
	char sysTimeStr[SYSTEM_TIME_BUF_LEN];
	
	varName = mupnp_statevariable_getname(statVar);
	if (strcmp("Time", varName) == 0) {
		currTime = mupnp_getcurrentsystemtime();
		GetSystemTimeString(currTime, sysTimeStr);
		mupnp_statevariable_setvalue(statVar, sysTimeStr);
		return TRUE;
	}
	
	return FALSE;
}
コード例 #5
0
ファイル: ccontentdir_service.c プロジェクト: jink2005/mupnpc
void mupnp_upnpav_dms_condir_setsystemupdateid(mUpnpAvServer *dms, int id)
{
	mUpnpDevice *dev;
	mUpnpStateVariable *var;
	char intBuf[MUPNP_STRING_INTEGER_BUFLEN];

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

	var = mupnp_device_getstatevariablebyname(dev, CG_UPNPAV_DMS_CONTENTDIRECTORY_SYSTEM_UPDATE_ID);
	if (!var)
		return;

	mupnp_statevariable_setvalue(var, mupnp_int2str(id, intBuf, MUPNP_STRING_INTEGER_BUFLEN));
}
コード例 #6
0
ファイル: query_ctrl.c プロジェクト: Coramo/mupnp
bool mupnp_statevariable_post(mUpnpStateVariable* statVar)
{
  mUpnpQueryRequest* queryReq;
  mUpnpQueryResponse* queryRes;
  bool querySuccess;

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

  queryReq = mupnp_control_query_request_new();

  mupnp_control_query_request_setstatevariable(queryReq, statVar);
  queryRes = mupnp_control_query_request_post(queryReq);
  querySuccess = mupnp_control_query_response_issuccessful(queryRes);
  mupnp_statevariable_setvalue(statVar, (querySuccess == true) ? mupnp_control_query_response_getreturnvalue(queryRes) : "");

  mupnp_control_query_request_delete(queryReq);

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

  return querySuccess;
}
コード例 #7
0
ファイル: clock_device.c プロジェクト: dwlinux/mupnpc
void upnp_clock_device_update(mUpnpDevice *clockDev)
{
	mUpnpTime currTime;
	mUpnpService *timeService;
	mUpnpStateVariable *timeState;
	char sysTimeStr[SYSTEM_TIME_BUF_LEN];
	
	timeService = mupnp_device_getservicebyexacttype(clockDev, "urn:schemas-upnp-org:service:timer:1");
	if (timeService == NULL)
		return;

	timeState = mupnp_service_getstatevariablebyname(timeService, "Time");
	if (timeState == NULL)
		return;
	
	currTime = mupnp_getcurrentsystemtime();
	GetSystemTimeString(currTime, sysTimeStr);
	mupnp_statevariable_setvalue(timeState, sysTimeStr);
	
	printf("%s\n", sysTimeStr);
}
コード例 #8
0
/**
 * When an event is received, update also the associated service's
 * state table to include the evented state variable.
 *
 * @param service The service, whose state table to update
 * @param prop The evented property from which to update
 */
void mupnp_controlpoint_updatestatetablefromproperty(mUpnpService* service,
    mUpnpProperty* prop)
{
  mUpnpStateVariable* var = NULL;

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

  if (service == NULL || prop == NULL) {
    return;
  }

  var = mupnp_service_getstatevariablebyname(service,
      mupnp_property_getname(prop));

  if (var) {
    mupnp_statevariable_setvalue(var,
        mupnp_property_getvalue(prop));
  }

  mupnp_log_debug_l4("Leaving...\n");
}
コード例 #9
0
void mupnp_upnpav_dmr_addprotocolinfo(mUpnpAvRenderer *dmr, mUpnpAvProtocolInfo *info)
{
	mUpnpString *protocolInfos;
	mUpnpAvProtocolInfo *protocolInfo;
	mUpnpService *service;
	mUpnpStateVariable *stateVar;

	mupnp_upnpav_protocolinfolist_add(dmr->protocolInfoList, info);

	protocolInfos = mupnp_string_new();
	for (protocolInfo = mupnp_upnpav_dmr_getprotocolinfos(dmr); protocolInfo; protocolInfo = mupnp_upnpav_protocolinfo_next(protocolInfo)) {
		if (0 < mupnp_string_length(protocolInfos))
			mupnp_string_addvalue(protocolInfos, ",");
		mupnp_string_addvalue(protocolInfos, mupnp_upnpav_protocolinfo_getstring(protocolInfo));
	}

	service = mupnp_device_getservicebyexacttype(dmr->dev, CG_UPNPAV_DMR_CONNECTIONMANAGER_SERVICE_TYPE);
	stateVar = mupnp_service_getstatevariablebyname(service, CG_UPNPAV_DMR_CONNECTIONMANAGER_SINKPROTOCOLINFO);
	mupnp_statevariable_setvalue(stateVar, mupnp_string_getvalue(protocolInfos));

	mupnp_string_delete(protocolInfos);
}