Ejemplo n.º 1
0
 private static Message GetX10Message(WebResponse response)
 {
     using (Stream stream = response != null ? response.GetResponseStream() : null)
     {
         if (stream != null)
         {
             DataContractJsonSerializer jsSerializer = new DataContractJsonSerializer(typeof(ExtendedMessage));
             ExtendedMessage            module       = jsSerializer.ReadObject(stream) as ExtendedMessage;
             if (module != null)
             {
                 if (module.ExtendedCommand == 0 && module.ExtendedData == 0)
                 {
                     return(new StandardMessage(module.House, module.Unit, module.Command)
                     {
                         ModuleType = module.ModuleType,
                         Name = module.Name,
                         On = module.On,
                     });
                 }
                 return(module);
             }
         }
     }
     return(null);
 }
        public async Task <int> Insert(int chatID, ExtendedMessage message)
        {
            var p = PendingMessage.FromExtendedMessage(chatID, message);

            if (p == null || await _database.Table <PendingMessage>().Where(f => f.ChatID == p.ChatID && f.PendingID == p.PendingID).CountAsync() > 0)
            {
                return(-1);
            }
            var insertedRows = await _database.InsertAsync(p);

            return(insertedRows == 1 ? p.ID : -1);
        }
Ejemplo n.º 3
0
        async void SendMessage()
        {
            var message = Message.Trim();

            Message = string.Empty;

            if (string.IsNullOrWhiteSpace(message) && message.Length <= MaxMessageLength)
            {
                return;
            }

            // Create Message and add to pending table
            var             id = -1;
            ExtendedMessage extendedMessage = null;

            while (id == -1)
            {
                extendedMessage = new ExtendedMessage
                {
                    Message   = message,
                    Timestamp = DateTime.Now,
                    PendingID = _randomPendingID.Next(0, 999999), // this will be checked on arrival of new messages to not load duplicates
                    IsPending = true
                };
                id = await _database.PendingMessages.Insert(Chat.ID, extendedMessage);
            }

            // Add to message queue
            await _tokenMessagesQueue.AddAsync(
                _walletManager.Wallet.Address,
                Chat.GroupInfo.TronAddress,     // TODO Check public Key
                new SendGroupMessageTokenMessage { Message = extendedMessage.Encrypt(_walletManager.Wallet, Chat.GroupInfo.PublicKey) }
                );

            // Add to messages
            var lastMessage = Messages.Count > 0 ? Messages.Last() : null;

            Messages.Add(new ChatMessage
            {
                ExtendedMessage = extendedMessage,
                Timestamp       = DateTime.Now,
                IsSender        = true,
                ChatID          = Chat.ID,
                ID = lastMessage != null ? lastMessage.ID : 0
            });


            Device.BeginInvokeOnMainThread(() => ScrollMessagesEvent(this, new ScrollEventArgs(Messages.Count, false, Syncfusion.ListView.XForms.ScrollToPosition.Start)));
        }
Ejemplo n.º 4
0
        public void Encode()
        {
            string coef  = GetCoeficients();
            int    grade = GetPolynomialGrade();

            ExtendedMessage = Message;
            for (int i = 0; i < grade; i++)
            {
                ExtendedMessage += "0";
            }

            string result = ExtendedMessage;

            while (result.Length >= GetCoeficients().Length)
            {
                result = ApplyXor(result);
            }

            ExtendedMessage  = ExtendedMessage.Remove(ExtendedMessage.Length - result.Length);
            ExtendedMessage += result;
            Console.WriteLine(ExtendedMessage);
        }
