public MainWindow() { GroupAddressesProvider.SeedList(); Container = BuildContainer(); mesh = Container.Resolve <IBluetoothMeshContext>(); foreach (var server in mesh.NodeServers) { server.SetDispacher(Container.Resolve <ICommandDispatcher>()); } Node clientNode = mesh.Nodes[0]; bearer = mesh.NodeServers.ToList().FirstOrDefault(x => x.Node.Id == 1); serverModel = (ConfigurationClientModel)clientNode.Elements[ElementType.primary].Models[ModelType.ConfigurationClient]; InitializeComponent(); Providers.LayoutProvider.DrawGrid(canvas); Providers.LayoutProvider.DrawGrid(canvas); Providers.LayoutProvider.DrawConnections(canvas, mesh); Providers.LayoutProvider.DrawNodes(canvas, mesh); Providers.LayoutProvider.ColorNodes(); Providers.LayoutProvider.SignNodes(canvas, mesh); Setup(); }
public ble() { InitializeComponent(); GroupAddressesProvider.SeedList(); Container = BuildContainer(); mesh = Container.Resolve <IBluetoothMeshContext>(); foreach (var server in mesh.NodeServers) { server.SetDispacher(Container.Resolve <ICommandDispatcher>()); } Node clientNode = mesh.Nodes[0]; bearer = mesh.NodeServers.ToList().FirstOrDefault(x => x.Node.Id == 1); serverModel = (ConfigurationClientModel)clientNode.Elements[ElementType.primary].Models[ModelType.ConfigurationClient]; }
private void IssueMessage(string issuingNodeAnswer, string procedureAnswer, string messageTypeAnswer, string parameterAnswer, string addressTypeAnswer, string addressAnswer) { var message = new BaseRequest(); Enum.TryParse(procedureAnswer, out Procedure procedure); message.Procedure = procedure; Enum.TryParse(messageTypeAnswer, out MessageType messageType); message.MessageType = messageType; message.Parameters = Convert.ToInt32(parameterAnswer); Enum.TryParse(addressAnswer, out AddressType addressType); int addressValue = 0; switch (addressType) { case AddressType.Unassigned: break; case AddressType.Unicast: addressValue = Convert.ToInt32(addressAnswer); message.DST = mesh.Nodes.Select(x => x.Address).FirstOrDefault(x => x.Value == addressValue); break; case AddressType.Virtual: var a = mesh.Nodes.SelectMany(x => x.Elements.Values); addressValue = Convert.ToInt32(addressAnswer); message.DST = mesh.Nodes.Select(x => x.Address).FirstOrDefault(x => x.Value == addressValue); break; case AddressType.Group: addressValue = Convert.ToInt32(addressAnswer); message.DST = GroupAddressesProvider.Dictionary.Values.FirstOrDefault(x => x.Value == addressValue); break; default: break; } int issuingNode = Int32.Parse(issuingNodeAnswer); Node issuer = GetNodeById(issuingNode); issuer.StatusFlag = 1; bearer = mesh.NodeServers.ToList().FirstOrDefault(x => x.Node.Id == issuingNode); serverModel.SendMessage(bearer, message); }
public BaseRequestCommand(NodeBearer nodeServer, BaseRequest incomingObject) { NodeServer = nodeServer; IncomingObject = incomingObject; }
public BluetoothMeshContext() { GroupAddressesProvider.SeedList(); Nodes = new List <Node>() { new Node(1, new Posistion(1, 1), new Features() { Relay = false, Proxy = true, Friend = true }, GetClient()), new Node(2, new Posistion(27, 10), new Features() { Relay = false, Proxy = false, Friend = true }, GetLightBulb()), new Node(3, new Posistion(8, 6), new Features() { Relay = true, Proxy = false, Friend = true }), new Node(4, new Posistion(3, 13), new Features() { Relay = false, Proxy = false, Friend = true }), new Node(5, new Posistion(21, 27), new Features() { Relay = false, Proxy = false, Friend = true }, GetLightBulb()), new Node(6, new Posistion(15, 13), new Features() { Relay = true, Proxy = false, Friend = true }), new Node(7, new Posistion(9, 21), new Features() { Relay = false, Proxy = false, Friend = true }, GetLightBulb()), new Node(8, new Posistion(25, 16), new Features() { Relay = true, Proxy = false, Friend = true }), new Node(9, new Posistion(33, 19), new Features() { Relay = false, Proxy = false, Friend = true }), }; NodeServers = new List <NodeBearer>(); foreach (var node in Nodes) { var nodeServer = new NodeBearer(node); NodeServers.Add(nodeServer); } Nodes[0].Elements[ElementType.primary].Models[ModelType.ConfigurationServer].Procedures.Clear(); #region default subscriptions Elements.Where(x => x.Models.ContainsKey(ModelType.Light)).ToList().ForEach(x => x.Subscriptions.Add(GroupAddressesProvider.Dictionary[GroupAddresses.AllLights])); foreach (var element in Elements.Where(x => x.Models.ContainsKey(ModelType.ConfigurationServer))) { ConfigurationServerModel configurationServer = (ConfigurationServerModel)element.Models[ModelType.ConfigurationServer]; if (configurationServer != null) { if (configurationServer.CompositionData.IsFriend) { element.Subscriptions.Add(GroupAddressesProvider.Dictionary[GroupAddresses.AllFriends]); } if (configurationServer.CompositionData.IsRelay) { element.Subscriptions.Add(GroupAddressesProvider.Dictionary[GroupAddresses.AllRelays]); } if (configurationServer.CompositionData.IsProxy) { element.Subscriptions.Add(GroupAddressesProvider.Dictionary[GroupAddresses.AllProxies]); } element.Subscriptions.Add(GroupAddressesProvider.Dictionary[GroupAddresses.AllNodes]); } } #endregion }