X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=e2sim%2Fsrc%2Fencoding%2Fencode_e2apv1.cpp;h=85dae2a77f1fbba3533e0f79216abb5cdc79c0cc;hb=eb80dc1196968a4d34ece42dd1c2e1d31923dec8;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..85dae2a 100755 --- a/e2sim/src/encoding/encode_e2apv1.cpp +++ b/e2sim/src/encoding/encode_e2apv1.cpp @@ -71,8 +71,7 @@ long encoding::get_function_id_from_subscription(E2AP_PDU_t *e2ap_pdu) { RICsubscriptionRequest_IEs_t **ies = (RICsubscriptionRequest_IEs_t**)orig_req.protocolIEs.list.array; - fprintf(stderr, "count%d\n", count); - fprintf(stderr, "size%d\n", size); + LOG_I("Number of IEs in original request: %d, size: %d", count, size); RICsubscriptionRequest_IEs__value_PR pres; @@ -82,17 +81,15 @@ long encoding::get_function_id_from_subscription(E2AP_PDU_t *e2ap_pdu) { RICsubscriptionRequest_IEs_t *next_ie = ies[i]; pres = next_ie->value.present; - fprintf(stderr, "next present value %d\n", pres); - fprintf(stderr, "value of pres ranfuncid is %d\n", RICsubscriptionRequest_IEs__value_PR_RANfunctionID); + LOG_D("Next present value: %d, pres RAN func id: %d", pres, RICsubscriptionRequest_IEs__value_PR_RANfunctionID); if (pres == RICsubscriptionRequest_IEs__value_PR_RANfunctionID) { - fprintf(stderr, "equal pres to ranfuncid\n"); + LOG_E("equal pres to ranfuncid"); func_id = next_ie->value.choice.RANfunctionID; } - } - fprintf(stderr, "After loop, func_id is %d\n", func_id); + LOG_I("After loop, func_id is %d", func_id); return func_id; @@ -100,7 +97,7 @@ long encoding::get_function_id_from_subscription(E2AP_PDU_t *e2ap_pdu) { void encoding::generate_e2apv1_service_update(E2AP_PDU_t *e2ap_pdu, std::vector all_funcs) { char* ran_function_op_type = getenv("RAN_FUNCTION_OP_TYPE"); - LOG_D("Ran funciton : %s", ran_function_op_type); + LOG_D("Ran function : %s", ran_function_op_type); ProtocolIE_ID_t prID; if (ran_function_op_type != NULL) { @@ -371,10 +368,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 +471,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; @@ -611,7 +665,7 @@ void encoding::generate_e2apv1_subscription_response_success(E2AP_PDU *e2ap_pdu, respfuncid->id = ProtocolIE_ID_id_RANfunctionID; respfuncid->criticality = 0; respfuncid->value.present = RICsubscriptionResponse_IEs__value_PR_RANfunctionID; - respfuncid->value.choice.RANfunctionID = (long)0; + respfuncid->value.choice.RANfunctionID = (long)147; RICsubscriptionResponse_IEs_t *ricactionadmitted = @@ -699,14 +753,9 @@ void encoding::generate_e2apv1_subscription_response_success(E2AP_PDU *e2ap_pdu, 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); - - printf("now printing xer of subscription response\n"); - xer_fprint(stderr, &asn_DEF_E2AP_PDU, e2ap_pdu); - printf("done printing xer of subscription response\n"); - + LOG_I("Subscription response"); + xer_fprint(stderr, &asn_DEF_E2AP_PDU, e2ap_pdu); } void encoding::generate_e2apv1_subscription_response(E2AP_PDU *e2ap_pdu, E2AP_PDU *sub_req_pdu) { @@ -724,8 +773,7 @@ void encoding::generate_e2apv1_subscription_response(E2AP_PDU *e2ap_pdu, E2AP_PD RICsubscriptionRequest_IEs_t **ies = (RICsubscriptionRequest_IEs_t**)orig_req.protocolIEs.list.array; - fprintf(stderr, "count%d\n", count); - fprintf(stderr, "size%d\n", size); + LOG_I("Number of IEs in original request: %d, size: %d", count, size); RICsubscriptionRequest_IEs__value_PR pres; @@ -739,61 +787,49 @@ void encoding::generate_e2apv1_subscription_response(E2AP_PDU *e2ap_pdu, E2AP_PD RICsubscriptionRequest_IEs_t *next_ie = ies[i]; pres = next_ie->value.present; - fprintf(stderr, "next present value %d\n", pres); + LOG_D("Next present value %d", pres); switch(pres) { case RICsubscriptionRequest_IEs__value_PR_RICrequestID: { - RICrequestID_t reqId = next_ie->value.choice.RICrequestID; - long requestorId = reqId.ricRequestorID; - long instanceId = reqId.ricInstanceID; - fprintf(stderr, "requestorId %d\n", requestorId); - fprintf(stderr, "instanceId %d\n", instanceId); - responseRequestorId = requestorId; - responseInstanceId = instanceId; - - break; + RICrequestID_t reqId = next_ie->value.choice.RICrequestID; + long requestorId = reqId.ricRequestorID; + long instanceId = reqId.ricInstanceID; + + LOG_I("RequestorId %d, InstanceId: %d", requestorId, instanceId); + + responseRequestorId = requestorId; + responseInstanceId = instanceId; + break; } case RICsubscriptionRequest_IEs__value_PR_RANfunctionID: break; case RICsubscriptionRequest_IEs__value_PR_RICsubscriptionDetails: { - RICsubscriptionDetails_t subDetails = next_ie->value.choice.RICsubscriptionDetails; - RICeventTriggerDefinition_t triggerDef = subDetails.ricEventTriggerDefinition; - RICactions_ToBeSetup_List_t actionList = subDetails.ricAction_ToBeSetup_List; - - int actionCount = actionList.list.count; - fprintf(stderr, "action count%d\n", actionCount); - - auto **item_array = actionList.list.array; - - for (int i=0; i < actionCount; i++) { - //RICaction_ToBeSetup_Item_t - auto *next_item = item_array[i]; - RICactionID_t actionId = ((RICaction_ToBeSetup_ItemIEs*)next_item)->value.choice.RICaction_ToBeSetup_Item.ricActionID; - fprintf(stderr, "Next Action ID %ld\n", actionId); - responseActionId = actionId; - actionIds.push_back(responseActionId); - } - - break; + RICsubscriptionDetails_t subDetails = next_ie->value.choice.RICsubscriptionDetails; + RICeventTriggerDefinition_t triggerDef = subDetails.ricEventTriggerDefinition; + RICactions_ToBeSetup_List_t actionList = subDetails.ricAction_ToBeSetup_List; + + int actionCount = actionList.list.count; + LOG_I("Action count%d", actionCount); + + auto **item_array = actionList.list.array; + + for (int i=0; i < actionCount; i++) { + //RICaction_ToBeSetup_Item_t + auto *next_item = item_array[i]; + RICactionID_t actionId = ((RICaction_ToBeSetup_ItemIEs*)next_item)->value.choice.RICaction_ToBeSetup_Item.ricActionID; + LOG_D("Next Action ID %ld", actionId); + responseActionId = actionId; + actionIds.push_back(responseActionId); + } + + break; } } } - fprintf(stderr, "After Processing Subscription Request\n"); - - fprintf(stderr, "requestorId %d\n", responseRequestorId); - fprintf(stderr, "instanceId %d\n", responseInstanceId); - - - for (int i=0; i < actionIds.size(); i++) { - fprintf(stderr, "Action ID %d %ld\n", i, actionIds.at(i)); - - } - - RICsubscriptionResponse_IEs_t *respricreqid = (RICsubscriptionResponse_IEs_t*)calloc(1, sizeof(RICsubscriptionResponse_IEs_t)); @@ -804,7 +840,6 @@ void encoding::generate_e2apv1_subscription_response(E2AP_PDU *e2ap_pdu, E2AP_PD respricreqid->value.choice.RICrequestID.ricInstanceID = responseInstanceId; - RICsubscriptionResponse_IEs_t *ricactionadmitted = (RICsubscriptionResponse_IEs_t*)calloc(1, sizeof(RICsubscriptionResponse_IEs_t)); ricactionadmitted->id = ProtocolIE_ID_id_RICactions_Admitted; @@ -816,8 +851,6 @@ void encoding::generate_e2apv1_subscription_response(E2AP_PDU *e2ap_pdu, E2AP_PD ricactionadmitted->value.choice.RICaction_Admitted_List = *admlist; for (int i=0; i < actionIds.size(); i++) { - fprintf(stderr, "in for loop i = %d\n", i); - long aid = actionIds.at(i); RICaction_Admitted_ItemIEs_t *admitie = (RICaction_Admitted_ItemIEs_t*)calloc(1,sizeof(RICaction_Admitted_ItemIEs_t)); @@ -830,7 +863,6 @@ void encoding::generate_e2apv1_subscription_response(E2AP_PDU *e2ap_pdu, E2AP_PD } - RICsubscriptionResponse_t *ricsubresp = (RICsubscriptionResponse_t*)calloc(1,sizeof(RICsubscriptionResponse_t)); ASN_SEQUENCE_ADD(&ricsubresp->protocolIEs.list, respricreqid); @@ -854,11 +886,6 @@ void encoding::generate_e2apv1_subscription_response(E2AP_PDU *e2ap_pdu, E2AP_PD 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); - - - } void encoding::generate_e2apv1_indication_request_parameterized(E2AP_PDU *e2ap_pdu, @@ -872,7 +899,8 @@ void encoding::generate_e2apv1_indication_request_parameterized(E2AP_PDU *e2ap_p uint8_t *ind_message_buf, int message_length) { - fprintf(stderr, "ind1\n"); + LOG_I("Initializing E2AP request"); + 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 +919,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 +946,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 +958,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 +983,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,12 +1011,9 @@ 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); - - xer_fprint(stderr, &asn_DEF_E2AP_PDU, e2ap_pdu); - -} - + int ret = asn_check_constraints(&asn_DEF_E2AP_PDU, e2ap_pdu, error_buf, &errlen); + if(ret) { + LOG_I("Constraint validation of E2AP PDU message failed: %s\n", error_buf); + } +} \ No newline at end of file