blob: 22a258da9ab7e5e438b93fc8895f4dfb93985f85 [file] [log] [blame]
Harald Welted41b7c72019-06-13 09:41:58 +02001#pragma once
2#include <osmocom/bsc/gsm_data.h>
3
4#include <osmocom/core/msgb.h>
5#include <osmocom/netif/stream.h>
6#include <osmocom/gsm/cbsp.h>
7
8struct bsc_cbc_link;
9
10/* smscb.c */
11void bts_smscb_del(struct bts_smscb_message *smscb, struct bts_smscb_chan_state *cstate,
12 const char *reason);
13const char *bts_smscb_msg2str(const struct bts_smscb_message *smscb);
14struct bts_smscb_chan_state *bts_get_smscb_chan(struct gsm_bts *bts, bool extended);
15int cbsp_rx_decoded(struct bsc_cbc_link *cbc, const struct osmo_cbsp_decoded *dec);
16int cbsp_tx_restart(struct bsc_cbc_link *cbc, bool is_emerg);
17const char *bts_smscb_chan_state_name(const struct bts_smscb_chan_state *cstate);
18unsigned int bts_smscb_chan_load_percent(const struct bts_smscb_chan_state *cstate);
19unsigned int bts_smscb_chan_page_count(const struct bts_smscb_chan_state *cstate);
20void smscb_vty_init(void);
21
22/* cbch_scheduler.c */
23int bts_smscb_gen_sched_arr(struct bts_smscb_chan_state *cstate, struct bts_smscb_page ***arr_out);
24struct bts_smscb_page *bts_smscb_pull_page(struct bts_smscb_chan_state *cstate);
25void bts_smscb_page_done(struct bts_smscb_chan_state *cstate, struct bts_smscb_page *page);
26int bts_smscb_rx_cbch_load_ind(struct gsm_bts *bts, bool cbch_extended, bool is_overflow,
27 uint8_t slot_count);
28void bts_cbch_timer_schedule(struct gsm_bts *bts);
29
30/* cbsp_link.c */
31struct bsc_cbc_link {
32 struct gsm_network *net;
33 struct {
34 /* hostname/IP of CBC */
35 char *cbc_hostname;
36 /* TCP port (Default: 48049) of CBC */
37 int cbc_port;
38 /* local listening port (0 for disabling local server) */
39 int listen_port;
40 /* local listening hostname/IP */
41 char *listen_hostname;
42 } config;
43 /* for handling inbound TCP connections */
44 struct {
45 struct osmo_stream_srv *srv;
46 struct osmo_stream_srv_link *link;
47 char *sock_name;
48 struct msgb *msg;
49 } server;
50 /* for handling outbound TCP connections */
51 struct {
52 struct osmo_stream_cli *cli;
53 char *sock_name;
54 struct msgb *msg;
55 } client;
56};
57void cbc_vty_init(void);
58int bsc_cbc_link_restart(void);
59int cbsp_tx_decoded(struct bsc_cbc_link *cbc, struct osmo_cbsp_decoded *decoded);