blob: dbea0b0e1233f673ffb5947cd195b20add15bede [file] [log] [blame]
Neels Hofmeyr4ae338d2020-09-17 17:54:39 +02001/* Location Services (LCS): low level Lb/SCCP handling in OsmoBSC, API */
2#pragma once
3
4#include <stdbool.h>
5#include <stdint.h>
6#include <osmocom/core/rate_ctr.h>
7#include <osmocom/sigtran/sccp_sap.h>
8
9struct bssap_le_pdu;
10struct gsm_subscriber_connection;
11
12enum {
13 SMLC_CTR_BSSMAP_LE_RX_UNKNOWN_PEER,
14 SMLC_CTR_BSSMAP_LE_RX_UDT_RESET,
15 SMLC_CTR_BSSMAP_LE_RX_UDT_RESET_ACK,
16 SMLC_CTR_BSSMAP_LE_RX_UDT_ERR_INVALID_MSG,
17 SMLC_CTR_BSSMAP_LE_RX_DT1_ERR_INVALID_MSG,
18 SMLC_CTR_BSSMAP_LE_RX_DT1_PERFORM_LOCATION_RESPONSE_SUCCESS,
19 SMLC_CTR_BSSMAP_LE_RX_DT1_PERFORM_LOCATION_RESPONSE_FAILURE,
20 SMLC_CTR_BSSMAP_LE_RX_DT1_BSSLAP_TA_REQUEST,
21
22 SMLC_CTR_BSSMAP_LE_TX_ERR_INVALID_MSG,
23 SMLC_CTR_BSSMAP_LE_TX_ERR_CONN_NOT_READY,
24 SMLC_CTR_BSSMAP_LE_TX_ERR_SEND,
25 SMLC_CTR_BSSMAP_LE_TX_SUCCESS,
26
27 SMLC_CTR_BSSMAP_LE_TX_UDT_RESET,
28 SMLC_CTR_BSSMAP_LE_TX_UDT_RESET_ACK,
29 SMLC_CTR_BSSMAP_LE_TX_DT1_PERFORM_LOCATION_REQUEST,
30 SMLC_CTR_BSSMAP_LE_TX_DT1_PERFORM_LOCATION_ABORT,
31 SMLC_CTR_BSSMAP_LE_TX_DT1_BSSLAP_TA_RESPONSE,
32 SMLC_CTR_BSSMAP_LE_TX_DT1_BSSLAP_REJECT,
33 SMLC_CTR_BSSMAP_LE_TX_DT1_BSSLAP_RESET,
34 SMLC_CTR_BSSMAP_LE_TX_DT1_BSSLAP_ABORT,
35};
36
37struct smlc_config {
Neels Hofmeyr37794942020-10-10 19:01:29 +020038 bool enable;
39
Neels Hofmeyr4ae338d2020-09-17 17:54:39 +020040 uint32_t cs7_instance;
41 bool cs7_instance_valid;
42 struct osmo_sccp_instance *sccp;
43 struct osmo_sccp_user *sccp_user;
44
45 struct osmo_sccp_addr bsc_addr;
46 char *bsc_addr_name;
47
48 struct osmo_sccp_addr smlc_addr;
49 char *smlc_addr_name;
50
Neels Hofmeyrd3d1cb62020-10-08 00:38:09 +020051 /*! Lb link is ready when bssmap_reset_is_conn_ready(bssmap_reset) returns true. */
52 struct bssmap_reset *bssmap_reset;
Neels Hofmeyr4ae338d2020-09-17 17:54:39 +020053
54 struct rate_ctr_group *ctrs;
55};
56
57extern const struct rate_ctr_desc smlc_ctr_description[];
58extern const struct rate_ctr_group_desc smlc_ctrg_desc;
59
60int lb_init();
Neels Hofmeyr37794942020-10-10 19:01:29 +020061int lb_start_or_stop();
Neels Hofmeyr4ae338d2020-09-17 17:54:39 +020062int lb_send(struct gsm_subscriber_connection *conn, const struct bssap_le_pdu *bssap_le);
63void lb_close_conn(struct gsm_subscriber_connection *conn);