osmo-bsc/include/osmocom/bsc/lb.h

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