aboutsummaryrefslogtreecommitdiffstats
path: root/src/tbf_ul.cpp
diff options
context:
space:
mode:
authorMax <msuraev@sysmocom.de>2017-07-07 14:29:36 +0200
committerMax <msuraev@sysmocom.de>2017-08-14 15:48:37 +0200
commitfd13f6c199d22a9f8a083c0e27fc2e8377894f6d (patch)
tree9ec71cb28dd7fa4aa4bb160dfcf44cbe15e954d1 /src/tbf_ul.cpp
parentc4178e55ea5a0ac480f11e3352a3579cdb78025a (diff)
Encapsulate handling of UL ACK timeout
Use helper methods instead checking and manipulating flag directly. Change-Id: Ia3f009c52118db95b38a077e08eecda844e7f8d1 Related: OS#1539
Diffstat (limited to 'src/tbf_ul.cpp')
-rw-r--r--src/tbf_ul.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/tbf_ul.cpp b/src/tbf_ul.cpp
index 1eee41a2..1e0898a4 100644
--- a/src/tbf_ul.cpp
+++ b/src/tbf_ul.cpp
@@ -95,6 +95,27 @@ int gprs_rlcmac_ul_tbf::assemble_forward_llc(const gprs_rlc_data *_data)
return 0;
}
+bool gprs_rlcmac_ul_tbf::ctrl_ack_to_toggle()
+{
+ if ((state_flags & (1 << GPRS_RLCMAC_FLAG_TO_UL_ACK))) {
+ state_flags &= ~(1 << GPRS_RLCMAC_FLAG_TO_UL_ACK);
+ return true; /* GPRS_RLCMAC_FLAG_TO_UL_ACK was set, now cleared */
+ }
+
+ state_flags |= (1 << GPRS_RLCMAC_FLAG_TO_UL_ACK);
+ return false; /* GPRS_RLCMAC_FLAG_TO_UL_ACK was unset, now set */
+}
+
+bool gprs_rlcmac_ul_tbf::handle_ctrl_ack()
+{
+ /* check if this control ack belongs to packet uplink ack */
+ if (ul_ack_state == GPRS_RLCMAC_UL_ACK_WAIT_ACK) {
+ ul_ack_state = GPRS_RLCMAC_UL_ACK_NONE;
+ return true;
+ }
+
+ return false;
+}
struct msgb *gprs_rlcmac_ul_tbf::create_ul_ack(uint32_t fn, uint8_t ts)
{