Esempio n. 1
0
        private void recvTable_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            RecvMsgViewHolder item = (RecvMsgViewHolder)recvTable.SelectedItem;

            if (item == null || item.Message == null)
            {
                recvMsgProperties.Items.Clear();
            }
            else
            {
                var parser = item.Message.BuildParser();
                if (parser != null)
                {
                    recvMsgProperties.Items.Clear();
                    foreach (var pair in parser.ToStringMap())
                    {
                        var viewmodel = new PropViewModel(pair.Key, pair.Value);
                        recvMsgProperties.Items.Add(viewmodel);
                    }
                }
                else
                {
                    recvMsgProperties.Items.Clear();
                }
            }
        }
Esempio n. 2
0
        private async void LoadDump_OnClick(object?sender, RoutedEventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog {
                Filters = _filters, AllowMultiple = false
            };

            string[]? paths = await dlg.ShowAsync(this);

            if (paths == null || paths.Length < 1)
            {
                return;
            }

            ArrayList data;

            try
            {
                data = new ArrayList(await File.ReadAllBytesAsync(paths[0]));
                _cache.Clear();
                _cache.AddRange((byte[])data.ToArray(typeof(byte)));
                _hexDump.Text = HexUtils.Dump(_cache.ToArray());
            }
            catch (Exception ex)
            {
                await new MessageBox
                {
                    Title       = "Error while reading file",
                    Description = ex.Message
                }.ShowDialog(this);
                return;
            }
            do
            {
                try
                {
                    SPPMessage        msg    = SPPMessage.DecodeMessage((byte[])data.ToArray(typeof(byte)));
                    RecvMsgViewHolder holder = new RecvMsgViewHolder(msg);
                    _vm.MsgTableDataSource?.Add(holder);

                    if (msg.TotalPacketSize >= data.Count)
                    {
                        break;
                    }
                    data.RemoveRange(0, msg.TotalPacketSize);
                }
                catch (InvalidPacketException ex)
                {
                    await new MessageBox
                    {
                        Title       = "Error while parsing file",
                        Description = ex.Message
                    }.ShowDialog(this);
                    _vm.MsgTableDataView.Refresh();
                    return;
                }
            } while (data.Count > 0);

            _vm.MsgTableDataView.Refresh();
        }
Esempio n. 3
0
 private void BluetoothServiceMessageReceived(object sender, SPPMessage e)
 {
     Dispatcher.BeginInvoke((Action)(() =>
     {
         RecvMsgViewHolder holder = new RecvMsgViewHolder(e);
         recvTable.Items.Add(holder);
     }));
 }
Esempio n. 4
0
        private void CopySelectedCell_OnExecuted(object sender, ExecutedRoutedEventArgs e)
        {
            RecvMsgViewHolder item = (RecvMsgViewHolder)recvTable.SelectedItem;

            if (item != null)
            {
                Clipboard.SetText(item.Payload);
            }
        }
Esempio n. 5
0
        private void MenuParseDump_Click(object sender, RoutedEventArgs e)
        {
            Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog
            {
                DefaultExt = ".hex",
                Filter     = "Hex dump|*.hex|All files|*.*"
            };
            bool?result = dlg.ShowDialog();

            // Process file dialog box results
            if (result == true)
            {
                try
                {
                    ArrayList data = new ArrayList(File.ReadAllBytes(dlg.FileName));

                    Dispatcher.BeginInvoke((Action)(() =>
                    {
                        _cache.Clear();
                        _cache.AddRange((byte[])data.ToArray(typeof(byte)));
                        hexDump.Text = Hex.Dump(_cache.ToArray());

                        do
                        {
                            try
                            {
                                SPPMessage msg = SPPMessage.DecodeMessage((byte[])data.ToArray(typeof(byte)));
                                RecvMsgViewHolder holder = new RecvMsgViewHolder(msg);
                                recvTable.Items.Add(holder);

                                if (msg.TotalPacketSize >= data.Count)
                                {
                                    break;
                                }
                                data.RemoveRange(0, msg.TotalPacketSize);
                            }
                            catch (InvalidDataException ex)
                            {
                                Console.WriteLine("Error while parsing dump: " + ex.Message);
                            }
                        } while (data.Count > 0);
                    }));
                }
                catch (Exception ex)
                {
                    MessageBox.Show(this, "Error", ex.Message, MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }
        }
Esempio n. 6
0
        private void OnNewDataReceived(object?sender, byte[] raw)
        {
            Dispatcher.UIThread.Post(() =>
            {
                try
                {
                    _cache.AddRange(raw);
                    _hexDump.Text = HexUtils.Dump(_cache.ToArray());

                    RecvMsgViewHolder holder = new RecvMsgViewHolder(SPPMessage.DecodeMessage(raw));
                    _vm.MsgTableDataSource?.Add(holder);
                    _vm.MsgTableDataView.Refresh();
                }
                catch (InvalidPacketException) {}
            });
        }