aboutsummaryrefslogtreecommitdiffstats
path: root/include/osmocom/bsc/smscb.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/osmocom/bsc/smscb.h')
-rw-r--r--include/osmocom/bsc/smscb.h59
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);