add GPRS/EGPRS MAC + RLC layer DIAG related definitions
diff --git a/src/gprs_mac.c b/src/gprs_mac.c
new file mode 100644
index 0000000..b2073be
--- /dev/null
+++ b/src/gprs_mac.c
@@ -0,0 +1,86 @@
+#include <osmocom/core/utils.h>
+
+#include "gprs_mac.h"
+
+struct value_string gprs_mac_mode_vals[] = {
+	{ NULL_MODE,	"NULL" },
+	{ IDLE_MODE,	"IDLE" },
+	{ TRANSFER_MODE, "TRANSFER" },
+	{ 0, NULL }
+};
+
+struct value_string gprs_mac_null_substate_vals[] = {
+	{ NULL_INACTIVE, 		"INACTIVE" },
+	{ NULL_GPRS_51_ACTIVE,		"GPRS_51_ACTIVE" },
+	{ NULL_SUSPENDED,		"SUSPENDED" },
+	{ NULL_SUSPEND_RESEL,		"SUSPEND_RESEL" },
+	{ NULL_UPLINK_TBF_ESTAB,	"UL_TBF_EST" },
+	{ NULL_UPLINK_SB_ESTAB,		"UL_SB_EST" },
+	{ NULL_DOWNLINK_SB_ESTAB,	"DL_SB_EST" },
+	{ NULL_UPLINK_TBF_ACCESS,	"UL_TBF_ACCESS" },
+	{ NULL_DL_TBF_EST,		"DL_TBF_EST" },
+	{ NULL_DTM_CONNECT_PENDING,	"DTM_CONN_PEND" },
+	{ NULL_DTM_GTTP_UL_CON,		"DTM_GTTP_UL_ON" },
+	{ NULL_RESET,			"RESET" },
+	{ 0, NULL }
+};
+
+struct value_string gprs_mac_idle_substate_vals[] = {
+	{ IDLE_PASSIVE,			"PASSIVE" },
+	{ IDLE_UL_PACKET_ACCESS,	"PACKET_ACCESS" },
+	{ IDLE_UL_ACCESS_QUEUED,	"ACCESS_QUEUED" },
+	{ IDLE_UL_ACCESS_REJECT,	"ACCESS_REJECT" },
+	{ IDLE_UL_1PHASE_ASS,		"1PHASE_ASS" },
+	{ IDLE_UL_2PHASE_ASS,		"2PHASE_ASS" },
+	{ IDLE_UL_1PHASE_CONT_RES,	"1PHASE_CONT_RES" },
+	{ IDLE_DL_ASS,			"DL_ASS" },
+	{ 0, NULL }
+};
+
+struct value_string gprs_mac_transfer_substate_vals[] = {
+	{ TRANSFER_INACTIVE,		"INACTIVE" },
+	{ TRANSFER_DL,			"DL" },
+	{ TRANSFER_DL_REASSIGN,		"DL_REASSIGN" },
+	{ TRANSFER_DL_WITH_DYNAMIC_ALLOC, "DL_WITH_DYNAMIC_ALLOC" },
+	{ TRANSFER_DL_REASSIGN_DYNAMIC_ALLOC, "DL_REASSIGN_DYNAMIC_ALLOC" },
+	{ TRANSFER_UL_DYNAMIC,		"UL_DYNAMIC" },
+	{ TRANSFER_UL_DYNAMIC_REALLOC,	"UL_DYNAMIC_REALLOC" },
+	{ TRANSFER_UL_DYNAMIC_DL_ASSIGN, "UL_DYNAMIC_DL_ASSIGN" },
+	{ TRANSFER_UL_DYNAMIC_REALLOC_DL_ASSIGN, "UL_DYNAMIC_REALLOC_DL_ASSIGN" },
+	{ TRANSFER_CONCURRENT_DYNAMIC_TRANSFER, "CONCURRENT_DYNAMIC_TRANSFER" },
+	{ TRANSFER_CONCURRENT_DYNAMIC_DL_REASSIGN, "CONCURRENT_DYNAMIC_DL_REASSIGN" },
+	{ TRANSFER_CONCURRENT_DYNAMIC_REALLOC,	"CONCURRENT_DYNAMIC_REALLOC" },
+	{ TRANSFER_CONCURRENT_DL_REASSIGN_DYNAMIC_REALLOC, "CONCURRENT_DL_REASSIGN_DYNAMIC_REALLOC" },
+	{ 0, NULL }
+};
+
+struct value_string gprs_mac_chan_type_vals[] = {
+	{ PRACH_11BIT_CHANNEL,	"PRACH_11BIT_CHANNEL" },
+	{ PRACH_8BIT_CHANNEL,	"PRACH_8BIT_CHANNEL" },
+	{ PACCH_RRBP_CHANNEL,	"PACCH_RRBP_CHANNEL" },
+	{ UL_PACCH_CHANNEL, 	"UL_PACCH_CHANNEL" },
+	{ PCCCH_CHANNEL,	"PCCCH_CHANNEL" },
+	{ PBCCH_CHANNEL,	"PBCCH_CHANNEL" },
+	{ DL_PACCH_CHANNEL,	"DL_PACCH_CHANNEL" },
+	{ 0, NULL }
+};
+
+struct value_string gprs_mac_msg_type_vals[] = {
+	{ PACKET_CELL_CHANGE_FAILURE,		"PACKET_CELL_CHANGE_FAILURE" },
+	{ PACKET_CONTROL_ACKNOWLEDGE,		"PACKET_CONTROL_ACKNOWLEDGE" },
+	{ PACKET_DOWNLINK_ACK_NACK,		"PACKET_DOWNLINK_ACK_NACK" },
+	{ PACKET_UPLK_DUMMY_CNTRL_BLK,		"PACKET_UPLK_DUMMY_CNTRL_BLK" },
+	{ PACKET_MEASUREMENT_REPORT,		"PACKET_MEASUREMENT_REPORT" },
+	{ PACKET_RESOURCE_REQUEST,		"PACKET_RESOURCE_REQUEST" },
+	{ PACKET_MOBILE_TBF_STATUS,		"PACKET_MOBILE_TBF_STATUS" },
+	{ PACKET_PSI_STATUS,			"PACKET_PSI_STATUS" },
+	{ EGPRS_PACKET_DOWNLINK_ACK_NACK,	"EGPRS_PACKET_DOWNLINK_ACK_NACK" },
+	{ PACKET_PAUSE,				"PACKET_PAUSE" },
+	{ PACKET_ENHANCED_MEASUREMENT_REPORT,	"PACKET_ENHANCED_MEASUREMENT_REPORT" },
+	{ ADDITIONAL_MS_RAC,			"ADDITIONAL_MS_RAC" },
+	{ PACKET_CELL_CHANGE_NOTIFICATION,	"PACKET_CELL_CHANGE_NOTIFICATION" },
+	{ PACKET_SI_STATUS,			"PACKET_SI_STATUS" },
+	{ PACKET_CS_REQUEST,			"PACKET_CS_REQUEST" },
+	{ PACKET_CHANNEL_REQUEST,		"PACKET_CHANNEL_REQUEST" },
+	{ 0, NULL }
+};