aboutsummaryrefslogtreecommitdiffstats
path: root/src/rlc.cpp
diff options
context:
space:
mode:
authorDaniel Willmann <daniel@totalueberwachung.de>2013-12-28 21:16:13 +0100
committerDaniel Willmann <daniel@totalueberwachung.de>2014-01-15 15:23:35 +0100
commitd54d9f5c75c4f020750af043de9ca43df52ade5d (patch)
tree14afc750fa49aa2a5dd896f0f3edc9051017ad8e /src/rlc.cpp
parent146514e180ec06f75c636daec95a2a8a455e7d25 (diff)
rlc: Use an enum for the state array instead of chars
gprs_rlc_bsn_state is now used to hold the ACK state of sent/received rlc packets.
Diffstat (limited to 'src/rlc.cpp')
-rw-r--r--src/rlc.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/rlc.cpp b/src/rlc.cpp
index 0df1655a..99516bb5 100644
--- a/src/rlc.cpp
+++ b/src/rlc.cpp
@@ -137,16 +137,28 @@ void gprs_rlc_dl_window::state(char *show_v_b)
for (i = 0, bsn = v_a(); bsn != v_s(); i++, bsn = (bsn + 1) & mod_sns()) {
uint16_t index = bsn & mod_sns_half();
- show_v_b[i] = m_v_b.get_state(index);
- if (show_v_b[i] == 0)
- show_v_b[i] = ' ';
+ switch(m_v_b.get_state(index)) {
+ case GPRS_RLC_DL_BSN_INVALID:
+ show_v_b[i] = 'I';
+ break;
+ case GPRS_RLC_DL_BSN_ACKED:
+ show_v_b[i] = 'A';
+ break;
+ case GPRS_RLC_DL_BSN_RESEND:
+ show_v_b[i] = 'X';
+ break;
+ case GPRS_RLC_DL_BSN_NACKED:
+ show_v_b[i] = 'N';
+ break;
+ }
}
show_v_b[i] = '\0';
}
void gprs_rlc_v_n::reset()
{
- memset(m_v_n, 0x0, sizeof(m_v_n));
+ for (size_t i = 0; i < ARRAY_SIZE(m_v_n); ++i)
+ m_v_n[i] = GPRS_RLC_UL_BSN_INVALID;
}
/* Update the receive block bitmap */