bts: Remove global state from write_immediate_assignment
diff --git a/src/gprs_rlcmac.cpp b/src/gprs_rlcmac.cpp
index 7ab187f..77b130b 100644
--- a/src/gprs_rlcmac.cpp
+++ b/src/gprs_rlcmac.cpp
@@ -452,7 +452,9 @@
 }
 
 // GSM 04.08 9.1.18 Immediate assignment
-int write_immediate_assignment(bitvec * dest, uint8_t downlink, uint8_t ra,
+int write_immediate_assignment(
+	struct gprs_rlcmac_bts *bts,
+	bitvec * dest, uint8_t downlink, uint8_t ra,
 	uint32_t ref_fn, uint8_t ta, uint16_t arfcn, uint8_t ts, uint8_t tsc,
 	uint8_t tfi, uint8_t usf, uint32_t tlli,
 	uint8_t polling, uint32_t fn, uint8_t single_block, uint8_t alpha,
@@ -539,7 +541,6 @@
 	}
 	else
 	{
-		struct gprs_rlcmac_bts *bts = gprs_rlcmac_bts;
 		// GMS 04.08 10.5.2.37b 10.5.2.16
 		bitvec_write_field(dest, wp, 3, 2);    // "HH"
 		bitvec_write_field(dest, wp, 0, 2);    // "0" Packet Uplink Assignment
diff --git a/src/gprs_rlcmac.h b/src/gprs_rlcmac.h
index 7a24622..9f9f9ff 100644
--- a/src/gprs_rlcmac.h
+++ b/src/gprs_rlcmac.h
@@ -162,7 +162,9 @@
 	uint8_t trx, uint8_t ts, uint8_t *data, uint8_t len,
 	uint32_t fn, int8_t rssi);
 
-int write_immediate_assignment(bitvec * dest, uint8_t downlink, uint8_t ra, 
+int write_immediate_assignment(
+	struct gprs_rlcmac_bts *bts,
+	bitvec * dest, uint8_t downlink, uint8_t ra, 
         uint32_t ref_fn, uint8_t ta, uint16_t arfcn, uint8_t ts, uint8_t tsc, 
         uint8_t tfi, uint8_t usf, uint32_t tlli, uint8_t polling,
 	uint32_t fn, uint8_t single_block, uint8_t alpha, uint8_t gamma,
diff --git a/src/gprs_rlcmac_data.cpp b/src/gprs_rlcmac_data.cpp
index f72ea40..e81f2e4 100644
--- a/src/gprs_rlcmac_data.cpp
+++ b/src/gprs_rlcmac_data.cpp
@@ -1094,12 +1094,12 @@
 	bitvec_unhex(immediate_assignment,
 		"2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b");
 	if (sb)
-		plen = write_immediate_assignment(immediate_assignment, 0, ra,
+		plen = write_immediate_assignment(bts, immediate_assignment, 0, ra,
 			Fn, qta >> 2, bts->trx[trx].arfcn, ts,
 			bts->trx[trx].pdch[ts].tsc, 0, 0, 0, 0, sb_fn, 1,
 			bts->alpha, bts->gamma, -1);
 	else
-		plen = write_immediate_assignment(immediate_assignment, 0, ra,
+		plen = write_immediate_assignment(bts, immediate_assignment, 0, ra,
 			Fn, tbf->ta, tbf->arfcn, tbf->first_ts, tbf->tsc,
 			tbf->tfi, tbf->dir.ul.usf[tbf->first_ts], 0, 0, 0, 0,
 			bts->alpha, bts->gamma, -1);
@@ -1720,7 +1720,7 @@
 	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 = write_immediate_assignment(immediate_assignment, 1, 125,
+	plen = write_immediate_assignment(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, bts->alpha, bts->gamma, -1);