/*! \addtogroup sms
 *  @{
 * \file gsm0411_smr.h */

#pragma once

#include <osmocom/gsm/protocol/gsm_04_11.h>

#define GSM411_SM_RL_DATA_REQ		0x401
#define GSM411_SM_RL_DATA_IND		0x402
#define GSM411_SM_RL_MEM_AVAIL_REQ	0x403
#define GSM411_SM_RL_MEM_AVAIL_IND	0x404
#define GSM411_SM_RL_REPORT_REQ		0x405
#define GSM411_SM_RL_REPORT_IND		0x406

struct gsm411_smr_inst {
	uint64_t id;		/* a unique id for the SMS */
	int network;		/* is this a MO (0) or MT (1) transfer */
	int (*rl_recv) (struct gsm411_smr_inst *inst, int msg_type,
			struct msgb *msg);
	int (*mn_send) (struct gsm411_smr_inst *inst, int msg_type,
			struct msgb *msg);

	enum gsm411_rp_state rp_state;
	struct osmo_timer_list rp_timer;
};

extern const struct value_string gsm411_rp_cause_strs[];

/* init a new instance */
void gsm411_smr_init(struct gsm411_smr_inst *inst, uint64_t id, int network,
	int (*rl_recv) (struct gsm411_smr_inst *inst, int msg_type,
			struct msgb *msg),
	int (*mn_send) (struct gsm411_smr_inst *inst, int msg_type,
			struct msgb *msg));

/* clear instance */
void gsm411_smr_clear(struct gsm411_smr_inst *inst);

/* message from upper layer */
int gsm411_smr_send(struct gsm411_smr_inst *inst, int msg_type,
	struct msgb *msg);

/* message from lower layer */
int gsm411_smr_recv(struct gsm411_smr_inst *inst, int msg_type,
	struct msgb *msg);

extern const struct value_string gsm411_rp_state_names[];

static inline const char *gsm411_rp_state_name(enum gsm411_rp_state rp_state) {
	return get_value_string(gsm411_rp_state_names, rp_state);
}

/*! @} */
