public CpAVTransport(UPnPService s)
 {
     _S = s;
     _S.OnSubscribe += new UPnPService.UPnPEventSubscribeHandler(_subscribe_sink);
     if (HasStateVariable_TransportStatus) _S.GetStateVariableObject("TransportStatus").OnModified += new UPnPStateVariable.ModifiedHandler(TransportStatus_ModifiedSink);
     if (HasStateVariable_TransportState) _S.GetStateVariableObject("TransportState").OnModified += new UPnPStateVariable.ModifiedHandler(TransportState_ModifiedSink);
 }
 public CpConnectionManager(UPnPService s)
 {
     _S = s;
     _S.OnSubscribe += new UPnPService.UPnPEventSubscribeHandler(_subscribe_sink);
     if(HasStateVariable_SourceProtocolInfo) _S.GetStateVariableObject("SourceProtocolInfo").OnModified += new UPnPStateVariable.ModifiedHandler(SourceProtocolInfo_ModifiedSink);
     if(HasStateVariable_SinkProtocolInfo) _S.GetStateVariableObject("SinkProtocolInfo").OnModified += new UPnPStateVariable.ModifiedHandler(SinkProtocolInfo_ModifiedSink);
     if(HasStateVariable_CurrentConnectionIDs) _S.GetStateVariableObject("CurrentConnectionIDs").OnModified += new UPnPStateVariable.ModifiedHandler(CurrentConnectionIDs_ModifiedSink);
 }
 public CpContentDirectory(UPnPService s)
 {
     _S = s;
     _S.OnSubscribe += new UPnPService.UPnPEventSubscribeHandler(_subscribe_sink);
     if (HasStateVariable_TransferIDs) _S.GetStateVariableObject("TransferIDs").OnModified += new UPnPStateVariable.ModifiedHandler(TransferIDs_ModifiedSink);
     if (HasStateVariable_ContainerUpdateIDs) _S.GetStateVariableObject("ContainerUpdateIDs").OnModified += new UPnPStateVariable.ModifiedHandler(ContainerUpdateIDs_ModifiedSink);
     if (HasStateVariable_SystemUpdateID) _S.GetStateVariableObject("SystemUpdateID").OnModified += new UPnPStateVariable.ModifiedHandler(SystemUpdateID_ModifiedSink);
 }
        public UPnPServiceWatcher(UPnPService S, SniffHandler cb, SniffPacketHandler pcb)
        {
            OnSniff += cb;
            OnSniffPacket += pcb;
            _S = S;

            _S.OnSniff += new UPnPService.SniffHandler(SniffSink);
            _S.OnSniffPacket += new UPnPService.SniffPacketHandler(SniffPacketSink);
        }
        public ActionEditForm(UPnPService parentService)
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            action = new UPnPAction();
            action.ParentService = parentService;
        }
Esempio n. 6
0
        public UPnPServiceProxy(Type serviceType, Type contractType)
        {
            var service = Activator.CreateInstance(serviceType);
            _upnp = new UPnPService(1, contractType.GUID.ToString(), contractType.FullName, true, service);

            var methods = (from meth in contractType.GetMethods()
                          where meth.GetCustomAttributes(false).Where( atr => atr.GetType() == typeof(OperationContractAttribute)).Count()>0
                          select meth).ToArray();

            foreach (var meth in methods)
            {
                _upnp.AddMethod(meth.Name);
            }
        }
        public ValidationForm(UPnPService S)
        {
            service = S;
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();
            foreach(UPnPAction A in S.Actions)
            {
                ServiceBox.Items.Add(A,CheckState.Unchecked);
            }

            //
            // TODO: Add any constructor code after InitializeComponent call
            //
        }
        public MethodInvoke(UPnPAction action, UPnPService service)
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            this.action = action;
            this.service = service;

            this.Text += " - " + action.Name;
            actionLabel.Text = action.Name;
            serviceLabel.Text = service.ServiceID;
            deviceLabel.Text = service.ParentDevice.FriendlyName;

            if (action.ArgumentList.Length>0)
            {
                argControlList = new UPnpArgumentControl[action.ArgumentList.Length];

                for (int z=0;z<action.ArgumentList.Length;++z)
                {
            //					if (action.ArgumentList[z].IsReturnValue == true) {returnArgPresent = true;}
                    argControlList[z] = new UPnpArgumentControl(action.ArgumentList[z]);
                    argControlList[z].Dock = System.Windows.Forms.DockStyle.Top;
                    /*
                    if (action.ArgumentList[z].RelatedStateVar.ValueType == "string")
                    {
                        argControlList[z].Height = 60;
                    }
                    */
                    argPanel.Controls.Add(argControlList[z]);
                    argPanel.Controls.SetChildIndex(argControlList[z],0);

                    Splitter splitter = new Splitter();
                    splitter.Height = 4;
                    splitter.MinExtra = 0;
                    splitter.MinSize = 32;
                    splitter.BackColor = Color.Gray;
                    splitter.Dock = System.Windows.Forms.DockStyle.Top;
                    argPanel.Controls.Add(splitter);
                    argPanel.Controls.SetChildIndex(splitter,0);
                }
            }

            service.OnInvokeError += new UPnPService.UPnPServiceInvokeErrorHandler(HandleInvokeError);
            service.OnInvokeResponse += new UPnPService.UPnPServiceInvokeHandler(HandleInvoke);
        }
