tbf: Move gprs_rlcmac_poll_timeout into the tbf

Move the gprs_rlcmac_poll_timeout method into the tbf class and
gprs_rlcmac_downlink_assignment into the BTS.
diff --git a/src/bts.cpp b/src/bts.cpp
index 0e45188..8bb0f26 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -24,6 +24,7 @@
 #include <encoding.h>
 #include <decoding.h>
 #include <rlc.h>
+#include <pcu_l1_if.h>
 
 #include <gprs_rlcmac.h>
 #include <gprs_debug.h>
@@ -330,6 +331,24 @@
 	return 0;
 }
 
+void BTS::snd_dl_ass(gprs_rlcmac_tbf *tbf, uint8_t poll, const char *imsi)
+{
+	int plen;
+
+	debug_diagram(this, tbf->diag, "IMM.ASS (PCH)");
+	LOGP(DRLCMAC, LOGL_INFO, "TX: START TFI: %u TLLI: 0x%08x Immediate Assignment Downlink (PCH)\n", tbf->tfi, tbf->tlli);
+	bitvec *immediate_assignment = bitvec_alloc(22); /* without plen */
+	bitvec_unhex(immediate_assignment, "2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b");
+	/* use request reference that has maximum distance to current time,
+	 * so the assignment will not conflict with possible RACH requests. */
+	plen = Encoding::write_immediate_assignment(&m_bts, immediate_assignment, 1, 125,
+		(tbf->pdch[tbf->first_ts]->last_rts_fn + 21216) % 2715648, tbf->ta,
+		tbf->arfcn, tbf->first_ts, tbf->tsc, tbf->tfi, 0, tbf->tlli, poll,
+		tbf->poll_fn, 0, m_bts.alpha, m_bts.gamma, -1);
+	pcu_l1if_tx_pch(immediate_assignment, plen, imsi);
+	bitvec_free(immediate_assignment);
+}
+
 
 /*
  * PDCH code below. TODO: move to a separate file