#include <osmocom/core/utils.h>

#include "protocol/diag_log_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 }
};