Esempio n. 9
0
        static void Main(string[] args)
        {
            var device = UPnPDevice.CreateRootDevice(int.MaxValue, 1.0, "\\");
            device.FriendlyName = Environment.MachineName + ":" + "Network Light";
            device.DeviceURN = "NetworkLight";
            device.HasPresentation = false;

            var switchPower = new UPnPService(1.0, typeof(SwitchPower).GUID.ToString(), typeof(SwitchPower).FullName, true, new SwitchPower());
            switchPower.AddMethod("SetTarget");
            switchPower.AddMethod("GetTarget");
            switchPower.AddMethod("GetStatus");
            device.AddService(switchPower);

            device.StartDevice();

            Console.ReadLine();

            device.StopDevice();
        }
Esempio n. 10
0
        static void Main(string[] args)
        {
            var device = UPnPDevice.CreateRootDevice(int.MaxValue, 1.0, "\\");
            device.FriendlyName = Environment.MachineName + ":" + "Service Manager";
            device.DeviceURN = "ServiceManager";
            device.HasPresentation = false;

            foreach(var svc in ServiceController.GetServices())
            {
                var upnsvc = new UPnPService(1.0, typeof(ServiceController).GUID.ToString(), svc.DisplayName, true, new Service(svc));
                upnsvc.AddMethod("Start");
                upnsvc.AddMethod("Stop");
                upnsvc.AddMethod("GetStatus");
                device.AddService(upnsvc);
            }

            device.StartDevice();

            Console.ReadLine();

            device.StopDevice();
        }
 public CpRenderingControl(UPnPService s)
 {
     _S = s;
     _S.OnSubscribe += new UPnPService.UPnPEventSubscribeHandler(_subscribe_sink);
     if(HasStateVariable_LastChange) _S.GetStateVariableObject("LastChange").OnModified += new UPnPStateVariable.ModifiedHandler(LastChange_ModifiedSink);
 }
 private void Sink_SelectPreset(UPnPService sender, string MethodName, UPnPArgument[] Args, object RetVal, int Handle)
 {
     for(int i=0;i<Args.Length;++i)
     {
         switch(Args[i].Name)
         {
             case "PresetName":
                 switch((string)Args[i].DataValue)
                 {
                     case "FactoryDefaults":
                         Args[i].DataValue = Enum_A_ARG_TYPE_PresetName.FACTORYDEFAULTS;
                         break;
                     case "InstallationDefaults":
                         Args[i].DataValue = Enum_A_ARG_TYPE_PresetName.INSTALLATIONDEFAULTS;
                         break;
                     case "Vendor defined":
                         Args[i].DataValue = Enum_A_ARG_TYPE_PresetName.VENDOR_DEFINED;
                         break;
                     default:
                        SetUnspecifiedValue("Enum_A_ARG_TYPE_PresetName", (string)Args[i].DataValue);
                        Args[i].DataValue = Enum_A_ARG_TYPE_PresetName._UNSPECIFIED_;
                        break;
                 }
                 break;
         }
     }
     if(OnResult_SelectPreset != null)
     {
        OnResult_SelectPreset((System.UInt32 )Args[0].DataValue, (Enum_A_ARG_TYPE_PresetName )Args[1].DataValue, null, Handle);
     }
     WeakReference[] w = (WeakReference[])WeakList_SelectPreset.ToArray(typeof(WeakReference));
     foreach(WeakReference wr in w)
     {
         if(wr.IsAlive==true)
         {
            ((Delegate_OnResult_SelectPreset)wr.Target)((System.UInt32 )Args[0].DataValue, (Enum_A_ARG_TYPE_PresetName )Args[1].DataValue, null, Handle);
         }
         else
         {
             WeakList_SelectPreset.Remove(wr);
         }
     }
 }
 private void Error_Sink_SetSharpness(UPnPService sender, string MethodName, UPnPArgument[] Args, UPnPInvokeException e, int Handle)
 {
     if(OnResult_SetSharpness != null)
     {
          OnResult_SetSharpness((System.UInt32 )Args[0].DataValue, (System.UInt16 )Args[1].DataValue, e, Handle);
     }
     WeakReference[] w = (WeakReference[])WeakList_SetSharpness.ToArray(typeof(WeakReference));
     foreach(WeakReference wr in w)
     {
         if(wr.IsAlive==true)
         {
            ((Delegate_OnResult_SetSharpness)wr.Target)((System.UInt32 )Args[0].DataValue, (System.UInt16 )Args[1].DataValue, e, Handle);
         }
         else
         {
             WeakList_SetSharpness.Remove(wr);
         }
     }
 }
 private void Error_Sink_SetMute(UPnPService sender, string MethodName, UPnPArgument[] Args, UPnPInvokeException e, int Handle)
 {
     for(int i=0;i<Args.Length;++i)
     {
         switch(Args[i].Name)
         {
             case "Channel":
                 switch((string)Args[i].DataValue)
                 {
                     case "Master":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.MASTER;
                         break;
                     case "LF":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.LF;
                         break;
                     case "RF":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.RF;
                         break;
                     case "CF":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.CF;
                         break;
                     case "LFE":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.LFE;
                         break;
                     case "LS":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.LS;
                         break;
                     case "RS":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.RS;
                         break;
                     case "LFC":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.LFC;
                         break;
                     case "RFC":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.RFC;
                         break;
                     case "SD":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.SD;
                         break;
                     case "SL":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.SL;
                         break;
                     case "SR ":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.SR_;
                         break;
                     case "T":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.T;
                         break;
                     case "B":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.B;
                         break;
                     case "Vendor defined":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.VENDOR_DEFINED;
                         break;
                 }
                 break;
         }
     }
     if(OnResult_SetMute != null)
     {
          OnResult_SetMute((System.UInt32 )Args[0].DataValue, (Enum_A_ARG_TYPE_Channel )Args[1].DataValue, (System.Boolean )Args[2].DataValue, e, Handle);
     }
     WeakReference[] w = (WeakReference[])WeakList_SetMute.ToArray(typeof(WeakReference));
     foreach(WeakReference wr in w)
     {
         if(wr.IsAlive==true)
         {
            ((Delegate_OnResult_SetMute)wr.Target)((System.UInt32 )Args[0].DataValue, (Enum_A_ARG_TYPE_Channel )Args[1].DataValue, (System.Boolean )Args[2].DataValue, e, Handle);
         }
         else
         {
             WeakList_SetMute.Remove(wr);
         }
     }
 }
 protected void HandleInvoke(UPnPService sender, string MethodName, UPnPArgument[] Args, object ReturnValue, object Handle)
 {
     this.Invoke(new UPnPService.UPnPServiceInvokeHandler(HandleInvokeEx),new object[5]{sender,MethodName,Args,ReturnValue, Handle});
 }
 private void deviceTree_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
 {
     TreeNode node = deviceTree.GetNodeAt(e.X,e.Y);
     if (node == null) return;
     deviceTree.SelectedNode = node;
     object infoObject = node.Tag;
     if (infoObject == null)
     {
         service = null;
         okButton.Enabled = false;
         return;
     }
     if (infoObject.GetType() == typeof(UPnPService))
     {
         service = (UPnPService)infoObject;
         okButton.Enabled = true;
     }
     else
     {
         service = null;
         okButton.Enabled = false;
     }
 }
        private void BuildCertToolFiles_Service(UPnPService s, DirectoryInfo outputDir)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("<scpd>");

            sb.Append("<serviceStateTable>");
            foreach(UPnPStateVariable v in s.GetStateVariables())
            {
                sb.Append("<stateVariable>");
                sb.Append("<name>"+v.Name+"</name>");
                sb.Append("<sendEventsAttribute>");
                if (v.SendEvent)
                {
                    sb.Append("yes");
                }
                else
                {
                    sb.Append("no");
                }
                sb.Append("</sendEventsAttribute>");
                sb.Append("<dataType>"+v.ValueType+"</dataType>");
                if (v.AllowedStringValues!=null && v.AllowedStringValues.Length>0)
                {
                    sb.Append("<allowedValueList>");
                    foreach(string av in v.AllowedStringValues)
                    {
                        sb.Append("<allowedValue>"+av+"</allowedValue>");
                    }
                    sb.Append("</allowedValueList>");
                }
                sb.Append("</stateVariable>");
            }
            sb.Append("</serviceStateTable>");

            if (s.Actions.Count>0)
            {
                sb.Append("<actionList>");
                foreach(UPnPAction a in s.Actions)
                {
                    sb.Append("<action>");
                    sb.Append("<name>"+a.Name+"</name>");
                    if (a.ArgumentList.Length>0)
                    {
                        sb.Append("<argumentList>");
                        foreach(UPnPArgument ag in a.ArgumentList)
                        {
                            sb.Append("<argument>");
                            sb.Append("<name>"+ag.Name+"</name>");
                            sb.Append("<direction>"+ag.Direction+"</direction>");
                            sb.Append("<relatedStateVariable>"+ag.RelatedStateVar.Name+"</relatedStateVariable>");
                            sb.Append("</argument>");
                        }
                        sb.Append("</argumentList>");
                    }
                    sb.Append("</action>");
                }
                sb.Append("</actionList>");
            }

            sb.Append("</scpd>");

            StreamWriter W;
            DText d = new DText();
            d.ATTRMARK = ":";
            d[0] = s.ServiceURN;

            W = File.CreateText(outputDir.FullName + "\\" + d[4] + s.Version.ToString() + ".xml");
            W.Write(sb.ToString());
            W.Close();
        }
            protected UPnPService BuildUPnPService()
            {
                UPnPStateVariable[] RetVal = new UPnPStateVariable[20];
                RetVal[0] = new UPnPModeratedStateVariable("ContainerUpdateIDs", typeof(System.String), true);
                RetVal[1] = new UPnPModeratedStateVariable("A_ARG_TYPE_Index", typeof(System.UInt32), false);
                RetVal[1].AddAssociation("Browse", "StartingIndex");
                RetVal[1].AddAssociation("Search", "StartingIndex");
                RetVal[2] = new UPnPModeratedStateVariable("A_ARG_TYPE_UpdateID", typeof(System.UInt32), false);
                RetVal[2].AddAssociation("Browse", "UpdateID");
                RetVal[2].AddAssociation("Search", "UpdateID");
                RetVal[3] = new UPnPModeratedStateVariable("SystemUpdateID", typeof(System.UInt32), true);
                RetVal[3].AddAssociation("GetSystemUpdateID", "Id");
                RetVal[4] = new UPnPModeratedStateVariable("SearchCapabilities", typeof(System.String), false);
                RetVal[4].AddAssociation("GetSearchCapabilities", "SearchCaps");
                RetVal[5] = new UPnPModeratedStateVariable("A_ARG_TYPE_Result", typeof(System.String), false);
                RetVal[5].AddAssociation("Browse", "Result");
                RetVal[5].AddAssociation("CreateObject", "Elements");
                RetVal[5].AddAssociation("CreateObject", "Result");
                RetVal[5].AddAssociation("Search", "Result");
                RetVal[6] = new UPnPModeratedStateVariable("A_ARG_TYPE_Count", typeof(System.UInt32), false);
                RetVal[6].AddAssociation("Browse", "RequestedCount");
                RetVal[6].AddAssociation("Browse", "NumberReturned");
                RetVal[6].AddAssociation("Browse", "TotalMatches");
                RetVal[6].AddAssociation("Search", "RequestedCount");
                RetVal[6].AddAssociation("Search", "NumberReturned");
                RetVal[6].AddAssociation("Search", "TotalMatches");
                RetVal[7] = new UPnPModeratedStateVariable("A_ARG_TYPE_ObjectID", typeof(System.String), false);
                RetVal[7].AddAssociation("Browse", "ObjectID");
                RetVal[7].AddAssociation("CreateObject", "ContainerID");
                RetVal[7].AddAssociation("CreateObject", "ObjectID");
                RetVal[7].AddAssociation("CreateReference", "ContainerID");
                RetVal[7].AddAssociation("CreateReference", "ObjectID");
                RetVal[7].AddAssociation("CreateReference", "NewID");
                RetVal[7].AddAssociation("DestroyObject", "ObjectID");
                RetVal[7].AddAssociation("Search", "ContainerID");
                RetVal[7].AddAssociation("UpdateObject", "ObjectID");
                RetVal[8] = new UPnPModeratedStateVariable("A_ARG_TYPE_SearchCriteria", typeof(System.String), false);
                RetVal[8].AddAssociation("Search", "SearchCriteria");
                RetVal[9] = new UPnPModeratedStateVariable("A_ARG_TYPE_TransferTotal", typeof(System.String), false);
                RetVal[9].AddAssociation("GetTransferProgress", "TransferTotal");
                RetVal[10] = new UPnPModeratedStateVariable("A_ARG_TYPE_Filter", typeof(System.String), false);
                RetVal[10].AddAssociation("Browse", "Filter");
                RetVal[10].AddAssociation("Search", "Filter");
                RetVal[11] = new UPnPModeratedStateVariable("A_ARG_TYPE_SortCriteria", typeof(System.String), false);
                RetVal[11].AddAssociation("Browse", "SortCriteria");
                RetVal[11].AddAssociation("Search", "SortCriteria");
                RetVal[12] = new UPnPModeratedStateVariable("A_ARG_TYPE_BrowseFlag", typeof(System.String), false);
                RetVal[12].AllowedStringValues = new string[2]{"BrowseMetadata", "BrowseDirectChildren"};
                RetVal[12].AddAssociation("Browse", "BrowseFlag");
                RetVal[13] = new UPnPModeratedStateVariable("A_ARG_TYPE_TransferID", typeof(System.UInt32), false);
                RetVal[13].AddAssociation("ExportResource", "TransferID");
                RetVal[13].AddAssociation("GetTransferProgress", "TransferID");
                RetVal[13].AddAssociation("ImportResource", "TransferID");
                RetVal[13].AddAssociation("StopTransferResource", "TransferID");
                RetVal[14] = new UPnPModeratedStateVariable("A_ARG_TYPE_TransferLength", typeof(System.String), false);
                RetVal[14].AddAssociation("GetTransferProgress", "TransferLength");
                RetVal[15] = new UPnPModeratedStateVariable("A_ARG_TYPE_TagValueList", typeof(System.String), false);
                RetVal[15].AddAssociation("UpdateObject", "CurrentTagValue");
                RetVal[15].AddAssociation("UpdateObject", "NewTagValue");
                RetVal[16] = new UPnPModeratedStateVariable("A_ARG_TYPE_TransferStatus", typeof(System.String), false);
                RetVal[16].AllowedStringValues = new string[4]{"COMPLETED", "ERROR", "IN_PROGRESS", "STOPPED"};
                RetVal[16].AddAssociation("GetTransferProgress", "TransferStatus");
                RetVal[17] = new UPnPModeratedStateVariable("A_ARG_TYPE_URI", typeof(System.Uri), false);
                RetVal[17].AddAssociation("DeleteResource", "ResourceURI");
                RetVal[17].AddAssociation("ExportResource", "SourceURI");
                RetVal[17].AddAssociation("ExportResource", "DestinationURI");
                RetVal[17].AddAssociation("ImportResource", "SourceURI");
                RetVal[17].AddAssociation("ImportResource", "DestinationURI");
                RetVal[18] = new UPnPModeratedStateVariable("TransferIDs", typeof(System.String), true);
                RetVal[19] = new UPnPModeratedStateVariable("SortCapabilities", typeof(System.String), false);
                RetVal[19].AddAssociation("GetSortCapabilities", "SortCaps");

                UPnPService S = new UPnPService(1, "urn:schemas-upnp-org:service:ContentDirectory", URN, true, this);
                for(int i=0;i<RetVal.Length;++i)
                {
                   S.AddStateVariable(RetVal[i]);
                }
                S.AddMethod("Browse");
                S.AddMethod("CreateObject");
                S.AddMethod("CreateReference");
                S.AddMethod("DeleteResource");
                S.AddMethod("DestroyObject");
                S.AddMethod("ExportResource");
                S.AddMethod("GetSearchCapabilities");
                S.AddMethod("GetSortCapabilities");
                S.AddMethod("GetSystemUpdateID");
                S.AddMethod("GetTransferProgress");
                S.AddMethod("ImportResource");
                S.AddMethod("Search");
                S.AddMethod("StopTransferResource");
                S.AddMethod("UpdateObject");
                return(S);
            }
