62 lines
1.6 KiB
C
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);
|