bool round_finder_search(RoundFinder* finder) { if (!finder) return false; return mupnp_controlpoint_search(finder->cp, ROUND_UPNP_DEVICE_TYPE); }
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); }
bool mupnp_controlpoint_ipchanged(mUpnpControlPoint *ctrlPoint) { mUpnpNetworkInterfaceList *current, *added, *removed; mUpnpNetworkInterface *netIf; mUpnpDevice *dev, *tmp; mUpnpSSDPPacket *ssdpPkt; char *address; mupnp_log_debug_l4("Entering...\n"); current = mupnp_net_interfacelist_new(); added = mupnp_net_interfacelist_new(); removed = mupnp_net_interfacelist_new(); if (current == NULL || added == NULL || removed == NULL) { if (current != NULL) mupnp_net_interfacelist_delete(current); if (added != NULL) mupnp_net_interfacelist_delete(added); if (removed != NULL) mupnp_net_interfacelist_delete(removed); return false; } /* Get Interface changes */ mupnp_net_gethostinterfaces(current); mupnp_net_interfacelist_getchanges(ctrlPoint->ifCache, current, added, removed); /* Remove all devices registered through old interface */ for (netIf = mupnp_net_interfacelist_gets(removed); netIf != NULL; netIf = mupnp_net_interface_next(netIf)) { mupnp_controlpoint_lock(ctrlPoint); tmp = mupnp_controlpoint_getdevices(ctrlPoint); while (tmp != NULL) { dev = tmp; tmp = mupnp_device_next(dev); ssdpPkt = mupnp_device_getssdppacket(dev); address = mupnp_ssdp_packet_getlocaladdress(ssdpPkt); if (address != NULL && mupnp_strcmp(address, mupnp_net_interface_getaddress(netIf)) == 0) { /* This device has been received from the removed interface, so it does not exist */ mupnp_controlpoint_unlock(ctrlPoint); mupnp_controlpoint_removedevicebyssdppacket(ctrlPoint, ssdpPkt); mupnp_controlpoint_lock(ctrlPoint); address = NULL; dev = NULL; ssdpPkt = NULL; } } mupnp_controlpoint_unlock(ctrlPoint); } /* Launch new M-SEARCH */ mupnp_controlpoint_search(ctrlPoint, MUPNP_ST_ROOT_DEVICE); /**** Cache current interfaces ****/ mupnp_net_gethostinterfaces(ctrlPoint->ifCache); mupnp_net_interfacelist_delete(current); mupnp_net_interfacelist_delete(added); mupnp_net_interfacelist_delete(removed); mupnp_log_debug_l4("Leaving...\n"); return true; }
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); }