public UPnPConfigPackage(IIpConfig ip, IUPnPConfig upnp, IXMLWriter xw, List<string>servicepath) { IpConf = ip; UpnpConf = upnp; XmlWr = xw; ServiceConfPaths = servicepath; }
public MulticastSender(IIpConfig ipconf, IUPnPConfig upnpconf) { _UUID = ipconf.GUID; _cacheexpire = upnpconf.cacheExpire; _localip = ipconf.IP; _tcpport = ipconf.TCPPort; _upnPConfig = upnpconf; SetupMulticastSender(); //Setup notify = HTTPNotifygenerator(upnpconf.NT); }
//Todo: Separate into UDPHandler and UDPServer //Explicit contructor that takes the UPnPConfig classes: public UDPHandler(IIpConfig ipconf, IUPnPConfig upnpconf) { sender = new MulticastSender(ipconf, upnpconf); //Creates sender receiver = new MulticastReceiver(); //receiver = new MulticastReceiver(IpConf, upnpconf); //Creates receiver NotifyThread = new Thread(sender.NotifySender); //Thread for notifier. Runs every _cacheexpire seconds ReceiveThread = new Thread(Run); //Run thread. The default UDP Thread _ip = ipconf; _upnPConfig = upnpconf; }
public UPnP(IUPnPConfigPackage config) { IpConf = config.IpConf; UpnpConf = config.UpnpConf; XmlWriter = config.XmlWr; XmlWriter.GenDeviceDescription(UpnpConf); XMLServicesConfig ServiceConf = new XMLServicesConfig(config.ServiceConfPaths); TCPServer = new TcpServer(IpConf.IP, IpConf.TCPPort); UDPServer = new UDPHandler(IpConf, UpnpConf); UDPServer.Start(); SubscribeToUpnpEvents(); }
/// <summary> /// constructor /// </summary> /// <param name="ip">IP of the upnp device that the device descriptions should be made for</param> /// <param name="upnp">UPnPConfig object that holds the needed data for the descriptions</param> public XMLWriter(IIpConfig ip, IUPnPConfig upnp) { _ip = ip; _upnp = upnp; }
/// <summary> /// Initializes a new instance of the <see cref="UPnP_Device.UDP.UDPHandler"/> class. /// </summary> /// <param name='send'> /// An instance of the MulticastSender /// </param> /// <param name='conf'> /// Configuration information about the UPnP Device /// </param> public UDPHandler(MulticastSender send, IUPnPConfig conf) { sender = send; _upnPConfig = conf; }
//DeviceArchitecture s.51 //generates device XML public void GenDeviceDescription(IUPnPConfig UPnPConfig) { #region setup //string path = @"Descriptions\desc.xml"; XmlDocument doc = new XmlDocument(); XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", null, null); doc.AppendChild(dec); XmlElement root = doc.CreateElement("root"); doc.AppendChild(root); root.SetAttribute("xmlns", "urn:schemas-upnp-org:device-1-0"); XmlElement specVersion = doc.CreateElement("specVersion"); root.AppendChild(specVersion); XmlElement major = doc.CreateElement("major"); specVersion.AppendChild(major); major.InnerText = "1"; XmlElement minor = doc.CreateElement("minor"); specVersion.AppendChild(minor); minor.InnerText = "0"; XmlElement device = doc.CreateElement("device"); root.AppendChild(device); #endregion #region mediaRenderer XmlElement deviceType = doc.CreateElement("deviceType"); device.AppendChild(deviceType); deviceType.InnerText = UPnPConfig.DeviceType; XmlElement friendlyName = doc.CreateElement("friendlyName"); device.AppendChild(friendlyName); friendlyName.InnerText = UPnPConfig.friendlyName; XmlElement manufacturer = doc.CreateElement("manufacturer"); device.AppendChild(manufacturer); manufacturer.InnerText = UPnPConfig.Manufacturer; XmlElement manufacturerURL = doc.CreateElement("manufacturerURL"); device.AppendChild(manufacturerURL); manufacturerURL.InnerText = UPnPConfig.ManufacturerURL; XmlElement modelDescription = doc.CreateElement("modelDescription"); device.AppendChild(modelDescription); modelDescription.InnerText = UPnPConfig.ModelDescription; XmlElement modelName = doc.CreateElement("modelName"); device.AppendChild(modelName); modelName.InnerText = UPnPConfig.ModelName; XmlElement udn = doc.CreateElement("UDN"); device.AppendChild(udn); udn.InnerText = "uuid:" + _ip.GUID; XmlElement serviceList = doc.CreateElement("serviceList"); device.AppendChild(serviceList); #endregion #region AVTransport foreach (string s in UPnPConfig.services) { XmlElement service = doc.CreateElement("service"); serviceList.AppendChild(service); XmlElement serviceType = doc.CreateElement("serviceType"); service.AppendChild(serviceType); serviceType.InnerText = "urn:schemas-upnp-org:service:" + s; XmlElement serviceId = doc.CreateElement("serviceId"); service.AppendChild(serviceId); //serviceId.InnerText = "urn:upnp-org:serviceId:AVTransport.0001"; serviceId.InnerText = "urn:upnp-org:serviceId:" + s.Split(':')[0]; XmlElement SCPDURL = doc.CreateElement("SCPDURL"); service.AppendChild(SCPDURL); //SCPDURL.InnerText = "urn-schemas-upnp-org-service-AVTransport.0001_scpd.xml"; // SCPDURL.InnerText = "serviceDescripton.xml"; SCPDURL.InnerText = s.Split(':')[0] + "/" + servicePath; XmlElement controlURL = doc.CreateElement("controlURL"); service.AppendChild(controlURL); //controlURL.InnerText = "urn:upnp-org:serviceId:AVTransport.0001_control"; controlURL.InnerText = ""; XmlElement eventSubUrl = doc.CreateElement("eventSubURL"); service.AppendChild(eventSubUrl); eventSubUrl.InnerText = ""; } #endregion //ATTENTION: Outcommented: #region RenderingControl /* service = doc.CreateElement("service"); serviceList.AppendChild(service); serviceType = doc.CreateElement("serviceType"); service.AppendChild(serviceType); serviceType.InnerText = "urn:schemas-upnp-org:service:RenderingControl:1"; serviceId = doc.CreateElement("serviceId"); service.AppendChild(serviceId); //serviceId.InnerText = "urn:upnp-org:serviceId:AVTransport.0001"; serviceId.InnerText = "urn:upnp-org:serviceId:RenderingControl"; SCPDURL = doc.CreateElement("SCPDURL"); service.AppendChild(SCPDURL); //SCPDURL.InnerText = "urn-schemas-upnp-org-service-AVTransport.0001_scpd.xml"; // SCPDURL.InnerText = "serviceDescripton.xml"; SCPDURL.InnerText = "RenderingControl/serviceDescription/"; controlURL = doc.CreateElement("controlURL"); service.AppendChild(controlURL); //controlURL.InnerText = "urn:upnp-org:serviceId:AVTransport.0001_control"; controlURL.InnerText = ""; eventSubUrl = doc.CreateElement("eventSubURL"); service.AppendChild(eventSubUrl); eventSubUrl.InnerText = " "; */ #endregion //for debug doc.Save("DeviceDescDebug.xml"); SaveFile(doc.OuterXml, ""); }