Esempio n. 1
0
bool round_finder_stop(RoundFinder* finder)
{
  if (!finder)
    return false;

  return mupnp_controlpoint_stop(finder->cp);
}
Esempio n. 2
0
/**
 * Destroy the given control point
 *
 * @param ctrlPoint The control point struct to destroy
 */
void mupnp_controlpoint_delete(mUpnpControlPoint *ctrlPoint)
{
	mupnp_log_debug_l4("Entering...\n");

	mupnp_controlpoint_stop(ctrlPoint);
	
	/* Delete cached interfaces */
	mupnp_net_interfacelist_delete(ctrlPoint->ifCache);
	
	/* Delete expiration handlers */
	mupnp_thread_delete(ctrlPoint->expThread);
	mupnp_mutex_delete(ctrlPoint->expMutex);
	mupnp_cond_delete(ctrlPoint->expCond);
	
	/* Delete others */
	mupnp_mutex_delete(ctrlPoint->mutex);
	mupnp_xml_nodelist_delete(ctrlPoint->deviceRootNodeList);
	mupnp_devicelist_delete(ctrlPoint->deviceList);
	mupnp_ssdp_serverlist_delete(ctrlPoint->ssdpServerList);
	mupnp_ssdpresponse_serverlist_delete(ctrlPoint->ssdpResServerList);
	mupnp_http_serverlist_delete(ctrlPoint->httpServerList);
	mupnp_string_delete(ctrlPoint->httpEventURI);
	mupnp_eventlistenerlist_delete(ctrlPoint->eventListeners);	

#ifdef MUPNP_HTTP_USE_PERSISTENT_CONNECTIONS	
	mupnp_http_persistentconnection_clear();
#endif
	free(ctrlPoint);

	mupnp_log_debug_l4("Leaving...\n");
}
Esempio n. 3
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);
}
Esempio n. 4
0
/**
 * Activate the control point. Starts listening for SSDP messages etc.
 * You must call this function before you can actually use a control point.
 *
 * @param ctrlPoint The control point to start
 *
 * @return true if successful; otherwise false
 *
 */
