public override void Dispatch(BaseRequest message, INodeBearer nodeBearer)
        {
            var node = nodeBearer.Node;

            Console.WriteLine($"Got message LightModel - Nodeid = {node.Id}");
            var status = new BaseRequest()
            {
                DST         = message.SRC,
                Procedure   = message.Procedure,
                Heartbeats  = node.ConfigurationServerModel.DefaultTTL,
                MessageType = MessageType.STATUS,
                SRC         = new Address(AddressType.Unicast, (ushort)ElementId)
            };

            switch (message.Procedure)
            {
            case Procedure.Light:
                if (message.MessageType == MessageType.SET)
                {
                    ON = message.Parameters == 1;
                }
                status.Parameters = Convert.ToInt32(ON);
                break;

            default:
                break;
            }

            nodeBearer.Send(status);
        }
Example #2
0
        public override void Dispatch(BaseRequest message, INodeBearer nodeBearer)
        {
            if (message.MessageType == MessageType.STATUS)
            {
                var eventAgregator = (IEventAggregator)ServiceLocator.Current.GetInstance(typeof(IEventAggregator));
                eventAgregator.PublishOnUIThread(new SuccessfulMessage());
                switch (message.Procedure)
                {
                case Procedure.DefaultTTL:
                    Console.WriteLine($"{message.Procedure.ToString()} Value is {message.Parameters} -- SRC = {message.SRC}");
                    break;

                case Procedure.GATTProxy:
                    Console.WriteLine($"{message.Procedure.ToString()} Value is {message.Parameters} -- SRC = {message.SRC}");
                    break;

                case Procedure.Friend:
                    Console.WriteLine($"{message.Procedure.ToString()} Value is {message.Parameters} -- SRC = {message.SRC}");
                    break;

                case Procedure.Relay:
                    Console.WriteLine($"{message.Procedure.ToString()} Value is {message.Parameters} -- SRC = {message.SRC}");
                    break;

                case Procedure.SubscriptionList:
                    //DefaultTTL = message.Parameters == 1;
                    break;

                case Procedure.Light:
                    Console.WriteLine($"{message.Procedure.ToString()} Value is {message.Parameters} -- SRC = {message.SRC}");
                    break;

                default:
                    throw new ArgumentException($"Procedure not found in ConfigurationServerModel");
                }
            }
        }
Example #3
0
 /// <summary>
 /// 3.7.4.2 Receiving an access message
 /// A message is delivered to the model for processing if all the following conditions are met:
 /// - The opcode (procedure) indicates the message is used by the model on this element.
 /// - The destination address is set to one of the following:
 /// --- the model’s element unicast address;
 /// --- a group or virtual address which the model’s element is subscribed to;
 /// --- a fixed group address of the primary element of the node as defined in Section 3.4.2.4.
 /// </summary>
 public abstract void Dispatch(BaseRequest message, INodeBearer nodeBearer);
Example #4
0
 public void SendMessage(INodeBearer nodeBearer, BaseRequest message)
 {
     message.SRC        = new Address(AddressType.Unicast, (ushort)ElementId);
     message.Heartbeats = nodeBearer.Node.ConfigurationServerModel.DefaultTTL;
     nodeBearer.Send(message);
 }
        public override void Dispatch(BaseRequest message, INodeBearer nodeBearer)
        {
            var node = nodeBearer.Node;

            Console.WriteLine($"Got message ConfigurationServerModel - Nodeid = {node.Id}");
            node.StatusFlag = 2;
            System.Threading.Thread.Sleep(100);
            node.StatusFlag = 0;
            var status = new BaseRequest()
            {
                DST         = message.SRC,
                Procedure   = message.Procedure,
                Heartbeats  = node.ConfigurationServerModel.DefaultTTL,
                MessageType = MessageType.STATUS,
                SRC         = new Address(AddressType.Unicast, (ushort)ElementId)
            };

            switch (message.Procedure)
            {
            case Procedure.DefaultTTL:


                if (message.MessageType == MessageType.SET)
                {
                    DefaultTTL = message.Parameters;
                }

                status.Parameters = DefaultTTL;
                break;

            case Procedure.GATTProxy:
                if (message.MessageType == MessageType.SET)
                {
                    GATTProxy = message.Parameters == 1;
                }

                status.Parameters = Convert.ToInt32(GATTProxy);
                break;

            case Procedure.Friend:
                if (message.MessageType == MessageType.SET)
                {
                    Friend = message.Parameters == 1;
                }
                status.Parameters = Convert.ToInt32(Friend);
                break;

            case Procedure.Relay:
                if (message.MessageType == MessageType.SET)
                {
                    Relay = message.Parameters == 1;
                }
                status.Parameters = Convert.ToInt32(Relay);

                break;

            case Procedure.SubscriptionList:
                throw new NotImplementedException();
                break;

            default:
                throw new ArgumentException($"Procedure not found in ConfigurationServerModel");
            }


            nodeBearer.Send(status);
        }