diff options
author | Martin Mathieson <martin.r.mathieson@googlemail.com> | 2010-11-29 12:09:18 +0000 |
---|---|---|
committer | Martin Mathieson <martin.r.mathieson@googlemail.com> | 2010-11-29 12:09:18 +0000 |
commit | 4f5e11eaca75cee2cf777ee54d7edd33da0e0c22 (patch) | |
tree | d2a8b935adcc53043a91163b36325265fc734b68 /gtk | |
parent | 7a81be713609d026418d459fb1a10fcf70f45db8 (diff) |
Allow DCT error strings containing given subsets to be filtered upon.
svn path=/trunk/; revision=35059
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/rlc_lte_stat_dlg.c | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/gtk/rlc_lte_stat_dlg.c b/gtk/rlc_lte_stat_dlg.c index 920d2eefce..21c2a919a5 100644 --- a/gtk/rlc_lte_stat_dlg.c +++ b/gtk/rlc_lte_stat_dlg.c @@ -196,6 +196,8 @@ typedef struct rlc_lte_stat_t { GtkWidget *uldl_filter_bt; GtkWidget *show_only_control_pdus_cb; GtkWidget *show_dct_errors_cb; + GtkWidget *dct_error_substring_lb; + GtkWidget *dct_error_substring_te; GtkWidget *sn_filter_lb; GtkWidget *sn_filter_te; @@ -228,6 +230,8 @@ static void enable_filter_controls(guint8 enabled, guint8 rlcMode, rlc_lte_stat_ gtk_widget_set_sensitive(hs->dl_filter_bt, enabled); gtk_widget_set_sensitive(hs->uldl_filter_bt, enabled); gtk_widget_set_sensitive(hs->show_dct_errors_cb, enabled); + gtk_widget_set_sensitive(hs->dct_error_substring_lb, enabled); + gtk_widget_set_sensitive(hs->dct_error_substring_te, enabled); switch (rlcMode) { case RLC_TM_MODE: @@ -947,6 +951,7 @@ static void set_channel_filter_expression(guint16 ueid, gint filterOnSN, gint statusOnlyPDUs, gint showDCTErrors, + const gchar *DCTErrorSubstring, rlc_lte_stat_t *hs) { #define MAX_FILTER_LEN 1024 @@ -955,8 +960,15 @@ static void set_channel_filter_expression(guint16 ueid, /* Show DCT errors */ if (showDCTErrors) { - offset += g_snprintf(buffer+offset, MAX_FILTER_LEN-offset, - "dct2000.error-comment or ("); + if (strlen(DCTErrorSubstring) > 0) { + offset += g_snprintf(buffer+offset, MAX_FILTER_LEN-offset, + "(dct2000.error-comment and (dct2000.comment contains \"%s\")) or (", + DCTErrorSubstring); + } + else { + offset += g_snprintf(buffer+offset, MAX_FILTER_LEN-offset, + "dct2000.error-comment or ("); + } } /* Include dialog filter */ @@ -1080,6 +1092,7 @@ static void ul_filter_clicked(GtkWindow *win _U_, rlc_lte_stat_t* hs) set_channel_filter_expression(ueid, rlcMode, channelType, channelId, UL_Only, sn, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(hs->show_only_control_pdus_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); } @@ -1106,6 +1119,7 @@ static void dl_filter_clicked(GtkWindow *win _U_, rlc_lte_stat_t* hs) set_channel_filter_expression(ueid, rlcMode, channelType, channelId, DL_Only, sn, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(hs->show_only_control_pdus_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); } @@ -1132,6 +1146,7 @@ static void uldl_filter_clicked(GtkWindow *win _U_, rlc_lte_stat_t* hs) set_channel_filter_expression(ueid, rlcMode, channelType, channelId, UL_and_DL, sn, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(hs->show_only_control_pdus_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); } @@ -1423,12 +1438,22 @@ static void gtk_rlc_lte_stat_init(const char *optarg, void *userdata _U_) "(i.e. if you filter on UL you'll see ACKs/NACK replies sent in the DL)", NULL); /* Allow DCT errors to be shown... */ - hs->show_dct_errors_cb = gtk_check_button_new_with_mnemonic("Show DCT2000 error strings"); + hs->show_dct_errors_cb = gtk_check_button_new_with_mnemonic("Show DCT2000 error strings..."); gtk_container_add(GTK_CONTAINER(sn_filter_hb), hs->show_dct_errors_cb); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(hs->show_dct_errors_cb), FALSE); gtk_tooltips_set_tip(tooltips, hs->show_dct_errors_cb, "When checked, generated filters will " "include DCT2000 error strings", NULL); + /* ... optionally limited by a substring */ + hs->dct_error_substring_lb = gtk_label_new("...containing"); + gtk_box_pack_start(GTK_BOX(sn_filter_hb), hs->dct_error_substring_lb, FALSE, FALSE, 0); + gtk_widget_show(hs->dct_error_substring_lb); + + hs->dct_error_substring_te = gtk_entry_new(); + gtk_box_pack_start(GTK_BOX(sn_filter_hb), hs->dct_error_substring_te, FALSE, FALSE, 0); + gtk_widget_show(hs->dct_error_substring_te); + + /* Allow filtering of a particular sequence number */ hs->sn_filter_te = gtk_entry_new(); gtk_box_pack_end(GTK_BOX(sn_filter_hb), hs->sn_filter_te, FALSE, FALSE, 0); |