diff options
author | Harald Welte <laforge@gnumonks.org> | 2011-06-25 10:02:33 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2011-06-25 10:02:33 +0200 |
commit | f6093a4d0e5fa43f7c544a8a40f9aeab37256881 (patch) | |
tree | 0a81183b19282bb17e8968a60a618e73155d8891 /openbsc/src/libcommon | |
parent | 8b65ab9d9133efe53a058733d492ac0595040fb4 (diff) |
move {ts,lchan}2chan_nr() functions to gsm_data_shared.c
... this way osmo-bts can use them
Diffstat (limited to 'openbsc/src/libcommon')
-rw-r--r-- | openbsc/src/libcommon/gsm_data_shared.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/openbsc/src/libcommon/gsm_data_shared.c b/openbsc/src/libcommon/gsm_data_shared.c index 98dabda81..baf8c3553 100644 --- a/openbsc/src/libcommon/gsm_data_shared.c +++ b/openbsc/src/libcommon/gsm_data_shared.c @@ -408,3 +408,42 @@ gsm_objclass2obj(struct gsm_bts *bts, uint8_t obj_class, } return obj; } + +/* See Table 10.5.25 of GSM04.08 */ +uint8_t gsm_ts2chan_nr(const struct gsm_bts_trx_ts *ts, uint8_t lchan_nr) +{ + uint8_t cbits, chan_nr; + + switch (ts->pchan) { + case GSM_PCHAN_TCH_F: + case GSM_PCHAN_PDCH: + case GSM_PCHAN_TCH_F_PDCH: + cbits = 0x01; + break; + case GSM_PCHAN_TCH_H: + cbits = 0x02; + cbits += lchan_nr; + break; + case GSM_PCHAN_CCCH_SDCCH4: + cbits = 0x04; + cbits += lchan_nr; + break; + case GSM_PCHAN_SDCCH8_SACCH8C: + cbits = 0x08; + cbits += lchan_nr; + break; + default: + case GSM_PCHAN_CCCH: + cbits = 0x10; + break; + } + + chan_nr = (cbits << 3) | (ts->nr & 0x7); + + return chan_nr; +} + +uint8_t gsm_lchan2chan_nr(const struct gsm_lchan *lchan) +{ + return gsm_ts2chan_nr(lchan->ts, lchan->nr); +} |