private void VisitPorts(CyPhyInterfaces.RFPort currentPort, CyPhyInterfaces.RFPort prevPort) { if (m_rfModelFound) { return; } if (CodeGenerator.verbose) { Logger.WriteInfo("Current port: " + currentPort.Name + " (" + currentPort.ID + ") parent: " + currentPort.ParentContainer.Name); } if (currentPort.ParentContainer.Kind == "RFModel") { m_rfModelFound = true; // Add excitation CyPhyInterfaces.RFModel rfModel = CyPhyClasses.RFModel.Cast(currentPort.ParentContainer.Impl); CSXCAD.Ara.Module m = m_endo.GetModule(m_slotIndex); CSXCAD.Compound excitation = new Compound(null, "Excitation", new Vector3D(rfModel.Attributes.X, rfModel.Attributes.Y, m.PCB.Thickness), (double)rfModel.Attributes.Rotation * Math.PI / 2); excitation.Add(new LumpedPort(100, 1, 50.0, new Vector3D(0, 0, -m.PCB.Thickness), new Vector3D(0, 0, 0), ENormDir.Z, true)); m.PCB.Add(excitation); return; } var portQuery = (prevPort == null) ? (from p in currentPort.SrcConnections.PortCompositionCollection select p.SrcEnd).Union( from p in currentPort.DstConnections.PortCompositionCollection select p.DstEnd) : (from p in currentPort.SrcConnections.PortCompositionCollection where p.SrcEnd.ID != prevPort.ID select p.SrcEnd).Union( from p in currentPort.DstConnections.PortCompositionCollection where p.DstEnd.ID != prevPort.ID select p.DstEnd); foreach (CyPhyClasses.RFPort nextPort in portQuery) { VisitPorts(nextPort, currentPort); } }
public void Initialize() { // Ara Endo endo = new CSXCAD.Ara.Endo(); CSXCAD.Ara.Module araModule = null; switch (moduleSize) { case "1x2": araModule = new CSXCAD.Ara.Module_1x2("dut-module"); break; case "2x2": araModule = new CSXCAD.Ara.Module_2x2("dut-module"); break; default: break; } endo.AddModule(slotIndex, araModule); antenna = new CSXCAD.XmlCompound(null, "dut-antenna", new Vector3D(x, y, thickness), rot); antenna.Parse(XElement.Load(inputFile)); araModule.PCB.Add(antenna); // Excitation CSXCAD.Compound excitation = new Compound(null, "Excitation", new Vector3D(x, y, thickness), rot); excitation.Add(new LumpedPort(100, 1, impedance, new Vector3D(0, 0, -araModule.PCB.Thickness), new Vector3D(0, 0, 0), ENormDir.Z, true)); araModule.PCB.Add(excitation); }