tbf: Add tbf_as_{ul,dl}_tbf_const func helpers
This way we can easily get the subclass from the parent if the pointer
is const. Similar to what we already have for the opposite direction
{ul,dl}_tbf_as_tbf_const().
Change-Id: I35e650d13ecf3a5020d136e7d8d99837786503e2
diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp
index e088e65..5006675 100644
--- a/src/tbf_dl.cpp
+++ b/src/tbf_dl.cpp
@@ -1272,3 +1272,11 @@
else
return NULL;
}
+
+const struct gprs_rlcmac_dl_tbf *tbf_as_dl_tbf_const(const struct gprs_rlcmac_tbf *tbf)
+{
+ if (tbf && tbf->direction == GPRS_RLCMAC_DL_TBF)
+ return static_cast<const gprs_rlcmac_dl_tbf *>(tbf);
+ else
+ return NULL;
+}
diff --git a/src/tbf_dl.h b/src/tbf_dl.h
index bfe9068..3a7c41d 100644
--- a/src/tbf_dl.h
+++ b/src/tbf_dl.h
@@ -130,6 +130,7 @@
int8_t use_trx, bool single_slot);
struct gprs_rlcmac_dl_tbf *tbf_as_dl_tbf(struct gprs_rlcmac_tbf *tbf);
+const struct gprs_rlcmac_dl_tbf *tbf_as_dl_tbf_const(const struct gprs_rlcmac_tbf *tbf);
/* dispatch Unitdata.DL messages */
int dl_tbf_handle(struct gprs_rlcmac_bts *bts,
const uint32_t tlli, const uint32_t old_tlli,
diff --git a/src/tbf_ul.cpp b/src/tbf_ul.cpp
index 0fe3700..9bfda4f 100644
--- a/src/tbf_ul.cpp
+++ b/src/tbf_ul.cpp
@@ -729,6 +729,14 @@
return NULL;
}
+const struct gprs_rlcmac_ul_tbf *tbf_as_ul_tbf_const(const struct gprs_rlcmac_tbf *tbf)
+{
+ if (tbf && tbf->direction == GPRS_RLCMAC_UL_TBF)
+ return static_cast<const gprs_rlcmac_ul_tbf *>(tbf);
+ else
+ return NULL;
+}
+
void tbf_usf_timeout(struct gprs_rlcmac_ul_tbf *tbf)
{
tbf->usf_timeout();
diff --git a/src/tbf_ul.h b/src/tbf_ul.h
index 014b167..c45db44 100644
--- a/src/tbf_ul.h
+++ b/src/tbf_ul.h
@@ -136,6 +136,7 @@
void update_tbf_ta(struct gprs_rlcmac_ul_tbf *tbf, int8_t ta_delta);
void set_tbf_ta(struct gprs_rlcmac_ul_tbf *tbf, uint8_t ta);
struct gprs_rlcmac_ul_tbf *tbf_as_ul_tbf(struct gprs_rlcmac_tbf *tbf);
+const struct gprs_rlcmac_ul_tbf *tbf_as_ul_tbf_const(const struct gprs_rlcmac_tbf *tbf);
void tbf_usf_timeout(struct gprs_rlcmac_ul_tbf *tbf);
void ul_tbf_contention_resolution_start(struct gprs_rlcmac_ul_tbf *tbf);
void ul_tbf_contention_resolution_success(struct gprs_rlcmac_ul_tbf *tbf);