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); }
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"); } } }
/// <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);
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); }