public async Task InitEmberTree() { bool done = false; while (!done) { try { log.Info("Initializing EmBER+ tree"); // Initiate EmBER+ tree _emberTree = new EmberPlusProvider( _configuration.EmberTree.Port, _configuration.EmberTree.Identifier, _configuration.EmberTree.Description); _emberTree.ChangedTreeEvent += EmberTreeOnTreeDataAsync; _emberTree.MatrixConnectionEvent += ReceivedMatrixConnectionEvent; _emberTree.CreateIdentityNode( RootIdentifiers.Identity, _configuration.EmberTree.Product, _configuration.EmberTree.Company, _configuration.EmberTree.Version); // Get saved values //var template = TemplateParserHelper.ParseTemplateJsonFile(_configuration.EmberTree.TreeTemplateFile); // Initialize the actual tree var node = _emberTree.AddChildNode(RootIdentifiers.Utilities); node.AddBooleanParameter(1, "booleanParam", _emberTree, true, true); node.AddStringParameter(2, "stringParam", _emberTree, true, "default"); node.AddIntegerParameter(3, "integerParam", _emberTree, true, 125, 0, 255); //node.AddEnumParameter(4, "enumParameter", this, true, typeof(MockEnumParameter), 0, ""); string[] sourceNames = { "On" }; string blindSourceName = "Off"; string[] targetNames = { "T1", "T2" }; _gpioMatrix = _emberTree.ProviderRoot.AddMatrixOneToNBlindSource(RootIdentifiers.Matrix, sourceNames, targetNames, blindSourceName, _emberTree, true, "", "GPO"); _emberTree.SetUpFinalListeners(); EmberTreeState = true; log.Info("EmBER+ tree initiated"); done = true; } catch (Exception ex) { EmberTreeState = false; log.Error(ex, "Exception when initializing EmBER+ tree"); Thread.Sleep(4000); } } }
public void TeardownEmberTree() { log.Info("Tearing down current EmBER+ tree"); if (_emberTree != null) { _emberTree.ChangedTreeEvent -= EmberTreeOnTreeDataAsync; _emberTree.Dispose(); _emberTree = null; EmberTreeState = false; } else { log.Warn("EmBER+ tree was already null, so no need to tear it down"); } }
public async Task InitEmberTree() { bool done = false; while (!done) { try { log.Info("Initializing EmBER+ tree"); Debug.WriteLine("Initializing EmBER+ tree"); // Initiate EmBER+ tree _emberTree = new EmberPlusProvider( _configuration.EmberTree.Port, _configuration.EmberTree.Identifier, _configuration.EmberTree.Description); _emberTree.ChangedTreeEvent += EmberTreeOnTreeDataAsync; _emberTree.CreateIdentityNode( RootIdentifiers.Identity, _configuration.EmberTree.Product, _configuration.EmberTree.Company, _configuration.EmberTree.Version); // Get saved values //var template = TemplateParserHelper.ParseTemplateJsonFile(_configuration.EmberTree.TreeTemplateFile); _emberTree.InitializeAllNodes(RootIdentifiers.Utilities); _emberTree.SetUpFinalListeners(); EmberTreeState = true; log.Info("EmBER+ tree initiated"); done = true; } catch (Exception ex) { EmberTreeState = false; log.Error(ex, "Exception when initializing EmBER+ tree"); Thread.Sleep(4000); } } }
public static void AddIntegerParameter(this Node node, int index, string identifier, EmberPlusProvider provider, bool isWritable, int value = 0, int min = 0, int max = 255, string description = "") { NodeAsserter.AssertIdentifierValid(identifier); new IntegerParameter(index, node, identifier, provider.dispatcher, min, max, isWritable) { Value = value, Description = description }; }
public static void AddBooleanParameter(this Node node, int index, string identifier, EmberPlusProvider provider, bool isWritable, bool value = false, string description = "") { NodeAsserter.AssertIdentifierValid(identifier); new BooleanParameter(index, node, identifier, provider.dispatcher, isWritable) { Value = value, Description = description }; }
public static EmberNode AddSubNode(this Node node, int index, string identifier, EmberPlusProvider provider) { NodeAsserter.AssertIdentifierValid(identifier); return(new EmberNode(index, node, identifier, provider)); }
public static EmberNode AddSubNode(this Node node, ValueType identifier, EmberPlusProvider provider) { return(AddSubNode(node, (int)identifier, identifier.ToString(), provider)); }
public EmberNode(int number, Element parent, string identifier, EmberPlusProvider provider) : base(number, parent, identifier) { Provider = provider; }
public static IntegerParameter AddIntegerParameter(this Node node, ValueType identifier, EmberPlusProvider provider, bool isWritable, int value = 0, int min = 0, int max = 255, string description = "") { return(AddIntegerParameter(node, (int)identifier, identifier.ToString().Replace("_", " "), provider, isWritable, value, min, max, description)); }
public static BooleanParameter AddBooleanParameter(this Node node, ValueType identifier, EmberPlusProvider provider, bool isWritable, bool value = false, string description = "") { return(AddBooleanParameter(node, (int)identifier, identifier.ToString().Replace("_", " "), provider, isWritable, value, description)); }
public static StringParameter AddStringParameter(this Node node, int index, string identifier, EmberPlusProvider provider, bool isWritable, string value = "", string description = "") { NodeAsserter.AssertIdentifierValid(identifier); return(new StringParameter(index, node, identifier, provider.dispatcher, isWritable) { Value = value, Description = description }); }
public static OneToNBlindSourceMatrix AddMatrixOneToNBlindSource(this Node node, int index, string identifier, string[] sourceNames, string[] targetNames, string blindSourceName, EmberPlusProvider provider, bool isWritable = true, string description = "", string matrixIdentifier = "matrix") { var oneToN = new Node(index, node, identifier) { Description = description, }; var labels = new Node(1, oneToN, "labels") { //SchemaIdentifier = "de.l-s-b.emberplus.matrix.labels" }; var targetLabels = new Node(1, labels, "targets"); var sourceLabels = new Node(2, labels, "sources"); var targets = new List <Signal>(); var sources = new List <Signal>(); // Add the blind source var blindIndex = 0; var blindParameter = new StringParameter(blindIndex, sourceLabels, $"b-{blindIndex}", provider.dispatcher, isWritable: true) { Value = blindSourceName }; var blindSignal = new Signal(blindIndex, blindParameter); sources.Add(blindSignal); // Add sources var numberOfBlinds = sources.Count(); for (int number = 0; number < sourceNames.Length; number++) { var sourceParameter = new StringParameter(number + numberOfBlinds, sourceLabels, $"s-{number}", provider.dispatcher, isWritable: true) { Value = sourceNames[number] }; sources.Add(new Signal(number + numberOfBlinds, sourceParameter)); } // Add targets for (int number = 0; number < targetNames.Length; number++) { var targetParameter = new StringParameter(number, targetLabels, $"t-{number}", provider.dispatcher, isWritable: true) { Value = targetNames[number] }; targets.Add(new Signal(number, targetParameter)); } var matrix = new OneToNBlindSourceMatrix( 2, oneToN, matrixIdentifier, provider.dispatcher, targets, sources, blindSignal, labels, isWritable) { //SchemaIdentifier = "de.l-s-b.emberplus.matrix.oneToN" }; //foreach (var target in matrix.Targets) // matrix.Connect(target, new[] { matrix.BlindSource }, null); return(matrix); }
public static OneToNBlindSourceMatrix AddMatrixOneToNBlindSource(this Node node, ValueType identifier, string[] sourceNames, string[] targetNames, string blindSourceName, EmberPlusProvider provider, bool isWritable = true, string description = "", string matrixIdentifier = "matrix") { return(AddMatrixOneToNBlindSource(node, (int)identifier, identifier.ToString().Replace("_", " "), sourceNames, targetNames, blindSourceName, provider, isWritable, description, matrixIdentifier)); }