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