Example #1
0
/**
 * Do an M-SEARCH to look for devices in the network.
 *
 * @param ctrlPoint The control point in question
 * @param target The Search Target parameter (ex. "ssdp:all")
 */
bool mupnp_controlpoint_search(mUpnpControlPoint *ctrlPoint, const char *target)
{
	mUpnpSSDPRequest *ssdpReq;
	mUpnpSSDPResponseServerList *ssdpResServerList;
	int i = 0;
	bool retval = false;
	
	mupnp_log_debug_l4("Entering...\n");

	ssdpReq = mupnp_ssdprequest_new();
	mupnp_ssdprequest_setmethod(ssdpReq, MUPNP_HTTP_MSEARCH);
	mupnp_ssdprequest_setst(ssdpReq, target);
	mupnp_ssdprequest_setmx(ssdpReq, mupnp_controlpoint_getssdpsearchmx(ctrlPoint));
	mupnp_ssdprequest_setman(ssdpReq, MUPNP_MAN_DISCOVER);
	
	mupnp_log_debug("Announcing %d times.\n", mupnp_ssdp_getannouncecount());
	mupnp_ssdprequest_print(ssdpReq);
	
	for (i = 0; i < mupnp_ssdp_getannouncecount(); i++)
	{
		ssdpResServerList = mupnp_controlpoint_getssdpresponseserverlist(ctrlPoint);
		retval = ( mupnp_ssdpresponse_serverlist_post(ssdpResServerList, ssdpReq ) || retval );
		mupnp_wait(MUPNP_CONTROLPOINT_SSDP_MIN_DELAY);
	}
	
	mupnp_ssdprequest_delete(ssdpReq);

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

	return retval;
}
Example #2
0
MBEG
#else
int main(int argc, char* argv[])
#endif
{
  mUpnpControlPoint* ctrlPoint;

  ctrlPoint = mupnp_controlpoint_new();
  if (!mupnp_controlpoint_start(ctrlPoint)) {
    printf("Couldn't start this control point !!");
    exit(1);
  }

  mupnp_controlpoint_search(ctrlPoint, MUPNP_ST_ROOT_DEVICE);

  mupnp_sleep(mupnp_controlpoint_getssdpsearchmx(ctrlPoint) * 1000);

  PrintDMSInfos(ctrlPoint);

  mupnp_controlpoint_stop(ctrlPoint);
  mupnp_controlpoint_delete(ctrlPoint);

  return (0);
}