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