/* Location Services (LCS): BSSLAP TA Request handling in OsmoBSC, API */
#pragma once

#include <osmocom/bsc/debug.h>
#include <osmocom/bsc/gsm_data.h>
#include <osmocom/core/fsm.h>
#include <osmocom/gsm/bssmap_le.h>

#define LOG_LCS_TA_REQ(TA_REQ, level, fmt, args...) do { \
	if (TA_REQ) \
		LOGPFSML((TA_REQ)->fi, level, fmt, ## args); \
	else \
		LOGP(DLCS, level, "LCS TA Req: " fmt, ## args); \
	} while(0)

enum lcs_ta_req_fsm_event {
	LCS_TA_REQ_EV_GOT_TA,
	LCS_TA_REQ_EV_ABORT,
};

struct lcs_ta_req {
	struct osmo_fsm_inst *fi;
	struct lcs_loc_req *loc_req;
	enum lcs_cause failure_cause;
	uint8_t failure_diagnostic_val;
};
int lcs_ta_req_start(struct lcs_loc_req *lcs_loc_req);

void lcs_bsslap_rx(struct gsm_subscriber_connection *conn, struct msgb *msg);
