diff options
Diffstat (limited to 'src/utils')
-rw-r--r-- | src/utils/Makefile.am | 23 | ||||
-rw-r--r-- | src/utils/bs11_config.c | 29 | ||||
-rw-r--r-- | src/utils/meas_db.c | 99 | ||||
-rw-r--r-- | src/utils/meas_db.h | 6 | ||||
-rw-r--r-- | src/utils/meas_json.c | 23 | ||||
-rw-r--r-- | src/utils/meas_pcap2db.c | 12 | ||||
-rw-r--r-- | src/utils/meas_udp2db.c | 13 | ||||
-rw-r--r-- | src/utils/meas_vis.c | 36 |
8 files changed, 127 insertions, 114 deletions
diff --git a/src/utils/Makefile.am b/src/utils/Makefile.am index 914a6042d..ece993faa 100644 --- a/src/utils/Makefile.am +++ b/src/utils/Makefile.am @@ -9,10 +9,10 @@ AM_CFLAGS = \ $(LIBOSMOCORE_CFLAGS) \ $(LIBOSMOGSM_CFLAGS) \ $(LIBOSMOABIS_CFLAGS) \ + $(LIBOSMONETIF_CFLAGS) \ + $(LIBOSMOSIGTRAN_CFLAGS) \ $(COVERAGE_CFLAGS) \ $(SQLITE3_CFLAGS) \ - $(LIBOSMOSIGTRAN_CFLAGS) \ - $(LIBOSMOMGCPCLIENT_CFLAGS) \ $(NULL) AM_LDFLAGS = \ @@ -28,17 +28,17 @@ bin_PROGRAMS = \ isdnsync \ meas_json \ $(NULL) -if HAVE_SQLITE3 +if BUILD_MEAS_UDP2DB bin_PROGRAMS += \ osmo-meas-udp2db \ $(NULL) -if HAVE_PCAP +endif +if BUILD_MEAS_PCAP2DB bin_PROGRAMS += \ osmo-meas-pcap2db \ $(NULL) endif -endif -if HAVE_LIBCDK +if BUILD_MEAS_VIS bin_PROGRAMS += \ meas_vis \ $(NULL) @@ -49,12 +49,7 @@ bs11_config_SOURCES = \ $(NULL) bs11_config_LDADD = \ - $(top_builddir)/src/osmo-bsc/abis_nm.o \ - $(top_builddir)/src/osmo-bsc/bts_siemens_bs11.o \ - $(top_builddir)/src/osmo-bsc/e1_config.o \ - $(top_builddir)/src/osmo-bsc/gsm_data.o \ - $(top_builddir)/src/osmo-bsc/gsm_timers.o \ - $(top_builddir)/src/osmo-bsc/net_init.o \ + $(top_builddir)/src/osmo-bsc/libbsc.la \ $(LIBOSMOCORE_LIBS) \ $(LIBOSMOGSM_LIBS) \ $(LIBOSMOABIS_LIBS) \ @@ -120,8 +115,7 @@ meas_json_SOURCES = \ $(NULL) meas_json_LDADD = \ - $(top_builddir)/src/osmo-bsc/gsm_data.o \ - $(top_builddir)/src/osmo-bsc/gsm_timers.o \ + $(top_builddir)/src/osmo-bsc/libbsc.la \ $(LIBOSMOCORE_LIBS) \ $(LIBOSMOGSM_LIBS) \ $(LIBOSMOABIS_LIBS) \ @@ -132,4 +126,3 @@ meas_json_CFLAGS = \ $(LIBOSMOGSM_CFLAGS) \ $(LIBOSMOABIS_CFLAGS) \ $(NULL) - diff --git a/src/utils/bs11_config.c b/src/utils/bs11_config.c index 7fac3e39a..e79507642 100644 --- a/src/utils/bs11_config.c +++ b/src/utils/bs11_config.c @@ -39,6 +39,7 @@ #include <osmocom/bsc/debug.h> #include <osmocom/core/select.h> #include <osmocom/bsc/rs232.h> +#include <osmocom/bsc/bts.h> #include <osmocom/core/application.h> #include <osmocom/core/talloc.h> #include <osmocom/abis/abis.h> @@ -103,7 +104,7 @@ static int create_objects(struct gsm_bts *bts) abis_nm_bs11_conn_oml_tei(bts, 0, 1, 0xff, TEI_OML); abis_nm_bs11_set_trx_power(bts->c0, BS11_TRX_POWER_GSM_30mW); - + sleep(1); abis_nm_bs11_set_trx1_pw(bts, trx1_password); @@ -136,7 +137,7 @@ static int create_trx1(struct gsm_bts *bts) abis_nm_bs11_create_object(bts, BS11_OBJ_PA, 1, sizeof(obj_pa0_attr), obj_pa0_attr); abis_nm_bs11_set_trx_power(trx, BS11_TRX_POWER_GSM_30mW); - + return 0; } @@ -201,7 +202,7 @@ static int swload_cbfn(unsigned int hook, unsigned int event, struct msgb *msg, break; case NM_MT_ACTIVATE_SW_ACK: bs11cfg_state = STATE_NONE; - + break; case NM_MT_LOAD_SEG_ACK: percent = abis_nm_software_load_status(g_bts); @@ -232,6 +233,7 @@ static const struct value_string mbccu_load_names[] = { { 3, "Load BTSBBX" }, { 4, "Load BTSARC" }, { 5, "Load" }, + { 8, "Not Equipped" }, { 0, NULL } }; @@ -281,7 +283,7 @@ static const char *bts_phase_name(uint8_t phase) static const char *trx_power_name(uint8_t pwr) { switch (pwr) { - case BS11_TRX_POWER_GSM_2W: + case BS11_TRX_POWER_GSM_2W: return "2W (GSM)"; case BS11_TRX_POWER_GSM_250mW: return "250mW (GSM)"; @@ -854,6 +856,10 @@ static void handle_options(int argc, char **argv) if (optind+1 < argc) value = argv[optind+1]; } + if (optind+2 < argc) { + fprintf(stderr, "Unsupported positional arguments on command line\n"); + exit(2); + } } @@ -968,18 +974,3 @@ int main(int argc, char **argv) exit(0); } - -/* Stub */ -int osmo_bsc_sigtran_send(struct gsm_subscriber_connection *conn, struct msgb *msg) -{ - return 0; -} - -/* Stub */ -int osmo_bsc_sigtran_open_conn(struct gsm_subscriber_connection *conn, struct msgb *msg) -{ - return 0; -} - -void ts_fsm_alloc(struct gsm_bts_trx_ts *ts) {} -int abis_rsl_rcvmsg(struct msgb *msg) { return 0; } diff --git a/src/utils/meas_db.c b/src/utils/meas_db.c index 7233dcda6..2f81524ae 100644 --- a/src/utils/meas_db.c +++ b/src/utils/meas_db.c @@ -29,10 +29,11 @@ #include <osmocom/core/utils.h> #include <osmocom/gsm/gsm_utils.h> #include <osmocom/bsc/meas_rep.h> +#include <osmocom/bsc/meas_feed.h> #include "meas_db.h" -#define INS_MR "INSERT INTO meas_rep (time, imsi, name, scenario, nr, bs_power, ms_timing_offset, fpc, ms_l1_pwr, ms_l1_ta) VALUES (?,?,?,?,?,?,?,?,?,?)" +#define INS_MR "INSERT INTO meas_rep (time, bts_nr, trx_nr, ts_nr, ss_nr, lchan_type, pchan_type, imsi, name, scenario, nr, bs_power, ms_timing_offset, fpc, ms_l1_pwr, ms_l1_ta) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)" #define INS_UD "INSERT INTO meas_rep_unidir (meas_id, rx_lev_full, rx_lev_sub, rx_qual_full, rx_qual_sub, dtx, uplink) VALUES (?,?,?,?,?,?,?)" #define UPD_MR "UPDATE meas_rep SET ul_unidir=?, dl_unidir=? WHERE id=?" @@ -59,8 +60,6 @@ struct meas_db_state { static int _insert_ud(struct meas_db_state *st, unsigned long meas_id, int dtx, int uplink, const struct gsm_meas_rep_unidir *ud) { - unsigned long rowid; - SCK_OK(st->db, sqlite3_bind_int(st->stmt_ins_ud, 1, meas_id)); SCK_OK(st->db, sqlite3_bind_int(st->stmt_ins_ud, 2, rxlev2dbm(ud->full.rx_lev))); @@ -81,53 +80,57 @@ err_io: } /* insert a measurement report into the database */ -int meas_db_insert(struct meas_db_state *st, const char *imsi, - const char *name, unsigned long timestamp, - const char *scenario, - const struct gsm_meas_rep *mr) +int meas_db_insert(struct meas_db_state *st, unsigned long timestamp, + const struct meas_feed_meas *mfm) { - int rc; sqlite3_int64 rowid, ul_rowid, dl_rowid; SCK_OK(st->db, sqlite3_bind_int(st->stmt_ins_mr, 1, timestamp)); - if (imsi) - SCK_OK(st->db, sqlite3_bind_text(st->stmt_ins_mr, 2, - imsi, -1, SQLITE_STATIC)); + SCK_OK(st->db, sqlite3_bind_int(st->stmt_ins_mr, 2, mfm->bts_nr)); + SCK_OK(st->db, sqlite3_bind_int(st->stmt_ins_mr, 3, mfm->trx_nr)); + SCK_OK(st->db, sqlite3_bind_int(st->stmt_ins_mr, 4, mfm->ts_nr)); + SCK_OK(st->db, sqlite3_bind_int(st->stmt_ins_mr, 5, mfm->ss_nr)); + SCK_OK(st->db, sqlite3_bind_int(st->stmt_ins_mr, 6, mfm->lchan_type)); + SCK_OK(st->db, sqlite3_bind_int(st->stmt_ins_mr, 7, mfm->pchan_type)); + + if (mfm->imsi[0] != '\0') + SCK_OK(st->db, sqlite3_bind_text(st->stmt_ins_mr, 8, + mfm->imsi, -1, SQLITE_STATIC)); else - SCK_OK(st->db, sqlite3_bind_null(st->stmt_ins_mr, 2)); + SCK_OK(st->db, sqlite3_bind_null(st->stmt_ins_mr, 8)); - if (name) - SCK_OK(st->db, sqlite3_bind_text(st->stmt_ins_mr, 3, - name, -1, SQLITE_STATIC)); + if (mfm->name[0] != '\0') + SCK_OK(st->db, sqlite3_bind_text(st->stmt_ins_mr, 9, + mfm->name, -1, SQLITE_STATIC)); else - SCK_OK(st->db, sqlite3_bind_null(st->stmt_ins_mr, 3)); + SCK_OK(st->db, sqlite3_bind_null(st->stmt_ins_mr, 9)); - if (scenario) - SCK_OK(st->db, sqlite3_bind_text(st->stmt_ins_mr, 4, - scenario, -1, SQLITE_STATIC)); + if (mfm->scenario[0] != '\0') + SCK_OK(st->db, sqlite3_bind_text(st->stmt_ins_mr, 10, + mfm->scenario, -1, SQLITE_STATIC)); else - SCK_OK(st->db, sqlite3_bind_null(st->stmt_ins_mr, 4)); + SCK_OK(st->db, sqlite3_bind_null(st->stmt_ins_mr, 10)); - SCK_OK(st->db, sqlite3_bind_int(st->stmt_ins_mr, 5, mr->nr)); - SCK_OK(st->db, sqlite3_bind_int(st->stmt_ins_mr, 6, mr->bs_power)); + SCK_OK(st->db, sqlite3_bind_int(st->stmt_ins_mr, 11, mfm->mr.nr)); + SCK_OK(st->db, sqlite3_bind_int(st->stmt_ins_mr, 12, mfm->mr.bs_power_db / 2)); - if (mr->flags & MEAS_REP_F_MS_TO) - SCK_OK(st->db, sqlite3_bind_int(st->stmt_ins_mr, 7, mr->ms_timing_offset)); + if (mfm->mr.flags & MEAS_REP_F_MS_TO) + SCK_OK(st->db, sqlite3_bind_int(st->stmt_ins_mr, 13, mfm->mr.ms_timing_offset)); else - SCK_OK(st->db, sqlite3_bind_null(st->stmt_ins_mr, 7)); + SCK_OK(st->db, sqlite3_bind_null(st->stmt_ins_mr, 13)); - if (mr->flags & MEAS_REP_F_FPC) - SCK_OK(st->db, sqlite3_bind_int(st->stmt_ins_mr, 8, 1)); + if (mfm->mr.flags & MEAS_REP_F_FPC) + SCK_OK(st->db, sqlite3_bind_int(st->stmt_ins_mr, 14, 1)); else - SCK_OK(st->db, sqlite3_bind_int(st->stmt_ins_mr, 8, 0)); + SCK_OK(st->db, sqlite3_bind_int(st->stmt_ins_mr, 14, 0)); - if (mr->flags & MEAS_REP_F_MS_L1) { - SCK_OK(st->db, sqlite3_bind_int(st->stmt_ins_mr, 9, - mr->ms_l1.pwr)); - SCK_OK(st->db, sqlite3_bind_int(st->stmt_ins_mr, 10, - mr->ms_l1.ta)); + if (mfm->mr.flags & MEAS_REP_F_MS_L1) { + SCK_OK(st->db, sqlite3_bind_int(st->stmt_ins_mr, 15, + mfm->mr.ms_l1.pwr)); + SCK_OK(st->db, sqlite3_bind_int(st->stmt_ins_mr, 16, + mfm->mr.ms_l1.ta)); } SCK_DONE(st->db, sqlite3_step(st->stmt_ins_mr)); @@ -136,14 +139,14 @@ int meas_db_insert(struct meas_db_state *st, const char *imsi, rowid = sqlite3_last_insert_rowid(st->db); /* insert uplink measurement */ - ul_rowid = _insert_ud(st, rowid, mr->flags & MEAS_REP_F_UL_DTX, - 1, &mr->ul); + ul_rowid = _insert_ud(st, rowid, mfm->mr.flags & MEAS_REP_F_UL_DTX, + 1, &mfm->mr.ul); SCK_OK(st->db, sqlite3_bind_int(st->stmt_upd_mr, 1, ul_rowid)); /* insert downlink measurement, if present */ - if (mr->flags & MEAS_REP_F_DL_VALID) { - dl_rowid = _insert_ud(st, rowid, mr->flags & MEAS_REP_F_DL_DTX, - 0, &mr->dl); + if (mfm->mr.flags & MEAS_REP_F_DL_VALID) { + dl_rowid = _insert_ud(st, rowid, mfm->mr.flags & MEAS_REP_F_DL_DTX, + 0, &mfm->mr.dl); SCK_OK(st->db, sqlite3_bind_int(st->stmt_upd_mr, 2, dl_rowid)); } else SCK_OK(st->db, sqlite3_bind_null(st->stmt_upd_mr, 2)); @@ -184,6 +187,12 @@ static const char *create_stmts[] = { "CREATE TABLE IF NOT EXISTS meas_rep (" "id INTEGER PRIMARY KEY AUTOINCREMENT," "time TIMESTAMP," + "bts_nr INTEGER," + "trx_nr INTEGER," + "ts_nr INTEGER," + "ss_nr INTEGER," + "lchan_type INTEGER," + "pchan_type INTEGER," "imsi TEXT," "name TEXT," "scenario TEXT," @@ -210,6 +219,12 @@ static const char *create_stmts[] = { "SELECT " "meas_rep.id, " "datetime(time,'unixepoch') AS timestamp, " + "bts_nr," + "trx_nr," + "ts_nr," + "ss_nr," + "lchan_type," + "pchan_type," "imsi, " "name, " "scenario, " @@ -241,6 +256,12 @@ static const char *create_stmts[] = { "SELECT " "id," "timestamp," + "bts_nr," + "trx_nr," + "ts_nr," + "ss_nr," + "lchan_type," + "pchan_type," "imsi," "name," "scenario," @@ -257,7 +278,7 @@ static const char *create_stmts[] = { static int check_create_tbl(struct meas_db_state *st) { - int i, rc; + int i; for (i = 0; i < ARRAY_SIZE(create_stmts); i++) { SCK_OK(st->db, sqlite3_exec(st->db, create_stmts[i], diff --git a/src/utils/meas_db.h b/src/utils/meas_db.h index 889e9022f..8f8a8c679 100644 --- a/src/utils/meas_db.h +++ b/src/utils/meas_db.h @@ -9,9 +9,7 @@ void meas_db_close(struct meas_db_state *st); int meas_db_begin(struct meas_db_state *st); int meas_db_commit(struct meas_db_state *st); -int meas_db_insert(struct meas_db_state *st, const char *imsi, - const char *name, unsigned long timestamp, - const char *scenario, - const struct gsm_meas_rep *mr); +int meas_db_insert(struct meas_db_state *st, unsigned long timestamp, + const struct meas_feed_meas *mfm); #endif diff --git a/src/utils/meas_json.c b/src/utils/meas_json.c index 365b450f4..953b114f3 100644 --- a/src/utils/meas_json.c +++ b/src/utils/meas_json.c @@ -34,6 +34,7 @@ #include <osmocom/core/socket.h> #include <osmocom/core/msgb.h> #include <osmocom/core/select.h> +#include <osmocom/core/application.h> #include <osmocom/gsm/gsm_utils.h> @@ -61,7 +62,7 @@ static void print_meas_rep_json(struct gsm_meas_rep *mr) printf(", \"UL_MEAS\":{"); print_meas_rep_uni_json(&mr->ul); printf("}"); - printf(", \"BS_POWER\":%d", mr->bs_power); + printf(", \"BS_POWER\":%d", mr->bs_power_db / 2); if (mr->flags & MEAS_REP_F_MS_TO) printf(", \"MS_TO\":%d", mr->ms_timing_offset); @@ -98,7 +99,7 @@ static void print_chan_info_json(struct meas_feed_meas *mfm) { printf("\"lchan_type\":\"%s\", \"pchan_type\":\"%s\", " "\"bts_nr\":%d, \"trx_nr\":%d, \"ts_nr\":%d, \"ss_nr\":%d", - gsm_lchant_name(mfm->lchan_type), gsm_pchan_name(mfm->pchan_type), + gsm_chan_t_name(mfm->lchan_type), gsm_pchan_name(mfm->pchan_type), mfm->bts_nr, mfm->trx_nr, mfm->ts_nr, mfm->ss_nr); } @@ -157,7 +158,7 @@ static int udp_fd_cb(struct osmo_fd *ofd, unsigned int what) { int rc; - if (what & BSC_FD_READ) { + if (what & OSMO_FD_READ) { struct msgb *msg = msgb_alloc(1024, "UDP Rx"); rc = read(ofd->fd, msgb_data(msg), msgb_tailroom(msg)); @@ -171,8 +172,21 @@ static int udp_fd_cb(struct osmo_fd *ofd, unsigned int what) return 0; } +/* default categories */ +static struct log_info_cat default_categories[] = { +}; + +static const struct log_info meas_json_log_info = { + .cat = default_categories, + .num_cat = ARRAY_SIZE(default_categories), +}; + int main(int argc, char **argv) { + + void *tall_ctx = talloc_named_const(NULL, 0, "meas_json"); + osmo_init_logging2(tall_ctx, &meas_json_log_info); + int rc; struct osmo_fd udp_ofd; @@ -187,6 +201,3 @@ int main(int argc, char **argv) exit(0); } - -void ts_fsm_alloc(struct gsm_bts_trx_ts *ts) {} -int abis_rsl_rcvmsg(struct msgb *msg) { return 0; } diff --git a/src/utils/meas_pcap2db.c b/src/utils/meas_pcap2db.c index db00fae49..eb69d506c 100644 --- a/src/utils/meas_pcap2db.c +++ b/src/utils/meas_pcap2db.c @@ -47,21 +47,13 @@ static struct meas_db_state *db; static void handle_mfm(const struct pcap_pkthdr *h, const struct meas_feed_meas *mfm) { - const char *scenario; - - if (strlen(mfm->scenario)) - scenario = mfm->scenario; - else - scenario = NULL; - - meas_db_insert(db, mfm->imsi, mfm->name, h->ts.tv_sec, - scenario, &mfm->mr); + meas_db_insert(db, h->ts.tv_sec, mfm); } static void pcap_cb(u_char *user, const struct pcap_pkthdr *h, const u_char *bytes) { - const char *cur = bytes; + const u_char *cur = bytes; const struct iphdr *ip; const struct udphdr *udp; const struct meas_feed_meas *mfm; diff --git a/src/utils/meas_udp2db.c b/src/utils/meas_udp2db.c index 34f8385e8..0c97d8bf6 100644 --- a/src/utils/meas_udp2db.c +++ b/src/utils/meas_udp2db.c @@ -1,4 +1,4 @@ -/* liesten to meas_feed on UDP and write it to sqlite3 database */ +/* listen to meas_feed on UDP and write it to sqlite3 database */ /* (C) 2012 by Harald Welte <laforge@gnumonks.org> * @@ -47,7 +47,6 @@ static int handle_msg(struct msgb *msg) { struct meas_feed_hdr *mfh = (struct meas_feed_hdr *) msgb_data(msg); struct meas_feed_meas *mfm = (struct meas_feed_meas *) msgb_data(msg); - const char *scenario; time_t now = time(NULL); if (mfh->version != MEAS_FEED_VERSION) @@ -56,13 +55,7 @@ static int handle_msg(struct msgb *msg) if (mfh->msg_type != MEAS_FEED_MEAS) return -EINVAL; - if (strlen(mfm->scenario)) - scenario = mfm->scenario; - else - scenario = NULL; - - meas_db_insert(db, mfm->imsi, mfm->name, now, - scenario, &mfm->mr); + meas_db_insert(db, now, mfm); return 0; } @@ -71,7 +64,7 @@ static int udp_fd_cb(struct osmo_fd *ofd, unsigned int what) { int rc; - if (what & BSC_FD_READ) { + if (what & OSMO_FD_READ) { struct msgb *msg = msgb_alloc(1024, "UDP Rx"); rc = read(ofd->fd, msgb_data(msg), msgb_tailroom(msg)); diff --git a/src/utils/meas_vis.c b/src/utils/meas_vis.c index 851aa03d9..c3ee2a5e2 100644 --- a/src/utils/meas_vis.c +++ b/src/utils/meas_vis.c @@ -13,6 +13,8 @@ #include <osmocom/core/msgb.h> #include <osmocom/core/select.h> #include <osmocom/core/talloc.h> +#include <osmocom/core/logging.h> +#include <osmocom/core/application.h> #include <osmocom/gsm/gsm_utils.h> @@ -123,7 +125,7 @@ static int udp_fd_cb(struct osmo_fd *ofd, unsigned int what) { int rc; - if (what & BSC_FD_READ) { + if (what & OSMO_FD_READ) { struct msgb *msg = msgb_alloc(1024, "UDP Rx"); rc = read(ofd->fd, msgb_data(msg), msgb_tailroom(msg)); @@ -191,7 +193,7 @@ void write_uni(struct ms_state *ms, struct ms_state_uni *msu, if (dir == DIR_UL) { pwr = ms->mr.ms_l1.pwr; } else { - pwr = ms->mr.bs_power; + pwr = ms->mr.bs_power_db / 2; } color = A_REVERSE | COLOR_PAIR(lev_col) | ' '; @@ -203,7 +205,7 @@ void write_uni(struct ms_state *ms, struct ms_state_uni *msu, snprintf(msu->label, sizeof(msu->label), "</%d>%1d<!%d> %3d %2u %2d %4u", qual_col, lq->rx_qual, qual_col, pwr, ms->mr.ms_l1.ta, ms->mr.ms_timing_offset, - now - msu->last_update); + (unsigned int)(now - msu->last_update)); msu->cdk_label = newCDKLabel(g_st.cdkscreen, RIGHT, row, msu->_lbl, 1, FALSE, FALSE); } @@ -258,23 +260,40 @@ const struct value_string col_strs[] = { { 0, NULL } }; +/* default categories */ +static struct log_info_cat default_categories[] = { +}; + +static const struct log_info meas_vis_log_info = { + .cat = default_categories, + .num_cat = ARRAY_SIZE(default_categories), +}; + int main(int argc, char **argv) { int rc; char *header[1]; char *title[1]; + struct log_target *stderr_target; + + void *tall_ctx = talloc_named_const(NULL, 0, "meas_vis"); + osmo_init_logging2(tall_ctx, &meas_vis_log_info); msgb_talloc_ctx_init(NULL, 0); - printf("sizeof(gsm_meas_rep)=%u\n", sizeof(struct gsm_meas_rep)); - printf("sizeof(meas_feed_meas)=%u\n", sizeof(struct meas_feed_meas)); + printf("sizeof(gsm_meas_rep)=%zu\n", sizeof(struct gsm_meas_rep)); + printf("sizeof(meas_feed_meas)=%zu\n", sizeof(struct meas_feed_meas)); + g_st.udp_ofd.cb = udp_fd_cb; + rc = osmo_sock_init_ofd(&g_st.udp_ofd, AF_INET, SOCK_DGRAM, IPPROTO_UDP, NULL, 8888, OSMO_SOCK_F_BIND); + if (rc < 0) + exit(1); INIT_LLIST_HEAD(&g_st.ms_list); g_st.curses_win = initscr(); g_st.cdkscreen = initCDKScreen(g_st.curses_win); initCDKColor(); - g_st.title = "OpenBSC link quality monitor"; + g_st.title = "OsmoBSC link quality monitor"; title[0] = g_st.title; g_st.cdk_title = newCDKLabel(g_st.cdkscreen, CENTER, 0, title, 1, FALSE, FALSE); @@ -296,11 +315,6 @@ int main(int argc, char **argv) exit(0); #endif - g_st.udp_ofd.cb = udp_fd_cb; - rc = osmo_sock_init_ofd(&g_st.udp_ofd, AF_INET, SOCK_DGRAM, IPPROTO_UDP, NULL, 8888, OSMO_SOCK_F_BIND); - if (rc < 0) - exit(1); - while (1) { osmo_select_main(0); update_sliders(); |