use new {dl,ul}_tbf_as_tbf(_const) helper functions

Change-Id: I223d9d5823c90ff31089420d35a7bf0fe1ebf870
diff --git a/src/bts.cpp b/src/bts.cpp
index ae63a12..2389987 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -461,7 +461,7 @@
 		ms = llist_entry(tmp, typeof(*ms), list);
 		struct gprs_rlcmac_tbf *tbfs[] = { ms->ul_tbf, ms->dl_tbf };
 		for (l = 0; l < ARRAY_SIZE(tbfs); l++) {
-			tbf = (struct gprs_rlcmac_tbf *)tbfs[l];
+			tbf = tbfs[l];
 			if (!tbf)
 				continue;
 			first_ts = -1;
diff --git a/src/gprs_ms.c b/src/gprs_ms.c
index 0ccedb3..f4da3a5 100644
--- a/src/gprs_ms.c
+++ b/src/gprs_ms.c
@@ -93,7 +93,7 @@
 
 	if (!dl_tbf)
 		return;
-	if (tbf_state((const struct gprs_rlcmac_tbf *)dl_tbf) != TBF_ST_FLOW)
+	if (tbf_state(dl_tbf_as_tbf_const(dl_tbf)) != TBF_ST_FLOW)
 		return;
 
 	LOGPTBFDL(dl_tbf, LOGL_DEBUG, "LLC receive timeout, requesting DL ACK\n");
@@ -162,12 +162,12 @@
 	osmo_timer_del(&ms->timer);
 
 	if (ms->ul_tbf) {
-		tbf_set_ms((struct gprs_rlcmac_tbf *)ms->ul_tbf, NULL);
+		tbf_set_ms(ul_tbf_as_tbf(ms->ul_tbf), NULL);
 		ms->ul_tbf = NULL;
 	}
 
 	if (ms->dl_tbf) {
-		tbf_set_ms((struct gprs_rlcmac_tbf *)ms->dl_tbf, NULL);
+		tbf_set_ms(dl_tbf_as_tbf(ms->dl_tbf), NULL);
 		ms->dl_tbf = NULL;
 	}
 
@@ -311,7 +311,7 @@
 	ms_ref(ms);
 
 	if (ms->ul_tbf)
-		llist_add_tail(tbf_ms_list((struct gprs_rlcmac_tbf *)ms->ul_tbf), &ms->old_tbfs);
+		llist_add_tail(tbf_ms_list(ul_tbf_as_tbf(ms->ul_tbf)), &ms->old_tbfs);
 
 	ms->ul_tbf = tbf;
 
@@ -331,7 +331,7 @@
 	ms_ref(ms);
 
 	if (ms->dl_tbf)
-		llist_add_tail(tbf_ms_list((struct gprs_rlcmac_tbf *)ms->dl_tbf), &ms->old_tbfs);
+		llist_add_tail(tbf_ms_list(dl_tbf_as_tbf(ms->dl_tbf)), &ms->old_tbfs);
 
 	ms->dl_tbf = tbf;
 
@@ -845,7 +845,7 @@
 
 	/* If the DL TBF is active, add number of unencoded chunk octets */
 	if (ms->dl_tbf)
-		unencoded_octets += llc_chunk_size(tbf_llc((struct gprs_rlcmac_tbf *)ms->dl_tbf));
+		unencoded_octets += llc_chunk_size(tbf_llc(dl_tbf_as_tbf(ms->dl_tbf)));
 
 	/* There are many unencoded octets, don't reduce */
 	if (unencoded_octets >= the_pcu->vty.cs_downgrade_threshold)
@@ -868,10 +868,10 @@
 int ms_first_common_ts(const struct GprsMs *ms)
 {
 	if (ms->dl_tbf)
-		return tbf_first_common_ts((struct gprs_rlcmac_tbf *)ms->dl_tbf);
+		return tbf_first_common_ts(dl_tbf_as_tbf(ms->dl_tbf));
 
 	if (ms->ul_tbf)
-		return tbf_first_common_ts((struct gprs_rlcmac_tbf *)ms->ul_tbf);
+		return tbf_first_common_ts(ul_tbf_as_tbf(ms->ul_tbf));
 
 	return -1;
 }
@@ -881,10 +881,10 @@
 	uint8_t slots = 0;
 
 	if (ms->dl_tbf)
-		slots |= tbf_dl_slots((struct gprs_rlcmac_tbf *)ms->dl_tbf);
+		slots |= tbf_dl_slots(dl_tbf_as_tbf(ms->dl_tbf));
 
 	if (ms->ul_tbf)
-		slots |= tbf_dl_slots((struct gprs_rlcmac_tbf *)ms->ul_tbf);
+		slots |= tbf_dl_slots(ul_tbf_as_tbf(ms->ul_tbf));
 
 	return slots;
 }
@@ -894,10 +894,10 @@
 	uint8_t slots = 0;
 
 	if (ms->dl_tbf)
-		slots |= tbf_ul_slots((struct gprs_rlcmac_tbf *)ms->dl_tbf);
+		slots |= tbf_ul_slots(dl_tbf_as_tbf(ms->dl_tbf));
 
 	if (ms->ul_tbf)
-		slots |= tbf_ul_slots((struct gprs_rlcmac_tbf *)ms->ul_tbf);
+		slots |= tbf_ul_slots(ul_tbf_as_tbf(ms->ul_tbf));
 
 	return slots;
 }
@@ -906,20 +906,20 @@
 {
 	uint8_t slots = 0;
 
-	bool is_dl_active = ms->dl_tbf && tbf_is_tfi_assigned((struct gprs_rlcmac_tbf *)ms->dl_tbf);
-	bool is_ul_active = ms->ul_tbf && tbf_is_tfi_assigned((struct gprs_rlcmac_tbf *)ms->ul_tbf);
+	bool is_dl_active = ms->dl_tbf && tbf_is_tfi_assigned(dl_tbf_as_tbf(ms->dl_tbf));
+	bool is_ul_active = ms->ul_tbf && tbf_is_tfi_assigned(ul_tbf_as_tbf(ms->ul_tbf));
 
 	if (!is_dl_active && !is_ul_active)
 		return 0;
 
 	/* see TS 44.060, 8.1.1.2.2 */
 	if (is_dl_active && !is_ul_active)
-		slots =  tbf_dl_slots((struct gprs_rlcmac_tbf *)ms->dl_tbf);
+		slots =  tbf_dl_slots(dl_tbf_as_tbf(ms->dl_tbf));
 	else if (!is_dl_active && is_ul_active)
-		slots =  tbf_ul_slots((struct gprs_rlcmac_tbf *)ms->ul_tbf);
+		slots =  tbf_ul_slots(ul_tbf_as_tbf(ms->ul_tbf));
 	else
-		slots =  tbf_ul_slots((struct gprs_rlcmac_tbf *)ms->ul_tbf) &
-			 tbf_dl_slots((struct gprs_rlcmac_tbf *)ms->dl_tbf);
+		slots =  tbf_ul_slots(ul_tbf_as_tbf(ms->ul_tbf)) &
+			 tbf_dl_slots(dl_tbf_as_tbf(ms->dl_tbf));
 
 	/* Assume a multislot class 1 device */
 	/* TODO: For class 2 devices, this could be removed */
@@ -953,8 +953,8 @@
 struct gprs_rlcmac_tbf *ms_tbf(const struct GprsMs *ms, enum gprs_rlcmac_tbf_direction dir)
 {
 	switch (dir) {
-	case GPRS_RLCMAC_DL_TBF: return (struct gprs_rlcmac_tbf *)ms->dl_tbf;
-	case GPRS_RLCMAC_UL_TBF: return (struct gprs_rlcmac_tbf *)ms->ul_tbf;
+	case GPRS_RLCMAC_DL_TBF: return dl_tbf_as_tbf(ms->dl_tbf);
+	case GPRS_RLCMAC_UL_TBF: return ul_tbf_as_tbf(ms->ul_tbf);
 	}
 
 	return NULL;
@@ -1041,9 +1041,9 @@
 	ms_start_llc_timer(ms);
 
 	dl_tbf = ms_dl_tbf(ms);
-	if (dl_tbf && tbf_state((const struct gprs_rlcmac_tbf *)dl_tbf) == TBF_ST_WAIT_RELEASE) {
+	if (dl_tbf && tbf_state(dl_tbf_as_tbf_const(dl_tbf)) == TBF_ST_WAIT_RELEASE) {
 		LOGPTBFDL(dl_tbf, LOGL_DEBUG, "in WAIT RELEASE state (T3193), so reuse TBF\n");
-		tbf_establish_dl_tbf_on_pacch((struct gprs_rlcmac_tbf *)dl_tbf);
+		tbf_establish_dl_tbf_on_pacch(dl_tbf_as_tbf(dl_tbf));
 	}
 
 	return 0;
diff --git a/src/pdch_ul_controller.c b/src/pdch_ul_controller.c
index 1cdbb98..df0c500 100644
--- a/src/pdch_ul_controller.c
+++ b/src/pdch_ul_controller.c
@@ -275,7 +275,7 @@
 				item_tbf = item->tbf_poll.poll_tbf;
 				break;
 			case PDCH_ULC_NODE_TBF_USF:
-				item_tbf = (struct gprs_rlcmac_tbf *)item->tbf_usf.ul_tbf;
+				item_tbf = ul_tbf_as_tbf_const(item->tbf_usf.ul_tbf);
 				break;
 			default:
 				OSMO_ASSERT(0);
@@ -316,7 +316,7 @@
 		case PDCH_ULC_NODE_TBF_USF:
 			LOGPDCH(ulc->pdch, DRLCMAC, LOGL_INFO,
 				"Timeout for registered USF (FN=%u): %s\n",
-				item->fn, tbf_name((struct gprs_rlcmac_tbf *)item->tbf_usf.ul_tbf));
+				item->fn, tbf_name(ul_tbf_as_tbf_const(item->tbf_usf.ul_tbf)));
 			tbf_usf_timeout(item->tbf_usf.ul_tbf);
 			break;
 		case PDCH_ULC_NODE_TBF_POLL:
diff --git a/src/tbf_ul_ass_fsm.c b/src/tbf_ul_ass_fsm.c
index ee5f681..932a91f 100644
--- a/src/tbf_ul_ass_fsm.c
+++ b/src/tbf_ul_ass_fsm.c
@@ -106,9 +106,9 @@
 	};
 	bitvec_unhex(&bv, DUMMY_VEC);
 
-	if (ctx->tbf != (struct gprs_rlcmac_tbf *)new_tbf)
+	if (ctx->tbf != ul_tbf_as_tbf_const(new_tbf))
 		LOGPTBF(ctx->tbf, LOGL_INFO, "start Packet Uplink Assignment (PACCH) for %s\n",
-			  tbf_name((const struct gprs_rlcmac_tbf *)new_tbf));
+			  tbf_name(ul_tbf_as_tbf_const(new_tbf)));
 	else
 		LOGPTBF(ctx->tbf, LOGL_INFO, "start Packet Uplink Assignment (PACCH)\n");