private Controller Controller(short id, string name, params Controller[] children)
        {
            var commonInterface = new CtrlCommonInterface
            {
                Info = new CtrlInfo
                {
                    CtrlId = id,
                    Name   = name,
                    Type   = "Simulated Controller",
                },
                SoftwareConfig = new CtrlSoftwareConfig
                {
                    Enable     = true,
                    Simulation = true,
                },
                Job = new CtrlJob
                {
                    EnableForcing = true,
                    Mode          = (short)ControllerMode.Auto,
                    StateName     = "cSTA_Running",
                    SubStateName  = "cSTA_Simulated",
                }
            };
            var controllerTag      = new Tag(name, "Simulation");
            var commonInterfaceTag = new Tag(name.CommonInterface(), "Simulation", "Ctr_Int")
            {
                Value = commonInterface
            };

            controllerTag.Childs.Add(commonInterfaceTag);
            var controllerTagWrapper = new ControllerTagWrapper(controllerTag);
            var controller           = new Controller(_tagController, controllerTagWrapper);

            foreach (Controller child in children)
            {
                controller.AddChild(child);
            }
            controller.UpdateCommands(new[] { StopCommand() });
            controller.AddActualValues(new[] { ThroughputValue() });
            controller.AddConfigurations(new[] { VelocityParameter(), RunningTag() });
            controller.AddInputs(new[] { RunningTag() });
            controller.AddOutputs(new[] { RunningTag() });
            controller.AddParameters(new[] { VelocityParameter() });
            return(controller);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Gets the commands under the controller tag.
        /// </summary>
        /// <returns>A <see cref="IEnumerable{T}"/> of <see cref="Command"/> instances.</returns>
        public IEnumerable <Command> GetCommands()
        {
            CtrlCommonInterface commonInterfaceValue = GetCommonInterfaceValue();

            if (commonInterfaceValue == null)
            {
                yield break;
            }
            CtrlJob job = commonInterfaceValue.Job;

            if (job == null)
            {
                yield break;
            }
            foreach (Command command in job.Commands().Where(c => !c.Name.IsNullOrEmpty()))
            {
                yield return(command);
            }
        }