add GPRS/EGPRS MAC + RLC layer DIAG related definitions
diff --git a/src/gprs_mac.h b/src/gprs_mac.h
new file mode 100644
index 0000000..3149351
--- /dev/null
+++ b/src/gprs_mac.h
@@ -0,0 +1,147 @@
+#include <stdint.h>
+
+enum gprs_mac_mode {
+	NULL_MODE,
+	IDLE_MODE,
+	TRANSFER_MODE,
+};
+
+enum gprs_mac_null_substates {
+	NULL_INACTIVE,
+	NULL_GPRS_51_ACTIVE,
+	NULL_SUSPENDED,
+	NULL_SUSPEND_RESEL,
+	NULL_UPLINK_TBF_ESTAB,
+	NULL_UPLINK_SB_ESTAB,
+	NULL_DOWNLINK_SB_ESTAB,
+	NULL_UPLINK_TBF_ACCESS,
+	NULL_DL_TBF_EST,
+	NULL_DTM_CONNECT_PENDING,
+	NULL_DTM_GTTP_UL_CON,
+	NULL_RESET,
+};
+
+enum gprs_mac_idle_substates {
+	IDLE_PASSIVE,
+	IDLE_UL_PACKET_ACCESS,
+	IDLE_UL_ACCESS_QUEUED,
+	IDLE_UL_ACCESS_REJECT,
+	IDLE_UL_1PHASE_ASS,
+	IDLE_UL_2PHASE_ASS,
+	IDLE_UL_1PHASE_CONT_RES,
+	IDLE_DL_ASS,
+};
+
+enum gprs_mac_transfer_substates {
+	TRANSFER_INACTIVE,
+	TRANSFER_DL,
+	TRANSFER_DL_REASSIGN,
+	TRANSFER_DL_WITH_DYNAMIC_ALLOC,
+	TRANSFER_DL_REASSIGN_DYNAMIC_ALLOC,
+	TRANSFER_UL_DYNAMIC,
+	TRANSFER_UL_DYNAMIC_REALLOC,
+	TRANSFER_UL_DYNAMIC_DL_ASSIGN,
+	TRANSFER_UL_DYNAMIC_REALLOC_DL_ASSIGN,
+	TRANSFER_CONCURRENT_DYNAMIC_TRANSFER,
+	TRANSFER_CONCURRENT_DYNAMIC_DL_REASSIGN,
+	TRANSFER_CONCURRENT_DYNAMIC_REALLOC,
+	TRANSFER_CONCURRENT_DL_REASSIGN_DYNAMIC_REALLOC,
+};
+
+/* LOG_GPRS_MAC_STATE_C */
+struct gprs_mac_state_change {
+	uint8_t mac_mode;
+	uint8_t mac_null_fsm_state;
+	uint8_t mac_idle_fsm_state;
+	uint8_t mac_transfer_fsm_state;
+} __attribute__((packed));
+
+/* LOG_GPRS_MAC_SIGNALLING_MESSAGE_C */
+struct gprs_mac_signalling_msg {
+	uint8_t chan_type;
+	uint8_t msg_type;
+	uint8_t msg_len;
+	uint8_t msg[0];
+} __attribute__((packed));
+
+/* LOG_GPRS_MAC_DL_TBF_ESTABLISH_C */
+struct gprs_mac_dl_tbf_est {
+	uint8_t dl_tfi;
+	uint8_t rlc_mode;
+	uint8_t dl_ts_bmap;
+	uint8_t is_egprs_tbf;
+	uint16_t egprs_win_size;
+	uint8_t egprs_link_qual_mode;
+	uint8_t bep_period2;
+} __attribute__((packed));
+
+/* LOG_GPRS_MAC_UL_TBF_ESTABLISH_C */
+struct gprs_mcc_ul_tbf_est {
+	uint8_t tbf_req_cause;
+	uint8_t acc_granted;
+	uint8_t radio_prio;
+	uint8_t peak_tput;
+	uint8_t ul_tfi;
+	uint8_t rlc_mode;
+	uint8_t ul_ts_bmap;
+
+	uint8_t is_egprs_tbf;
+	uint16_t egprs_win_size;
+	uint8_t resegment;
+	uint8_t bep_period2;
+} __attribute__ ((packed));
+
+/* LOG_EGPRS_MAC_DL_ACKNACK_C */
+struct gprs_mac_dl_acknack {
+	uint8_t is_egprs;
+	uint8_t dl_acknack[0];
+} __attribute__ ((packed));
+
+/* LOG_EGPRS_MAC_UL_ACKNACK_C */
+struct gprs_mac_ul_acknack {
+	uint8_t ul_acknack[0];
+} __attribute__ ((packed));
+
+/* identical for LOG_GPRS_MAC_UL_TBF_RELEASE_C and
+ * LOG_GPRS_MAC_DL_TBF_RELEASE_C */
+struct gprs_mac_tbf_release {
+	uint8_t tfi;
+	uint8_t fail_cause;
+} __attribute__ ((packed));
+
+
+/* EVENT_GPRS_MAC_MSG_RECEIVED / EVENT_GPRS_MAC_MSG_SENT */
+enum gprs_mac_chan_type {
+	PRACH_11BIT_CHANNEL	= 0x01,
+	PRACH_8BIT_CHANNEL	= 0x02,
+	PACCH_RRBP_CHANNEL	= 0x03,
+	UL_PACCH_CHANNEL	= 0x04,
+	PCCCH_CHANNEL		= 0x81,
+	PBCCH_CHANNEL		= 0x82,
+	DL_PACCH_CHANNEL	= 0x83,
+};
+
+enum gprs_mac_msg_type {
+	PACKET_CELL_CHANGE_FAILURE		= 0x00,
+	PACKET_CONTROL_ACKNOWLEDGE		= 0x01,
+	PACKET_DOWNLINK_ACK_NACK		= 0x02,
+	PACKET_UPLK_DUMMY_CNTRL_BLK		= 0x03,
+	PACKET_MEASUREMENT_REPORT		= 0x04,
+	PACKET_RESOURCE_REQUEST			= 0x05,
+	PACKET_MOBILE_TBF_STATUS		= 0x06,
+	PACKET_PSI_STATUS			= 0x07,
+	EGPRS_PACKET_DOWNLINK_ACK_NACK		= 0x08,
+	PACKET_PAUSE				= 0x09,
+	PACKET_ENHANCED_MEASUREMENT_REPORT	= 0x0a,
+	ADDITIONAL_MS_RAC			= 0x0b,
+	PACKET_CELL_CHANGE_NOTIFICATION		= 0x0c,
+	PACKET_SI_STATUS			= 0x0d,
+	PACKET_CS_REQUEST			= 0x0e,
+	PACKET_CHANNEL_REQUEST			= 0x20,
+};
+
+struct evt_gprs_mac_msg {
+	uint8_t msg_type;
+	uint8_t prot_disc;
+	uint8_t chan_type;
+} __attribute__ ((packed));