summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--epan/dissectors/packet-gsm_rlcmac.c165
-rw-r--r--epan/dissectors/packet-gsm_rlcmac.h35
2 files changed, 156 insertions, 44 deletions
diff --git a/epan/dissectors/packet-gsm_rlcmac.c b/epan/dissectors/packet-gsm_rlcmac.c
index 268092e837..e9bde2eef1 100644
--- a/epan/dissectors/packet-gsm_rlcmac.c
+++ b/epan/dissectors/packet-gsm_rlcmac.c
@@ -264,6 +264,8 @@ static int hf_type_of_ack;
/*< SI 13 Rest Octets >*/
static int hf_gprs_cell_options_nmo;
+static int hf_gprs_cell_options_t3168;
+static int hf_gprs_cell_options_t3192;
static int hf_gprs_cell_options_drx_timer_max;
static int hf_gprs_cell_options_access_burst_type;
static int hf_gprs_cell_options_control_ack_type;
@@ -849,6 +851,7 @@ static int hf_packet_system_info_type1_measurement_order;
static int hf_packet_system_info_type1_psi_status_ind;
static int hf_packet_system_info_type1_mscr;
static int hf_packet_system_info_type1_band_indicator;
+static int hf_packet_system_info_type1_lb_ms_txpwr_max_ccch;
static int hf_pccch_org_bs_pcc_rel;
static int hf_pccch_org_pbcch_blks;
static int hf_pccch_org_pag_blks_res;
@@ -1632,8 +1635,8 @@ CSN_DESCR_END (Extension_Bits_t)
static const
CSN_DESCR_BEGIN(GPRS_Cell_Options_t)
M_UINT (GPRS_Cell_Options_t, NMO, 2, &hf_gprs_cell_options_nmo),
- M_UINT_OFFSET(GPRS_Cell_Options_t, T3168, 3, 1),
- M_UINT_OFFSET(GPRS_Cell_Options_t, T3192, 3, 1),
+ M_UINT (GPRS_Cell_Options_t, T3168, 3, &hf_gprs_cell_options_t3168),
+ M_UINT (GPRS_Cell_Options_t, T3192, 3, &hf_gprs_cell_options_t3192),
M_UINT (GPRS_Cell_Options_t, DRX_TIMER_MAX, 3, &hf_gprs_cell_options_drx_timer_max),
M_BIT (GPRS_Cell_Options_t, ACCESS_BURST_TYPE, &hf_gprs_cell_options_access_burst_type),
M_BIT (GPRS_Cell_Options_t, CONTROL_ACK_TYPE, &hf_gprs_cell_options_control_ack_type),
@@ -5429,11 +5432,18 @@ CSN_DESCR_END (Packet_Pause_t)
/*< Packet System Information Type 1 message content >*/
static const
-CSN_DESCR_BEGIN(PSI1_AdditionsR99_t)
- M_UINT (PSI1_AdditionsR99_t, MSCR, 1, &hf_packet_system_info_type1_mscr),
- M_UINT (PSI1_AdditionsR99_t, SGSNR, 1, &hf_sgsnr),
- M_UINT (PSI1_AdditionsR99_t, BandIndicator, 1, &hf_packet_system_info_type1_band_indicator),
-CSN_DESCR_END (PSI1_AdditionsR99_t)
+CSN_DESCR_BEGIN(PSI1_AdditionsR6_t)
+ M_UINT (PSI1_AdditionsR6_t, LB_MS_TXPWR_MAX_CCH, 5, &hf_packet_system_info_type1_lb_ms_txpwr_max_ccch),
+CSN_DESCR_END (PSI1_AdditionsR6_t)
+
+static const
+CSN_DESCR_BEGIN (PSI1_AdditionsR99_t)
+ M_UINT (PSI1_AdditionsR99_t, MSCR, 1, &hf_packet_system_info_type1_mscr),
+ M_UINT (PSI1_AdditionsR99_t, SGSNR, 1, &hf_sgsnr),
+ M_UINT (PSI1_AdditionsR99_t, BandIndicator, 1, &hf_packet_system_info_type1_band_indicator),
+ M_NEXT_EXIST_OR_NULL (PSI1_AdditionsR99_t, Exist_AdditionsR6, 1),
+ M_TYPE (PSI1_AdditionsR99_t, AdditionsR6, PSI1_AdditionsR6_t),
+CSN_DESCR_END (PSI1_AdditionsR99_t)
static const
CSN_DESCR_BEGIN(PCCCH_Organization_t)
@@ -5446,26 +5456,26 @@ CSN_DESCR_END (PCCCH_Organization_t)
static const
CSN_DESCR_BEGIN(PSI1_t)
- M_UINT (PSI1_t, MESSAGE_TYPE, 6, &hf_dl_message_type),
- M_UINT (PSI1_t, PAGE_MODE, 2, &hf_page_mode),
+ M_UINT (PSI1_t, MESSAGE_TYPE, 6, &hf_dl_message_type),
+ M_UINT (PSI1_t, PAGE_MODE, 2, &hf_page_mode),
- M_UINT (PSI1_t, PBCCH_CHANGE_MARK, 3, &hf_packet_system_info_type1_pbcch_change_mark),
- M_UINT (PSI1_t, PSI_CHANGE_FIELD, 4, &hf_packet_system_info_type1_psi_change_field),
- M_UINT (PSI1_t, PSI1_REPEAT_PERIOD, 4, &hf_packet_system_info_type1_psi1_repeat_period),
- M_UINT (PSI1_t, PSI_COUNT_LR, 6, &hf_packet_system_info_type1_psi_count_lr),
+ M_UINT (PSI1_t, PBCCH_CHANGE_MARK, 3, &hf_packet_system_info_type1_pbcch_change_mark),
+ M_UINT (PSI1_t, PSI_CHANGE_FIELD, 4, &hf_packet_system_info_type1_psi_change_field),
+ M_UINT (PSI1_t, PSI1_REPEAT_PERIOD, 4, &hf_packet_system_info_type1_psi1_repeat_period),
+ M_UINT (PSI1_t, PSI_COUNT_LR, 6, &hf_packet_system_info_type1_psi_count_lr),
- M_NEXT_EXIST (PSI1_t, Exist_PSI_COUNT_HR, 1),
- M_UINT (PSI1_t, PSI_COUNT_HR, 4, &hf_packet_system_info_type1_psi_count_hr),
+ M_NEXT_EXIST (PSI1_t, Exist_PSI_COUNT_HR, 1),
+ M_UINT (PSI1_t, PSI_COUNT_HR, 4, &hf_packet_system_info_type1_psi_count_hr),
- M_UINT (PSI1_t, MEASUREMENT_ORDER, 1, &hf_packet_system_info_type1_measurement_order),
- M_TYPE (PSI1_t, GPRS_Cell_Options, GPRS_Cell_Options_t),
- M_TYPE (PSI1_t, PRACH_Control, PRACH_Control_t),
- M_TYPE (PSI1_t, PCCCH_Organization, PCCCH_Organization_t),
- M_TYPE (PSI1_t, Global_Power_Control_Parameters, Global_Power_Control_Parameters_t),
- M_UINT (PSI1_t, PSI_STATUS_IND, 1, &hf_packet_system_info_type1_psi_status_ind),
+ M_UINT (PSI1_t, MEASUREMENT_ORDER, 1, &hf_packet_system_info_type1_measurement_order),
+ M_TYPE (PSI1_t, GPRS_Cell_Options, GPRS_Cell_Options_t),
+ M_TYPE (PSI1_t, PRACH_Control, PRACH_Control_t),
+ M_TYPE (PSI1_t, PCCCH_Organization, PCCCH_Organization_t),
+ M_TYPE (PSI1_t, Global_Power_Control_Parameters, Global_Power_Control_Parameters_t),
+ M_UINT (PSI1_t, PSI_STATUS_IND, 1, &hf_packet_system_info_type1_psi_status_ind),
- M_NEXT_EXIST (PSI1_t, Exist_AdditionsR99, 1),
- M_TYPE (PSI1_t, AdditionsR99, PSI1_AdditionsR99_t),
+ M_NEXT_EXIST_OR_NULL (PSI1_t, Exist_AdditionsR99, 1),
+ M_TYPE (PSI1_t, AdditionsR99, PSI1_AdditionsR99_t),
M_PADDING_BITS(PSI1_t),
CSN_DESCR_END (PSI1_t)
@@ -6604,6 +6614,83 @@ static const value_string egprs_Header_type3_coding_puncturing_scheme_vals[] = {
};
static value_string_ext egprs_Header_type3_coding_puncturing_scheme_vals_ext = VALUE_STRING_EXT_INIT(egprs_Header_type3_coding_puncturing_scheme_vals);
+static const value_string gsm_rlcmac_psi_change_field_vals[] = {
+ { 0, "Update of unspecified PSI message(s)"},
+ { 1, "Unknown"},
+ { 2, "PSI2 updated"},
+ { 3, "PSI3/PSI3bis/PSI3ter/PSI3quater updated"},
+ { 4, "Unknown"},
+ { 5, "PSI5 updated"},
+ { 6, "PSI6 updated"},
+ { 7, "PSI7 updated"},
+ { 8, "PSI8 updated"},
+ { 9, "Update of unknown SI message type"},
+ {10, "Update of unknown SI message type"},
+ {11, "Update of unknown SI message type"},
+ {12, "Update of unknown SI message type"},
+ {13, "Update of unknown SI message type"},
+ {14, "Update of unknown SI message type"},
+ {15, "Update of unknown SI message type"},
+ { 0, NULL}
+};
+
+static const value_string gsm_rlcmac_val_plus_1_vals[] = {
+ { 0, "1"},
+ { 1, "2"},
+ { 2, "3"},
+ { 3, "4"},
+ { 4, "5"},
+ { 5, "6"},
+ { 6, "7"},
+ { 7, "8"},
+ { 8, "9"},
+ { 9, "10"},
+ {10, "11"},
+ {11, "12"},
+ {12, "13"},
+ {13, "14"},
+ {14, "15"},
+ {15, "16"},
+ { 0, NULL}
+};
+
+static const true_false_string gsm_rlcmac_psi1_measurement_order_value = {
+ "MS shall send measurement reports for cell re-selection",
+ "MS performs cell re-selection in both packet idle and transfert mode and shall not send any measurement reports to the network"
+};
+
+static const value_string gsm_rlcmac_nmo_vals[] = {
+ { 0, "Network Mode of Operation I"},
+ { 1, "Network Mode of Operation II"},
+ { 2, "Network Mode of Operation III"},
+ { 3, "Reserved"},
+ { 0, NULL}
+};
+
+static const value_string gsm_rlcmac_t3168_vals[] = {
+ { 0, "500 ms"},
+ { 1, "1000 ms"},
+ { 2, "1500 ms"},
+ { 3, "2000 ms"},
+ { 4, "2500 ms"},
+ { 5, "3000 ms"},
+ { 6, "3500 ms"},
+ { 7, "4000 ms"},
+ { 0, NULL}
+};
+
+static const value_string gsm_rlcmac_t3192_vals[] = {
+ { 0, "500 ms"},
+ { 1, "1000 ms"},
+ { 2, "1500 ms"},
+ { 3, "0 ms"},
+ { 4, "80 ms"},
+ { 5, "120 ms"},
+ { 6, "160 ms"},
+ { 7, "200 ms"},
+ { 0, NULL}
+};
+
static guint8 construct_gprs_data_segment_li_array(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint8 initial_offset, guint8 *li_count, length_indicator_t *li_array, guint64 *e)
{
guint8 offset = initial_offset, li_array_size = *li_count;
@@ -8439,7 +8526,19 @@ proto_register_gsm_rlcmac(void)
/*< SI 13 Rest Octets >*/
{ &hf_gprs_cell_options_nmo,
{ "NMO", "gsm_rlcmac.dl.gprs_cell_options_nmo",
- FT_UINT8, BASE_DEC, NULL, 0x0,
+ FT_UINT8, BASE_DEC, VALS(gsm_rlcmac_nmo_vals), 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_gprs_cell_options_t3168,
+ { "T3168", "gsm_rlcmac.dl.gprs_cell_options_t3168",
+ FT_UINT8, BASE_DEC, VALS(gsm_rlcmac_t3168_vals), 0x0,
+ NULL, HFILL
+ }
+ },
+ { &hf_gprs_cell_options_t3192,
+ { "T3192", "gsm_rlcmac.dl.gprs_cell_options_t3192",
+ FT_UINT8, BASE_DEC, VALS(gsm_rlcmac_t3192_vals), 0x0,
NULL, HFILL
}
},
@@ -8523,7 +8622,7 @@ proto_register_gsm_rlcmac(void)
},
{ &hf_pbcch_present_psi1_repeat_period,
{ "PSI1_REPEAT_PERIOD", "gsm_rlcmac.dl.pbcch_present_psi1_repeat_period",
- FT_UINT8, BASE_DEC, NULL, 0x0,
+ FT_UINT8, BASE_DEC, VALS(gsm_rlcmac_val_plus_1_vals), 0x0,
NULL, HFILL
}
},
@@ -9686,7 +9785,7 @@ proto_register_gsm_rlcmac(void)
},
{ &hf_location_repeat_psi1_repeat_period,
{ "PSI1_REPEAT_PERIOD", "gsm_rlcmac.dl.psi1_repeat_period",
- FT_UINT8, BASE_DEC, NULL, 0x0,
+ FT_UINT8, BASE_DEC, VALS(gsm_rlcmac_val_plus_1_vals), 0x0,
NULL, HFILL
}
},
@@ -11608,13 +11707,13 @@ proto_register_gsm_rlcmac(void)
},
{ &hf_packet_system_info_type1_psi_change_field,
{ "PSI_CHANGE_FIELD", "gsm_rlcmac.dl.psi1_psi_change_field",
- FT_UINT8, BASE_DEC, NULL, 0x0,
+ FT_UINT8, BASE_DEC, VALS(gsm_rlcmac_psi_change_field_vals), 0x0,
NULL, HFILL
}
},
{ &hf_packet_system_info_type1_psi1_repeat_period,
{ "PSI1_REPEAT_PERIOD", "gsm_rlcmac.dl.psi1_psi1_repeat_period",
- FT_UINT8, BASE_DEC, NULL, 0x0,
+ FT_UINT8, BASE_DEC, VALS(gsm_rlcmac_val_plus_1_vals), 0x0,
NULL, HFILL
}
},
@@ -11626,13 +11725,13 @@ proto_register_gsm_rlcmac(void)
},
{ &hf_packet_system_info_type1_psi_count_hr,
{ "PSI_COUNT_HR", "gsm_rlcmac.dl.psi1_psi_count_hr",
- FT_UINT8, BASE_DEC, NULL, 0x0,
+ FT_UINT8, BASE_DEC, VALS(gsm_rlcmac_val_plus_1_vals), 0x0,
NULL, HFILL
}
},
{ &hf_packet_system_info_type1_measurement_order,
{ "MEASUREMENT_ORDER", "gsm_rlcmac.dl.psi1_measurement_order",
- FT_UINT8, BASE_DEC, NULL, 0x0,
+ FT_BOOLEAN, BASE_NONE, TFS(&gsm_rlcmac_psi1_measurement_order_value), 0x0,
NULL, HFILL
}
},
@@ -11654,6 +11753,12 @@ proto_register_gsm_rlcmac(void)
NULL, HFILL
}
},
+ { &hf_packet_system_info_type1_lb_ms_txpwr_max_ccch,
+ { "LB_MS_TXPWR_MAX_CCCH", "gsm_rlcmac.dl.psi1_lb_ms_txpwr_max_ccch",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL
+ }
+ },
{ &hf_pccch_org_bs_pcc_rel,
{ "BS_PCC_REL", "gsm_rlcmac.dl.pccch_org_bs_pcc_rel",
FT_UINT8, BASE_DEC, NULL, 0x0,
diff --git a/epan/dissectors/packet-gsm_rlcmac.h b/epan/dissectors/packet-gsm_rlcmac.h
index 4a44dcccb8..7746a33654 100644
--- a/epan/dissectors/packet-gsm_rlcmac.h
+++ b/epan/dissectors/packet-gsm_rlcmac.h
@@ -2484,32 +2484,39 @@ typedef struct
typedef struct
{
- guint8 MSCR;
- guint8 SGSNR;
- guint8 BandIndicator;
+ guint8 LB_MS_TXPWR_MAX_CCH;
+} PSI1_AdditionsR6_t;
+
+typedef struct
+{
+ guint8 MSCR;
+ guint8 SGSNR;
+ guint8 BandIndicator;
+ gboolean Exist_AdditionsR6;
+ PSI1_AdditionsR6_t AdditionsR6;
} PSI1_AdditionsR99_t;
typedef struct
{
- guint8 MESSAGE_TYPE;
+ guint8 MESSAGE_TYPE;
- guint8 PAGE_MODE;
- guint8 PBCCH_CHANGE_MARK;
- guint8 PSI_CHANGE_FIELD;
- guint8 PSI1_REPEAT_PERIOD;
- guint8 PSI_COUNT_LR;
+ guint8 PAGE_MODE;
+ guint8 PBCCH_CHANGE_MARK;
+ guint8 PSI_CHANGE_FIELD;
+ guint8 PSI1_REPEAT_PERIOD;
+ guint8 PSI_COUNT_LR;
- guint8 Exist_PSI_COUNT_HR;
- guint8 PSI_COUNT_HR;
+ guint8 Exist_PSI_COUNT_HR;
+ guint8 PSI_COUNT_HR;
- guint8 MEASUREMENT_ORDER;
+ guint8 MEASUREMENT_ORDER;
GPRS_Cell_Options_t GPRS_Cell_Options;
PRACH_Control_t PRACH_Control;
PCCCH_Organization_t PCCCH_Organization;
Global_Power_Control_Parameters_t Global_Power_Control_Parameters;
- guint8 PSI_STATUS_IND;
+ guint8 PSI_STATUS_IND;
- gboolean Exist_AdditionsR99;
+ gboolean Exist_AdditionsR99;
PSI1_AdditionsR99_t AdditionsR99;
} PSI1_t;