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;
 }
Exemple #5
0
        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
        }