X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?p=sim%2Fe2-interface.git;a=blobdiff_plain;f=e2sim%2Fprevious%2Fe2apv1sim%2Fe2sim%2Fe2sim.cpp;fp=e2sim%2Fprevious%2Fe2apv1sim%2Fe2sim%2Fe2sim.cpp;h=0000000000000000000000000000000000000000;hp=145556e10bb0f535644c3b49b59aeff599771b4d;hb=f86662b5b6481f27e18313a36355871f3a947193;hpb=a9f02a2b5886990fd81e64f7c218c5d4844f18a3 diff --git a/e2sim/previous/e2apv1sim/e2sim/e2sim.cpp b/e2sim/previous/e2apv1sim/e2sim/e2sim.cpp deleted file mode 100644 index 145556e..0000000 --- a/e2sim/previous/e2apv1sim/e2sim/e2sim.cpp +++ /dev/null @@ -1,185 +0,0 @@ -/***************************************************************************** -# * -# Copyright 2019 AT&T Intellectual Property * -# Copyright 2019 Nokia * -# * -# Licensed under the Apache License, Version 2.0 (the "License"); * -# you may not use this file except in compliance with the License. * -# You may obtain a copy of the License at * -# * -# http://www.apache.org/licenses/LICENSE-2.0 * -# * -# Unless required by applicable law or agreed to in writing, software * -# distributed under the License is distributed on an "AS IS" BASIS, * -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * -# See the License for the specific language governing permissions and * -# limitations under the License. * -# * -******************************************************************************/ - -#include -#include -#include -#include -#include -#include - -#include "e2sim.hpp" -#include "e2sim_defs.h" -#include "e2sim_sctp.hpp" -#include "e2ap_message_handler.hpp" -#include "encode_e2apv1.hpp" - -using namespace std; - -int client_fd = 0; - -void E2Sim::register_subscription_callback(long func_id, SubscriptionCallback cb) { - printf("%%%%about to register callback for subscription for func_id %d\n", func_id); - subscription_callbacks[func_id] = cb; - -} - -SubscriptionCallback E2Sim::get_subscription_callback(long func_id) { - printf("%%%%we are getting the subscription callback for func id %d\n", func_id); - SubscriptionCallback cb = subscription_callbacks[func_id]; - return cb; - -} - -void E2Sim::register_e2sm(long func_id, OCTET_STRING_t *ostr) { - - //Error conditions: - //If we already have an entry for func_id - - printf("%%%%about to register e2sm func desc for %d\n", func_id); - - ran_functions_registered[func_id] = ostr; - -} - - -void E2Sim::encode_and_send_sctp_data(E2AP_PDU_t* pdu) -{ - uint8_t *buf; - sctp_buffer_t data; - - data.len = e2ap_asn1c_encode_pdu(pdu, &buf); - memcpy(data.buffer, buf, min(data.len, MAX_SCTP_BUFFER)); - - sctp_send_data(client_fd, data); -} - - -void E2Sim::wait_for_sctp_data() -{ - sctp_buffer_t recv_buf; - if(sctp_receive_data(client_fd, recv_buf) > 0) - { - LOG_I("[SCTP] Received new data of size %d", recv_buf.len); - e2ap_handle_sctp_data(client_fd, recv_buf, false, this); - } -} - - -int E2Sim::run_loop(int argc, char* argv[]){ - - printf("Start E2 Agent (E2 Simulator\n"); - - ifstream simfile; - string line; - - simfile.open("simulation.txt", ios::in); - - if (simfile.is_open()) { - - while (getline(simfile, line)) { - cout << line << "\n"; - } - - simfile.close(); - - } - - bool xmlenc = false; - - options_t ops = read_input_options(argc, argv); - - printf("After reading input options\n"); - - //E2 Agent will automatically restart upon sctp disconnection - // int server_fd = sctp_start_server(ops.server_ip, ops.server_port); - - client_fd = sctp_start_client(ops.server_ip, ops.server_port); - E2AP_PDU_t* pdu_setup = (E2AP_PDU_t*)calloc(1,sizeof(E2AP_PDU)); - - printf("After starting client\n"); - printf("client_fd value is %d\n", client_fd); - - std::vector all_funcs; - - //Loop through RAN function definitions that are registered - - for (std::pair elem : ran_functions_registered) { - printf("looping through ran func\n"); - ran_func_info next_func; - - next_func.ranFunctionId = elem.first; - next_func.ranFunctionDesc = elem.second; - next_func.ranFunctionRev = (long)2; - all_funcs.push_back(next_func); - } - - printf("about to call setup request encode\n"); - - generate_e2apv1_setup_request_parameterized(pdu_setup, all_funcs); - - printf("After generating e2setup req\n"); - - xer_fprint(stderr, &asn_DEF_E2AP_PDU, pdu_setup); - - printf("After XER Encoding\n"); - - auto buffer_size = MAX_SCTP_BUFFER; - unsigned char buffer[MAX_SCTP_BUFFER]; - - sctp_buffer_t data; - - char *error_buf = (char*)calloc(300, sizeof(char)); - size_t errlen; - - asn_check_constraints(&asn_DEF_E2AP_PDU, pdu_setup, error_buf, &errlen); - printf("error length %d\n", errlen); - printf("error buf %s\n", error_buf); - - auto er = asn_encode_to_buffer(nullptr, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2AP_PDU, pdu_setup, buffer, buffer_size); - - data.len = er.encoded; - - fprintf(stderr, "er encded is %d\n", er.encoded); - - memcpy(data.buffer, buffer, er.encoded); - - if(sctp_send_data(client_fd, data) > 0) { - LOG_I("[SCTP] Sent E2-SETUP-REQUEST"); - } else { - LOG_E("[SCTP] Unable to send E2-SETUP-REQUEST to peer"); - } - - sctp_buffer_t recv_buf; - - LOG_I("[SCTP] Waiting for SCTP data"); - - while(1) //constantly looking for data on SCTP interface - { - if(sctp_receive_data(client_fd, recv_buf) <= 0) - break; - - LOG_I("[SCTP] Received new data of size %d", recv_buf.len); - - e2ap_handle_sctp_data(client_fd, recv_buf, xmlenc, this); - if (xmlenc) xmlenc = false; - } - - return 0; -}