diff options
Diffstat (limited to 'include/osmocom/bsc/smscb.h')
-rw-r--r-- | include/osmocom/bsc/smscb.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/include/osmocom/bsc/smscb.h b/include/osmocom/bsc/smscb.h new file mode 100644 index 000000000..22a258da9 --- /dev/null +++ b/include/osmocom/bsc/smscb.h @@ -0,0 +1,59 @@ +#pragma once +#include <osmocom/bsc/gsm_data.h> + +#include <osmocom/core/msgb.h> +#include <osmocom/netif/stream.h> +#include <osmocom/gsm/cbsp.h> + +struct bsc_cbc_link; + +/* smscb.c */ +void bts_smscb_del(struct bts_smscb_message *smscb, struct bts_smscb_chan_state *cstate, + const char *reason); +const char *bts_smscb_msg2str(const struct bts_smscb_message *smscb); +struct bts_smscb_chan_state *bts_get_smscb_chan(struct gsm_bts *bts, bool extended); +int cbsp_rx_decoded(struct bsc_cbc_link *cbc, const struct osmo_cbsp_decoded *dec); +int cbsp_tx_restart(struct bsc_cbc_link *cbc, bool is_emerg); +const char *bts_smscb_chan_state_name(const struct bts_smscb_chan_state *cstate); +unsigned int bts_smscb_chan_load_percent(const struct bts_smscb_chan_state *cstate); +unsigned int bts_smscb_chan_page_count(const struct bts_smscb_chan_state *cstate); +void smscb_vty_init(void); + +/* cbch_scheduler.c */ +int bts_smscb_gen_sched_arr(struct bts_smscb_chan_state *cstate, struct bts_smscb_page ***arr_out); +struct bts_smscb_page *bts_smscb_pull_page(struct bts_smscb_chan_state *cstate); +void bts_smscb_page_done(struct bts_smscb_chan_state *cstate, struct bts_smscb_page *page); +int bts_smscb_rx_cbch_load_ind(struct gsm_bts *bts, bool cbch_extended, bool is_overflow, + uint8_t slot_count); +void bts_cbch_timer_schedule(struct gsm_bts *bts); + +/* cbsp_link.c */ +struct bsc_cbc_link { + struct gsm_network *net; + struct { + /* hostname/IP of CBC */ + char *cbc_hostname; + /* TCP port (Default: 48049) of CBC */ + int cbc_port; + /* local listening port (0 for disabling local server) */ + int listen_port; + /* local listening hostname/IP */ + char *listen_hostname; + } config; + /* for handling inbound TCP connections */ + struct { + struct osmo_stream_srv *srv; + struct osmo_stream_srv_link *link; + char *sock_name; + struct msgb *msg; + } server; + /* for handling outbound TCP connections */ + struct { + struct osmo_stream_cli *cli; + char *sock_name; + struct msgb *msg; + } client; +}; +void cbc_vty_init(void); +int bsc_cbc_link_restart(void); +int cbsp_tx_decoded(struct bsc_cbc_link *cbc, struct osmo_cbsp_decoded *decoded); |