/** * Constructor - preparing Service * * @access public * * @param Device $device * @param string $service */ public function __construct(Device $device, $service) { Logger::debug(__METHOD__ . '; Device: ' . $device->getId() . ' [' . $device->getName() . ']; Service: ' . $service, self::$logfile); $this->device = $device; $services = $this->device->services; if (!isset($services[$service])) { throw new UPnPException('Unknown service: ' . $service); } $this->service = $services[$service]; }
/** * Find devices by UPnP multicast message and stores them to cache * * @static * @access public * * @return array Parsed device list */ public static function findDevices() { $discover = self::discover(); $cache = array(); flush(); foreach ($discover as $response) { $device = new Device(); if ($device->initByDiscoveryReponse($response)) { $device->saveToCache(); try { $client = $device->getClient('ConnectionManager'); $protocolInfo = $client->call('GetProtocolInfo'); $sink = $protocolInfo['Sink']; $tmp = explode(',', $sink); $protocols = array(); foreach ($tmp as $protocol) { $t = explode(':', $protocol); if ($t[0] == 'http-get') { $protocols[] = $t[2]; } } } catch (UPnPException $upnpe) { $protocols = array(); } $device->protocolInfo = $protocols; $cache[$device->getId()] = array('name' => $device->getName(), 'services' => $device->getServices(), 'icons' => $device->getIcons(), 'protocols' => $device->getProtocolInfo()); } } self::saveCache($cache); flush(); return $cache; }