Remove TBF knowledge from rcv_control*dl_ack_nack

Do not access TBF internals directly from rcv_control*dl_ack_nack() -
wrap corresponding code into TBF-DL method.

Change-Id: I3d1b5782001e45617b4a960612fcfc249904b37c
Related: OS#1539
diff --git a/src/bts.cpp b/src/bts.cpp
index 1d27284..5192646 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -1175,17 +1175,11 @@
 			"wrong TFI=%d, ignoring!\n", tfi);
 		return;
 	}
-	tbf->state_flags |= (1 << GPRS_RLCMAC_FLAG_DL_ACK);
-	if ((tbf->state_flags & (1 << GPRS_RLCMAC_FLAG_TO_DL_ACK))) {
-		tbf->state_flags &= ~(1 << GPRS_RLCMAC_FLAG_TO_DL_ACK);
-		LOGP(DRLCMAC, LOGL_NOTICE, "Recovered downlink ack "
-			"for %s\n", tbf_name(tbf));
-	}
-	/* reset N3105 */
-	tbf->n3105 = 0;
-	tbf->stop_t3191();
+
+	if (tbf->handle_ack_nack())
+		LOGP(DRLCMAC, LOGL_NOTICE, "Recovered downlink ack for %s\n", tbf_name(tbf));
+
 	LOGP(DRLCMAC, LOGL_DEBUG, "RX: [PCU <- BTS] %s Packet Downlink Ack/Nack\n", tbf_name(tbf));
-	tbf->poll_state = GPRS_RLCMAC_POLL_NONE;
 
 	bits.data = bits_data;
 	bits.data_len = sizeof(bits_data);
@@ -1263,19 +1257,13 @@
 			"wrong TFI=%d, ignoring!\n", tfi);
 		return;
 	}
-	tbf->state_flags |= (1 << GPRS_RLCMAC_FLAG_DL_ACK);
-	if ((tbf->state_flags & (1 << GPRS_RLCMAC_FLAG_TO_DL_ACK))) {
-		tbf->state_flags &= ~(1 << GPRS_RLCMAC_FLAG_TO_DL_ACK);
-		LOGP(DRLCMAC, LOGL_NOTICE, "Recovered EGPRS downlink ack "
-			"for %s\n", tbf_name(tbf));
-	}
-	/* reset N3105 */
-	tbf->n3105 = 0;
-	tbf->stop_t3191();
+
+	if (tbf->handle_ack_nack())
+		LOGP(DRLCMAC, LOGL_NOTICE, "Recovered EGPRS downlink ack for %s\n", tbf_name(tbf));
+
 	LOGP(DRLCMAC, LOGL_DEBUG,
 		"RX: [PCU <- BTS] %s EGPRS Packet Downlink Ack/Nack\n",
 		tbf_name(tbf));
-	tbf->poll_state = GPRS_RLCMAC_POLL_NONE;
 
 	LOGP(DRLCMAC, LOGL_DEBUG, "EGPRS ACK/NACK: "
 		"ut: %d, final: %d, bow: %d, eow: %d, ssn: %d, have_crbb: %d, "