Esempio n. 19
0
        private void startMenuItem_Click(object sender, System.EventArgs e)
        {
            startMenuItem.Enabled = false;
            foreach (MenuItem i in pfcMenuItem.MenuItems) {i.Enabled = false;}
            foreach (MenuItem i in menuItem3.MenuItems) {i.Enabled = false;}
            InfoStringBox.Enabled = false;

            device = UPnPDevice.CreateRootDevice(900,1,"");
            device.UniqueDeviceName = Guid.NewGuid().ToString();
            device.StandardDeviceType = "MediaRenderer";
            device.FriendlyName = "Media Renderer (" + System.Net.Dns.GetHostName() + ")";
            device.HasPresentation = false;

            device.Manufacturer = "OpenSource";
            device.ManufacturerURL = "http://opentools.homeip.net/";
            device.PresentationURL = "/";
            device.HasPresentation = true;
            device.ModelName = "AV Renderer";
            device.ModelDescription = "Media Renderer Device";
            device.ModelURL = new Uri("http://opentools.homeip.net/");

            UPnPService ts = new UPnPService(1, "EmptyService", "EmptyService", true, this);
            ts.AddMethod("NullMethod");
            //device.AddService(ts);

            DText p = new DText();
            p.ATTRMARK = "\r\n";
            p[0] = this.InfoStringBox.Text;
            int len = p.DCOUNT();
            ProtocolInfoString[] istring = new ProtocolInfoString[len];
            for(int i=1;i<=len;++i)
            {
                istring[i-1] = new ProtocolInfoString(p[i]);
            }
            r = new AVRenderer(MaxConnections, istring, new AVRenderer.ConnectionHandler(NewConnectionSink));

            r.OnClosedConnection += new AVRenderer.ConnectionHandler(ClosedConnectionSink);

            if (supportRecordMenuItem.Checked == false)
            {
                r.AVT.RemoveAction_Record();
            }

            if (supportRecordQualityMenuItem.Checked == false)
            {
                r.AVT.RemoveAction_SetRecordQualityMode();
            }

            if (supportNextContentUriMenuItem.Checked == false)
            {
                r.AVT.RemoveAction_SetNextAVTransportURI();
            }

            if (MaxConnections == 0)
            {
                r.Manager.RemoveAction_PrepareForConnection();
                r.Manager.RemoveAction_ConnectionComplete();
            }

            r.AVT.GetUPnPService().GetStateVariableObject("CurrentPlayMode").AllowedStringValues = new String[3]{"NORMAL","REPEAT_ALL","INTRO"};

            r.Control.GetUPnPService().GetStateVariableObject("A_ARG_TYPE_Channel").AllowedStringValues = new String[3]{"Master","LF","RF"};
            r.Control.GetUPnPService().GetStateVariableObject("RedVideoBlackLevel").SetRange((ushort)0,(ushort)100,(ushort)1);
            r.Control.GetUPnPService().GetStateVariableObject("GreenVideoBlackLevel").SetRange((ushort)0,(ushort)100,(ushort)1);
            r.Control.GetUPnPService().GetStateVariableObject("BlueVideoBlackLevel").SetRange((ushort)0,(ushort)100,(ushort)1);
            r.Control.GetUPnPService().GetStateVariableObject("RedVideoGain").SetRange((ushort)0,(ushort)100,(ushort)1);
            r.Control.GetUPnPService().GetStateVariableObject("GreenVideoGain").SetRange((ushort)0,(ushort)100,(ushort)1);
            r.Control.GetUPnPService().GetStateVariableObject("BlueVideoGain").SetRange((ushort)0,(ushort)100,(ushort)1);

            r.Control.GetUPnPService().GetStateVariableObject("Brightness").SetRange((ushort)0,(ushort)100,(ushort)1);
            r.Control.GetUPnPService().GetStateVariableObject("Contrast").SetRange((ushort)0,(ushort)100,(ushort)1);
            r.Control.GetUPnPService().GetStateVariableObject("Sharpness").SetRange((ushort)0,(ushort)100,(ushort)1);
            r.Control.GetUPnPService().GetStateVariableObject("Volume").SetRange((UInt16)0,(UInt16)100,(ushort)1);

            device.AddService(r.Control);
            device.AddService(r.AVT);
            device.AddService(r.Manager);

            //device.AddDevice(r);

            device.StartDevice();

            //r.Start();
        }
        internal static UPnPService Parse(String XML)
        {
            StringReader MyString = new StringReader(XML);
            XmlTextReader XMLDoc = new XmlTextReader(MyString);
            UPnPService RetVal = new UPnPService(1);

            XMLDoc.Read();
            XMLDoc.MoveToContent();

            if (XMLDoc.LocalName == "service")
            {
                if (XMLDoc.AttributeCount > 0)
                {
                    for (int ax = 0; ax < XMLDoc.AttributeCount; ++ax)
                    {
                        XMLDoc.MoveToAttribute(ax);
                        if (XMLDoc.LocalName == "MaxVersion")
                        {
                            RetVal.SetVersion(XMLDoc.Value);
                        }
                    }
                    XMLDoc.MoveToContent();
                    XMLDoc.Read();
                }
                else
                {
                    XMLDoc.Read();
                    XMLDoc.MoveToContent();
                }
                while (XMLDoc.LocalName != "service")
                {
                    switch (XMLDoc.LocalName)
                    {
                        case "serviceType":
                            RetVal.ServiceURN = XMLDoc.ReadString();
                            break;
                        case "serviceId":
                            RetVal.ServiceID = XMLDoc.ReadString();
                            break;
                        case "SCPDURL":
                            RetVal.SCPDURL = XMLDoc.ReadString();
                            break;
                        case "controlURL":
                            RetVal.ControlURL = XMLDoc.ReadString();
                            break;
                        case "eventSubURL":
                            RetVal.EventURL = XMLDoc.ReadString();
                            break;
                        default:
                            break;
                    }
                    XMLDoc.Read();
                    XMLDoc.MoveToContent();
                }
            }
            return (RetVal);
        }
        protected void HandleInvokeEx(UPnPService sender, string MethodName, UPnPArgument[] Args, object ReturnValue, object Handle)
        {
            if (sender != service) return;
            if (MethodName != action.Name) return;

            TimeSpan invokeSpan = DateTime.Now.Subtract(invokeTime);

            string timeStr;
            if (invokeSpan.TotalMilliseconds >= 1000)
            {
                timeStr = invokeSpan.Seconds + "." +  invokeSpan.Milliseconds + "sec";
            }
            else
            {
                timeStr = invokeSpan.Milliseconds + "ms";
            }

            for (int i=0;i<Args.Length;++i)
            {
                for (int j=0;j<argControlList.Length;j++)
                {
                    if (Args[i].Name == argControlList[j].UPnPArgument.Name)
                    {
                        argControlList[j].ArgumentValue = Args[i].DataValue;
                    }
                }
            }

            if (ReturnValue != null)
            {
                for (int j=0;j<argControlList.Length;j++)
                {
                    if (argControlList[j].UPnPArgument.IsReturnValue == true)
                    {
                        argControlList[j].ArgumentValue = ReturnValue;
                    }
                }
            }

            statusBar.Text = "Invocation complete (" + timeStr + "), waiting for next invocation arguments.";

            if (autoInvokeMenuItem.Checked == true)
            {
                invokeButton_Click(null,null);
            }
        }
        protected void HandleInvokeError(UPnPService sender, string MethodName, UPnPArgument[] Args, UPnPInvokeException e, object Handle)
        {
            if (sender != service) return;
            if (MethodName != action.Name) return;
            TimeSpan invokeSpan = DateTime.Now.Subtract(invokeTime);

            string timeStr;
            if (invokeSpan.TotalMilliseconds >= 1000)
            {
                timeStr = invokeSpan.Seconds + "." +  invokeSpan.Milliseconds + "sec";
            }
            else
            {
                timeStr = invokeSpan.Milliseconds + "ms";
            }

            if(e.UPNP==null)
            {
                statusBar.Text = "Invocation error (" + timeStr + "): " + e.ToString();
            }
            else
            {
                statusBar.Text = "Invocation Error Code " + e.UPNP.ErrorCode.ToString() + " (" + timeStr + "): " + e.UPNP.ErrorDescription;
            }
        }
 private void Sink_SetVerticalKeystone(UPnPService sender, string MethodName, UPnPArgument[] Args, object RetVal, int Handle)
 {
     if(OnResult_SetVerticalKeystone != null)
     {
        OnResult_SetVerticalKeystone((System.UInt32 )Args[0].DataValue, (System.Int16 )Args[1].DataValue, null, Handle);
     }
     WeakReference[] w = (WeakReference[])WeakList_SetVerticalKeystone.ToArray(typeof(WeakReference));
     foreach(WeakReference wr in w)
     {
         if(wr.IsAlive==true)
         {
            ((Delegate_OnResult_SetVerticalKeystone)wr.Target)((System.UInt32 )Args[0].DataValue, (System.Int16 )Args[1].DataValue, null, Handle);
         }
         else
         {
             WeakList_SetVerticalKeystone.Remove(wr);
         }
     }
 }
 public void _subscribe(int Timeout, UPnPService.UPnPEventSubscribeHandler UPnPEventCallback)
 {
     _S.Subscribe(Timeout, UPnPEventCallback);
 }
 private void Sink_SetVolumeDB(UPnPService sender, string MethodName, UPnPArgument[] Args, object RetVal, int Handle)
 {
     for(int i=0;i<Args.Length;++i)
     {
         switch(Args[i].Name)
         {
             case "Channel":
                 switch((string)Args[i].DataValue)
                 {
                     case "Master":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.MASTER;
                         break;
                     case "LF":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.LF;
                         break;
                     case "RF":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.RF;
                         break;
                     case "CF":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.CF;
                         break;
                     case "LFE":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.LFE;
                         break;
                     case "LS":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.LS;
                         break;
                     case "RS":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.RS;
                         break;
                     case "LFC":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.LFC;
                         break;
                     case "RFC":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.RFC;
                         break;
                     case "SD":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.SD;
                         break;
                     case "SL":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.SL;
                         break;
                     case "SR ":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.SR_;
                         break;
                     case "T":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.T;
                         break;
                     case "B":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.B;
                         break;
                     case "Vendor defined":
                         Args[i].DataValue = Enum_A_ARG_TYPE_Channel.VENDOR_DEFINED;
                         break;
                     default:
                        SetUnspecifiedValue("Enum_A_ARG_TYPE_Channel", (string)Args[i].DataValue);
                        Args[i].DataValue = Enum_A_ARG_TYPE_Channel._UNSPECIFIED_;
                        break;
                 }
                 break;
         }
     }
     if(OnResult_SetVolumeDB != null)
     {
        OnResult_SetVolumeDB((System.UInt32 )Args[0].DataValue, (Enum_A_ARG_TYPE_Channel )Args[1].DataValue, (System.Int16 )Args[2].DataValue, null, Handle);
     }
     WeakReference[] w = (WeakReference[])WeakList_SetVolumeDB.ToArray(typeof(WeakReference));
     foreach(WeakReference wr in w)
     {
         if(wr.IsAlive==true)
         {
            ((Delegate_OnResult_SetVolumeDB)wr.Target)((System.UInt32 )Args[0].DataValue, (Enum_A_ARG_TYPE_Channel )Args[1].DataValue, (System.Int16 )Args[2].DataValue, null, Handle);
         }
         else
         {
             WeakList_SetVolumeDB.Remove(wr);
         }
     }
 }
 protected void _subscribe_sink(UPnPService sender, bool OK)
 {
     if(OnSubscribe!=null)
     {
         OnSubscribe(OK);
     }
 }
 private void deviceTree_DoubleClick(object sender, System.EventArgs e)
 {
     if (deviceTree.SelectedNode == null) return;
     object infoObject = deviceTree.SelectedNode.Tag;
     if (infoObject.GetType() == typeof(UPnPService))
     {
         service = (UPnPService)infoObject;
         this.DialogResult = System.Windows.Forms.DialogResult.OK;
     }
 }
 private void Error_Sink_SetColorTemperature(UPnPService sender, string MethodName, UPnPArgument[] Args, UPnPInvokeException e, int Handle)
 {
     if(OnResult_SetColorTemperature != null)
     {
          OnResult_SetColorTemperature((System.UInt32 )Args[0].DataValue, (System.UInt16)UPnPService.CreateObjectInstance(typeof(System.UInt16),null), e, Handle);
     }
     WeakReference[] w = (WeakReference[])WeakList_SetColorTemperature.ToArray(typeof(WeakReference));
     foreach(WeakReference wr in w)
     {
         if(wr.IsAlive==true)
         {
            ((Delegate_OnResult_SetColorTemperature)wr.Target)((System.UInt32 )Args[0].DataValue, (System.UInt16)UPnPService.CreateObjectInstance(typeof(System.UInt16),null), e, Handle);
         }
         else
         {
             WeakList_SetColorTemperature.Remove(wr);
         }
     }
 }
 internal _DvContentDirectory(DvContentDirectory n)
 {
     Outer = n;
     S = BuildUPnPService();
 }
 internal void _Update(UPnPService s)
 {
     this.__controlurl = s.__controlurl;
     this.__eventurl = s.__eventurl;
     this.EventCallbackURL = s.EventCallbackURL;
     this.EventURL = s.EventURL;
     if (this.SubscribeCounter != 0)
     {
         UPnPService.SubscribeCycle.Remove(this.GetHashCode());
         this.SubscribeCounter = 0;
         this.Subscribe(CurrentTimeout, null);
     }
     if (this.OnServiceReset != null) this.OnServiceReset(this);
 }