Ejemplo n.º 5
0
 private void UpdateUiOnStateChange(Message message)
 {
     if (message is StandardMessage)
     {
         cbxType.SelectedIndex = 0;
         StandardMessage stdMessage = message as StandardMessage;
         House = stdMessage.House;
         Unit  = stdMessage.Unit;
         cbxCommand.SelectionChanged -= cbxCommand_SelectionChanged;
         Command = stdMessage.Command;
         cbxCommand.SelectionChanged += cbxCommand_SelectionChanged;
         if (
             Command == Command.On ||
             Command == Command.Bright ||
             Command == Command.Dim ||
             Command == Command.StatusOn)
         {
             On = true;
         }
         else if (Command == Command.Off || Command == Command.StatusOff)
         {
             On = false;
         }
     }
     if (message is ExtendedMessage)
     {
         ExtendedMessage extMessage = message as ExtendedMessage;
         if (extMessage.ExtendedBrightness > 0)
         {
             if (extMessage.Command != Command.StatusOff)
             {
                 On = true;
             }
             Brightness = extMessage.ExtendedBrightness;
         }
     }
 }
Ejemplo n.º 6
0
        /// <summary>
        /// Called when a message comes in from the modem.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        void port_ReceivedMessage(object sender, RecievedMessageEventArgs args)
        {
            switch (args.Message.MessageType)
            {
            case PowerLineModemMessage.Message.AllLinkRecordResponse:
                // If we get this, then query the device for more details.
                AllLinkRecordResponse response = (AllLinkRecordResponse)args.Message;
                this.linkedDevices[response.Record.Address] = response.Record;
                this.linkingEvent.Set();
                break;

            case PowerLineModemMessage.Message.StandardMessageReceived:
                StandardMessage standardMessage = (StandardMessage)args.Message;
                if (standardMessage.Packet.FromAddress.Equals(this.sendingPacket.FromAddress))
                {
                    if (standardMessage.Packet.Flags.MessageType == InsteonPacket.InsteonFlags.MessageTypeEnum.AckDirect ||
                        standardMessage.Packet.Flags.MessageType == InsteonPacket.InsteonFlags.MessageTypeEnum.NackDirect)
                    {
                        this.receivedPacket = standardMessage.Packet;
                        this.linkingEvent.Set();
                        break;
                    }
                }
                // Find the device and send the packet there.
                if (this.devices.ContainsKey(standardMessage.Packet.FromAddress))
                {
                    DeviceBase   device  = this.devices[standardMessage.Packet.FromAddress];
                    StateChanged changed = device.handleInsteonPacket(standardMessage.Packet);
                    if (changed != null)
                    {
                        if (DeviceChanged != null)
                        {
                            DeviceChanged(this, new DeviceChangedEventArgs(changed));
                        }
                    }
                }
                else
                {
                    // If this is a broadcast set button pressed, add into the device list.
                    if (standardMessage.Packet.Flags.MessageType == InsteonPacket.InsteonFlags.MessageTypeEnum.Broadcast &&
                        standardMessage.Packet.Command1 == (byte)InsteonPacket.BroadcastCommand.SetButtonPressed)
                    {
                        byte category    = standardMessage.Packet.ToAddress.Address[0];
                        byte subCategory = standardMessage.Packet.ToAddress.Address[1];
                        AddDevice(standardMessage.Packet.FromAddress, category, subCategory);
                    }
                }
                break;

            case PowerLineModemMessage.Message.ExtendedMessageReceived:
                ExtendedMessage extendedMessage = (ExtendedMessage)args.Message;
                if (extendedMessage.Packet.FromAddress.Equals(this.sendingPacket.FromAddress))
                {
                    if (extendedMessage.Packet.Flags.MessageType == InsteonPacket.InsteonFlags.MessageTypeEnum.AckDirect ||
                        extendedMessage.Packet.Flags.MessageType == InsteonPacket.InsteonFlags.MessageTypeEnum.NackDirect)
                    {
                        this.receivedPacket = extendedMessage.Packet;
                        this.linkingEvent.Set();
                        break;
                    }
                }
                // Find the device and send the packet there.
                if (this.devices.ContainsKey(extendedMessage.Packet.FromAddress))
                {
                    DeviceBase   device  = this.devices[extendedMessage.Packet.FromAddress];
                    StateChanged changed = device.handleInsteonPacket(extendedMessage.Packet);
                    if (changed != null)
                    {
                        if (DeviceChanged != null)
                        {
                            DeviceChanged(this, new DeviceChangedEventArgs(changed));
                        }
                    }
                }
                break;
            }
        }