public GseNode(tGSE gse) { if (gse == null) { return; } Name = gse.ldInst + "." + gse.cbName; Tag = gse; if (gse.Address != null) { var n = new AddressNode(gse.Address); Nodes.Add(n); } }
/// <summary> /// This method shows a dialog box that allows to edit a GOOSE or GSE configuration /// </summary> /// <param name="gseSelected"> /// GOOSE or GSE that was selected for Edit his configuration. /// </param> /// <param name="treeSCL"> /// TreeNode reference /// </param> /// <param name="apParentName"> /// Name of Access point where configuration will be edited according to the LN0 selected. /// </param> /// <param name="iedParentName"> /// Name of IED where configuration will be edited according to the LN0 selected. /// </param> public GSEDialog(TreeViewSCL tvscl, TreeNode node, tIED ied, tAccessPoint ap, tLDevice ld, tGSEControl gc) { this.editWindow = true; this.tvscl = tvscl; this.scl = tvscl.scl; this.ld = ld; this.ied = ied; this.ap = ap; this.node = node; this.gsec = gc; InitializeComponent(); this.datSet.SelectedItem = gc.datSet; this.oldGSEName = gc.name; this.IdInst.Text = this.ld.inst; var hgse = this.scl.Configuration.GetGSE(ied.name, ap.name, ld.inst, gc.name); if (hgse["gse"] is tGSE) { this.gse = (tGSE)hgse["gse"]; this.cbName.Text = gse.cbName; this.desc.Text = gse.desc; if (gse.Address != null && gse.Address.P != null) { for (int i = 0; i < gse.Address.P.Length; i++) { if (gse.Address.P[i].typeEnum == tPTypeEnum.MAC_Address) { this.mac.Text = gse.Address.P[i].Value; } if (gse.Address.P[i].typeEnum == tPTypeEnum.APPID) { this.appId.Text = gse.Address.P[i].Value; } if (gse.Address.P[i].typeEnum == tPTypeEnum.VLAN_PRIORITY) { this.vLANP.Text = gse.Address.P[i].Value; } if (gse.Address.P[i].typeEnum == tPTypeEnum.VLAN_ID) { this.vLANI.Text = gse.Address.P[i].Value; } } } } this.Text = "Edit GOOSE"; }
/// <summary> /// This method Edit a GSEControl shows the information to edit all values pre-configured for GSE and GSEControl classes. /// </summary> /// <param name="treeSCL"> /// TreeNode reference /// </param> /// <param name="gseName"> /// Name of GSE to modify /// </param> /// <param name="gsc"> /// Array of GSEControl values. /// </param> public void UpdateGSE() { this.gsec.datSet = this.datSet.SelectedItem.ToString(); node.TreeView.SelectedNode.Tag = this.gsec; node.TreeView.SelectedNode.Text = this.gsec.name; tGSE gse = (tGSE)tvscl.GetGSENode(ied.name, ap.name, ld.inst, gsec.name).Tag; gse.desc = this.desc.Text; if (gse.Address == null) { gse.InitAddess(); } if (gse.Address != null && gse.Address.P != null) { for (int i = 0; i < gse.Address.P.Length; i++) { if (gse.Address.P[i].typeEnum == tPTypeEnum.MAC_Address) { gse.Address.P[i].Value = this.mac.Text; } if (gse.Address.P[i].typeEnum == tPTypeEnum.APPID) { gse.Address.P[i].Value = this.appId.Text; } if (gse.Address.P[i].typeEnum == tPTypeEnum.VLAN_PRIORITY) { gse.Address.P[i].Value = this.vLANP.Text; } if (gse.Address.P[i].typeEnum == tPTypeEnum.VLAN_ID) { gse.Address.P[i].Value = this.vLANI.Text; } } } gse.cbName = this.cbName.Text; this.gsec.name = this.cbName.Text; }
/// <summary> /// This method Adds a new Node. shows the information to edit all values pre-configured for GSE and GSEControl classes. /// </summary> /// <param name="treeSCL"> /// TreeNode reference. /// </param> /// <param name="gsc"> /// Array of GSEControl values /// </param> public void AddGSE() { // Add a GSEControl to IED tGSEControl cgse = new tGSEControl(); cgse.name = this.cbName.Text; cgse.appID = this.appId.Text; cgse.desc = this.desc.Text; cgse.type = tGSEControlTypeEnum.GOOSE; cgse.datSet = this.datSet.SelectedItem.ToString(); ld.LN0.AddGSEControl(cgse); if (!this.tvscl.AddGSEControlNode(ied.name, ap.name, ld.inst, cgse)) { MessageBox.Show("Can't update Tree for new GSEControl", "Adding a New GOOSE", MessageBoxButtons.OK, MessageBoxIcon.Error); } // Add a GSE to Network tGSE gse = new tGSE(); gse.cbName = cgse.name; gse.desc = cgse.desc; gse.ldInst = ld.inst; gse.InitAddess(); if (gse.Address != null && gse.Address.P != null) { for (int i = 0; i < gse.Address.P.Length; i++) { if (gse.Address.P[i].typeEnum == tPTypeEnum.MAC_Address) { gse.Address.P[i].Value = this.mac.Text; } if (gse.Address.P[i].typeEnum == tPTypeEnum.APPID) { gse.Address.P[i].Value = this.appId.Text; } if (gse.Address.P[i].typeEnum == tPTypeEnum.VLAN_PRIORITY) { gse.Address.P[i].Value = this.vLANP.Text; } if (gse.Address.P[i].typeEnum == tPTypeEnum.VLAN_ID) { gse.Address.P[i].Value = this.vLANI.Text; } } } int iedindex = this.scl.GetIED(ied.name); var lcap = this.scl.GetIEDConnectedAP(iedindex); for (int i = 0; i < lcap.Count; i++) { IEDConnectedAP iap = (IEDConnectedAP)lcap[i]; tConnectedAP cap = this.scl.GetConnectedAP(iap.subnetwork, iap.connectedap); if (cap.apName.Equals(ap.name) && cap.iedName.Equals(ied.name)) { cap.AddGSE(gse); System.Console.WriteLine("Adding a new GSE Node..."); if (!this.tvscl.AddGSENode(ied.name, ap.name, ld.inst, gse)) { MessageBox.Show("Can't update Tree new GSE", "Adding a New GOOSE", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }