From 4673b86f3df46b76e8830dec006d8472eeaaa980 Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Sat, 23 Jul 2016 20:18:40 +0200 Subject: dyn TS: rsl *2chan_nr(): handle TCH/F_TCH/H_PDCH In gsm_lchan2chan_nr() use the current pchan type. In gsm_lchan_as_pchan2chan_nr(), add the special case of non-standard cbits for activating PDCH on a TCH/F_TCH/H_PDCH dyn TS. This way, gsm_pchan2chan_nr() conforms to the standard and does not need access to a ts struct. Change-Id: If248b9073b9f397110a2003d8e1a04afdc1c0e20 --- openbsc/src/libcommon/gsm_data_shared.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/openbsc/src/libcommon/gsm_data_shared.c b/openbsc/src/libcommon/gsm_data_shared.c index 84c57c3b5..b5e7e029d 100644 --- a/openbsc/src/libcommon/gsm_data_shared.c +++ b/openbsc/src/libcommon/gsm_data_shared.c @@ -604,12 +604,19 @@ uint8_t gsm_pchan2chan_nr(enum gsm_phys_chan_config pchan, uint8_t gsm_lchan2chan_nr(const struct gsm_lchan *lchan) { + enum gsm_phys_chan_config pchan = lchan->ts->pchan; + if (pchan == GSM_PCHAN_TCH_F_TCH_H_PDCH) + return gsm_lchan_as_pchan2chan_nr(lchan, + lchan->ts->dyn.pchan_is); return gsm_pchan2chan_nr(lchan->ts->pchan, lchan->ts->nr, lchan->nr); } uint8_t gsm_lchan_as_pchan2chan_nr(const struct gsm_lchan *lchan, enum gsm_phys_chan_config as_pchan) { + if (lchan->ts->pchan == GSM_PCHAN_TCH_F_TCH_H_PDCH + && as_pchan == GSM_PCHAN_PDCH) + return RSL_CHAN_OSMO_PDCH | (lchan->ts->nr & ~RSL_CHAN_NR_MASK); return gsm_pchan2chan_nr(as_pchan, lchan->ts->nr, lchan->nr); } -- cgit v1.2.3