blob: 0e19b0bbcd1a0caa5a5fb36bcf6fa6784759200b [file] [log] [blame]
Neels Hofmeyr31f525e2018-05-14 18:14:15 +02001#pragma once
Holger Hans Peter Freyther4f448c92010-07-05 16:02:04 +08002
Neels Hofmeyr31f525e2018-05-14 18:14:15 +02003#include <osmocom/gsm/protocol/gsm_04_08.h>
Holger Hans Peter Freyther4f448c92010-07-05 16:02:04 +08004
Neels Hofmeyr31f525e2018-05-14 18:14:15 +02005#include <osmocom/bsc/bsc_api.h>
6#include <osmocom/bsc/bsc_msg_filter.h>
Holger Hans Peter Freyther4f448c92010-07-05 16:02:04 +08007
Holger Hans Peter Freytherd2361d92012-12-03 15:32:54 +01008#define BSS_SEND_USSD 1
9
Jacob Erlbeck56595f82013-09-11 10:46:55 +020010enum bsc_con {
11 BSC_CON_SUCCESS,
12 BSC_CON_REJECT_NO_LINK,
13 BSC_CON_REJECT_RF_GRACE,
14 BSC_CON_NO_MEM,
15};
16
Neels Hofmeyra369e242017-02-23 21:57:23 +010017struct bsc_msc_data;
Neels Hofmeyr31f525e2018-05-14 18:14:15 +020018struct gsm0808_channel_type;
19struct gsm0808_speech_codec_list;
20struct gsm_audio_support;
Holger Hans Peter Freytherd65305f2010-11-05 11:31:08 +010021
Holger Hans Peter Freyther4f448c92010-07-05 16:02:04 +080022struct bsc_api *osmo_bsc_api();
23
Harald Welte519c7e12018-01-28 02:45:46 +010024int bsc_queue_for_msc(struct gsm_subscriber_connection *conn, struct msgb *msg);
25int bsc_open_connection(struct gsm_subscriber_connection *sccp, struct msgb *msg);
Jacob Erlbeck56595f82013-09-11 10:46:55 +020026enum bsc_con bsc_create_new_connection(struct gsm_subscriber_connection *conn,
Neels Hofmeyra369e242017-02-23 21:57:23 +010027 struct bsc_msc_data *msc, int send_ping);
Harald Welte519c7e12018-01-28 02:45:46 +010028int bsc_delete_connection(struct gsm_subscriber_connection *sccp);
Holger Hans Peter Freyther45825862010-11-04 11:48:49 +010029
Neels Hofmeyra369e242017-02-23 21:57:23 +010030struct bsc_msc_data *bsc_find_msc(struct gsm_subscriber_connection *conn, struct msgb *);
Holger Hans Peter Freyther5bb874d2010-11-05 11:21:18 +010031int bsc_scan_bts_msg(struct gsm_subscriber_connection *conn, struct msgb *msg);
Holger Hans Peter Freythera54732d2010-11-05 18:11:19 +010032int bsc_scan_msc_msg(struct gsm_subscriber_connection *conn, struct msgb *msg);
Holger Hans Peter Freytherd2361d92012-12-03 15:32:54 +010033int bsc_send_welcome_ussd(struct gsm_subscriber_connection *conn);
Holger Hans Peter Freyther5bb874d2010-11-05 11:21:18 +010034
Neels Hofmeyra369e242017-02-23 21:57:23 +010035int bsc_handle_udt(struct bsc_msc_data *msc, struct msgb *msg, unsigned int length);
Harald Welte519c7e12018-01-28 02:45:46 +010036int bsc_handle_dt(struct gsm_subscriber_connection *conn, struct msgb *msg, unsigned int len);
Holger Hans Peter Freyther3485feb2010-11-09 23:28:33 +010037
Daniel Willmann5e95f452011-08-05 12:22:35 +020038int bsc_ctrl_cmds_install();
Holger Hans Peter Freyther00f4cc22010-11-06 23:50:06 +010039
Holger Hans Peter Freyther98258db2014-02-22 10:30:32 +010040void bsc_gen_location_state_trap(struct gsm_bts *bts);
41
Holger Hans Peter Freytherec0cb7c2015-04-05 20:53:42 +020042struct llist_head *bsc_access_lists(void);