osmo-smlc/include/osmocom/smlc/smlc_loc_req.h

62 lines
1.6 KiB
C

/* Handle LCS BSSMAP-LE Perform Location Request */
/*
* (C) 2020 by sysmocom - s.f.m.c. GmbH <info@sysmocom.de>
* All Rights Reserved
*
* Author: Neels Hofmeyr <neels@hofmeyr.de>
*
* SPDX-License-Identifier: GPL-2.0+
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#pragma once
#include <osmocom/smlc/debug.h>
#include <osmocom/gsm/bssmap_le.h>
#define LOG_SMLC_LOC_REQ(LOC_REQ, level, fmt, args...) do { \
if (LOC_REQ) \
LOGPFSML(LOC_REQ->fi, level, fmt, ## args); \
else \
LOGP(DLCS, level, "LCS Perf Loc Req: " fmt, ## args); \
} while(0)
struct smlc_ta_req;
struct lb_conn;
struct msgb;
#define LB_CONN_USE_SMLC_LOC_REQ "smlc_loc_req"
enum smlc_loc_req_fsm_event {
SMLC_LOC_REQ_EV_RX_TA_RESPONSE,
SMLC_LOC_REQ_EV_RX_BSSLAP_RESET,
SMLC_LOC_REQ_EV_RX_LE_PERFORM_LOCATION_ABORT,
};
struct smlc_loc_req {
struct osmo_fsm_inst *fi;
struct smlc_subscr *smlc_subscr;
struct lb_conn *lb_conn;
struct bssmap_le_perform_loc_req req;
bool ta_present;
uint8_t ta;
struct gsm0808_cell_id latest_cell_id;
struct lcs_cause_ie lcs_cause;
};
int smlc_loc_req_rx_bssap_le(struct lb_conn *conn, const struct bssap_le_pdu *bssap_le);