aboutsummaryrefslogtreecommitdiffstats
path: root/ui/gtk/mac_lte_stat_dlg.c
diff options
context:
space:
mode:
authorMartin Mathieson <martin.r.mathieson@googlemail.com>2012-03-12 13:19:28 +0000
committerMartin Mathieson <martin.r.mathieson@googlemail.com>2012-03-12 13:19:28 +0000
commitd772d2acd26477b4cef7903e499c84dbaec02985 (patch)
tree6c750a8e2abd9032a14fd5b1b0c7b05825a306c3 /ui/gtk/mac_lte_stat_dlg.c
parent9560aab8c23faac9baf19bbef9f9d1f03e048007 (diff)
Add checkboxes to filter for RACH attempts and SRs.
svn path=/trunk/; revision=41500
Diffstat (limited to 'ui/gtk/mac_lte_stat_dlg.c')
-rw-r--r--ui/gtk/mac_lte_stat_dlg.c79
1 files changed, 65 insertions, 14 deletions
diff --git a/ui/gtk/mac_lte_stat_dlg.c b/ui/gtk/mac_lte_stat_dlg.c
index c827ce5689..35a1753fb3 100644
--- a/ui/gtk/mac_lte_stat_dlg.c
+++ b/ui/gtk/mac_lte_stat_dlg.c
@@ -180,6 +180,8 @@ typedef struct mac_lte_stat_t {
GtkWidget *dl_filter_bt;
GtkWidget *uldl_filter_bt;
+ GtkWidget *show_mac_rach_cb;
+ GtkWidget *show_mac_srs_cb;
GtkWidget *show_dct_errors_cb;
GtkWidget *dct_error_substring_lb;
GtkWidget *dct_error_substring_te;
@@ -214,8 +216,7 @@ typedef struct mac_lte_stat_t {
/* Reset the statistics window */
-static void
-mac_lte_stat_reset(void *phs)
+static void mac_lte_stat_reset(void *phs)
{
mac_lte_stat_t* mac_lte_stat = (mac_lte_stat_t *)phs;
mac_lte_ep_t* list = mac_lte_stat->ep_list;
@@ -329,9 +330,8 @@ static void update_ueid_rnti_counts(guint16 rnti, guint16 ueid, mac_lte_stat_t *
/* Process stat struct for a MAC LTE frame */
-static int
-mac_lte_stat_packet(void *phs, packet_info *pinfo, epan_dissect_t *edt _U_,
- const void *phi)
+static int mac_lte_stat_packet(void *phs, packet_info *pinfo, epan_dissect_t *edt _U_,
+ const void *phi)
{
int n;
@@ -524,8 +524,7 @@ mac_lte_stat_packet(void *phs, packet_info *pinfo, epan_dissect_t *edt _U_,
/* Draw the UE details table according to the current UE selection */
-static void
-mac_lte_ue_details(mac_lte_ep_t *mac_stat_ep, mac_lte_stat_t *hs)
+static void mac_lte_ue_details(mac_lte_ep_t *mac_stat_ep, mac_lte_stat_t *hs)
{
int n;
gchar buff[32];
@@ -613,6 +612,8 @@ mac_lte_ue_details(mac_lte_ep_t *mac_stat_ep, mac_lte_stat_t *hs)
gtk_widget_set_sensitive(hs->ul_filter_bt, mac_stat_ep != NULL);
gtk_widget_set_sensitive(hs->dl_filter_bt, mac_stat_ep != NULL);
gtk_widget_set_sensitive(hs->uldl_filter_bt, mac_stat_ep != NULL);
+ gtk_widget_set_sensitive(hs->show_mac_rach_cb, mac_stat_ep != NULL);
+ gtk_widget_set_sensitive(hs->show_mac_srs_cb, mac_stat_ep != NULL);
gtk_widget_set_sensitive(hs->show_dct_errors_cb, mac_stat_ep != NULL);
/* Enabling substring control only if errors enabled */
@@ -637,8 +638,7 @@ static float calculate_bw(nstime_t *start_time, nstime_t *stop_time, guint32 byt
/* (Re)draw the whole dialog window */
-static void
-mac_lte_stat_draw(void *phs)
+static void mac_lte_stat_draw(void *phs)
{
gchar buff[32];
guint16 number_of_ues = 0;
@@ -766,19 +766,37 @@ mac_lte_stat_draw(void *phs)
/* Compose and set appropriate display filter */
typedef enum Direction_t {UL_Only, DL_Only, UL_and_DL} Direction_t;
+
static void set_filter_expression(guint16 ueid,
guint16 rnti,
Direction_t direction,
+ gint showRACH,
+ gint showSRs,
gint showDCTErrors,
const gchar *DCTErrorSubstring,
mac_lte_stat_t *hs)
{
- #define MAX_FILTER_LEN 256
+ #define MAX_FILTER_LEN 512
static char buffer[MAX_FILTER_LEN];
int offset = 0;
/* Create the filter expression */
+
+ /* Show MAC RACH (preamble attempts and RAR PDUs) */
+ if (showSRs) {
+ offset += g_snprintf(buffer+offset, MAX_FILTER_LEN-offset,
+ "(mac-lte.rar or (mac-lte.preamble-sent and mac-lte.ueid == %u)) or (",
+ ueid);
+ }
+
+ /* Show MAC SRs */
+ if (showSRs) {
+ offset += g_snprintf(buffer+offset, MAX_FILTER_LEN-offset,
+ "(mac-lte.sr-req and mac-lte.ueid == %u) or (",
+ ueid);
+ }
+
/* Errors */
if (showDCTErrors) {
if (strlen(DCTErrorSubstring) > 0) {
@@ -814,7 +832,18 @@ static void set_filter_expression(guint16 ueid,
"mac-lte.rnti == %u and mac-lte.ueid == %u",
rnti, ueid);
- /* Close parenthesis */
+ /* Close () if open */
+ if (showRACH) {
+ offset += g_snprintf(buffer+offset, MAX_FILTER_LEN-offset, ")");
+ }
+
+ /* Close () if open */
+ if (showSRs) {
+ offset += g_snprintf(buffer+offset, MAX_FILTER_LEN-offset, ")");
+ }
+
+
+ /* Close () if open */
if (showDCTErrors) {
offset += g_snprintf(buffer+offset, MAX_FILTER_LEN-offset,
")");
@@ -843,6 +872,8 @@ static void ul_filter_clicked(GtkWindow *win _U_, mac_lte_stat_t* hs)
gtk_tree_model_get(model, &iter, TABLE_COLUMN, &ep, -1);
set_filter_expression(ep->stats.ueid, ep->stats.rnti, UL_Only,
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(hs->show_mac_rach_cb)),
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(hs->show_mac_srs_cb)),
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(hs->show_dct_errors_cb)),
gtk_entry_get_text(GTK_ENTRY(hs->dct_error_substring_te)),
hs);
@@ -865,6 +896,8 @@ static void dl_filter_clicked(GtkWindow *win _U_, mac_lte_stat_t* hs)
gtk_tree_model_get(model, &iter, TABLE_COLUMN, &ep, -1);
set_filter_expression(ep->stats.ueid, ep->stats.rnti, DL_Only,
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(hs->show_mac_rach_cb)),
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(hs->show_mac_srs_cb)),
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(hs->show_dct_errors_cb)),
gtk_entry_get_text(GTK_ENTRY(hs->dct_error_substring_te)),
hs);
@@ -888,6 +921,8 @@ static void uldl_filter_clicked(GtkWindow *win _U_, mac_lte_stat_t* hs)
gtk_tree_model_get(model, &iter, TABLE_COLUMN, &ep, -1);
set_filter_expression(ep->stats.ueid, ep->stats.rnti, UL_and_DL,
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(hs->show_mac_rach_cb)),
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(hs->show_mac_srs_cb)),
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(hs->show_dct_errors_cb)),
gtk_entry_get_text(GTK_ENTRY(hs->dct_error_substring_te)),
hs);
@@ -1218,7 +1253,7 @@ static void gtk_mac_lte_stat_init(const char *optarg, void *userdata _U_)
/* Filter buttons */
/* UL only */
- hs->ul_filter_bt = gtk_button_new_with_label("Set UL display filter on selected this RNTI / UEId");
+ hs->ul_filter_bt = gtk_button_new_with_label("Set UL display filter on selected this UE");
gtk_box_pack_start(GTK_BOX(filter_buttons_hb), hs->ul_filter_bt, FALSE, FALSE, 0);
g_signal_connect(hs->ul_filter_bt, "clicked", G_CALLBACK(ul_filter_clicked), hs);
gtk_widget_set_sensitive(hs->ul_filter_bt, FALSE);
@@ -1227,7 +1262,7 @@ static void gtk_mac_lte_stat_init(const char *optarg, void *userdata _U_)
"Generate and set a filter showing only UL frames with selected RNTI and UEId");
/* DL only */
- hs->dl_filter_bt = gtk_button_new_with_label("Set DL display filter on selected this RNTI / UEId");
+ hs->dl_filter_bt = gtk_button_new_with_label("Set DL display filter on selected this UE");
gtk_box_pack_start(GTK_BOX(filter_buttons_hb), hs->dl_filter_bt, FALSE, FALSE, 0);
g_signal_connect(hs->dl_filter_bt, "clicked", G_CALLBACK(dl_filter_clicked), hs);
gtk_widget_set_sensitive(hs->dl_filter_bt, FALSE);
@@ -1236,7 +1271,7 @@ static void gtk_mac_lte_stat_init(const char *optarg, void *userdata _U_)
"Generate and set a filter showing only DL frames with selected RNTI and UEId");
/* UL and DL */
- hs->uldl_filter_bt = gtk_button_new_with_label("Set UL / DL display filter on selected this RNTI / UEId");
+ hs->uldl_filter_bt = gtk_button_new_with_label("Set UL / DL display filter on selected this UE");
gtk_box_pack_start(GTK_BOX(filter_buttons_hb), hs->uldl_filter_bt, FALSE, FALSE, 0);
g_signal_connect(hs->uldl_filter_bt, "clicked", G_CALLBACK(uldl_filter_clicked), hs);
gtk_widget_set_sensitive(hs->uldl_filter_bt, FALSE);
@@ -1244,6 +1279,22 @@ static void gtk_mac_lte_stat_init(const char *optarg, void *userdata _U_)
gtk_widget_set_tooltip_text(hs->uldl_filter_bt,
"Generate and set a filter showing only frames with selected RNTI and UEId");
+ /* Show MAC RACH */
+ hs->show_mac_rach_cb = gtk_check_button_new_with_mnemonic("Show MAC RACH");
+ gtk_widget_set_sensitive(hs->show_mac_rach_cb, FALSE);
+ gtk_container_add(GTK_CONTAINER(filter_buttons_hb), hs->show_mac_rach_cb);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(hs->show_mac_rach_cb), FALSE);
+ gtk_widget_set_tooltip_text(hs->show_mac_rach_cb, "When checked, generated filters will show "
+ "MAC RACH attempts for the UE");
+
+ /* Show MAC SRs */
+ hs->show_mac_srs_cb = gtk_check_button_new_with_mnemonic("Show MAC SRs");
+ gtk_widget_set_sensitive(hs->show_mac_srs_cb, FALSE);
+ gtk_container_add(GTK_CONTAINER(filter_buttons_hb), hs->show_mac_srs_cb);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(hs->show_mac_srs_cb), FALSE);
+ gtk_widget_set_tooltip_text(hs->show_mac_srs_cb, "When checked, generated filters will show "
+ "MAC SRs for the UE");
+
/* Allow DCT errors to be shown... */
hs->show_dct_errors_cb = gtk_check_button_new_with_mnemonic("Show DCT2000 error strings");