diff options
author | Daniel Willmann <dwillmann@sysmocom.de> | 2013-11-27 17:08:35 +0100 |
---|---|---|
committer | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2013-12-12 10:59:56 +0100 |
commit | 8a31f9e016067991b426e0be7637dd38002f1c3e (patch) | |
tree | 356939ed571058eefa01b3b049948c06b2440908 /src/rlc.h | |
parent | 11f2d58dbd0f590da3612a9f587a23b92857436f (diff) |
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
Diffstat (limited to 'src/rlc.h')
-rw-r--r-- | src/rlc.h | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -89,8 +89,11 @@ struct gprs_rlc_ul_window { 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 @@ inline const uint16_t gprs_rlc_ul_window::v_q() const 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(); |