private XElement _WriteOutputs(SmartOutputController controller)
 {
     return(new XElement(ELEMENT_OUTPUTS,
                         controller.Outputs.Select((x, index) =>
                                                   new XElement(ELEMENT_OUTPUT,
                                                                new XAttribute(ATTR_NAME, x.Name),
                                                                new XAttribute(ATTR_ID, x.Id)))));
 }
        public XElement WriteObject(IOutputDevice value)
        {
            SmartOutputController controller = (SmartOutputController)value;

            XElement element = new XElement(ELEMENT_SMART_CONTROLLER,
                                            new XAttribute(ATTR_NAME, controller.Name),
                                            new XAttribute(ATTR_HARDWARE_ID, controller.ModuleId),
                                            new XAttribute(ATTR_ID, controller.Id),
                                            _WriteOutputs(controller));

            return(element);
        }
        private void _ReadOutputs(SmartOutputController controller, XElement element)
        {
            XElement outputsElement = element.Element(ELEMENT_OUTPUTS);

            if (outputsElement != null)
            {
                int index = 0;
                foreach (XElement outputElement in outputsElement.Elements(ELEMENT_OUTPUT))
                {
                    Guid?  id   = XmlHelper.GetGuidAttribute(outputElement, ATTR_ID);
                    string name = XmlHelper.GetAttribute(outputElement, ATTR_NAME) ?? "Unnamed output";

                    IntentOutputFactory outputFactory = new IntentOutputFactory();
                    IntentOutput        output        = (IntentOutput)outputFactory.CreateOutput(id.GetValueOrDefault(), name, index++);

                    controller.AddOutput(output);
                }
            }
        }
Exemple #4
0
        public IOutputDevice ReadObject(XElement element)
        {
            try {
                string name = XmlHelper.GetAttribute(element, ATTR_NAME);
                if (name == null)
                {
                    return(null);
                }

                Guid?moduleId = XmlHelper.GetGuidAttribute(element, ATTR_HARDWARE_ID);
                if (moduleId == null)
                {
                    return(null);
                }

                Guid?moduleInstanceId = XmlHelper.GetGuidAttribute(element, ATTR_HARDWARE_INSTANCE_ID);
                if (moduleInstanceId == null)
                {
                    return(null);
                }

                Guid?deviceId = XmlHelper.GetGuidAttribute(element, ATTR_ID);
                if (deviceId == null)
                {
                    return(null);
                }

                SmartControllerFactory smartControllerFactory = new SmartControllerFactory();
                SmartOutputController  controller             =
                    (SmartOutputController)
                    smartControllerFactory.CreateDevice(deviceId.Value, moduleId.Value, moduleInstanceId.Value, name);

                _ReadOutputs(controller, element);

                return(controller);
            } catch (Exception e) {
                logging.Error("Error loading Smart Controller from XML", e);
                return(null);
            }
        }