void DeviceListTI::TestSync() { // trivial validation of the sync wrappers to all APIs // single sync call to whichever device happens to be first in our list if (iList.size() == 0) { Print("No devices found, so nothing to test\n"); return; } CpDevice* device = iList[0]; Print("Sync call to device "); Print(device->Udn()); Print("\n"); iConnMgr = new CpProxyUpnpOrgConnectionManager1(*device); Brh source; Brh sink; try { iConnMgr->SyncGetProtocolInfo(source, sink); } catch(ProxyError) {} #if 0 Print("source is "); Print(source); Print("\nsink is "); Print(sink); Print("\n"); #endif delete iConnMgr; }
void DeviceList::Poll() { Functor updatesComplete = MakeFunctor(*this, &DeviceList::InitialNotificationComplete); const TUint count = (TUint)iList.size(); for (TUint i=0; i<count; i++) { CpDevice* device = iList[i]; TUint countBefore = gSubscriptionCount; Print("Device "); Print(device->Udn()); CpProxyUpnpOrgConnectionManager1* connMgr = new CpProxyUpnpOrgConnectionManager1(*device); connMgr->SetPropertyChanged(updatesComplete); TUint startTime = Os::TimeInMs(iEnv.OsCtx()); while(true) { iSem.Clear(); connMgr->Subscribe(); try { iSem.Wait(kDevicePollMs+1); } catch(Timeout&) {} connMgr->Unsubscribe(); if (Os::TimeInMs(iEnv.OsCtx()) - startTime > kDevicePollMs) { break; } gSubscriptionCount++; } Print(" %u\n", gSubscriptionCount - countBefore); delete connMgr; } }
void DeviceListTI::Removed(CpDevice& aDevice) { if (iStopped) { return; } AutoMutex a(iLock); const TUint count = (TUint)iList.size(); for (TUint i=0; i<count; i++) { CpDevice* device = iList[i]; if (device->Udn() == aDevice.Udn()) { iList[i] = NULL; iList.erase(iList.begin()+i); device->RemoveRef(); break; } } }
void CpDeviceList::Added(CpiDevice& aDevice) { CpDevice* device = new CpDevice(aDevice); /* No mutex used for Added or Removed as we assume the underlying list's lock already protects us */ Brn udn(device->Udn()); iMap.insert(std::pair<Brn,CpDevice*>(udn, device)); iAdded(*device); }
void CpDevices::Added(CpDevice& aDevice) { iLock.Wait(); if (aDevice.Udn() == iTargetUdn) { iDevices.push_back(&aDevice); aDevice.AddRef(); iAddedSem.Signal(); } iLock.Signal(); }
void CpDevices::Added(CpDevice& aDevice) { iLock.Wait(); if (aDevice.Udn() == gDeviceName) { iList.push_back(&aDevice); aDevice.AddRef(); iAddedSem.Signal(); } iLock.Signal(); }
void CpDevices::Added(CpDevice& aDevice) { iLock.Wait(); const Brx& udn = aDevice.Udn(); if (udn == gNameDevice1 || udn == gNameDevice1_1 || udn == gNameDevice1_2 || udn == gNameDevice2) { iList.push_back(&aDevice); aDevice.AddRef(); } iLock.Signal(); }
void CpDevices::Removed(CpDevice& aDevice) { iLock.Wait(); for (TUint i=0; i<(TUint)iDevices.size(); i++) { if (iDevices[i]->Udn() == aDevice.Udn()) { iDevices[i]->RemoveRef(); iDevices.erase(iDevices.begin() + i); break; } } iLock.Signal(); }
void DimmableLightList::Show() { AutoMutex amtx(iMutex); for ( DimmableMap::iterator i = iMap.begin() ; i != iMap.end() ; i++ ) { CpDevice* d = i->first; DimmableLight* l = i->second; Print(d->Udn()); Print(" %s", (l->GetTarget() ? "on" : "off")); //Print(" %d%%", l->GetLoadLevelTarget()); Print("\n"); } }
void CpDevices::Added(CpDevice& aDevice) { iLock.Wait(); const Brx& udn = aDevice.Udn(); if (udn == gNameDevice1 || udn == gNameDevice1_1 || udn == gNameDevice1_2 || udn == gNameDevice2) { iList.push_back(&aDevice); aDevice.AddRef(); } if ((TUint)iList.size() == iTargetCount) { iSem.Signal(); } iLock.Signal(); }
void TopologyLogger::PrintDeviceInfo(const char* aPrologue, const CpDevice& aDevice) { Print("%s\n udn = ", aPrologue); Print(aDevice.Udn()); Print("\n location = "); Brh val; aDevice.GetAttribute("Upnp.Location", val); Print(val); Print("\n name = "); aDevice.GetAttribute("Upnp.FriendlyName", val); Print(val); Print("\n"); }
void DeviceListLogger::PrintDeviceInfo(const char* aPrologue, const CpDevice& aDevice) { iLock.Wait(); Print("%s\n udn = ", aPrologue); Print(aDevice.Udn()); Print("\n location = "); Brh val; aDevice.GetAttribute("Upnp.Location", val); Print(val); Print("\n name = "); aDevice.GetAttribute("Upnp.FriendlyName", val); Print(val); Print("\n"); iLock.Signal(); }
void CpDevices::Removed(CpDevice& aDevice) { /* A device sends out byebye messages before alives after being enabled. (This is required for many buggy control points which don't spot a change of location otherwise.) Its possible that the last of these byebyes may get interleaved with the first msearch responses, leading to a device being added, removed, then added again. Accept that this is possible and cope with devices being removed. */ iLock.Wait(); const Brx& udn = aDevice.Udn(); for (TUint i=0; i<iList.size(); i++) { if (iList[i]->Udn() == udn) { iList[i]->RemoveRef(); iList.erase(iList.begin() + i); break; } } iLock.Signal(); }
void DeviceListTI::Poll() { Timer timer(iEnv, MakeFunctor(*this, &DeviceListTI::TimerExpired)); FunctorAsync callback = MakeFunctorAsync(*this, &DeviceListTI::GetProtocolInfoComplete); Brh tmp; const TUint count = (TUint)iList.size(); for (TUint i=0; i<count; i++) { CpDevice* device = iList[i]; TUint countBefore = gActionCount; Print("Device "); Print(device->Udn()); iConnMgr = new CpProxyUpnpOrgConnectionManager1(*device); iStopTimeMs = Os::TimeInMs(iEnv.OsCtx()) + kDevicePollMs; timer.FireIn(kDevicePollMs); for (TUint j=0; j<iEnv.InitParams()->NumActionInvokerThreads(); j++) { iConnMgr->BeginGetProtocolInfo(callback); } iPollStop.Wait(); Print(" %u\n", gActionCount - countBefore); delete iConnMgr; iExpectedSink.TransferTo(tmp); } }
TBool CpTopology2Device::IsAttachedTo(CpDevice& aDevice) { return (iDevice.Udn() == aDevice.Udn()); }
TBool CpNetworkMonitorList2Device::IsAttachedTo(CpDevice& aDevice) { return (iDevice.Udn() == aDevice.Udn()); }