pdch: Manage TFIs per direction

Currently a single bit set is used to maintain a set of used TFI
without distinguishing between uplink and downlink. Since the
namespaces of UL and DL TFI are separate, this implementation is
not correct.

This commit changes gprs_rlcmac_pdch to use a separate bit set for
each direction. It also replace the corresponding conditional fprintf
statement in check_tfi_usage (AllocTest.cpp) by an equivalent
OSMO_ASSERT.

Sponsored-by: On-Waves ehf
diff --git a/src/bts.h b/src/bts.h
index b9909ce..b0e88f5 100644
--- a/src/bts.h
+++ b/src/bts.h
@@ -77,7 +77,7 @@
 	unsigned num_reserved(enum gprs_rlcmac_tbf_direction dir) const;
 
 	uint8_t assigned_usf() const;
-	uint32_t assigned_tfi() const;
+	uint32_t assigned_tfi(enum gprs_rlcmac_tbf_direction dir) const;
 #endif
 
 	uint8_t m_is_enabled; /* TS is enabled */
@@ -109,7 +109,7 @@
 	uint8_t m_num_tbfs[2];
 	uint8_t m_num_reserved[2];
 	uint8_t m_assigned_usf; /* bit set */
-	uint32_t m_assigned_tfi; /* bit set */
+	uint32_t m_assigned_tfi[2]; /* bit set */
 };
 
 struct gprs_rlcmac_trx {
@@ -343,9 +343,10 @@
 	return m_assigned_usf;
 }
 
-inline uint32_t gprs_rlcmac_pdch::assigned_tfi() const
+inline uint32_t gprs_rlcmac_pdch::assigned_tfi(
+	enum gprs_rlcmac_tbf_direction dir) const
 {
-	return m_assigned_tfi;
+	return m_assigned_tfi[dir];
 }
 
 inline struct rate_ctr_group *BTS::rate_counters() const