aboutsummaryrefslogtreecommitdiffstats
path: root/src/rlc.h
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2013-11-24 17:05:48 +0100
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2013-11-26 20:57:24 +0100
commitdf6b4f52e05e699b9a96a920973bff6241b5a853 (patch)
tree433c1d5a236191f6ed4cb500054447ffae0712f6 /src/rlc.h
parent9eb8ace2608980f6c5e68610210fc6dd921b41ff (diff)
tbf/rlc: Move the parsing of RBB to Decoding, move window marking out
Move the parsing of the bitbmap out of the TBF code into Decoding. Move the updating of the V_B into the V_B class. Add some comments about handling the mod_sns, mod_sns_half parameters by using template code.
Diffstat (limited to 'src/rlc.h')
-rw-r--r--src/rlc.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/rlc.h b/src/rlc.h
index 6edfb921..6905e2bd 100644
--- a/src/rlc.h
+++ b/src/rlc.h
@@ -25,6 +25,7 @@
#define RLC_MAX_WS 64 /* max window size */
#define RLC_MAX_LEN 54 /* CS-4 including spare bits */
+class BTS;
struct gprs_rlc_data {
uint8_t *prepare(size_t block_data_length);
@@ -43,11 +44,18 @@ struct gprs_rlc {
gprs_rlc_data blocks[RLC_MAX_SNS/2];
};
+/**
+ * TODO: for GPRS/EDGE maybe make sns a template parameter
+ * so we create specialized versions...
+ */
struct gprs_rlc_v_b {
int resend_needed(const uint16_t acked, const uint16_t sent,
const uint16_t mod_sns, const uint16_t mod_sns_half);
int mark_for_resend(const uint16_t acked, const uint16_t sent,
const uint16_t mod_sns, const uint16_t mod_sns_half);
+ void update(BTS *bts, char *show_rbb, uint8_t ssn, const uint16_t v_a,
+ const uint16_t mod_sns, const uint16_t mod_sns_half,
+ uint16_t *lost, uint16_t *received);
/* Check for an individual frame */
bool is_unacked(int index) const;