From 7a05b039c835868eff34308d861edfeb28d1763b Mon Sep 17 00:00:00 2001 From: Aravind Sirsikar Date: Wed, 23 Mar 2016 18:29:45 +0530 Subject: Add data structure for CPS calculation in DL Define new data structure with respect to TS 44.060 10.4.8a.3.1, 10.4.8a.2.1, 10.4.8a.1.1 for puncturing scheme values and initialize the variable introduced --- src/rlc.cpp | 3 +++ src/rlc.h | 24 ++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/rlc.cpp b/src/rlc.cpp index 79d8f48a..0e16ee88 100644 --- a/src/rlc.cpp +++ b/src/rlc.cpp @@ -33,6 +33,9 @@ uint8_t *gprs_rlc_data::prepare(size_t block_data_len) memset(block, 0x0, sizeof(block)); memset(block, 0x2b, block_data_len); + /* Initial value of puncturing scheme */ + next_ps = EGPRS_PS_1; + return block; } diff --git a/src/rlc.h b/src/rlc.h index 3f10f8c2..19dccbee 100644 --- a/src/rlc.h +++ b/src/rlc.h @@ -56,6 +56,27 @@ enum gprs_rlc_dl_bsn_state { GPRS_RLC_DL_BSN_MAX, }; +/* + * Valid puncturing scheme values + * TS 44.060 10.4.8a.3.1, 10.4.8a.2.1, 10.4.8a.1.1 + */ +enum egprs_puncturing_values { + EGPRS_PS_1, + EGPRS_PS_2, + EGPRS_PS_3, + EGPRS_PS_INVALID, +}; + +/* + * EGPRS_MAX_PS_NUM_2 is valid for MCS 1,2,5,6. + * And EGPRS_MAX_PS_NUM_3 is valid for MCS 3,4,7,8,9 + * TS 44.060 10.4.8a.3.1, 10.4.8a.2.1, 10.4.8a.1.1 + */ +enum egprs_puncturing_types { + EGPRS_MAX_PS_NUM_2 = 2, + EGPRS_MAX_PS_NUM_3, + EGPRS_MAX_PS_NUM_INVALID, +}; static inline uint16_t mod_sns_half() { @@ -100,6 +121,9 @@ struct gprs_rlc_data { struct gprs_rlc_data_block_info block_info; GprsCodingScheme cs; + + /* puncturing scheme value to be used for next transmission*/ + enum egprs_puncturing_values next_ps; }; void gprs_rlc_data_info_init_dl(struct gprs_rlc_data_info *rlc, -- cgit v1.2.3