summaryrefslogtreecommitdiff
path: root/ui/qt/wireless_timeline.h
diff options
context:
space:
mode:
authorSimon Barber <simon.barber@meraki.net>2017-04-06 17:45:33 -0400
committerMichael Mann <mmann78@netscape.net>2017-06-05 11:25:51 +0000
commit21305e9835d40dbd812514471397fb1de3a0740c (patch)
treefdbd995627e1e7cf059a9bdc3b1d2b8dc7278beb /ui/qt/wireless_timeline.h
parentd0865fd619454a9ac06b1c7d287dc438aff50bb0 (diff)
downloadwireshark-21305e9835d40dbd812514471397fb1de3a0740c.tar.gz
Add a timeline view for packets, with the timing data used to generate the display
taken from the timing analysis done in the wlan_radio dissector. QT only. The timeline background is light gray, white for packets displayed in the packetlist, and blue for the currently selected packet. Packets are coloured according to the colouring rules foreground colour. The timeline can be zoomed with controls on the toolbar. At higher zoom levels the duration (NAV) field is plotted as a horizontal line to the right of a packet. The height of a packet in the timeline is proportional to the RSSI. The bottom half of the packet is only shown if it matches the display filter. Todo: Auto detect TSF timing reference point (start/end of packet) Add a scrollbar Add a ruler showing time Improve handling of focus. Do not display NAV for packets with bad FCS. Show related packets graphically Different Y axis modes - bandwidth/channel use display - different transmitters per line - background color from coloring rules Live capture support Change-Id: Ic31fffb0d6854966361ade7abb5c0be50db9a247 Reviewed-on: https://code.wireshark.org/review/20043 Petri-Dish: Michael Mann <mmann78@netscape.net> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'ui/qt/wireless_timeline.h')
-rw-r--r--ui/qt/wireless_timeline.h122
1 files changed, 122 insertions, 0 deletions
diff --git a/ui/qt/wireless_timeline.h b/ui/qt/wireless_timeline.h
new file mode 100644
index 0000000000..628524e4b4
--- /dev/null
+++ b/ui/qt/wireless_timeline.h
@@ -0,0 +1,122 @@
+/* wireless_timeline.h
+ * GUI to show an 802.11 wireless timeline of packets
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * Copyright 2012 Parc Inc and Samsung Electronics
+ * Copyright 2015, 2016 & 2017 Cisco Inc
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include <QScrollArea>
+
+#ifndef WIRELESSTIMELINE_H
+#define WIRELESSTIMELINE_H
+
+#include <stdio.h>
+
+#include <config.h>
+
+#include <glib.h>
+
+#include "file.h"
+
+#include "ui/ui_util.h"
+
+#include <epan/prefs.h>
+#include <epan/plugin_if.h>
+#include <epan/timestamp.h>
+
+#include <epan/dissectors/packet-ieee80211-radio.h>
+
+#include <QScrollArea>
+
+#include "cfile.h"
+
+/* pixels height for rendered timeline */
+#define TIMELINE_HEIGHT 64
+
+class WirelessTimeline;
+class PacketList;
+
+class WirelessTimeline : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit WirelessTimeline(QWidget *parent, PacketList *packet_list);
+ void captureFileReadStarted(capture_file *cf);
+ void captureFileReadFinished();
+ void zoomIn();
+ void zoomOut();
+ void zoomFullOut();
+
+protected:
+ void resizeEvent(QResizeEvent *event);
+ void paintEvent(QPaintEvent *event);
+ void mousePressEvent (QMouseEvent *event);
+ void mouseMoveEvent (QMouseEvent *event);
+ void mouseReleaseEvent (QMouseEvent *event);
+ bool event(QEvent *event);
+
+public slots:
+ void bgColorizationProgress(int first, int last);
+ void packetSelectionChanged();
+ void appInitialized();
+
+protected:
+ static void tap_timeline_reset(void* tapdata);
+ static gboolean tap_timeline_packet(void *tapdata, packet_info* pinfo, epan_dissect_t* edt, const void *data);
+
+ struct wlan_radio* get_wlan_radio(guint32 packet_num);
+
+ void clip_tsf();
+ guint64 current_frame_center();
+ int position(guint64 tsf, float ratio);
+ int find_packet_tsf(guint64 tsf);
+ void doToolTip(struct wlan_radio *wr, QPoint pos, int x);
+ void zoom();
+ int zoom_level;
+ qreal start_x, last_x;
+ PacketList *packet_list;
+ guint find_packet(qreal x);
+ float rgb[TIMELINE_HEIGHT][3];
+
+ guint64 start_tsf;
+ guint64 end_tsf;
+ int first_packet; /* first packet displayed */
+ struct wlan_radio *first, *last;
+ capture_file *capfile;
+
+ GHashTable* radio_packet_list;
+};
+
+#endif // WIRELESS_TIMELINE_H
+
+/*
+ * Editor modelines
+ *
+ * Local Variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * ex: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
+ */