Commit e02b0875 authored by winckel's avatar winckel

Added RRC ASN1 decoded messages in ITTI logs.

Modified SystemInformation-r8-IEs ASN1 definition to fix issue with GCC and GCCXML.

pre-ci ok.

git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4365 818b1a75-f10b-46b9-bf7c-635c3b92a50f
parent 3be83ca1
......@@ -5,7 +5,12 @@
* Author: winckel
*/
MESSAGE_DEF(RRC_DL_BCCH_MESSAGE, MESSAGE_PRIORITY_MED_PLUS, RrcDlBcchMessage, rrc_dl_bcch_message)
MESSAGE_DEF(RRC_DL_CCCH_MESSAGE, MESSAGE_PRIORITY_MED_PLUS, RrcDlCcchMessage, rrc_dl_ccch_message)
MESSAGE_DEF(RRC_DL_DCCH_MESSAGE, MESSAGE_PRIORITY_MED_PLUS, RrcDlDcchMessage, rrc_dl_dcch_message)
MESSAGE_DEF(RRC_UE_EUTRA_CAPABILITY, MESSAGE_PRIORITY_MED_PLUS, RrcUeEutraCapability, rrc_ue_eutra_capability)
MESSAGE_DEF(RRC_UL_CCCH_MESSAGE, MESSAGE_PRIORITY_MED_PLUS, RrcUlCcchMessage, rrc_ul_ccch_message)
MESSAGE_DEF(RRC_UL_DCCH_MESSAGE, MESSAGE_PRIORITY_MED_PLUS, RrcUlDcchMessage, rrc_ul_dcch_message)
//-------------------------------------------------------------------------------------------//
// Messages from MAC layer
......
......@@ -8,7 +8,12 @@
#ifndef RRC_MESSAGES_TYPES_H_
#define RRC_MESSAGES_TYPES_H_
#include "BCCH-DL-SCH-Message.h"
#include "DL-CCCH-Message.h"
#include "DL-DCCH-Message.h"
#include "UE-EUTRA-Capability.h"
#include "UL-CCCH-Message.h"
#include "UL-DCCH-Message.h"
//-------------------------------------------------------------------------------------------//
// Defines to access message fields.
......@@ -34,7 +39,12 @@
#define CCCH_SDU_SIZE (128)
#define MCCH_SDU_SIZE (128)
typedef BCCH_DL_SCH_Message_t RrcDlBcchMessage;
typedef DL_CCCH_Message_t RrcDlCcchMessage;
typedef DL_DCCH_Message_t RrcDlDcchMessage;
typedef UE_EUTRA_Capability_t RrcUeEutraCapability;
typedef UL_CCCH_Message_t RrcUlCcchMessage;
typedef UL_DCCH_Message_t RrcUlDcchMessage;
//-------------------------------------------------------------------------------------------//
// Messages from MAC layer
......
......@@ -425,7 +425,7 @@ uint8_t do_SIB2_AT4(uint8_t Mod_id,
BCCH_DL_SCH_Message_t *bcch_message,
SystemInformationBlockType2_t **sib2) {
struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member *sib2_part;
struct SystemInformation_r8_IEs_sib_TypeAndInfo_Member *sib2_part;
asn_enc_rval_t enc_rval;
......@@ -438,13 +438,13 @@ uint8_t do_SIB2_AT4(uint8_t Mod_id,
bcch_message->message.choice.c1.choice.systemInformation.criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list.count=0;
sib2_part = CALLOC(1,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member));
memset(sib2_part,0,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member));
sib2_part = CALLOC(1,sizeof(struct SystemInformation_r8_IEs_sib_TypeAndInfo_Member));
memset(sib2_part,0,sizeof(struct SystemInformation_r8_IEs_sib_TypeAndInfo_Member));
ASN_SEQUENCE_ADD(&bcch_message->message.choice.c1.choice.systemInformation.criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list,
sib2_part);
sib2_part->present = SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib2;
sib2_part->present = SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib2;
*sib2 = &sib2_part->choice.sib2;
......@@ -605,9 +605,9 @@ uint8_t do_SIB23(uint8_t Mod_id,
) {
struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member *sib2_part,*sib3_part;
struct SystemInformation_r8_IEs_sib_TypeAndInfo_Member *sib2_part,*sib3_part;
#ifdef Rel10
struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member *sib13_part;
struct SystemInformation_r8_IEs_sib_TypeAndInfo_Member *sib13_part;
MBSFN_SubframeConfigList_t *MBSFNSubframeConfigList;
MBSFN_AreaInfoList_r9_t *MBSFNArea_list;
struct MBSFN_AreaInfo_r9 *MBSFN_Area1, *MBSFN_Area2;
......@@ -635,22 +635,22 @@ uint8_t do_SIB23(uint8_t Mod_id,
#else
LOG_I(RRC,"Configuration SIB2/3\n");
#endif
sib2_part = CALLOC(1,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member));
sib3_part = CALLOC(1,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member));
memset(sib2_part,0,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member));
memset(sib3_part,0,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member));
sib2_part = CALLOC(1,sizeof(struct SystemInformation_r8_IEs_sib_TypeAndInfo_Member));
sib3_part = CALLOC(1,sizeof(struct SystemInformation_r8_IEs_sib_TypeAndInfo_Member));
memset(sib2_part,0,sizeof(struct SystemInformation_r8_IEs_sib_TypeAndInfo_Member));
memset(sib3_part,0,sizeof(struct SystemInformation_r8_IEs_sib_TypeAndInfo_Member));
sib2_part->present = SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib2;
sib3_part->present = SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib3;
sib2_part->present = SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib2;
sib3_part->present = SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib3;
*sib2 = &sib2_part->choice.sib2;
*sib3 = &sib3_part->choice.sib3;
#ifdef Rel10
if (MBMS_flag > 0) {
sib13_part = CALLOC(1,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member));
memset(sib13_part,0,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member));
sib13_part->present = SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib13_v920;
sib13_part = CALLOC(1,sizeof(struct SystemInformation_r8_IEs_sib_TypeAndInfo_Member));
memset(sib13_part,0,sizeof(struct SystemInformation_r8_IEs_sib_TypeAndInfo_Member));
sib13_part->present = SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib13_v920;
*sib13 = &sib13_part->choice.sib13_v920;
}
#endif
......@@ -1919,9 +1919,9 @@ OAI_UECapability_t *fill_ue_capability() {
MessageDef *message_p;
message_p = itti_alloc_new_message (TASK_RRC_UE, RRC_UE_EUTRA_CAPABILITY);
memcpy (&message_p->msg, UE_EUTRA_Capability, sizeof(RrcUeEutraCapability));
memcpy (&message_p->msg, (void *) UE_EUTRA_Capability, sizeof(RrcUeEutraCapability));
itti_send_msg_to_task (TASK_RRC_UE, INSTANCE_DEFAULT, message_p);
itti_send_msg_to_task (TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
}
#endif
......@@ -1957,7 +1957,7 @@ return 0;
uint8_t do_SIB2_cell(uint8_t Mod_id, LTE_DL_FRAME_PARMS *frame_parms, uint8_t *buffer,
BCCH_DL_SCH_Message_t *bcch_message, SystemInformationBlockType2_t **sib2) {
//-----------------------------------------------------------------------------
struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member *sib2_part;
struct SystemInformation_r8_IEs_sib_TypeAndInfo_Member *sib2_part;
asn_enc_rval_t enc_rval;
if (bcch_message)
......@@ -1973,9 +1973,9 @@ uint8_t do_SIB2_cell(uint8_t Mod_id, LTE_DL_FRAME_PARMS *frame_parms, uint8_t *b
}
LOG_I(RRC,"Configuration SIB2 CELLULAR\n");
sib2_part = CALLOC(1,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member));
memset(sib2_part,0,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member));
sib2_part->present = SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib2;
sib2_part = CALLOC(1,sizeof(struct SystemInformation_r8_IEs_sib_TypeAndInfo_Member));
memset(sib2_part,0,sizeof(struct SystemInformation_r8_IEs_sib_TypeAndInfo_Member));
sib2_part->present = SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib2;
*sib2 = &sib2_part->choice.sib2;
// sib2
......
......@@ -680,7 +680,10 @@ SystemInformation ::= SEQUENCE {
}
}
SystemInformation-r8-IEs ::= SEQUENCE {
sib-TypeAndInfo SEQUENCE (SIZE (1..maxSIB)) OF CHOICE {
sib-TypeAndInfo SEQUENCE (SIZE (1..maxSIB)) OF SystemInformation-r8-IEs-sib-TypeAndInfo-Member,
nonCriticalExtension SEQUENCE {} OPTIONAL -- Need OP
}
SystemInformation-r8-IEs-sib-TypeAndInfo-Member ::= CHOICE {
sib2 SystemInformationBlockType2,
sib3 SystemInformationBlockType3,
sib4 SystemInformationBlockType4,
......@@ -692,8 +695,6 @@ SystemInformation-r8-IEs ::= SEQUENCE {
sib10 SystemInformationBlockType10,
sib11 SystemInformationBlockType11,
...
},
nonCriticalExtension SEQUENCE {} OPTIONAL -- Need OP
}
......
......@@ -1141,7 +1141,10 @@ SystemInformation ::= SEQUENCE {
}
}
SystemInformation-r8-IEs ::= SEQUENCE {
sib-TypeAndInfo SEQUENCE (SIZE (1..maxSIB)) OF CHOICE {
sib-TypeAndInfo SEQUENCE (SIZE (1..maxSIB)) OF SystemInformation-r8-IEs-sib-TypeAndInfo-Member,
nonCriticalExtension SystemInformation-v8a0-IEs OPTIONAL
}
SystemInformation-r8-IEs-sib-TypeAndInfo-Member ::= CHOICE {
sib2 SystemInformationBlockType2,
sib3 SystemInformationBlockType3,
sib4 SystemInformationBlockType4,
......@@ -1155,10 +1158,7 @@ SystemInformation-r8-IEs ::= SEQUENCE {
...,
sib12-v920 SystemInformationBlockType12-r9,
sib13-v920 SystemInformationBlockType13-r9
},
nonCriticalExtension SystemInformation-v8a0-IEs OPTIONAL
}
SystemInformation-v8a0-IEs ::= SEQUENCE {
lateNonCriticalExtension OCTET STRING OPTIONAL, -- Need OP
nonCriticalExtension SEQUENCE {} OPTIONAL -- Need OP
......
......@@ -300,6 +300,17 @@ int rrc_ue_decode_ccch(u8 Mod_id, u32 frame, SRB_INFO *Srb_info, u8 eNB_index){
xer_fprint(stdout,&asn_DEF_DL_CCCH_Message,(void*)dl_ccch_msg);
#endif
#if defined(ENABLE_ITTI)
{
MessageDef *message_p;
message_p = itti_alloc_new_message (TASK_RRC_UE, RRC_DL_CCCH_MESSAGE);
memcpy (&message_p->msg, (void *) dl_ccch_msg, sizeof(RrcDlCcchMessage));
itti_send_msg_to_task (TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
}
#endif
if ((dec_rval.code != RC_OK) && (dec_rval.consumed==0)) {
LOG_E(RRC,"[UE %d] Frame %d : Failed to decode DL-CCCH-Message (%d bytes)\n",Mod_id,dec_rval.consumed);
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_DECODE_CCCH, VCD_FUNCTION_OUT);
......@@ -1290,6 +1301,17 @@ void rrc_ue_decode_dcch(u8 Mod_id,u32 frame,u8 Srb_id, u8 *Buffer,u8 eNB_index)
xer_fprint(stdout,&asn_DEF_DL_DCCH_Message,(void*)dl_dcch_msg);
#endif
#if defined(ENABLE_ITTI)
{
MessageDef *message_p;
message_p = itti_alloc_new_message (TASK_RRC_UE, RRC_DL_DCCH_MESSAGE);
memcpy (&message_p->msg, (void *) dl_dcch_msg, sizeof(RrcDlDcchMessage));
itti_send_msg_to_task (TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
}
#endif
if (dl_dcch_msg->message.present == DL_DCCH_MessageType_PR_c1) {
if (UE_rrc_inst[Mod_id].Info[eNB_index].State >= RRC_CONNECTED) {
......@@ -1420,6 +1442,17 @@ int decode_BCCH_DLSCH_Message(u8 Mod_id,u32 frame,u8 eNB_index,u8 *Sdu,u8 Sdu_le
}
// xer_fprint(stdout, &asn_DEF_BCCH_DL_SCH_Message, (void*)&bcch_message);
#if defined(ENABLE_ITTI)
{
MessageDef *message_p;
message_p = itti_alloc_new_message (TASK_RRC_UE, RRC_DL_BCCH_MESSAGE);
memcpy (&message_p->msg, (void *) bcch_message, sizeof(RrcDlBcchMessage));
itti_send_msg_to_task (TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
}
#endif
if (bcch_message->message.present == BCCH_DL_SCH_MessageType_PR_c1) {
switch (bcch_message->message.choice.c1.present) {
case BCCH_DL_SCH_MessageType__c1_PR_systemInformationBlockType1:
......@@ -1648,7 +1681,7 @@ int decode_SI(u8 Mod_id,u32 frame,u8 eNB_index,u8 si_window) {
SystemInformation_t **si=&UE_rrc_inst[Mod_id].si[eNB_index][si_window];
int i;
struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member *typeandinfo;
struct SystemInformation_r8_IEs_sib_TypeAndInfo_Member *typeandinfo;
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_UE_DECODE_SI , VCD_FUNCTION_IN);
......@@ -1667,7 +1700,7 @@ int decode_SI(u8 Mod_id,u32 frame,u8 eNB_index,u8 si_window) {
typeandinfo=(*si)->criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list.array[i];
switch(typeandinfo->present) {
case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib2:
case SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib2:
UE_rrc_inst[Mod_id].sib2[eNB_index] = &typeandinfo->choice.sib2;
LOG_D(RRC,"[UE %d] Frame %d Found SIB2 from eNB %d\n",Mod_id,frame,eNB_index);
dump_sib2(UE_rrc_inst[Mod_id].sib2[eNB_index]);
......@@ -1712,51 +1745,51 @@ int decode_SI(u8 Mod_id,u32 frame,u8 eNB_index,u8 si_window) {
UE_rrc_inst[Mod_id].Info[eNB_index].State = RRC_SI_RECEIVED;
}
break;
case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib3:
case SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib3:
UE_rrc_inst[Mod_id].sib3[eNB_index] = &typeandinfo->choice.sib3;
LOG_I(RRC,"[UE %d] Frame %d Found SIB3 from eNB %d\n",Mod_id,frame,eNB_index);
dump_sib3(UE_rrc_inst[Mod_id].sib3[eNB_index]);
UE_rrc_inst[Mod_id].Info[eNB_index].SIStatus = 1;
break;
case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib4:
case SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib4:
UE_rrc_inst[Mod_id].sib4[eNB_index] = &typeandinfo->choice.sib4;
LOG_I(RRC,"[UE %d] Frame %d Found SIB4 from eNB %d\n",Mod_id,frame,eNB_index);
break;
case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib5:
case SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib5:
UE_rrc_inst[Mod_id].sib5[eNB_index] = &typeandinfo->choice.sib5;
LOG_I(RRC,"[UE %d] Found SIB5 from eNB %d\n",Mod_id,eNB_index);
break;
case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib6:
case SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib6:
UE_rrc_inst[Mod_id].sib6[eNB_index] = &typeandinfo->choice.sib6;
LOG_I(RRC,"[UE %d] Found SIB6 from eNB %d\n",Mod_id,eNB_index);
break;
case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib7:
case SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib7:
UE_rrc_inst[Mod_id].sib7[eNB_index] = &typeandinfo->choice.sib7;
LOG_I(RRC,"[UE %d] Found SIB7 from eNB %d\n",Mod_id,eNB_index);
break;
case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib8:
case SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib8:
UE_rrc_inst[Mod_id].sib8[eNB_index] = &typeandinfo->choice.sib8;
LOG_I(RRC,"[UE %d] Found SIB8 from eNB %d\n",Mod_id,eNB_index);
break;
case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib9:
case SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib9:
UE_rrc_inst[Mod_id].sib9[eNB_index] = &typeandinfo->choice.sib9;
LOG_I(RRC,"[UE %d] Found SIB9 from eNB %d\n",Mod_id,eNB_index);
break;
case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib10:
case SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib10:
UE_rrc_inst[Mod_id].sib10[eNB_index] = &typeandinfo->choice.sib10;
LOG_I(RRC,"[UE %d] Found SIB10 from eNB %d\n",Mod_id,eNB_index);
break;
case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib11:
case SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib11:
UE_rrc_inst[Mod_id].sib11[eNB_index] = &typeandinfo->choice.sib11;
LOG_I(RRC,"[UE %d] Found SIB11 from eNB %d\n",Mod_id,eNB_index);
break;
#ifdef Rel10
case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib12_v920:
case SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib12_v920:
UE_rrc_inst[Mod_id].sib12[eNB_index] = &typeandinfo->choice.sib12_v920;
LOG_I(RRC,"[RRC][UE %d] Found SIB12 from eNB %d\n",Mod_id,eNB_index);
break;
case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib13_v920:
case SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib13_v920:
UE_rrc_inst[Mod_id].sib13[eNB_index] = &typeandinfo->choice.sib13_v920;
LOG_I(RRC,"[RRC][UE %d] Found SIB13 from eNB %d\n",Mod_id,eNB_index);
dump_sib13(UE_rrc_inst[Mod_id].sib13[eNB_index]);
......@@ -2181,10 +2214,6 @@ void *rrc_ue_task(void *args_p) {
LOG_D(RRC, "Received %s\n", msg_name);
break;
case RRC_UE_EUTRA_CAPABILITY: // TODO debug code, should be removed later.
LOG_D(RRC, "Received %s\n", msg_name);
break;
case RRC_MAC_IN_SYNC_IND:
LOG_D(RRC, "Received %s: instance %d, frame %d, eNB %d\n", msg_name, instance,
RRC_MAC_IN_SYNC_IND (msg_p).frame, RRC_MAC_IN_SYNC_IND (msg_p).enb_index);
......
......@@ -633,6 +633,18 @@ rrc_eNB_decode_dcch (u8 Mod_id, u32 frame, u8 Srb_id, u8 UE_index,
dec_rval = uper_decode (NULL,
&asn_DEF_UL_DCCH_Message,
(void **) &ul_dcch_msg, Rx_sdu, sdu_size, 0, 0);
#if defined(ENABLE_ITTI)
{
MessageDef *message_p;
message_p = itti_alloc_new_message (TASK_RRC_ENB, RRC_UL_DCCH_MESSAGE);
memcpy (&message_p->msg, (void *) ul_dcch_msg, sizeof(RrcUlDcchMessage));
itti_send_msg_to_task (TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
}
#endif
for (i = 0; i < sdu_size; i++)
LOG_T (RRC, "%x.", Rx_sdu[i]);
LOG_T (RRC, "\n");
......@@ -893,7 +905,19 @@ rrc_eNB_decode_ccch (u8 Mod_id, u32 frame, SRB_INFO * Srb_info)
dec_rval =
uper_decode (NULL, &asn_DEF_UL_CCCH_Message, (void **) &ul_ccch_msg,
(uint8_t *) Srb_info->Rx_buffer.Payload, 100, 0, 0);
for (i = 0; i < 8; i++)
#if defined(ENABLE_ITTI)
{
MessageDef *message_p;
message_p = itti_alloc_new_message (TASK_RRC_ENB, RRC_UL_CCCH_MESSAGE);
memcpy (&message_p->msg, (void *) ul_ccch_msg, sizeof(RrcUlCcchMessage));
itti_send_msg_to_task (TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
}
#endif
for (i = 0; i < 8; i++)
LOG_T (RRC, "%x.", ((u8 *) & ul_ccch_msg)[i]);
if (dec_rval.consumed == 0)
{
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment