From: Aravind Sirsikar <Arvind.Sirsikar(a)radisys.com>
Defines new Header Type structures for FANR
Signed-off-by: Prasad Kaup <Prasad.Kaup(a)radisys.com>
---
src/rlc.h | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 106 insertions(+), 3 deletions(-)
diff --git a/src/rlc.h b/src/rlc.h
index f7c5457..81332ce 100644
--- a/src/rlc.h
+++ b/src/rlc.h
@@ -363,9 +363,55 @@ struct gprs_rlc_dl_header_egprs_1 {
uint8_t bsn1_b;
uint8_t bsn1_c:1,
bsn2_a:7;
-
uint8_t bsn2_b:3,
- cps:5;
+ cps:5;
+} __attribute__ ((packed));
+
+/* TS 44.060 10.3a.3.1.2 */
+struct gprs_rlc_dl_header_egprs_fanr_type1 {
+ uint8_t usf:3,
+ ces_p:3,
+ pani:1,
+ tfi_a:1;
+ uint8_t tfi_b:4,
+ pr:2,
+ bsn1_a:2;
+ uint8_t bsn1_b;
+ uint8_t bsn1_c:1,
+ bsn2_a:7;
+ uint8_t bsn2_b:3,
+ cps:5;
+} __attribute__ ((packed));
+
+/* TS 44.060 10.3a.3.2.2 */
+struct gprs_rlc_dl_header_egprs_fanr_type2 {
+ uint8_t usf:3,
+ ces_p:3,
+ pani:1,
+ tfi_a:1;
+ uint8_t tfi_b:4,
+ pr:2,
+ bsn_a:2;
+ uint8_t bsn_b;
+ uint8_t bsn_c:1,
+ cps:3,
+ dummy:4;
+} __attribute__ ((packed));
+
+/* TS 44.060 10.3a.3.3.2 */
+struct gprs_rlc_dl_header_egprs_fanr_type3 {
+ uint8_t usf:3,
+ ces_p:2,
+ pani:2,
+ tfi_a:1;
+ uint8_t tfi_b:4,
+ pr:2,
+ bsn_a:2;
+ uint8_t bsn_b;
+ uint8_t bsn_c:1,
+ cps:4,
+ spb:2,
+ dummy:1;
} __attribute__ ((packed));
struct rlc_li_field {
@@ -413,7 +459,7 @@ struct gprs_rlc_ul_header_egprs_2 {
dummy:3;
} __attribute__ ((packed));
-
+/* TS 44.060 10.3a.4.1.1 */
struct gprs_rlc_ul_header_egprs_1 {
uint8_t r:1,
si:1,
@@ -431,6 +477,63 @@ struct gprs_rlc_ul_header_egprs_1 {
uint8_t spare2:6,
dummy:2;
} __attribute__ ((packed));
+
+/* TS 44.060 10.3a.4.1.2 */
+struct gprs_rlc_ul_header_egprs_fanr_type1 {
+ uint8_t r:1,
+ si:1,
+ cv:4,
+ tfi_a:2;
+ uint8_t tfi_b:3,
+ bsn1_a:5;
+ uint8_t bsn1_b:6,
+ bsn2_a:2;
+ uint8_t bsn2_b;
+ uint8_t cps:5,
+ rsb:1,
+ pi:1,
+ pani:1;
+ uint8_t spare2:6,
+ dummy:2;
+} __attribute__ ((packed));
+
+/* TS 44.060 10.3a.4.2.2 */
+struct gprs_rlc_ul_header_egprs_fanr_type2 {
+ uint8_t r:1,
+ si:1,
+ cv:4,
+ tfi_a:2;
+ uint8_t tfi_b:3,
+ bsn1_a:5;
+ uint8_t bsn1_b:6,
+ cps_a:2;
+ uint8_t cps_b:1,
+ rsb:1,
+ pi:1,
+ pani:1,
+ spare:4;
+ uint8_t spare1:5,
+ dummy:3;
+} __attribute__ ((packed));
+
+/* TS 44.060 10.3a.4.3.2 */
+struct gprs_rlc_ul_header_egprs_fanr_type3 {
+ uint8_t r:1,
+ si:1,
+ cv:4,
+ tfi_a:2;
+ uint8_t tfi_b:3,
+ bsn1_a:5;
+ uint8_t bsn1_b:6,
+ cps_a:2;
+ uint8_t cps_b:2,
+ spb:2,
+ rsb:1,
+ pi:1,
+ pani:1,
+ dummy:1;
+} __attribute__ ((packed));
+
}
inline bool gprs_rlc_v_b::is_state(int bsn, const gprs_rlc_dl_bsn_state type) const
--
2.1.4