diff options
author | Ivan Kluchnikov <kluchnikovi@gmail.com> | 2014-02-20 11:22:16 +0400 |
---|---|---|
committer | Ivan Kluchnikov <kluchnikovi@gmail.com> | 2014-02-20 11:22:16 +0400 |
commit | 3247ffec30724ed65514b967d9e3fee57c8b73c0 (patch) | |
tree | 885847d7aa3294679b41cf4e66bcccee92fb1680 | |
parent | 704c24608f148ac852b9d20c75741f701372b917 (diff) |
gsm_data: Add search for TRX by ARFCN
-rw-r--r-- | openbsc/include/openbsc/gsm_data.h | 1 | ||||
-rw-r--r-- | openbsc/src/libcommon/gsm_data.c | 11 |
2 files changed, 12 insertions, 0 deletions
diff --git a/openbsc/include/openbsc/gsm_data.h b/openbsc/include/openbsc/gsm_data.h index 41fe3281f..d6a107fa9 100644 --- a/openbsc/include/openbsc/gsm_data.h +++ b/openbsc/include/openbsc/gsm_data.h @@ -424,6 +424,7 @@ void set_ts_e1link(struct gsm_bts_trx_ts *ts, uint8_t e1_nr, void gsm_trx_lock_rf(struct gsm_bts_trx *trx, int locked); int gsm_bts_has_feature(struct gsm_bts *bts, enum gsm_bts_features feat); struct gsm_bts_trx *gsm_bts_trx_by_nr(struct gsm_bts *bts, int nr); +struct gsm_bts_trx *gsm_bts_trx_by_arfcn(struct gsm_bts *bts, int arfcn); /* generic E1 line operations for all ISDN-based BTS. */ extern struct e1inp_line_ops bts_isdn_e1inp_line_ops; diff --git a/openbsc/src/libcommon/gsm_data.c b/openbsc/src/libcommon/gsm_data.c index 5f7e32e73..9e3d360b6 100644 --- a/openbsc/src/libcommon/gsm_data.c +++ b/openbsc/src/libcommon/gsm_data.c @@ -225,6 +225,17 @@ struct gsm_bts_trx *gsm_bts_trx_by_nr(struct gsm_bts *bts, int nr) return NULL; } +struct gsm_bts_trx *gsm_bts_trx_by_arfcn(struct gsm_bts *bts, int arfcn) +{ + struct gsm_bts_trx *trx; + + llist_for_each_entry(trx, &bts->trx_list, list) { + if (trx->arfcn == arfcn) + return trx; + } + return NULL; +} + /* Search for a BTS in the given Location Area; optionally start searching * with start_bts (for continuing to search after the first result) */ struct gsm_bts *gsm_bts_by_lac(struct gsm_network *net, unsigned int lac, |