bool mupnp_controlpoint_start(mUpnpControlPoint *ctrlPoint)
{
	mUpnpHttpServerList *httpServerList;
	MUPNP_HTTP_LISTENER httpListener;
	int httpEventPort;
	mUpnpSSDPServerList *ssdpServerList;
	mUpnpSSDPResponseServerList *ssdpResServerList;
	int ssdpResPort;
	int ssdpMaxResPort;
	
	mupnp_log_debug_l4("Entering...\n");

	mupnp_controlpoint_stop(ctrlPoint);

	/* Expiration handling */
	mupnp_thread_start(ctrlPoint->expThread);
	
	/**** Cache current interfaces ****/
	mupnp_net_gethostinterfaces(ctrlPoint->ifCache);
	
	/**** HTTP Server ****/
	httpEventPort = mupnp_controlpoint_geteventport(ctrlPoint);
	httpServerList = mupnp_controlpoint_gethttpserverlist(ctrlPoint);
	/* Opening HTTP server may fail, so try many ports */
	while(mupnp_http_serverlist_open(httpServerList, httpEventPort) == false) {
		mupnp_controlpoint_seteventport(ctrlPoint, httpEventPort + 1);
		httpEventPort = mupnp_controlpoint_geteventport(ctrlPoint);
	}
	mupnp_http_serverlist_setuserdata(httpServerList, ctrlPoint);
	httpListener = mupnp_controlpoint_gethttplistener(ctrlPoint);
	if (httpListener == NULL)
		httpListener = mupnp_controlpoint_httprequestreceived;
	mupnp_http_serverlist_setlistener(httpServerList, httpListener);
	mupnp_http_serverlist_start(httpServerList);

	/**** SSDP Server ****/
	ssdpServerList = mupnp_controlpoint_getssdpserverlist(ctrlPoint);
	if (mupnp_ssdp_serverlist_open(ssdpServerList) == false)
		return false;
	mupnp_ssdp_serverlist_setlistener(ssdpServerList, mupnp_controlpoint_ssdplistner);
	mupnp_ssdp_serverlist_setuserdata(ssdpServerList, ctrlPoint);
	if (mupnp_ssdp_serverlist_start(ssdpServerList) == false)
		return false;

	/**** SSDP Response Server ****/
	ssdpResPort = mupnp_controlpoint_getssdpresponseport(ctrlPoint);
	/* below is the max SSDP Response port number to assign (rosfran.borges) */
	ssdpMaxResPort = ssdpResPort + MUPNP_CONTROLPOINT_SSDP_RESPONSE_PORT_MAX_TRIES_INDEX;
	ssdpResServerList = mupnp_controlpoint_getssdpresponseserverlist(ctrlPoint);
	/* Opening SSDP response server may fail, so try many ports */
	while(mupnp_ssdpresponse_serverlist_open(ssdpResServerList, ssdpResPort) == false &&
		(ssdpResPort < ssdpMaxResPort) ) {
		mupnp_controlpoint_setssdpresponseport(ctrlPoint, ssdpResPort + 1);
		ssdpResPort = mupnp_controlpoint_getssdpresponseport(ctrlPoint);
	}
	mupnp_ssdpresponse_serverlist_setlistener(ssdpResServerList, mupnp_controlpoint_ssdpresponselistner);
	mupnp_ssdpresponse_serverlist_setuserdata(ssdpResServerList, ctrlPoint);
	if (mupnp_ssdpresponse_serverlist_start(ssdpResServerList) == false)
		return false;

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

	return true;
}
Esempio n. 5
0
MBEG
#else
int main( int argc, char* argv[] )
#endif
{
	mUpnpControlPoint *ctrlPoint;
	int key;
	
	ctrlPoint = mupnp_controlpoint_new();
	mupnp_controlpoint_setssdplistener(ctrlPoint, SSDPNotifyListner);
	mupnp_controlpoint_seteventlistener(ctrlPoint, EventListener);
	if (mupnp_controlpoint_start(ctrlPoint) == false) {
		printf("Couldn't start this control point !!");
		exit(1);
	}
	
	PrintKeyMessage();

#if (!defined(WIN32) || defined(__CYGWIN__)) && !defined(TENGINE)
	kbinit();
#endif
	
	key = 0;
	do
	{
#if !defined(TENGINE)
		key = kbgetkey();
		key = toupper(key);
		switch (key) {
		case 'P':
			PrintControlPointDevice(ctrlPoint);
			break;
#if !defined(MUPNP_NOUSE_ACTIONCTRL)
		case 'C':
			ControlDeviceAlter(ctrlPoint, CMD_NO_ALTERATIONS);
			break;

		case 'O':
			ControlDeviceAlter(ctrlPoint, CMD_LOOP_ACTION_CALLS);
			break;
#endif
#if !defined(MUPNP_NOUSE_QUERYCTRL)
		case 'Q':
			QueryDevice(ctrlPoint);
			break;
#endif
#if !defined(MUPNP_NOUSE_SUBSCRIPTION)
		case 'S':
			SubscribeService(ctrlPoint);
			break;
		case 'U':
			UnsubscribeService(ctrlPoint);
			break;
#endif
                case 'M':
                        SetMXValue(ctrlPoint);
                        break;
		case 'R':
	          printf("M-Search upnp::rootdevice\n");
		  mupnp_controlpoint_search(ctrlPoint, MUPNP_ST_ROOT_DEVICE);
		  break;
		case 'H':
	          printf("M-Search ssdp:all\n");
		  mupnp_controlpoint_search(ctrlPoint, "ssdp:all");
		  break;
		case 'V':
	          printf("M-Search device type\n");
		  mupnp_controlpoint_search(ctrlPoint, "urn:schemas-upnp-org:device:clock:1");
		  break;
		case 'T':
	          printf("M-Search service type\n");
		  mupnp_controlpoint_search(ctrlPoint, "urn:schemas-upnp-org:service:timer:1");
		  break;
		case 'A':
		  {
			  int i;

			  printf("Doing all searches four times...\n");
			  
			  for (i=0; i<4; i++)
			  {
				  mupnp_controlpoint_search(ctrlPoint, MUPNP_ST_ROOT_DEVICE);
				  mupnp_controlpoint_search(ctrlPoint, "ssdp:all");
				  mupnp_controlpoint_search(ctrlPoint, "urn:schemas-upnp-org:device:clock:1");
				  mupnp_controlpoint_search(ctrlPoint, "urn:schemas-upnp-org:service:timer:1");
			  }
			  
			  printf("Done (doing all searches four times).\n");
		  }
		  break;
		case 'X':
			break;
		default:
			PrintKeyMessage();
		}
#else
		mupnp_wait(1000);
#endif
	} while( key != 'X');

#if (!defined(WIN32) || defined(__CYGWIN__)) && !defined(TENGINE)
	kbexit();
#endif
	
	mupnp_controlpoint_stop(ctrlPoint);
	mupnp_controlpoint_delete(ctrlPoint);
	
	return(0);
}