Change in osmo-pcu[master]: RLC/MAC: implement decoding of EGPRS Packet Channel Request

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

fixeria gerrit-no-reply at lists.osmocom.org
Mon May 25 08:51:39 UTC 2020


fixeria has submitted this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/17718 )

Change subject: RLC/MAC: implement decoding of EGPRS Packet Channel Request
......................................................................

RLC/MAC: implement decoding of EGPRS Packet Channel Request

According to 3GPP TS 44.004, section 7.4a, two alternative RACH block
formats are specified: 8 bit (1 octet) and 11 bit. This change adds
CSN.1 definitions for 11 bit EGPRS Packet Channel Request as per
3GPP TS 44.060, table 11.2.5a.2.

Change-Id: I96df3352856933c9140177b2801a2c71f4134183
Related: OS#1548
---
M src/gsm_rlcmac.c
M src/gsm_rlcmac.h
M tests/rlcmac/RLCMACTest.cpp
M tests/rlcmac/RLCMACTest.err
M tests/rlcmac/RLCMACTest.ok
5 files changed, 222 insertions(+), 0 deletions(-)

Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, but someone else must approve
  pespin: Looks good to me, approved



diff --git a/src/gsm_rlcmac.c b/src/gsm_rlcmac.c
index 9b5ecfe..c4ac4b1 100644
--- a/src/gsm_rlcmac.c
+++ b/src/gsm_rlcmac.c
@@ -5249,6 +5249,59 @@
 CSN_DESCR_END    (SI6_RestOctet_t)
 #endif
 
+/* EGPRS Packet Channel Request (see 3GPP TS 44.060, table 11.2.5a.2) */
+static const
+CSN_DESCR_BEGIN(PacketChannelRequest_MC5P2RB3_t)
+  M_UINT       (PacketChannelRequest_MC5P2RB3_t,  MultislotClass,  5),
+  M_UINT       (PacketChannelRequest_MC5P2RB3_t,  Priority,  2),
+  M_UINT       (PacketChannelRequest_MC5P2RB3_t,  RandomBits,  3),
+CSN_DESCR_END  (PacketChannelRequest_MC5P2RB3_t)
+
+static const
+CSN_DESCR_BEGIN(PacketChannelRequest_MCG3P2RB3_t)
+  M_UINT       (PacketChannelRequest_MCG3P2RB3_t,  MultislotClassGroup,  3),
+  M_UINT       (PacketChannelRequest_MCG3P2RB3_t,  Priority,  2),
+  M_UINT       (PacketChannelRequest_MCG3P2RB3_t,  RandomBits,  3),
+CSN_DESCR_END  (PacketChannelRequest_MCG3P2RB3_t)
+
+static const
+CSN_DESCR_BEGIN(PacketChannelRequest_NOB3P2RB3_t)
+  M_UINT       (PacketChannelRequest_NOB3P2RB3_t,  NumberOfBlocks,  3),
+  M_UINT       (PacketChannelRequest_NOB3P2RB3_t,  Priority,  2),
+  M_UINT       (PacketChannelRequest_NOB3P2RB3_t,  RandomBits,  3),
+CSN_DESCR_END  (PacketChannelRequest_NOB3P2RB3_t)
+
+static const
+CSN_DESCR_BEGIN(PacketChannelRequest_P2RB3_t)
+  M_UINT       (PacketChannelRequest_P2RB3_t,  Priority,  2),
+  M_UINT       (PacketChannelRequest_P2RB3_t,  RandomBits,  3),
+CSN_DESCR_END  (PacketChannelRequest_P2RB3_t)
+
+static const
+CSN_DESCR_BEGIN(PacketChannelRequest_RB5_t)
+  M_UINT       (PacketChannelRequest_RB5_t,  RandomBits,  5),
+CSN_DESCR_END  (PacketChannelRequest_RB5_t)
+
+static const
+CSN_ChoiceElement_t EGPRS_PacketChannelRequest_Choice[] =
+{
+  {1, 0x00, 0, M_TYPE(EGPRS_PacketChannelRequest_t, Content, PacketChannelRequest_MC5P2RB3_t)},
+  {3, 0x04, 0, M_TYPE(EGPRS_PacketChannelRequest_t, Content, PacketChannelRequest_NOB3P2RB3_t)},
+  {3, 0x05, 0, M_TYPE(EGPRS_PacketChannelRequest_t, Content, PacketChannelRequest_MCG3P2RB3_t)},
+  {6, 0x30, 0, M_TYPE(EGPRS_PacketChannelRequest_t, Content, PacketChannelRequest_P2RB3_t)},
+  {6, 0x33, 0, M_TYPE(EGPRS_PacketChannelRequest_t, Content, PacketChannelRequest_RB5_t)},
+  {6, 0x35, 0, M_TYPE(EGPRS_PacketChannelRequest_t, Content, PacketChannelRequest_RB5_t)},
+  {6, 0x36, 0, M_TYPE(EGPRS_PacketChannelRequest_t, Content, PacketChannelRequest_RB5_t)},
+  {6, 0x37, 0, M_TYPE(EGPRS_PacketChannelRequest_t, Content, PacketChannelRequest_RB5_t)},
+  {6, 0x38, 0, M_TYPE(EGPRS_PacketChannelRequest_t, Content, PacketChannelRequest_P2RB3_t)},
+  {6, 0x39, 0, M_TYPE(EGPRS_PacketChannelRequest_t, Content, PacketChannelRequest_RB5_t)},
+};
+
+CSN_DESCR_BEGIN  (EGPRS_PacketChannelRequest_t)
+  M_CHOICE       (EGPRS_PacketChannelRequest_t, Type,
+                  EGPRS_PacketChannelRequest_Choice, ElementsOf(EGPRS_PacketChannelRequest_Choice)),
+CSN_DESCR_END    (EGPRS_PacketChannelRequest_t)
+
 // ----------------------------------------------------------------------------
 // osmo-pcu RLCMAC APIs
 // ----------------------------------------------------------------------------
