| /* 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); |