aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-gsm_rlcmac.h
diff options
context:
space:
mode:
authorAnton Thomasson <anton.thomasson@ericsson.com>2016-06-10 16:12:24 +0200
committerPascal Quantin <pascal.quantin@gmail.com>2016-06-13 16:05:36 +0000
commit92ef3d0b55a37f042e1ce7e208e7f39cb49b9bce (patch)
treedabe8b48b7188a8305903897236ecae6cf4e0988 /epan/dissectors/packet-gsm_rlcmac.h
parent4679f5d5130166e86bf744498167561e9fae052f (diff)
GSM RLC/MAC: add dissection of EC-GSM-IoT control messages
Change-Id: Ib7096039aa9761fda96ed8552899833597ba70a6 Reviewed-on: https://code.wireshark.org/review/15812 Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-gsm_rlcmac.h')
-rw-r--r--epan/dissectors/packet-gsm_rlcmac.h399
1 files changed, 370 insertions, 29 deletions
diff --git a/epan/dissectors/packet-gsm_rlcmac.h b/epan/dissectors/packet-gsm_rlcmac.h
index feceb6f5bb..3055fa3cf0 100644
--- a/epan/dissectors/packet-gsm_rlcmac.h
+++ b/epan/dissectors/packet-gsm_rlcmac.h
@@ -4925,6 +4925,8 @@ typedef DL_Data_Block_EGPRS_Header_t DL_Data_Block_EGPRS_Header_Type1_t;
typedef DL_Data_Block_EGPRS_Header_t DL_Data_Block_EGPRS_Header_Type2_t;
typedef DL_Data_Block_EGPRS_Header_t DL_Data_Block_EGPRS_Header_Type3_t;
+typedef DL_Data_Block_EGPRS_Header_t DL_Data_Block_EGPRS_Header_Type1_EC_t;
+
typedef struct
{
guint8 TFI;
@@ -4946,6 +4948,315 @@ typedef UL_Data_Block_EGPRS_Header_t UL_Data_Block_EGPRS_Header_Type1_t;
typedef UL_Data_Block_EGPRS_Header_t UL_Data_Block_EGPRS_Header_Type2_t;
typedef UL_Data_Block_EGPRS_Header_t UL_Data_Block_EGPRS_Header_Type3_t;
+typedef struct
+{
+ guint8 DOWNLINK_TFI;
+ guint8 Exist_Wait;
+ guint8 WAIT_INDICATION;
+ guint8 WAIT_INDICATION_SIZE;
+}
+EC_Reject_t;
+
+typedef struct
+{
+ guint8 MESSAGE_TYPE;
+ guint8 USED_DL_COVERAGE_CLASS;
+ guint8 Reject_Count;
+ EC_Reject_t Reject[16];
+}
+EC_Packet_Access_Reject_t;
+
+typedef struct
+{
+ guint8 EC_MA_NUMBER;
+ guint8 TSC;
+ guint8 Primary_TSC_Set;
+}
+EC_Frequency_Parameters_t;
+
+typedef struct {
+ guint8 TIMING_ADVANCE_VALUE;
+} EC_Packet_Timing_Advance_t;
+
+typedef struct
+{
+ guint8 MESSAGE_TYPE;
+ guint8 USED_DL_COVERAGE_CLASS;
+ Global_TFI_t Global_TFI;
+ guint8 CONTROL_ACK;
+
+ gboolean Exist_Frequency_Parameters;
+ EC_Frequency_Parameters_t Frequency_Parameters;
+
+ guint8 DL_COVERAGE_CLASS;
+ guint8 STARTING_DL_TIMESLOT;
+ guint8 TIMESLOT_MULTIPLICATOR;
+ guint8 DOWNLINK_TFI_ASSIGNMENT;
+ guint8 UL_COVERAGE_CLASS;
+ guint8 STARTING_UL_TIMESLOT_OFFSET;
+
+ gboolean Exist_EC_Packet_Timing_Advance;
+ EC_Packet_Timing_Advance_t EC_Packet_Timing_Advance;
+
+ gboolean Exist_P0_and_PR_MODE;
+ guint8 P0;
+ guint8 PR_MODE;
+
+ gboolean Exist_GAMMA;
+ guint8 GAMMA;
+
+ guint8 ALPHA_Enable;
+
+}
+EC_Packet_Downlink_Assignment_t;
+
+typedef struct
+{
+ guint8 MESSAGE_TYPE;
+ guint8 USED_DL_COVERAGE_CLASS;
+ Global_TFI_t Global_TFI;
+ guint8 TYPE_OF_ACK;
+}
+EC_Packet_Polling_Req_t;
+
+typedef struct
+{
+ guint8 MESSAGE_TYPE;
+ guint8 USED_DL_COVERAGE_CLASS;
+ Global_TFI_t Global_TFI;
+
+ gboolean Exist_T_AVG_T;
+ guint8 T_AVG_T;
+
+ gboolean Exist_EC_Packet_Timing_Advance;
+ EC_Packet_Timing_Advance_t EC_Packet_Timing_Advance;
+
+ gboolean Exist_GAMMA;
+ guint8 GAMMA;
+}
+EC_Packet_Power_Control_Timing_Advance_t;
+
+typedef struct
+{
+ guint8 MESSAGE_TYPE;
+ guint8 USED_DL_COVERAGE_CLASS;
+ Global_TFI_t Global_TFI;
+ guint8 TBF_RELEASE_CAUSE;
+
+ guint8 Exist_Wait;
+ guint8 WAIT_INDICATION;
+ guint8 WAIT_INDICATION_SIZE;
+}
+EC_Packet_Tbf_Release_t;
+
+typedef struct{
+ gboolean Exist_DELAY_NEXT_UL_RLC_DATA_BLOCK;
+ guint8 DELAY_NEXT_UL_RLC_DATA_BLOCK;
+}
+FUA_Delay_t;
+
+typedef struct
+{
+ gboolean Exist_BSN_OFFSET;
+ guint8 BSN_OFFSET;
+ guint8 START_FIRST_UL_RLC_DATA_BLOCK;
+ guint8 Count_FUA_Delay;
+ FUA_Delay_t FUA_Delay[16]; /* Max RLC window size */
+}
+PUAN_Fixed_Uplink_Allocation_t;
+
+typedef struct{
+ guint8 STARTING_SEQUENCE_NUMBER;
+ guint16 RECEIVED_BLOCK_BITMAP;
+}
+EC_AckNack_Description_t;
+
+typedef struct{
+ guint8 STARTING_SEQUENCE_NUMBER;
+ guint8 RECEIVED_BLOCK_BITMAP;
+}
+EC_Primary_AckNack_Description_t;
+
+typedef struct{
+ guint32 CONTENTION_RESOLUTION_TLLI;
+ EC_Primary_AckNack_Description_t EC_AckNack_Description;
+}
+EC_Primary_AckNack_Description_TLLI_t;
+
+typedef struct{
+ guint32 CONTENTION_RESOLUTION_rTLLI;
+ EC_Primary_AckNack_Description_t EC_AckNack_Description;
+}
+EC_Primary_AckNack_Description_rTLLI_t;
+
+typedef struct{
+ guint8 EC_AckNack_Description_Type;
+ union
+ {
+ EC_AckNack_Description_t EC_AckNack_Description;
+ EC_Primary_AckNack_Description_TLLI_t EC_Primary_AckNack_Description_TLLI;
+ EC_Primary_AckNack_Description_rTLLI_t EC_Primary_AckNack_Description_rTLLI;
+ } u;
+
+ PUAN_Fixed_Uplink_Allocation_t PUAN_Fixed_Uplink_Allocation;
+ guint8 RESEGMENT;
+
+ gboolean Exist_EGPRS_Channel_Coding_Command;
+ guint8 EGPRS_Channel_Coding_Command;
+
+ gboolean Exist_CC_TS;
+ guint8 UL_COVERAGE_CLASS;
+ guint8 STARTING_UL_TIMESLOT;
+ guint8 DL_COVERAGE_CLASS;
+ guint8 STARTING_DL_TIMESLOT_OFFSET;
+ guint8 TIMESLOT_MULTIPLICATOR;
+} EC_Packet_Uplink_Ack_Nack_fai0_t;
+typedef struct{
+ gboolean Exist_CONTENTION_RESOLUTION_TLLI;
+ guint32 CONTENTION_RESOLUTION_TLLI;
+
+ gboolean Exist_MONITOR_EC_PACCH;
+ guint8 T3238;
+ guint8 Initial_Waiting_Time;
+ guint8 EC_PACCH_Monitoring_Pattern;
+
+} EC_Packet_Uplink_Ack_Nack_fai1_t;
+
+typedef struct
+{
+ guint8 MESSAGE_TYPE;
+ guint8 USED_DL_COVERAGE_CLASS;
+ guint8 UPLINK_TFI;
+ guint8 Final_Ack_Indicator;
+ union
+ {
+ EC_Packet_Uplink_Ack_Nack_fai0_t fai0;
+ EC_Packet_Uplink_Ack_Nack_fai1_t fai1;
+ } u;
+
+ gboolean Exist_EC_Packet_Timing_Advance;
+ EC_Packet_Timing_Advance_t EC_Packet_Timing_Advance;
+
+ gboolean Exist_GAMMA;
+ guint8 GAMMA;
+ guint8 ALPHA_Enable;
+}
+EC_Packet_Uplink_Ack_Nack_t;
+
+typedef struct
+{
+ guint8 START_FIRST_UL_RLC_DATA_BLOCK;
+ guint8 Count_FUA_Delay;
+ FUA_Delay_t FUA_Delay[16]; /* Max RLC window size */
+}
+Fixed_Uplink_Allocation_t;
+
+typedef struct
+{
+ guint8 MESSAGE_TYPE;
+ guint8 USED_DL_COVERAGE_CLASS;
+ Global_TFI_t Global_TFI;
+
+ gboolean Exist_UPLINK_TFI_ASSIGNMENT;
+ guint8 UPLINK_TFI_ASSIGNMENT;
+
+ gboolean Exist_EGPRS_Channel_Coding_Command;
+ guint8 EGPRS_Channel_Coding_Command;
+
+ guint8 Overlaid_CDMA_Code;
+
+ gboolean Exist_EC_Packet_Timing_Advance;
+ EC_Packet_Timing_Advance_t EC_Packet_Timing_Advance;
+
+ gboolean Exist_Frequency_Parameters;
+ EC_Frequency_Parameters_t Frequency_Parameters;
+
+ guint8 UL_COVERAGE_CLASS;
+ guint8 STARTING_UL_TIMESLOT;
+ guint8 TIMESLOT_MULTIPLICATOR;
+
+ Fixed_Uplink_Allocation_t Fixed_Uplink_Allocation;
+
+ gboolean Exist_P0_and_PR_MODE;
+ guint8 P0;
+ guint8 PR_MODE;
+
+ gboolean Exist_GAMMA;
+ guint8 GAMMA;
+ guint8 ALPHA_Enable;
+
+ guint8 DL_COVERAGE_CLASS;
+ guint8 STARTING_DL_TIMESLOT_OFFSET;
+
+}
+EC_Packet_Uplink_Assignment_t;
+
+typedef struct
+{
+ guint8 MESSAGE_TYPE;
+ guint8 USED_DL_COVERAGE_CLASS;
+ guint8 UPLINK_TFI;
+ guint32 CONTENTION_RESOLUTION_TLLI;
+ EC_Primary_AckNack_Description_t EC_AckNack_Description;
+
+ Fixed_Uplink_Allocation_t PUANCR_Fixed_Uplink_Allocation;
+ guint8 RESEGMENT;
+}
+EC_Packet_Uplink_Ack_Nack_And_Contention_Resolution_t;
+
+typedef struct
+{
+ guint8 MESSAGE_TYPE;
+ guint8 USED_DL_COVERAGE_CLASS;
+}
+EC_Packet_Downlink_Dummy_Control_Block_t;
+
+typedef struct
+{
+ guint8 MESSAGE_TYPE;
+ guint32 TLLI;
+ guint8 CTRL_ACK;
+ guint8 DL_CC_EST;
+}
+EC_Packet_Control_Acknowledgement_t;
+
+typedef struct
+{
+ guint8 PRIORITY;
+ guint8 NUMBER_OF_UL_DATA_BLOCKS;
+}
+EC_Channel_Request_Description_t;
+
+typedef struct
+{
+ gboolean Exist_GMSK;
+ guint8 GMSK_MEAN_BEP;
+ guint8 GMSK_CV_BEP;
+ gboolean Exist_8PSK;
+ guint8 PSK_MEAN_BEP;
+ guint8 PSK_CV_BEP;
+ guint8 C_VALUE;
+}
+EC_Channel_Quality_Report_t;
+
+typedef struct
+{
+ guint8 MESSAGE_TYPE;
+ guint8 DOWNLINK_TFI;
+ guint8 MS_OUT_OF_MEMORY;
+ guint8 Final_Ack_Indicator;
+
+ EC_AckNack_Description_t EC_AckNack_Description;
+
+ gboolean Exist_EC_Channel_Quality_Report; /* DL CC EST is also conditional on this */
+ EC_Channel_Quality_Report_t EC_Channel_Quality_Report;
+ guint8 DL_CC_EST;
+
+ gboolean Exist_EC_Channel_Request_Description;
+ EC_Channel_Request_Description_t EC_Channel_Request_Description;
+}
+EC_Packet_Downlink_Ack_Nack_t;
+
/*
< NC Measurement Parameters struct > ::=
< NETWORK_CONTROL_ORDER : bit (2) >
@@ -5028,6 +5339,21 @@ Table 25 (concluded): PACKET CELL CHANGE ORDER message content
#define MT_PACKET_SI_STATUS 0x0D
#define MT_ENHANCED_MEASUREMENT_REPORT 0x04
+/* < Downlink EC-GSM-IoT RLC/MAC control messages > */
+#define MT_EC_PACKET_ACCESS_REJECT 0x11
+#define MT_EC_PACKET_DOWNLINK_ASSIGNMENT 0x01
+#define MT_EC_PACKET_POLLING_REQ 0x02
+#define MT_EC_PACKET_POWER_CONTROL_TIMING_ADVANCE 0x03
+#define MT_EC_PACKET_TBF_RELEASE 0x04
+#define MT_EC_PACKET_UPLINK_ACK_NACK 0x05
+#define MT_EC_PACKET_UPLINK_ASSIGNMENT 0x06
+#define MT_EC_PACKET_UPLINK_ACK_NACK_AND_CONTENTION_RESOLUTION 0x07
+#define MT_EC_PACKET_DOWNLINK_DUMMY_CONTROL_BLOCK 0x12
+
+/* < Uplink EC-GSM-IoT RLC/MAC control messages > */
+#define MT_EC_PACKET_CONTROL_ACKNOWLEDGEMENT 0x01
+#define MT_EC_PACKET_DOWNLINK_ACK_NACK 0x02
+
typedef enum
{
RLCMAC_PRACH = 0x20,
@@ -5044,7 +5370,11 @@ typedef enum
RLCMAC_HDR_TYPE_7 = 0x37,
RLCMAC_HDR_TYPE_8 = 0x38,
RLCMAC_HDR_TYPE_9 = 0x39,
- RLCMAC_HDR_TYPE_10 = 0x3a
+ RLCMAC_HDR_TYPE_10 = 0x3a,
+ RLCMAC_EC_CS1 = 0x40,
+ RLCMAC_HDR_TYPE_1_EC = 0x41,
+ RLCMAC_HDR_TYPE_2_EC = 0x42,
+ RLCMAC_HDR_TYPE_3_EC = 0x43
}RLCMAC_block_format_t;
/* < Downlink RLC/MAC control message > */
@@ -5052,34 +5382,43 @@ typedef struct
{
union
{
- guint8 MESSAGE_TYPE;
- DL_Data_Block_GPRS_t DL_Data_Block_GPRS;
- DL_Data_Block_EGPRS_Header_t DL_Data_Block_EGPRS_Header;
- Packet_Access_Reject_t Packet_Access_Reject;
- Packet_Cell_Change_Order_t Packet_Cell_Change_Order;
- Packet_Cell_Change_Continue_t Packet_Cell_Change_Continue;
- Packet_Downlink_Assignment_t Packet_Downlink_Assignment;
- Packet_Measurement_Order_t Packet_Measurement_Order;
- Packet_Neighbour_Cell_Data_t Packet_Neighbour_Cell_Data;
- Packet_Serving_Cell_Data_t Packet_Serving_Cell_Data;
- Packet_Paging_Request_t Packet_Paging_Request;
- Packet_PDCH_Release_t Packet_PDCH_Release;
- Packet_Polling_Request_t Packet_Polling_Request;
- Packet_Power_Control_Timing_Advance_t Packet_Power_Control_Timing_Advance;
- Packet_PRACH_Parameters_t Packet_PRACH_Parameters;
- Packet_Queueing_Notification_t Packet_Queueing_Notification;
- Packet_Timeslot_Reconfigure_t Packet_Timeslot_Reconfigure;
- Packet_TBF_Release_t Packet_TBF_Release;
- Packet_Uplink_Ack_Nack_t Packet_Uplink_Ack_Nack;
- Packet_Uplink_Assignment_t Packet_Uplink_Assignment;
- Packet_Handover_Command_t Packet_Handover_Command;
- Packet_PhysicalInformation_t Packet_PhysicalInformation;
- Packet_Downlink_Dummy_Control_Block_t Packet_Downlink_Dummy_Control_Block;
- PSI1_t PSI1;
- PSI2_t PSI2;
- PSI3_t PSI3;
- PSI5_t PSI5;
- PSI13_t PSI13;
+ guint8 MESSAGE_TYPE;
+ DL_Data_Block_GPRS_t DL_Data_Block_GPRS;
+ DL_Data_Block_EGPRS_Header_t DL_Data_Block_EGPRS_Header;
+ Packet_Access_Reject_t Packet_Access_Reject;
+ Packet_Cell_Change_Order_t Packet_Cell_Change_Order;
+ Packet_Cell_Change_Continue_t Packet_Cell_Change_Continue;
+ Packet_Downlink_Assignment_t Packet_Downlink_Assignment;
+ Packet_Measurement_Order_t Packet_Measurement_Order;
+ Packet_Neighbour_Cell_Data_t Packet_Neighbour_Cell_Data;
+ Packet_Serving_Cell_Data_t Packet_Serving_Cell_Data;
+ Packet_Paging_Request_t Packet_Paging_Request;
+ Packet_PDCH_Release_t Packet_PDCH_Release;
+ Packet_Polling_Request_t Packet_Polling_Request;
+ Packet_Power_Control_Timing_Advance_t Packet_Power_Control_Timing_Advance;
+ Packet_PRACH_Parameters_t Packet_PRACH_Parameters;
+ Packet_Queueing_Notification_t Packet_Queueing_Notification;
+ Packet_Timeslot_Reconfigure_t Packet_Timeslot_Reconfigure;
+ Packet_TBF_Release_t Packet_TBF_Release;
+ Packet_Uplink_Ack_Nack_t Packet_Uplink_Ack_Nack;
+ Packet_Uplink_Assignment_t Packet_Uplink_Assignment;
+ Packet_Handover_Command_t Packet_Handover_Command;
+ Packet_PhysicalInformation_t Packet_PhysicalInformation;
+ Packet_Downlink_Dummy_Control_Block_t Packet_Downlink_Dummy_Control_Block;
+ PSI1_t PSI1;
+ PSI2_t PSI2;
+ PSI3_t PSI3;
+ PSI5_t PSI5;
+ PSI13_t PSI13;
+ EC_Packet_Access_Reject_t EC_Packet_Access_Reject;
+ EC_Packet_Downlink_Assignment_t EC_Packet_Downlink_Assignment;
+ EC_Packet_Polling_Req_t EC_Packet_Polling_Req;
+ EC_Packet_Power_Control_Timing_Advance_t EC_Packet_Power_Control_Timing_Advance;
+ EC_Packet_Tbf_Release_t EC_Packet_Tbf_Release;
+ EC_Packet_Uplink_Ack_Nack_t EC_Packet_Uplink_Ack_Nack;
+ EC_Packet_Uplink_Assignment_t EC_Packet_Uplink_Assignment;
+ EC_Packet_Uplink_Ack_Nack_And_Contention_Resolution_t EC_Packet_Uplink_Ack_Nack_And_Contention_Resolution;
+ EC_Packet_Downlink_Dummy_Control_Block_t EC_Packet_Downlink_Dummy_Control_Block;
} u;
RLCMAC_block_format_t block_format;
@@ -5113,6 +5452,8 @@ typedef struct
UL_Packet_Control_Ack_TN_RRBP_11_t UL_Packet_Control_Ack_TN_RRBP_11;
UL_Packet_Control_Ack_8_t UL_Packet_Control_Ack_8;
UL_Packet_Control_Ack_TN_RRBP_8_t UL_Packet_Control_Ack_TN_RRBP_8;
+ EC_Packet_Control_Acknowledgement_t EC_Packet_Control_Acknowledgement;
+ EC_Packet_Downlink_Ack_Nack_t EC_Packet_Downlink_Ack_Nack;
} u;
RLCMAC_block_format_t block_format;
guint flags;