diff options
-rw-r--r-- | include/osmo-bts/gsm_data.h | 1 | ||||
-rw-r--r-- | src/common/l1sap.c | 11 | ||||
-rw-r--r-- | src/common/lchan.c | 16 |
3 files changed, 17 insertions, 11 deletions
diff --git a/include/osmo-bts/gsm_data.h b/include/osmo-bts/gsm_data.h index c75f8284..f1c96012 100644 --- a/include/osmo-bts/gsm_data.h +++ b/include/osmo-bts/gsm_data.h @@ -135,5 +135,6 @@ int conf_lchans_as_pchan(struct gsm_bts_trx_ts *ts, int bts_supports_cipher(struct gsm_bts_role_bts *bts, int rsl_cipher); +bool ts_is_pdch(const struct gsm_bts_trx_ts *ts); #endif /* _GSM_DATA_H */ diff --git a/src/common/l1sap.c b/src/common/l1sap.c index f7df2180..7c30c9b9 100644 --- a/src/common/l1sap.c +++ b/src/common/l1sap.c @@ -294,17 +294,6 @@ static int gsmtap_ph_rach(struct osmo_phsap_prim *l1sap, uint8_t *chan_type, return 0; } -static bool ts_is_pdch(const struct gsm_bts_trx_ts *ts) -{ - return ts->pchan == GSM_PCHAN_PDCH - || (ts->pchan == GSM_PCHAN_TCH_F_PDCH - && (ts->flags & TS_F_PDCH_ACTIVE) - && !(ts->flags & TS_F_PDCH_PENDING_MASK)) - || (ts->pchan == GSM_PCHAN_TCH_F_TCH_H_PDCH - && ts->dyn.pchan_want == ts->dyn.pchan_is - && ts->dyn.pchan_is == GSM_PCHAN_PDCH); -} - static int to_gsmtap(struct gsm_bts_trx *trx, struct osmo_phsap_prim *l1sap) { uint8_t *data; diff --git a/src/common/lchan.c b/src/common/lchan.c index fbc26364..9e98166d 100644 --- a/src/common/lchan.c +++ b/src/common/lchan.c @@ -31,3 +31,19 @@ void lchan_set_state(struct gsm_lchan *lchan, enum gsm_lchan_state state) gsm_lchans_name(state)); lchan->state = state; } + +bool ts_is_pdch(const struct gsm_bts_trx_ts *ts) +{ + switch (ts->pchan) { + case GSM_PCHAN_PDCH: + return true; + case GSM_PCHAN_TCH_F_PDCH: + return (ts->flags & TS_F_PDCH_ACTIVE) + && !(ts->flags & TS_F_PDCH_PENDING_MASK); + case GSM_PCHAN_TCH_F_TCH_H_PDCH: + return ts->dyn.pchan_is == GSM_PCHAN_PDCH + && ts->dyn.pchan_want == ts->dyn.pchan_is; + default: + return false; + } +} |