64 lines
1.8 KiB
C
64 lines
1.8 KiB
C
/* 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(void);
|
|
int lb_start_or_stop(void);
|
|
int lb_send(struct gsm_subscriber_connection *conn, const struct bssap_le_pdu *bssap_le);
|
|
void lb_close_conn(struct gsm_subscriber_connection *conn);
|