/*! \file gsm_04_14.h */

#pragma once

#include <stdint.h>
#include <osmocom/core/endian.h>
#include <osmocom/core/utils.h>

/* According to 3GPP TS 44.014 / GSM TS 04.14 */

#define GSM414_MT_CLOSE_TCH_LOOP_CMD	0x00	/* 8.1 */
enum gsm414_tch_loop_mode {
	GSM414_LOOP_A	= 0x00,
	GSM414_LOOP_B	= 0x01,
	GSM414_LOOP_C	= 0x02,
	GSM414_LOOP_D	= 0x04,
	GSM414_LOOP_E	= 0x08,
	GSM414_LOOP_F	= 0x0c,
	GSM414_LOOP_I	= 0x1c,
};

#define GSM414_MT_CLOSE_TCH_LOOP_ACK	0x01	/* 8.2 */
#define GSM414_MT_OPEN_LOOP_CMD		0x02	/* 8.3 */
#define GSM414_OPEN_LOOP_ACK_IE		0x81

#define GSM414_MT_CLOSE_MSLOT_LOOP_CMD	0x20	/* 8.4 */
struct gsm414_close_mslot_loop_cmd {
#if OSMO_IS_LITTLE_ENDIAN == 1
	uint8_t chc:2,
		loop_mech:3,
		tn:3;
#else
	uint8_t tn:3,
		loop_mech:3,
		chc:2;
#endif
} __attribute__((packed));

#define GSM414_MT_CLOSE_MSLOT_LOOP_ACK	0x21	/* 8.5 */
struct gsm414_close_mslot_loop_ack {
#if OSMO_IS_LITTLE_ENDIAN == 1
	uint8_t err_ind:1,
		loop_mech:3,
		chc:2,
		spare:2;
#else
	uint8_t spare:2,
		chc:2,
		loop_mech:3,
		err_ind:1;
#endif
} __attribute__((packed));

#define GSM414_MT_OPEN_MSLOT_LOOP_CMD	0x22	/* 8.6 */
#define GSM414_MT_OPEN_MSLOT_LOOP_ACK	0x23	/* 8.7 */
#define GSM414_MT_ACT_EMMI_CMD		0x0c	/* 8.8 */
#define GSM414_MT_ACT_EMMI_ACK		0x0d	/* 8.9 */
#define GSM414_MT_DEACT_EMMI_CMD	0x80	/* 8.10 */
#define GSM414_MT_TEST_INTERFACE	0x84	/* 8.11 */

/* 8.12 Timers (milli-seconds) */
#define GSM414_TT01_MS	2500
#define GSM414_TT02_MS	2500
#define GSM414_TT03_MS	50

#define GSM414_MT_GPRS_TEST_MODE_CMD	0x24	/* 8.13 */
struct gsm414_gprs_test_mode_cmd {
#if OSMO_IS_LITTLE_ENDIAN == 1
	uint16_t d:12,
		spare:3,
		l:1;
	uint8_t m:1,
		dl_tx_offset:3,
		_spare:4;
#else
	uint16_t l:1,
		spare:3,
		d:12;
	uint8_t _spare:4,
		dl_tx_offset:3,
		m:1;
#endif
} __attribute__((packed));


#define GSM414_MT_EGPRS_ST_RB_LOOP_CMD	0x25	/* 8.14 */
struct gsm414_egprs_st_sb_loop_cmd {
#if OSMO_IS_LITTLE_ENDIAN == 1
	uint8_t _spare:4,
		dl_tx_offset:3,
		m:1;
#else
	uint8_t m:1,
		dl_tx_offset:3,
		_spare:4;
#endif
} __attribute__((packed));

#define GSM414_MT_RESET_MS_POS_STORED	0x26	/* 8.15 */
#define GSM414_MS_POS_TECH_AGPS		0x00
#define GSM414_MS_POS_TECH_AGNSS	0x01

extern const struct value_string gsm414_msgt_names[];
