Example #1
0
        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);
            }
        }
Example #2
0
        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);
        }