diff options
Diffstat (limited to 'src/utils')
-rw-r--r-- | src/utils/Makefile.am | 17 | ||||
-rw-r--r-- | src/utils/bs11_config.c | 21 | ||||
-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 | 13 | ||||
-rw-r--r-- | src/utils/meas_pcap2db.c | 12 | ||||
-rw-r--r-- | src/utils/meas_udp2db.c | 9 | ||||
-rw-r--r-- | src/utils/meas_vis.c | 2 |
8 files changed, 72 insertions, 107 deletions
diff --git a/src/utils/Makefile.am b/src/utils/Makefile.am index fd03cb384..18debe7d5 100644 --- a/src/utils/Makefile.am +++ b/src/utils/Makefile.am @@ -9,6 +9,8 @@ AM_CFLAGS = \ $(LIBOSMOCORE_CFLAGS) \ $(LIBOSMOGSM_CFLAGS) \ $(LIBOSMOABIS_CFLAGS) \ + $(LIBOSMONETIF_CFLAGS) \ + $(LIBOSMOSIGTRAN_CFLAGS) \ $(COVERAGE_CFLAGS) \ $(SQLITE3_CFLAGS) \ $(NULL) @@ -47,14 +49,7 @@ bs11_config_SOURCES = \ $(NULL) bs11_config_LDADD = \ - $(top_builddir)/src/osmo-bsc/abis_nm.o \ - $(top_builddir)/src/osmo-bsc/acc.o \ - $(top_builddir)/src/osmo-bsc/bts.o \ - $(top_builddir)/src/osmo-bsc/bts_trx.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/net_init.o \ + $(top_builddir)/src/osmo-bsc/libbsc.la \ $(LIBOSMOCORE_LIBS) \ $(LIBOSMOGSM_LIBS) \ $(LIBOSMOABIS_LIBS) \ @@ -120,11 +115,7 @@ meas_json_SOURCES = \ $(NULL) meas_json_LDADD = \ - $(top_builddir)/src/osmo-bsc/abis_nm.o \ - $(top_builddir)/src/osmo-bsc/acc.o \ - $(top_builddir)/src/osmo-bsc/bts.o \ - $(top_builddir)/src/osmo-bsc/bts_trx.o \ - $(top_builddir)/src/osmo-bsc/gsm_data.o \ + $(top_builddir)/src/osmo-bsc/libbsc.la \ $(LIBOSMOCORE_LIBS) \ $(LIBOSMOGSM_LIBS) \ $(LIBOSMOABIS_LIBS) \ diff --git a/src/utils/bs11_config.c b/src/utils/bs11_config.c index c279179d5..e79507642 100644 --- a/src/utils/bs11_config.c +++ b/src/utils/bs11_config.c @@ -974,24 +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; } -int rsl_chan_ms_power_ctrl(struct gsm_lchan *lchan) { return 0; } -void pcu_info_update(struct gsm_bts *bts) {}; -int rsl_sacch_filling(struct gsm_bts_trx *trx, uint8_t type, const uint8_t *data, int len) { return 0; } -int rsl_bcch_info(const struct gsm_bts_trx *trx, enum osmo_sysinfo_type si_type, const uint8_t *data, int len) -{ return 0; } -int gsm_generate_si(struct gsm_bts *bts, enum osmo_sysinfo_type si_type) { 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 b44a3008c..953b114f3 100644 --- a/src/utils/meas_json.c +++ b/src/utils/meas_json.c @@ -62,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); @@ -99,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); } @@ -201,12 +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; } -int rsl_chan_ms_power_ctrl(struct gsm_lchan *lchan) { return 0; } -void pcu_info_update(struct gsm_bts *bts) {}; -int rsl_sacch_filling(struct gsm_bts_trx *trx, uint8_t type, const uint8_t *data, int len) { return 0; } -int rsl_bcch_info(const struct gsm_bts_trx *trx, enum osmo_sysinfo_type si_type, const uint8_t *data, int len) -{ return 0; } -int gsm_generate_si(struct gsm_bts *bts, enum osmo_sysinfo_type si_type) { 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 07023c323..f40f13702 100644 --- a/src/utils/meas_udp2db.c +++ b/src/utils/meas_udp2db.c @@ -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; } diff --git a/src/utils/meas_vis.c b/src/utils/meas_vis.c index 73ccfc4aa..c3ee2a5e2 100644 --- a/src/utils/meas_vis.c +++ b/src/utils/meas_vis.c @@ -193,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) | ' '; |