rlc: Manage the received block bitmap in the ul_window
Added two methods to gprs_rlc_ul_window
* ssn() returns the starting sequence number
* update_rbb() returns an array of chars representing the state of the
received block bitmap. Each element is either 'I'nvalid or
'R'eceived. The rbb is generated from v_n
rbb[63] relates to BSN ssn-1
...
rbb[0] relates to BSN ssn-64
diff --git a/src/rlc.h b/src/rlc.h
index 0ecce40..d68afab 100644
--- a/src/rlc.h
+++ b/src/rlc.h
@@ -89,8 +89,11 @@
const uint16_t v_r() const;
const uint16_t v_q() const;
+ const uint16_t ssn() const;
+
bool is_in_window(uint8_t bsn) const;
+ void update_rbb(const gprs_rlc_v_n *v_n, char *rbb);
void raise_v_r(int moves);
void raise_v_r(const uint16_t bsn, gprs_rlc_v_n *v_n);
uint16_t raise_v_q(gprs_rlc_v_n *v_n);
@@ -339,6 +342,11 @@
return m_v_q;
}
+inline const uint16_t gprs_rlc_ul_window::ssn() const
+{
+ return m_v_r;
+}
+
inline void gprs_rlc_ul_window::raise_v_r(int moves)
{
m_v_r = (m_v_r + moves) & mod_sns();