@@ -6153,3 +6206,46 @@
 
   return ret;
 }
+
+struct value_string egprs_pkt_ch_req_type_names[] = {
+  { EGPRS_PKT_CHAN_REQ_ONE_PHASE,               "One Phase Access" },
+  { EGPRS_PKT_CHAN_REQ_SHORT,                   "Short Access" },
+  { EGPRS_PKT_CHAN_REQ_ONE_PHASE_RED_LATENCY,   "One Phase Access (Reduced Latency MS)" },
+  { EGPRS_PKT_CHAN_REQ_TWO_PHASE,               "Two Phase Access" },
+  { EGPRS_PKT_CHAN_REQ_SIGNALLING,              "Signalling" },
+  { EGPRS_PKT_CHAN_REQ_ONE_PHASE_UNACK,         "One Phase Access (RLC unack mode)" },
+  { EGPRS_PKT_CHAN_REQ_DEDICATED_CHANNEL,       "Dedicated Channel Request" },
+  { EGPRS_PKT_CHAN_REQ_EMERGENCY_CALL,          "Emergency call" },
+  { EGPRS_PKT_CHAN_REQ_TWO_PHASE_IPA,           "Two Phase Access (by IPA capable MS)" },
+  { EGPRS_PKT_CHAN_REQ_SIGNALLING_IPA,          "Signalling (by IPA capable MS)" },
+  { 0, NULL }
+};
+
+int decode_egprs_pkt_ch_req(guint16 ra, EGPRS_PacketChannelRequest_t *req)
+{
+  unsigned readIndex = 0;
+  guint8 bv_data[2];
+  csnStream_t ar;
+  int ret;
+
+  /* Allocate a bitvector on stack */
+  struct bitvec bv = {
+    .cur_bit = 0,
+    .data_len = 2,
+    .data = bv_data,
+  };
+
+  /* Unpack the bits: xxxxxxxx xxx..... */
+  bv_data[0] = (guint8) (ra >> 3);
+  bv_data[1] = (guint8) ((ra & 0x07) << 5);
+
+  csnStreamInit(&ar, 0, 11);
+
+  /* Recursive csnStreamDecoder call uses LOGPC everywhere, so we need to start the log somewhere... */
+  LOGP(DCSN1, LOGL_DEBUG, "csnStreamDecoder (EGPRS Packet Channel Request): ");
+  ret = csnStreamDecoder(&ar, CSNDESCR(EGPRS_PacketChannelRequest_t),
+                         &bv, &readIndex, (void *) req);
+  LOGPC(DCSN1, LOGL_DEBUG, "\n");
+
+  return ret;
+}
diff --git a/src/gsm_rlcmac.h b/src/gsm_rlcmac.h
index 9d859f3..642530f 100644
--- a/src/gsm_rlcmac.h
+++ b/src/gsm_rlcmac.h
@@ -5330,6 +5330,47 @@
 
 } EnhancedMeasurementReport_t;
 
+/* EGPRS Packet Channel Request (see 3GPP TS 44.060, table 11.2.5a.2) */
+typedef struct
+{
+  guint8 MultislotClassGroup;
+  guint8 MultislotClass;
+  guint8 NumberOfBlocks;
+  guint8 Priority;
+  guint8 RandomBits;
+} EGPRS_PacketChannelRequestContent_t;
+
+/* HACK: we don't really want separate structures for each sub-type, because
+ * they all have a similar set of fields, so here we basically create a few
+ * aliases to EGPRS_PacketChannelRequestContent_t. This makes the API simpler. */
+typedef EGPRS_PacketChannelRequestContent_t PacketChannelRequest_MC5P2RB3_t;
+typedef EGPRS_PacketChannelRequestContent_t PacketChannelRequest_MCG3P2RB3_t;
+typedef EGPRS_PacketChannelRequestContent_t PacketChannelRequest_NOB3P2RB3_t;
+typedef EGPRS_PacketChannelRequestContent_t PacketChannelRequest_P2RB3_t;
+typedef EGPRS_PacketChannelRequestContent_t PacketChannelRequest_RB5_t;
+
+typedef struct
+{
+  /* NOTE: some fields may be uninitialized (always check Type) */
+  guint8                                Type;
+  EGPRS_PacketChannelRequestContent_t	  Content;
+} EGPRS_PacketChannelRequest_t;
+
+typedef enum {
+  EGPRS_PKT_CHAN_REQ_ONE_PHASE = 0,
+  EGPRS_PKT_CHAN_REQ_SHORT,
+  EGPRS_PKT_CHAN_REQ_ONE_PHASE_RED_LATENCY,
+  EGPRS_PKT_CHAN_REQ_TWO_PHASE,
+  EGPRS_PKT_CHAN_REQ_SIGNALLING,
+  EGPRS_PKT_CHAN_REQ_ONE_PHASE_UNACK,
+  EGPRS_PKT_CHAN_REQ_DEDICATED_CHANNEL,
+  EGPRS_PKT_CHAN_REQ_EMERGENCY_CALL,
+  EGPRS_PKT_CHAN_REQ_TWO_PHASE_IPA,
+  EGPRS_PKT_CHAN_REQ_SIGNALLING_IPA,
+} EGPRS_PacketChannelRequestType_t;
+
+extern struct value_string egprs_pkt_ch_req_type_names[];
+
  int decode_gsm_rlcmac_uplink(struct bitvec *vector, RlcMacUplink_t *data);
  int decode_gsm_rlcmac_downlink(struct bitvec *vector, RlcMacDownlink_t *data);
  int encode_gsm_rlcmac_downlink(struct bitvec *vector, RlcMacDownlink_t *data);
@@ -5337,4 +5378,6 @@
  void decode_gsm_rlcmac_uplink_data(struct bitvec *vector, RlcMacUplinkDataBlock_t * data);
  void encode_gsm_rlcmac_downlink_data(struct bitvec *vector, RlcMacDownlinkDataBlock_t * data);
  int decode_gsm_ra_cap(struct bitvec *vector, MS_Radio_Access_capability_t * data);
+ int decode_egprs_pkt_ch_req(guint16 ra, EGPRS_PacketChannelRequest_t *data);
+
 #endif /* __PACKET_GSM_RLCMAC_H__ */
diff --git a/tests/rlcmac/RLCMACTest.cpp b/tests/rlcmac/RLCMACTest.cpp
index 0215cc8..f1b6508 100644
--- a/tests/rlcmac/RLCMACTest.cpp
+++ b/tests/rlcmac/RLCMACTest.cpp
@@ -471,6 +471,59 @@
 	bitvec_free(bv_dec);
 }
 
+void testEGPRSPktChReq(void *test_ctx)
+{
+	EGPRS_PacketChannelRequest_t req;
+	int rc;
+
+	printf("*** %s ***\n", __func__);
+
+	static const uint16_t EGPRSPktChReqs[] = {
+		/* < One Phase Access Request : '0'B
+		     < MultislotClass : '10101'B >
+		     < Priority : '10'B >
+		     < RandomBits : '101'B > > */
+		0x2b5,
+		/* < One Phase Access Request : '0'B
+		     < MultislotClass : '01010'B >
+		     < Priority : '01'B >
+		     < RandomBits : '010'B > > */
+		0x14a,
+		/* < Short Access Request : '100'B
+		     < NumberOfBlocks : '001'B >
+		     < Priority : '01'B >
+		     < RandomBits : '000'B > > */
+		0x428,
+		/* < Two Phase Access Request : '110000'B
+		     < Priority : '00'B >
+		     < RandomBits : '000'B > > */
+		0x600,
+		/* < Two Phase Access Request : '110000'B
+		     < Priority : '11'B >
+		     < RandomBits : '111'B > > */
+		0x61f,
+		/* < Signalling : '110011'B
+		     < RandomBits : '10101'B > > */
+		0x675,
+		/* < Signalling : '110011'B
+		     < RandomBits : '10001'B > > */
+		0x671,
+		/* < Emergency call : '110111'B
+		     < RandomBits : '11001'B > > */
+		0x6f9,
+		/* < Unknown (test) : '111111'B
+		     < RandomBits : '01010'B > > */
+		0x7ea,
+	};
+
+	for (size_t i = 0; i < ARRAY_SIZE(EGPRSPktChReqs); i++) {
+		rc = decode_egprs_pkt_ch_req(EGPRSPktChReqs[i], &req);
+		printf("decode_egprs_pkt_ch_req(0x%03x) returns %d\n", EGPRSPktChReqs[i], rc);
+		if (rc == 0)
+			printf(" ==> %s\n", get_value_string(egprs_pkt_ch_req_type_names, req.Type));
+	}
+}
+
 int main(int argc, char *argv[])
 {
 	void *ctx = talloc_named_const(NULL, 1, "RLCMACTest");
@@ -490,5 +543,8 @@
 	testRAcap(ctx);
 	testMalformedRAcap(ctx);
 	testRAcap2(ctx);
+
+	testEGPRSPktChReq(ctx);
+
 	talloc_free(ctx);
 }
diff --git a/tests/rlcmac/RLCMACTest.err b/tests/rlcmac/RLCMACTest.err
index 83d416c..3a2b370 100644
--- a/tests/rlcmac/RLCMACTest.err
+++ b/tests/rlcmac/RLCMACTest.err
@@ -37,3 +37,12 @@
 DCSN1 INFO csnStreamDecoder (RAcap): MS_RA_capability_value { | Choice MS_RA_capability_value_Choice = 1 | u.Content length = 21 | offset = 1 | RF_Power_Capability = 1 | Exist_A5_bits = 0 | ES_IND = 1 | PS = 0 | VGCS = 0 | VBS = 0 | Exist_Multislot_capability = 1 |  : Multislot_capability | Exist_HSCSD_multislot_class = 0 | Exist_GPRS_multislot_class = 1 | GPRS_multislot_class = 3 | GPRS_Extended_Dynamic_Allocation_Capability = 0 | Exist_SM = 0 | Exist_ECSD_multislot_class = 0 | Exist_EGPRS_multislot_class = 1 | DCSN1 ERROR csnStreamDecoder: error NEED_MORE BITS TO UNPACK (-5) at EGPRS_multislot_class (idx 31): End Multislot_capability | 
 DCSN1 INFO csnStreamDecoder (RAcap): MS_RA_capability_value { | Choice MS_RA_capability_value_Choice = 1 | u.Content length = 29 | offset = 1 | RF_Power_Capability = 1 | Exist_A5_bits = 0 | ES_IND = 1 | PS = 0 | VGCS = 0 | VBS = 0 | Exist_Multislot_capability = 1 |  : Multislot_capability | Exist_HSCSD_multislot_class = 0 | Exist_GPRS_multislot_class = 1 | GPRS_multislot_class = 3 | GPRS_Extended_Dynamic_Allocation_Capability = 0 | Exist_SM = 0 | Exist_ECSD_multislot_class = 0 | Exist_EGPRS_multislot_class = 1 | EGPRS_multislot_class = 0 | EGPRS_Extended_Dynamic_Allocation_Capability = 0 | Exist_DTM_GPRS_multislot_class = 0 | : End Multislot_capability | Exist_Eight_PSK_Power_Capability = 0 | COMPACT_Interference_Measurement_Capability = 0 | Revision_Level_Indicator = NULL | UMTS_FDD_Radio_Access_Technology_Capability = NULL | UMTS_384_TDD_Radio_Access_Technology_Capability = NULL | CDMA2000_Radio_Access_Technology_Capability = NULL | UMTS_128_TDD_Radio_Access_Technology_Capability = NULL | GERAN_Feature_Package_1 = NULL | Modulation_based_multislot_class_support = NULL | GMSK_MultislotPowerProfile = NULL | EightPSK_MultislotProfile = NULL | MultipleTBF_Capability = NULL | DownlinkAdvancedReceiverPerformance = NULL | ExtendedRLC_MAC_ControlMessageSegmentionsCapability = NULL | DTM_EnhancementsCapability = NULL | PS_HandoverCapability = NULL | DTM_Handover_Capability = NULL | FlexibleTimeslotAssignment = NULL | GAN_PS_HandoverCapability = NULL | RLC_Non_persistentMode = NULL | ReducedLatencyCapability = NULL | UplinkEGPRS2 = NULL | DownlinkEGPRS2 = NULL | EUTRA_FDD_Support = NULL | EUTRA_TDD_Support = NULL | GERAN_To_EUTRAN_supportInGERAN_PTM = NULL | PriorityBasedReselectionSupport = NULL | MS_RA_capability_value } | Padding = 0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|
 DCSN1 INFO csnStreamDecoder (RAcap): MS_RA_capability_value { | Choice MS_RA_capability_value_Choice = 1 | u.Content length = 73 | offset = 1 | RF_Power_Capability = 4 | Exist_A5_bits = 1 | A5_bits = 80 | ES_IND = 1 | PS = 1 | VGCS = 0 | VBS = 0 | Exist_Multislot_capability = 1 |  : Multislot_capability | Exist_HSCSD_multislot_class = 0 | Exist_GPRS_multislot_class = 1 | GPRS_multislot_class = 12 | GPRS_Extended_Dynamic_Allocation_Capability = 1 | Exist_SM = 1 | SMS_VALUE = 7 | SM_VALUE = 1 | Exist_ECSD_multislot_class = 0 | Exist_EGPRS_multislot_class = 1 | EGPRS_multislot_class = 12 | EGPRS_Extended_Dynamic_Allocation_Capability = 1 | Exist_DTM_GPRS_multislot_class = 1 | DTM_GPRS_multislot_class = 3 | Single_Slot_DTM = 0 |  : DTM_EGPRS_Params | Exist_DTM_EGPRS_multislot_class = 1 | DTM_EGPRS_multislot_class = 3 | : End DTM_EGPRS_Params | : End Multislot_capability | Exist_Eight_PSK_Power_Capability = 1 | Eight_PSK_Power_Capability = 2 | COMPACT_Interference_Measurement_Capability = 0 | Revision_Level_Indicator = 1 | UMTS_FDD_Radio_Access_Technology_Capability = 0 | UMTS_384_TDD_Radio_Access_Technology_Capability = 0 | CDMA2000_Radio_Access_Technology_Capability = 0 | UMTS_128_TDD_Radio_Access_Technology_Capability = 0 | GERAN_Feature_Package_1 = 1 | Exist_Extended_DTM_multislot_class = 0 | Modulation_based_multislot_class_support = 0 | Exist_HighMultislotCapability = 0 | Exist_GERAN_lu_ModeCapability = 0 | GMSK_MultislotPowerProfile = 3 | EightPSK_MultislotProfile = 3 | MultipleTBF_Capability = 0 | DownlinkAdvancedReceiverPerformance = 1 | ExtendedRLC_MAC_ControlMessageSegmentionsCapability = 1 | DTM_EnhancementsCapability = 1 | Exist_DTM_GPRS_HighMultislotClass = 0 | PS_HandoverCapability = 0 | DTM_Handover_Capability = NULL | FlexibleTimeslotAssignment = NULL | GAN_PS_HandoverCapability = NULL | RLC_Non_persistentMode = NULL | ReducedLatencyCapability = NULL | UplinkEGPRS2 = NULL | DownlinkEGPRS2 = NULL | EUTRA_FDD_Support = NULL | EUTRA_TDD_Support = NULL | GERAN_To_EUTRAN_supportInGERAN_PTM = NULL | PriorityBasedReselectionSupport = NULL | MS_RA_capability_value } | MS_RA_capability_value { | Choice MS_RA_capability_value_Choice = 7 | u.Content length = 34 | offset = 1 | RF_Power_Capability = 4 | Exist_A5_bits = 0 | ES_IND = 1 | PS = 1 | VGCS = 0 | VBS = 0 | Exist_Multislot_capability = 0 | Exist_Eight_PSK_Power_Capability = 1 | Eight_PSK_Power_Capability = 2 | COMPACT_Interference_Measurement_Capability = 0 | Revision_Level_Indicator = 1 | UMTS_FDD_Radio_Access_Technology_Capability = 0 | UMTS_384_TDD_Radio_Access_Technology_Capability = 0 | CDMA2000_Radio_Access_Technology_Capability = 0 | UMTS_128_TDD_Radio_Access_Technology_Capability = 0 | GERAN_Feature_Package_1 = 1 | Exist_Extended_DTM_multislot_class = 0 | Modulation_based_multislot_class_support = 0 | Exist_HighMultislotCapability = 0 | Exist_GERAN_lu_ModeCapability = 0 | GMSK_MultislotPowerProfile = 3 | EightPSK_MultislotProfile = 3 | MultipleTBF_Capability = 0 | DownlinkAdvancedReceiverPerformance = 1 | ExtendedRLC_MAC_ControlMessageSegmentionsCapability = 1 | DTM_EnhancementsCapability = 1 | Exist_DTM_GPRS_HighMultislotClass = 0 | PS_HandoverCapability = 0 | DTM_Handover_Capability = NULL | FlexibleTimeslotAssignment = NULL | GAN_PS_HandoverCapability = NULL | RLC_Non_persistentMode = NULL | ReducedLatencyCapability = NULL | UplinkEGPRS2 = NULL | DownlinkEGPRS2 = NULL | EUTRA_FDD_Support = NULL | EUTRA_TDD_Support = NULL | GERAN_To_EUTRAN_supportInGERAN_PTM = NULL | PriorityBasedReselectionSupport = NULL | MS_RA_capability_value } | MS_RA_capability_value { | Choice MS_RA_capability_value_Choice = 3 | u.Content length = 34 | offset = 1 | RF_Power_Capability = 1 | Exist_A5_bits = 0 | ES_IND = 1 | PS = 1 | VGCS = 0 | VBS = 0 | Exist_Multislot_capability = 0 | Exist_Eight_PSK_Power_Capability = 1 | Eight_PSK_Power_Capability = 2 | COMPACT_Interference_Measurement_Capability = 0 | Revision_Level_Indicator = 1 | UMTS_FDD_Radio_Access_Technology_Capability = 0 | UMTS_384_TDD_Radio_Access_Technology_Capability = 0 | CDMA2000_Radio_Access_Technology_Capability = 0 | UMTS_128_TDD_Radio_Access_Technology_Capability = 0 | GERAN_Feature_Package_1 = 1 | Exist_Extended_DTM_multislot_class = 0 | Modulation_based_multislot_class_support = 0 | Exist_HighMultislotCapability = 0 | Exist_GERAN_lu_ModeCapability = 0 | GMSK_MultislotPowerProfile = 3 | EightPSK_MultislotProfile = 3 | MultipleTBF_Capability = 0 | DownlinkAdvancedReceiverPerformance = 1 | ExtendedRLC_MAC_ControlMessageSegmentionsCapability = 1 | DTM_EnhancementsCapability = 1 | Exist_DTM_GPRS_HighMultislotClass = 0 | PS_HandoverCapability = 0 | DTM_Handover_Capability = NULL | FlexibleTimeslotAssignment = NULL | GAN_PS_HandoverCapability = NULL | RLC_Non_persistentMode = NULL | ReducedLatencyCapability = NULL | UplinkEGPRS2 = NULL | DownlinkEGPRS2 = NULL | EUTRA_FDD_Support = NULL | EUTRA_TDD_Support = NULL | GERAN_To_EUTRAN_supportInGERAN_PTM = NULL | PriorityBasedReselectionSupport = NULL | MS_RA_capability_value } | Padding = 0|
+DCSN1 DEBUG csnStreamDecoder (EGPRS Packet Channel Request): Choice EGPRS_PacketChannelRequest_Choice = 0 |  : Content | MultislotClass = 21 | Priority = 2 | RandomBits = 5 | : End Content | 
+DCSN1 DEBUG csnStreamDecoder (EGPRS Packet Channel Request): Choice EGPRS_PacketChannelRequest_Choice = 0 |  : Content | MultislotClass = 10 | Priority = 1 | RandomBits = 2 | : End Content | 
+DCSN1 DEBUG csnStreamDecoder (EGPRS Packet Channel Request): Choice EGPRS_PacketChannelRequest_Choice = 4 |  : Content | NumberOfBlocks = 1 | Priority = 1 | RandomBits = 0 | : End Content | 
+DCSN1 DEBUG csnStreamDecoder (EGPRS Packet Channel Request): Choice EGPRS_PacketChannelRequest_Choice = 48 |  : Content | Priority = 0 | RandomBits = 0 | : End Content | 
+DCSN1 DEBUG csnStreamDecoder (EGPRS Packet Channel Request): Choice EGPRS_PacketChannelRequest_Choice = 48 |  : Content | Priority = 3 | RandomBits = 7 | : End Content | 
+DCSN1 DEBUG csnStreamDecoder (EGPRS Packet Channel Request): Choice EGPRS_PacketChannelRequest_Choice = 51 |  : Content | RandomBits = 21 | : End Content | 
+DCSN1 DEBUG csnStreamDecoder (EGPRS Packet Channel Request): Choice EGPRS_PacketChannelRequest_Choice = 51 |  : Content | RandomBits = 17 | : End Content | 
+DCSN1 DEBUG csnStreamDecoder (EGPRS Packet Channel Request): Choice EGPRS_PacketChannelRequest_Choice = 55 |  : Content | RandomBits = 25 | : End Content | 
+DCSN1 DEBUG csnStreamDecoder (EGPRS Packet Channel Request): DCSN1 ERROR csnStreamDecoder: error STREAM_NOT_SUPPORTED (-8) at EGPRS_PacketChannelRequest_Choice (idx 0)
diff --git a/tests/rlcmac/RLCMACTest.ok b/tests/rlcmac/RLCMACTest.ok
index 4e4967b..861b1b9 100644
--- a/tests/rlcmac/RLCMACTest.ok
+++ b/tests/rlcmac/RLCMACTest.ok
@@ -149,3 +149,21 @@
 decode_gsm_ra_cap() returns 0
 GPRS multislot class = 12
 EGPRS multislot class = 12
+*** testEGPRSPktChReq ***
+decode_egprs_pkt_ch_req(0x2b5) returns 0
+ ==> One Phase Access
+decode_egprs_pkt_ch_req(0x14a) returns 0
+ ==> One Phase Access
+decode_egprs_pkt_ch_req(0x428) returns 0
+ ==> Short Access
+decode_egprs_pkt_ch_req(0x600) returns 0
+ ==> Two Phase Access
+decode_egprs_pkt_ch_req(0x61f) returns 0
+ ==> Two Phase Access
+decode_egprs_pkt_ch_req(0x675) returns 0
+ ==> Signalling
+decode_egprs_pkt_ch_req(0x671) returns 0
+ ==> Signalling
+decode_egprs_pkt_ch_req(0x6f9) returns 0
+ ==> Emergency call
+decode_egprs_pkt_ch_req(0x7ea) returns -8

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/17718
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: I96df3352856933c9140177b2801a2c71f4134183
Gerrit-Change-Number: 17718
Gerrit-PatchSet: 5
Gerrit-Owner: fixeria <axilirator at gmail.com>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <axilirator at gmail.com>
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200525/4be18ffd/attachment.htm>


More information about the gerrit-log mailing list