bts: Return the special type for {ul,dl}_tbf_by_* functions
Start returning the special type instead of the base gprs_rlcmac_tbf when retrieving a TBF. Ticket: SYS#389 Sponsored-by: On-Waves ehf
This commit is contained in:
parent
078bb713e1
commit
fe6e2e4a08
36
src/bts.cpp
36
src/bts.cpp
|
@ -217,15 +217,15 @@ int BTS::add_paging(uint8_t chan_needed, uint8_t *identity_lv)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* search for active downlink tbf */
|
/* search for active downlink tbf */
|
||||||
gprs_rlcmac_tbf *BTS::dl_tbf_by_tlli(uint32_t tlli)
|
gprs_rlcmac_dl_tbf *BTS::dl_tbf_by_tlli(uint32_t tlli)
|
||||||
{
|
{
|
||||||
return tbf_by_tlli(tlli, GPRS_RLCMAC_DL_TBF);
|
return static_cast<gprs_rlcmac_dl_tbf *>(tbf_by_tlli(tlli, GPRS_RLCMAC_DL_TBF));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* search for active uplink tbf */
|
/* search for active uplink tbf */
|
||||||
gprs_rlcmac_tbf *BTS::ul_tbf_by_tlli(uint32_t tlli)
|
gprs_rlcmac_ul_tbf *BTS::ul_tbf_by_tlli(uint32_t tlli)
|
||||||
{
|
{
|
||||||
return tbf_by_tlli(tlli, GPRS_RLCMAC_UL_TBF);
|
return static_cast<gprs_rlcmac_ul_tbf *>(tbf_by_tlli(tlli, GPRS_RLCMAC_UL_TBF));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* search for active downlink or uplink tbf */
|
/* search for active downlink or uplink tbf */
|
||||||
|
@ -250,9 +250,9 @@ gprs_rlcmac_tbf *BTS::tbf_by_tlli(uint32_t tlli, enum gprs_rlcmac_tbf_direction
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
gprs_rlcmac_tbf *BTS::dl_tbf_by_poll_fn(uint32_t fn, uint8_t trx, uint8_t ts)
|
gprs_rlcmac_dl_tbf *BTS::dl_tbf_by_poll_fn(uint32_t fn, uint8_t trx, uint8_t ts)
|
||||||
{
|
{
|
||||||
struct gprs_rlcmac_tbf *tbf;
|
struct gprs_rlcmac_dl_tbf *tbf;
|
||||||
|
|
||||||
/* only one TBF can poll on specific TS/FN, because scheduler can only
|
/* only one TBF can poll on specific TS/FN, because scheduler can only
|
||||||
* schedule one downlink control block (with polling) at a FN per TS */
|
* schedule one downlink control block (with polling) at a FN per TS */
|
||||||
|
@ -262,14 +262,14 @@ gprs_rlcmac_tbf *BTS::dl_tbf_by_poll_fn(uint32_t fn, uint8_t trx, uint8_t ts)
|
||||||
&& tbf->poll_fn == fn && tbf->trx->trx_no == trx
|
&& tbf->poll_fn == fn && tbf->trx->trx_no == trx
|
||||||
&& tbf->control_ts == ts) {
|
&& tbf->control_ts == ts) {
|
||||||
OSMO_ASSERT(tbf->direction == GPRS_RLCMAC_DL_TBF);
|
OSMO_ASSERT(tbf->direction == GPRS_RLCMAC_DL_TBF);
|
||||||
return tbf;
|
return static_cast<gprs_rlcmac_dl_tbf *>(tbf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
gprs_rlcmac_tbf *BTS::ul_tbf_by_poll_fn(uint32_t fn, uint8_t trx, uint8_t ts)
|
gprs_rlcmac_ul_tbf *BTS::ul_tbf_by_poll_fn(uint32_t fn, uint8_t trx, uint8_t ts)
|
||||||
{
|
{
|
||||||
struct gprs_rlcmac_tbf *tbf;
|
struct gprs_rlcmac_ul_tbf *tbf;
|
||||||
|
|
||||||
/* only one TBF can poll on specific TS/FN, because scheduler can only
|
/* only one TBF can poll on specific TS/FN, because scheduler can only
|
||||||
* schedule one downlink control block (with polling) at a FN per TS */
|
* schedule one downlink control block (with polling) at a FN per TS */
|
||||||
|
@ -279,22 +279,22 @@ gprs_rlcmac_tbf *BTS::ul_tbf_by_poll_fn(uint32_t fn, uint8_t trx, uint8_t ts)
|
||||||
&& tbf->poll_fn == fn && tbf->trx->trx_no == trx
|
&& tbf->poll_fn == fn && tbf->trx->trx_no == trx
|
||||||
&& tbf->control_ts == ts) {
|
&& tbf->control_ts == ts) {
|
||||||
OSMO_ASSERT(tbf->direction == GPRS_RLCMAC_UL_TBF);
|
OSMO_ASSERT(tbf->direction == GPRS_RLCMAC_UL_TBF);
|
||||||
return tbf;
|
return static_cast<gprs_rlcmac_ul_tbf *>(tbf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* lookup downlink TBF Entity (by TFI) */
|
/* lookup downlink TBF Entity (by TFI) */
|
||||||
gprs_rlcmac_tbf *BTS::dl_tbf_by_tfi(uint8_t tfi, uint8_t trx)
|
gprs_rlcmac_dl_tbf *BTS::dl_tbf_by_tfi(uint8_t tfi, uint8_t trx)
|
||||||
{
|
{
|
||||||
return tbf_by_tfi(tfi, trx, GPRS_RLCMAC_DL_TBF);
|
return static_cast<gprs_rlcmac_dl_tbf *>(tbf_by_tfi(tfi, trx, GPRS_RLCMAC_DL_TBF));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* lookup uplink TBF Entity (by TFI) */
|
/* lookup uplink TBF Entity (by TFI) */
|
||||||
gprs_rlcmac_tbf *BTS::ul_tbf_by_tfi(uint8_t tfi, uint8_t trx)
|
gprs_rlcmac_ul_tbf *BTS::ul_tbf_by_tfi(uint8_t tfi, uint8_t trx)
|
||||||
{
|
{
|
||||||
return tbf_by_tfi(tfi, trx, GPRS_RLCMAC_UL_TBF);
|
return static_cast<gprs_rlcmac_ul_tbf *>(tbf_by_tfi(tfi, trx, GPRS_RLCMAC_UL_TBF));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* lookup TBF Entity (by TFI) */
|
/* lookup TBF Entity (by TFI) */
|
||||||
|
@ -1047,12 +1047,12 @@ gprs_rlcmac_tbf *gprs_rlcmac_pdch::tbf_from_list_by_tfi(struct llist_head *tbf_l
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
gprs_rlcmac_tbf *gprs_rlcmac_pdch::ul_tbf_by_tfi(uint8_t tfi)
|
gprs_rlcmac_ul_tbf *gprs_rlcmac_pdch::ul_tbf_by_tfi(uint8_t tfi)
|
||||||
{
|
{
|
||||||
return tbf_from_list_by_tfi(&bts_data()->ul_tbfs, tfi, GPRS_RLCMAC_UL_TBF);
|
return static_cast<gprs_rlcmac_ul_tbf *>(tbf_from_list_by_tfi(&bts_data()->ul_tbfs, tfi, GPRS_RLCMAC_UL_TBF));
|
||||||
}
|
}
|
||||||
|
|
||||||
gprs_rlcmac_tbf *gprs_rlcmac_pdch::dl_tbf_by_tfi(uint8_t tfi)
|
gprs_rlcmac_dl_tbf *gprs_rlcmac_pdch::dl_tbf_by_tfi(uint8_t tfi)
|
||||||
{
|
{
|
||||||
return tbf_from_list_by_tfi(&bts_data()->dl_tbfs, tfi, GPRS_RLCMAC_DL_TBF);
|
return static_cast<gprs_rlcmac_dl_tbf *>(tbf_from_list_by_tfi(&bts_data()->dl_tbfs, tfi, GPRS_RLCMAC_DL_TBF));
|
||||||
}
|
}
|
||||||
|
|
16
src/bts.h
16
src/bts.h
|
@ -62,8 +62,8 @@ struct gprs_rlcmac_pdch {
|
||||||
BTS *bts() const;
|
BTS *bts() const;
|
||||||
uint8_t trx_no() const;
|
uint8_t trx_no() const;
|
||||||
|
|
||||||
struct gprs_rlcmac_tbf *ul_tbf_by_tfi(uint8_t tfi);
|
struct gprs_rlcmac_ul_tbf *ul_tbf_by_tfi(uint8_t tfi);
|
||||||
struct gprs_rlcmac_tbf *dl_tbf_by_tfi(uint8_t tfi);
|
struct gprs_rlcmac_dl_tbf *dl_tbf_by_tfi(uint8_t tfi);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uint8_t m_is_enabled; /* TS is enabled */
|
uint8_t m_is_enabled; /* TS is enabled */
|
||||||
|
@ -193,12 +193,12 @@ public:
|
||||||
/** add paging to paging queue(s) */
|
/** add paging to paging queue(s) */
|
||||||
int add_paging(uint8_t chan_needed, uint8_t *identity_lv);
|
int add_paging(uint8_t chan_needed, uint8_t *identity_lv);
|
||||||
|
|
||||||
gprs_rlcmac_tbf *dl_tbf_by_tlli(uint32_t tlli);
|
gprs_rlcmac_dl_tbf *dl_tbf_by_tlli(uint32_t tlli);
|
||||||
gprs_rlcmac_tbf *ul_tbf_by_tlli(uint32_t tlli);
|
gprs_rlcmac_ul_tbf *ul_tbf_by_tlli(uint32_t tlli);
|
||||||
gprs_rlcmac_tbf *dl_tbf_by_poll_fn(uint32_t fn, uint8_t trx, uint8_t ts);
|
gprs_rlcmac_dl_tbf *dl_tbf_by_poll_fn(uint32_t fn, uint8_t trx, uint8_t ts);
|
||||||
gprs_rlcmac_tbf *ul_tbf_by_poll_fn(uint32_t fn, uint8_t trx, uint8_t ts);
|
gprs_rlcmac_ul_tbf *ul_tbf_by_poll_fn(uint32_t fn, uint8_t trx, uint8_t ts);
|
||||||
gprs_rlcmac_tbf *dl_tbf_by_tfi(uint8_t tfi, uint8_t trx);
|
gprs_rlcmac_dl_tbf *dl_tbf_by_tfi(uint8_t tfi, uint8_t trx);
|
||||||
gprs_rlcmac_tbf *ul_tbf_by_tfi(uint8_t tfi, uint8_t trx);
|
gprs_rlcmac_ul_tbf *ul_tbf_by_tfi(uint8_t tfi, uint8_t trx);
|
||||||
|
|
||||||
int tfi_find_free(enum gprs_rlcmac_tbf_direction dir, uint8_t *_trx, int8_t use_trx);
|
int tfi_find_free(enum gprs_rlcmac_tbf_direction dir, uint8_t *_trx, int8_t use_trx);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue