X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=e2sim%2Fsrc%2Fencoding%2Fencode_e2apv1.cpp;h=85d8cbf295a772a0c8c5779fe716e28503c42490;hb=f5900596513e4359fc839ba361da085674e90b68;hp=fa39dd5c25f5210d2976ed7f9af2b22327de711c;hpb=eef7c499d4674e016842c0691b46c6c6d15f48de;p=sim%2Fe2-interface.git diff --git a/e2sim/src/encoding/encode_e2apv1.cpp b/e2sim/src/encoding/encode_e2apv1.cpp index fa39dd5..85d8cbf 100755 --- a/e2sim/src/encoding/encode_e2apv1.cpp +++ b/e2sim/src/encoding/encode_e2apv1.cpp @@ -371,10 +371,70 @@ ASN_SEQUENCE_ADD(&e2configIE->value.choice.RANfunctions_List.list, e2configAddit } -void encoding::generate_e2apv2_config_update(E2AP_PDU_t *e2ap_pdu){ - +void encoding::generate_e2apv2_reset_request(E2AP_PDU *e2ap_pdu) { + E2AP_PDU_PR pr = E2AP_PDU_PR_initiatingMessage; + e2ap_pdu->present = pr; + + e2ap_pdu->choice.initiatingMessage = (InitiatingMessage_t*)calloc(1, sizeof(InitiatingMessage_t)); + e2ap_pdu->choice.initiatingMessage->procedureCode = ProcedureCode_id_Reset; + e2ap_pdu->choice.initiatingMessage->criticality = Criticality_reject; + + e2ap_pdu->choice.initiatingMessage->value.present = InitiatingMessage__value_PR_ResetRequest; + + auto *rrIEs1 = (ResetRequestIEs_t *)calloc(1, sizeof(ResetRequestIEs_t)); + rrIEs1->id = ProtocolIE_ID_id_Cause; + rrIEs1->criticality = Criticality_ignore; + + rrIEs1->value.present = ResetRequestIEs__value_PR_Cause; + rrIEs1->value.choice.Cause.present = Cause_PR_e2Node; + rrIEs1->value.choice.Cause.choice.ricRequest = CauseE2node_e2node_component_unknown; + + auto *rrIEs2 = (ResetRequestIEs_t *)calloc(1, sizeof(ResetRequestIEs_t)); + rrIEs2->id = ProtocolIE_ID_id_TransactionID; + rrIEs2->criticality = Criticality_ignore; + + rrIEs2->value.present = ResetRequestIEs__value_PR_TransactionID; + rrIEs2->value.choice.TransactionID = 1; + + ASN_SEQUENCE_ADD(&e2ap_pdu->choice.initiatingMessage->value.choice.ResetRequest.protocolIEs.list, rrIEs2); + ASN_SEQUENCE_ADD(&e2ap_pdu->choice.initiatingMessage->value.choice.ResetRequest.protocolIEs.list, rrIEs1); +} + +void encoding::generate_e2apv2_reset_response(E2AP_PDU *e2ap_pdu) { + e2ap_pdu->present = E2AP_PDU_PR_successfulOutcome; + e2ap_pdu->choice.successfulOutcome = (SuccessfulOutcome_t*)calloc(1, sizeof(SuccessfulOutcome)); + + e2ap_pdu->choice.successfulOutcome->procedureCode = ProcedureCode_id_Reset; + e2ap_pdu->choice.successfulOutcome->criticality = Criticality_ignore; + + e2ap_pdu->choice.successfulOutcome->value.present = SuccessfulOutcome__value_PR_ResetResponse; + + // auto *rrIEs1 = (ResetResponseIEs_t *)calloc(1, sizeof(ResetResponseIEs_t)); + // rrIEs1->id = ProtocolIE_ID_id_CriticalityDiagnostics; + // rrIEs1->criticality = Criticality_ignore; + + // rrIEs1->value.present = ResetResponseIEs__value_PR_CriticalityDiagnostics; + // rrIEs1->value.choice.CriticalityDiagnostics.procedureCode = &ProcedureCode_id_Reset; + // rrIEs1->value.choice.CriticalityDiagnostics.choice.ricRequest = CauseE2node_e2node_component_unknown; + + auto *rrIEs2 = (ResetRequestIEs_t *)calloc(1, sizeof(ResetRequestIEs_t)); + rrIEs2->id = ProtocolIE_ID_id_TransactionID; + rrIEs2->criticality = Criticality_ignore; + rrIEs2->value.present = ResetRequestIEs__value_PR_TransactionID; + rrIEs2->value.choice.TransactionID = 1; + + ASN_SEQUENCE_ADD(&e2ap_pdu->choice.successfulOutcome->value.choice.ResetResponse.protocolIEs.list, rrIEs2); +} +void encoding::generate_e2apv2_config_update(E2AP_PDU_t *e2ap_pdu){ + // txid + auto *e2txidIE = (E2nodeConfigurationUpdate_IEs_t *)calloc(1, sizeof(E2nodeConfigurationUpdate_IEs_t)); + e2txidIE->id = ProtocolIE_ID_id_TransactionID; + e2txidIE-> criticality = Criticality_reject; + e2txidIE->value.present = E2nodeConfigurationUpdate_IEs__value_PR_TransactionID; + e2txidIE->value.choice.TransactionID = 1; + /// config update id for addtion list auto *e2configIE = (E2nodeConfigurationUpdate_IEs_t *)calloc(1, sizeof(E2nodeConfigurationUpdate_IEs_t)); e2configIE->id = ProtocolIE_ID_id_E2nodeComponentConfigAddition; @@ -414,16 +474,13 @@ memcpy(resPart.buf, (uint8_t *)"respart", 7); resPart.size = 7; e2configAdditionItem->value.choice.E2nodeComponentConfigAddition_Item.e2nodeComponentConfiguration.e2nodeComponentResponsePart = resPart; - - - - ASN_SEQUENCE_ADD(&e2configIE->value.choice.E2nodeComponentConfigAddition_List, e2configAdditionItem); InitiatingMessage *inititingMsg = (InitiatingMessage *) calloc(1, sizeof(InitiatingMessage)); - inititingMsg->procedureCode = InitiatingMessage__value_PR_E2nodeConfigurationUpdate; + inititingMsg->procedureCode = ProcedureCode_id_E2nodeConfigurationUpdate; inititingMsg->criticality = Criticality_reject; inititingMsg->value.present = InitiatingMessage__value_PR_E2nodeConfigurationUpdate; + ASN_SEQUENCE_ADD(&inititingMsg->value.choice.E2nodeConfigurationUpdate.protocolIEs.list, e2txidIE); ASN_SEQUENCE_ADD(&inititingMsg->value.choice.E2nodeConfigurationUpdate.protocolIEs.list, e2configIE); e2ap_pdu->present = E2AP_PDU_PR_initiatingMessage; e2ap_pdu->choice.initiatingMessage = inititingMsg; @@ -872,7 +929,8 @@ void encoding::generate_e2apv1_indication_request_parameterized(E2AP_PDU *e2ap_p uint8_t *ind_message_buf, int message_length) { - fprintf(stderr, "ind1\n"); + printf("Initializing E2AP request\n"); + RICindication_IEs_t *ricind_ies = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t)); RICindication_IEs_t *ricind_ies2 = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t)); RICindication_IEs_t *ricind_ies3 = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t)); @@ -891,8 +949,6 @@ void encoding::generate_e2apv1_indication_request_parameterized(E2AP_PDU *e2ap_p ricind_ies->value.choice.RICrequestID.ricRequestorID = requestorId; ricind_ies->value.choice.RICrequestID.ricInstanceID = instanceId; - fprintf(stderr, "ind2\n"); - pres3 = RICindication_IEs__value_PR_RANfunctionID; ricind_ies2->id = ProtocolIE_ID_id_RANfunctionID; ricind_ies2->criticality = 0; @@ -920,8 +976,6 @@ void encoding::generate_e2apv1_indication_request_parameterized(E2AP_PDU *e2ap_p ricind_ies5->value.present = pres3; ricind_ies5->value.choice.RICindicationType = 0; - fprintf(stderr, "ind3\n"); - ricind_ies6->value.choice.RICindicationHeader.buf = (uint8_t*)calloc(1,header_length); pres3 = RICindication_IEs__value_PR_RICindicationHeader; @@ -934,30 +988,19 @@ void encoding::generate_e2apv1_indication_request_parameterized(E2AP_PDU *e2ap_p ricind_ies7->value.choice.RICindicationMessage.buf = (uint8_t*)calloc(1,8192); - - pres3 = RICindication_IEs__value_PR_RICindicationMessage; ricind_ies7->id = ProtocolIE_ID_id_RICindicationMessage; - fprintf(stderr, "after encoding message 1\n"); ricind_ies7->criticality = 0; ricind_ies7->value.present = pres3; - fprintf(stderr, "after encoding message 2\n"); - - fprintf(stderr, "after encoding message 3\n"); ricind_ies7->value.choice.RICindicationMessage.size = message_length; - fprintf(stderr, "after encoding message 4\n"); memcpy(ricind_ies7->value.choice.RICindicationMessage.buf, ind_message_buf, message_length); - fprintf(stderr, "after encoding message 5\n"); - uint8_t *cpid_buf = (uint8_t *)"cpid"; OCTET_STRING_t cpid_str; - printf("5.1\n"); - int cpid_buf_len = strlen((char*)cpid_buf); pres3 = RICindication_IEs__value_PR_RICcallProcessID; ricind_ies8->id = ProtocolIE_ID_id_RICcallProcessID; @@ -970,39 +1013,16 @@ void encoding::generate_e2apv1_indication_request_parameterized(E2AP_PDU *e2ap_p memcpy(ricind_ies8->value.choice.RICcallProcessID.buf, cpid_buf, cpid_buf_len); - printf("5.2\n"); - RICindication_t *ricindication = (RICindication_t*)calloc(1, sizeof(RICindication_t)); - - int ret; - - ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies); - - ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies2); - - printf("5.3\n"); - - ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies3); - - printf("5.35\n"); - - ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies4); - - printf("5.36\n"); - - ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies5); - - printf("5.4\n"); - - ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies6); - - printf("5.5\n"); - - ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies7); - - ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies8); - + ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies); + ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies2); + ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies3); + ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies4); + ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies5); + ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies6); + ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies7); + ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies8); InitiatingMessage__value_PR pres4; pres4 = InitiatingMessage__value_PR_RICindication; @@ -1021,11 +1041,13 @@ void encoding::generate_e2apv1_indication_request_parameterized(E2AP_PDU *e2ap_p char error_buf[300] = {0, }; size_t errlen = 0; - asn_check_constraints(&asn_DEF_E2AP_PDU, e2ap_pdu, error_buf, &errlen); - printf("error length %d\n", errlen); - printf("error buf %s\n", error_buf); + int ret = asn_check_constraints(&asn_DEF_E2AP_PDU, e2ap_pdu, error_buf, &errlen); + + if(ret) { + fprintf(stderr, "Constraint validation of E2AP PDU message failed: %s\n", error_buf); + } - xer_fprint(stderr, &asn_DEF_E2AP_PDU, e2ap_pdu); + //xer_fprint(stderr, &asn_DEF_E2AP_PDU, e2ap_pdu); }