diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt index 1c8f3d221e9debd0bd0232c9f8ce082d6a096c8c..feee27bce79619853328c6b3d45457632e9936c5 100644 --- a/cmake_targets/CMakeLists.txt +++ b/cmake_targets/CMakeLists.txt @@ -275,6 +275,7 @@ endif (${RTAI}) # New C code source file, cmake must be re-run (instead of re-running make only) ############# set(asn1c_call "${OPENAIR_CMAKE}/tools/generate_asn1") +set(fix_asn1c_call "${OPENAIR_CMAKE}/tools/fix_asn1") set(asn1_generated_dir ${OPENAIR_BIN_DIR}) set(protoc_call "${OPENAIR_CMAKE}/tools/generate_protobuf") @@ -296,7 +297,19 @@ set (RRC_FULL_DIR ${asn1_generated_dir}/${RRC_ASN1_VERSION}) if(NOT EXISTS ${asn1c_call}) message( FATAL_ERROR "The script ${asn1c_call} must be present" ) endif(NOT EXISTS ${asn1c_call}) -execute_process(COMMAND ${asn1c_call} ${RRC_FULL_DIR} ${RRC_GRAMMAR}) +execute_process(COMMAND ${asn1c_call} ${RRC_FULL_DIR} ${RRC_GRAMMAR} + RESULT_VARIABLE ret) +if (NOT ${ret} STREQUAL 0) + message(FATAL_ERROR "${asn1c_call}: error") +endif (NOT ${ret} STREQUAL 0) +if(NOT EXISTS ${fix_asn1c_call}) + message( FATAL_ERROR "The script ${fix_asn1c_call} must be present" ) +endif(NOT EXISTS ${fix_asn1c_call}) +execute_process(COMMAND ${fix_asn1c_call} ${RRC_FULL_DIR} RRC ${RRC_ASN1_VERSION} + RESULT_VARIABLE ret) +if (NOT ${ret} STREQUAL 0) + message(FATAL_ERROR "${fix_asn1c_call}: error") +endif (NOT ${ret} STREQUAL 0) file(GLOB rrc_source ${RRC_FULL_DIR}/*.c) set(rrc_source ${rrc_source} ${OPENAIR2_DIR}/RRC/LITE/MESSAGES/asn1_msg.c) file(GLOB rrc_h ${RRC_FULL_DIR}/*.h) @@ -310,6 +323,7 @@ include_directories ("${RRC_FULL_DIR}") add_custom_command ( OUTPUT ${RRC_FULL_DIR}/asn1_constants.h COMMAND ${asn1c_call} ${RRC_FULL_DIR} ${RRC_GRAMMAR} + COMMAND ${fix_asn1c_call} ${RRC_FULL_DIR} RRC ${RRC_ASN1_VERSION} DEPENDS ${RRC_GRAMMAR} ) @@ -338,7 +352,21 @@ set(S1AP_ASN_FILES ) set(S1AP_C_DIR ${asn1_generated_dir}/${ASN1RELDIR}) #message("calling ${asn1c_call} ${S1AP_C_DIR} ${S1AP_ASN_FILES}") -execute_process(COMMAND ${asn1c_call} ${S1AP_C_DIR} ${S1AP_ASN_FILES}) +execute_process(COMMAND ${asn1c_call} ${S1AP_C_DIR} ${S1AP_ASN_FILES} + RESULT_VARIABLE ret) +if (NOT ${ret} STREQUAL 0) + message(FATAL_ERROR "${asn1c_call}: error") +endif (NOT ${ret} STREQUAL 0) +execute_process(COMMAND python ${S1AP_DIR}/MESSAGES/ASN1/asn1tostruct.py -f${S1AP_ASN_DIR}/S1AP-PDU-Contents.asn -o${S1AP_C_DIR} + RESULT_VARIABLE ret) +if (NOT ${ret} STREQUAL 0) + message(FATAL_ERROR "asn1tostruct.py: error") +endif (NOT ${ret} STREQUAL 0) +execute_process(COMMAND ${fix_asn1c_call} ${S1AP_C_DIR} S1AP ${S1AP_VERSION} + RESULT_VARIABLE ret) +if (NOT ${ret} STREQUAL 0) + message(FATAL_ERROR "${fix_asn1c_call}: error") +endif (NOT ${ret} STREQUAL 0) file(GLOB S1AP_source ${S1AP_C_DIR}/*.c) set(S1AP_OAI_generated @@ -355,6 +383,7 @@ add_custom_command ( OUTPUT ${S1AP_OAI_generated} COMMAND ${asn1c_call} ${S1AP_C_DIR} ${S1AP_ASN_FILES} COMMAND python ${S1AP_DIR}/MESSAGES/ASN1/asn1tostruct.py -f${S1AP_ASN_DIR}/S1AP-PDU-Contents.asn -o${S1AP_C_DIR} + COMMAND ${fix_asn1c_call} ${S1AP_C_DIR} S1AP ${S1AP_VERSION} DEPENDS ${S1AP_ASN_FILES} ) add_library(S1AP_LIB @@ -406,7 +435,21 @@ set(X2AP_ASN_FILES set(X2AP_C_DIR ${asn1_generated_dir}/${ASN1RELDIR}) #message("calling ${asn1c_call} ${X2AP_C_DIR} ${X2AP_ASN_FILES}") -execute_process(COMMAND ${asn1c_call} ${X2AP_C_DIR} ${X2AP_ASN_FILES}) +execute_process(COMMAND ${asn1c_call} ${X2AP_C_DIR} ${X2AP_ASN_FILES} + RESULT_VARIABLE ret) +if (NOT ${ret} STREQUAL 0) + message(FATAL_ERROR "${asn1c_call}: error") +endif (NOT ${ret} STREQUAL 0) +execute_process(COMMAND python ${X2AP_DIR}/MESSAGES/ASN1/asn1tostruct.py -f ${X2AP_ASN_DIR}/X2AP-PDU-Contents.asn -o ${X2AP_C_DIR} + RESULT_VARIABLE ret) +if (NOT ${ret} STREQUAL 0) + message(FATAL_ERROR "asn1tostruct.py: error") +endif (NOT ${ret} STREQUAL 0) +execute_process(COMMAND ${fix_asn1c_call} ${X2AP_C_DIR} X2AP ${X2AP_VERSION} + RESULT_VARIABLE ret) +if (NOT ${ret} STREQUAL 0) + message(FATAL_ERROR "${fix_asn1c_call}: error") +endif (NOT ${ret} STREQUAL 0) file(GLOB X2AP_source ${X2AP_C_DIR}/*.c) set(X2AP_OAI_generated @@ -423,6 +466,7 @@ add_custom_command ( OUTPUT ${X2AP_OAI_generated} COMMAND ${asn1c_call} ${X2AP_C_DIR} ${X2AP_ASN_FILES} COMMAND python ${X2AP_DIR}/MESSAGES/ASN1/asn1tostruct.py -f ${X2AP_ASN_DIR}/X2AP-PDU-Contents.asn -o ${X2AP_C_DIR} + COMMAND ${fix_asn1c_call} ${X2AP_C_DIR} X2AP ${X2AP_VERSION} DEPENDS ${X2AP_ASN_FILES} ) diff --git a/cmake_targets/autotests/run_compilation_autotests.bash b/cmake_targets/autotests/run_compilation_autotests.bash index afe7aa4873ccd3c626a449ef11e9289f5b17ba9e..a7b056dc811d32b2d7be1b09258ff1b60ba2d71b 100755 --- a/cmake_targets/autotests/run_compilation_autotests.bash +++ b/cmake_targets/autotests/run_compilation_autotests.bash @@ -20,7 +20,7 @@ test_compile() { compile_prog=$2 exec_prog=$3 build_dir=$tdir/$1/build - log_file=$tdir/log/test.$1.txt + log_file=$tdir/log/test.$1.$2.$5.txt target=$5 echo "Compiling test case $test_name. Log file = $log_file" rm -fr $build_dir @@ -34,10 +34,10 @@ test_compile() { if [ -s $exec_prog ] ; then cp $exec_prog $tdir/bin/`basename $exec_prog`.$target.$test_name echo_success "$test_name $exec_prog $target compiled" - xUnit_success "compilation" $test_name "PASS" 1 + xUnit_success "compilation" $test_name "PASS" 1 "$results_file" else echo_error "$test_name $exec_prog $target compilation failed" - xUnit_fail "compilation" $test_name "FAIL" 1 + xUnit_fail "compilation" $test_name "FAIL" 1 "$results_file" fi } diff --git a/cmake_targets/autotests/run_exec_autotests.bash b/cmake_targets/autotests/run_exec_autotests.bash index a98a071bae39a3e1d539e2f5897dd7eb4a36fefc..1029acc1e6d7a1637d71ef2c1412a0cf6c81d3b3 100755 --- a/cmake_targets/autotests/run_exec_autotests.bash +++ b/cmake_targets/autotests/run_exec_autotests.bash @@ -388,6 +388,7 @@ until [ -z "$1" ] -g | --run-group) RUN_GROUP=1 test_case_group=$2 + test_case_group=`sed "s/\+/\*/g" <<< "${test_case_group}"` # Replace + with * for bash string substituion echo_info "Will execute test cases only in group $test_case_group" shift 2;; -p) @@ -423,9 +424,17 @@ rm -fr $tmpfile xml_conf="$OPENAIR_DIR/cmake_targets/autotests/test_case_list.xml" test_case_list=`xmlstarlet sel -T -t -m /testCaseList/testCase -s A:N:- "@id" -v "@id" -n $xml_conf` +test_case_excl_list=`xmlstarlet sel -t -v "/testCaseList/TestCaseExclusionList" $xml_conf` +echo "Test Case Exclusion List = $test_case_excl_list " + +test_case_excl_list=`sed "s/\+/\*/g" <<< "$test_case_excl_list" ` # Replace + with * for bash string substituion + +read -a test_case_excl_array <<< "$test_case_excl_list" echo "test_case_list = $test_case_list" +echo "Test Case Exclusion List = $test_case_excl_list \n" + readarray -t test_case_array <<<"$test_case_list" read -a test_case_group_array <<< "$test_case_group" @@ -447,6 +456,15 @@ for search_expr in "${test_case_array[@]}" flag_run_test_case=1 fi + for search_excl in "${test_case_excl_array[@]}" + do + if [[ $search_expr == $search_excl ]];then + flag_run_test_case=0 + echo_info "Test case $search_expr match found in test case excl group. Will skip the test case for execution..." + break + fi + done + #We skip this test case if it is not in the group list if [ "$flag_run_test_case" -ne "1" ]; then diff --git a/cmake_targets/tools/fix_asn1 b/cmake_targets/tools/fix_asn1 new file mode 100755 index 0000000000000000000000000000000000000000..dcc00d5e37240853d81231ad7e451fe6c249838f --- /dev/null +++ b/cmake_targets/tools/fix_asn1 @@ -0,0 +1,177 @@ +#!/bin/bash + +# in those arrays, each line is: +# <file> <sha1sum of file (without line 4 which changes depending on the location of the files)> <patch to apply to file> + +RRC_Rel10=( + "SystemInformation-r8-IEs.h" 603cd6615cff36ec7020692d72c0d6de7c4859cb "fix_asn1.data/RRC.rel10/SystemInformation-r8-IEs.h.diff" +) + +X2AP_Rel11_2=( + "X2ap-CriticalityDiagnostics-IE-List.h" ae96308b37fcbcbf39da5012e42968135fc5f27b "fix_asn1.data/X2AP.rel11.2/X2ap-CriticalityDiagnostics-IE-List.h.diff" + "NativeInteger.c" 9f173e87daa1e7378618dbb060a10aae752d74be "fix_asn1.data/X2AP.rel11.2/NativeInteger.c.diff" + "constr_SET_OF.c" 5c8765a1e0fc44a48e406d0aa7628004bf3aac2a "fix_asn1.data/X2AP.rel11.2/constr_SET_OF.c.diff" +) + +S1AP_Rel10_5=( + "NativeInteger.c" 9f173e87daa1e7378618dbb060a10aae752d74be "fix_asn1.data/S1AP.rel10.5/NativeInteger.c.diff" + "constr_SET_OF.c" 5c8765a1e0fc44a48e406d0aa7628004bf3aac2a "fix_asn1.data/S1AP.rel10.5/constr_SET_OF.c.diff" +) + +red_color="$(tput setaf 1)" +green_color="$(tput setaf 2)" +reset_color="$(tput sgr0)" + +function error() +{ + echo -e "$red_color"ERROR: "$@""$reset_color" + exit 1 +} + +function check_sha1() +{ + local file="$1" + local target_sha1="$2" + + if [ ! -f "$file" ] + then + error "$file: no such file" + fi + + # we don't use the line 4 of the file + # it contains the location of the ASN1 grammar + # and this location is not the same on every + # installation (this is for *.h files, for *.c + # files it's no big deal to skip that line) + local computed_sha1=$(sed 4d "$file" | sha1sum | cut -f 1 -d ' ') + + if [ "$target_sha1" != "$computed_sha1" ] + then + error "$file: wrong SHA1" + fi +} + +function patch_file() +{ + local patch="$1" + local file="$2" + + echo -e "$green_color""patch file $file with $OPENAIR_DIR/cmake_targets/tools/$patch""$reset_color" + + patch "$file" "$OPENAIR_DIR/cmake_targets/tools/$patch" + if [ $? -ne 0 ] + then + error "patching of $file with $OPENAIR_DIR/cmake_targets/tools/$patch failed" + fi +} + +function apply_patches() +{ + local directory="$1" + local array=$2 + local len=$3 # the length could be computed locally but the way to do it is not clear to me [CROUX] + + local i + local file + local sha1 + local patch + local item + + for (( i = 0; i < $len; i += 3 )) + do + # special bash syntax to access the array + item=$array[$i]; file=${!item} + item=$array[$((i+1))]; sha1=${!item} + item=$array[$((i+2))]; patch=${!item} + check_sha1 "$directory/$file" "$sha1" + patch_file "$patch" "$directory/$file" + done +} + +function patch_rrc() +{ + local directory="$1" + local version="$2" + + case "$version" in + Rel10 ) + echo "patching RRC files release 10" + apply_patches "$directory" RRC_Rel10 ${#RRC_Rel10[*]} + ;; + Rel8 ) + echo "patching RRC files release 8 TODO?" + ;; + * ) + error unknwon/unhandled RRC version \'"$version"\' + ;; + esac +} + +function patch_x2ap() +{ + local directory="$1" + local version="$2" + + case "$version" in + R11 ) + echo "patching X2AP files release 11.2" + apply_patches "$directory" X2AP_Rel11_2 ${#X2AP_Rel11_2[*]} + ;; + * ) + error unknwon/unhandled X2AP version \'"$version"\' + ;; + esac +} + +function patch_s1ap() +{ + local directory="$1" + local version="$2" + + case "$version" in + R10 ) + echo "patching S1AP files release 10.5" + apply_patches "$directory" S1AP_Rel10_5 ${#S1AP_Rel10_5[*]} + ;; + * ) + error unknwon/unhandled S1AP version \'"$version"\' + ;; + esac +} + +function main() +{ + if [ $# -ne 3 ] + then + echo "ERROR: pass <output directory> <module> <version>" + exit 1 + fi + + if [ x"$OPENAIR_DIR" = x ] + then + error "the variable OPENAIR_DIR is not set" + fi + + local directory="$1" + local module="$2" + local version="$3" + + case "$module" in + RRC ) + patch_rrc "$directory" "$version" + ;; + X2AP ) + patch_x2ap "$directory" "$version" + ;; + S1AP ) + patch_s1ap "$directory" "$version" + ;; + * ) + error unknown module "$module" + ;; + esac + + exit 0 +} + +main "$@" diff --git a/cmake_targets/tools/fix_asn1.data/RRC.rel10/SystemInformation-r8-IEs.h.diff b/cmake_targets/tools/fix_asn1.data/RRC.rel10/SystemInformation-r8-IEs.h.diff new file mode 100644 index 0000000000000000000000000000000000000000..525e35ac9e452891513ef8c78c720cff108a5d16 --- /dev/null +++ b/cmake_targets/tools/fix_asn1.data/RRC.rel10/SystemInformation-r8-IEs.h.diff @@ -0,0 +1,23 @@ +57,61d56 +< /* SystemInformation-r8-IEs */ +< typedef struct SystemInformation_r8_IEs { +< struct SystemInformation_r8_IEs__sib_TypeAndInfo { +< A_SEQUENCE_OF(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member { +< SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR present; +79c74,78 +< } choice; +--- +> }; +> +> struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member { +> SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR present; +> union SystemInformation_r8_IEs__sib_TypeAndInfo__Member_u choice; +83c82,87 +< } ) list; +--- +> }; +> +> /* SystemInformation-r8-IEs */ +> typedef struct SystemInformation_r8_IEs { +> struct SystemInformation_r8_IEs__sib_TypeAndInfo { +> A_SEQUENCE_OF(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member) list; diff --git a/cmake_targets/tools/fix_asn1.data/S1AP.rel10.5/NativeInteger.c.diff b/cmake_targets/tools/fix_asn1.data/S1AP.rel10.5/NativeInteger.c.diff new file mode 100644 index 0000000000000000000000000000000000000000..3b51426ad3fa008bec5131cd68d2bb0ea99d7750 --- /dev/null +++ b/cmake_targets/tools/fix_asn1.data/S1AP.rel10.5/NativeInteger.c.diff @@ -0,0 +1,8 @@ +283c283 +< int dynamic = 0; +--- +> //int dynamic = 0; +290c290 +< dynamic = 1; +--- +> //dynamic = 1; diff --git a/cmake_targets/tools/fix_asn1.data/S1AP.rel10.5/constr_SET_OF.c.diff b/cmake_targets/tools/fix_asn1.data/S1AP.rel10.5/constr_SET_OF.c.diff new file mode 100644 index 0000000000000000000000000000000000000000..3ceaf5e3e5ccef48746cf5abf2952aa0c6910224 --- /dev/null +++ b/cmake_targets/tools/fix_asn1.data/S1AP.rel10.5/constr_SET_OF.c.diff @@ -0,0 +1,4 @@ +1007c1007 +< (int)nelems, (int)ct ? ct->effective_bits : -1); +--- +> (int)nelems, ct ? ct->effective_bits : -1); diff --git a/cmake_targets/tools/fix_asn1.data/X2AP.rel11.2/NativeInteger.c.diff b/cmake_targets/tools/fix_asn1.data/X2AP.rel11.2/NativeInteger.c.diff new file mode 100644 index 0000000000000000000000000000000000000000..3b51426ad3fa008bec5131cd68d2bb0ea99d7750 --- /dev/null +++ b/cmake_targets/tools/fix_asn1.data/X2AP.rel11.2/NativeInteger.c.diff @@ -0,0 +1,8 @@ +283c283 +< int dynamic = 0; +--- +> //int dynamic = 0; +290c290 +< dynamic = 1; +--- +> //dynamic = 1; diff --git a/cmake_targets/tools/fix_asn1.data/X2AP.rel11.2/X2ap-CriticalityDiagnostics-IE-List.h.diff b/cmake_targets/tools/fix_asn1.data/X2AP.rel11.2/X2ap-CriticalityDiagnostics-IE-List.h.diff new file mode 100644 index 0000000000000000000000000000000000000000..6ea7b2454eb80b1cf1c34b9bd4c320b20b6f6dd8 --- /dev/null +++ b/cmake_targets/tools/fix_asn1.data/X2AP.rel11.2/X2ap-CriticalityDiagnostics-IE-List.h.diff @@ -0,0 +1,15 @@ +29,31c29 +< /* X2ap-CriticalityDiagnostics-IE-List */ +< typedef struct X2ap_CriticalityDiagnostics_IE_List { +< A_SEQUENCE_OF(struct X2ap_CriticalityDiagnostics_IE_List__Member { +--- +> struct X2ap_CriticalityDiagnostics_IE_List__Member { +43c41,46 +< } ) list; +--- +> }; +> +> /* X2ap-CriticalityDiagnostics-IE-List */ +> typedef struct X2ap_CriticalityDiagnostics_IE_List { +> A_SEQUENCE_OF(struct X2ap_CriticalityDiagnostics_IE_List__Member +> ) list; diff --git a/cmake_targets/tools/fix_asn1.data/X2AP.rel11.2/constr_SET_OF.c.diff b/cmake_targets/tools/fix_asn1.data/X2AP.rel11.2/constr_SET_OF.c.diff new file mode 100644 index 0000000000000000000000000000000000000000..3ceaf5e3e5ccef48746cf5abf2952aa0c6910224 --- /dev/null +++ b/cmake_targets/tools/fix_asn1.data/X2AP.rel11.2/constr_SET_OF.c.diff @@ -0,0 +1,4 @@ +1007c1007 +< (int)nelems, (int)ct ? ct->effective_bits : -1); +--- +> (int)nelems, ct ? ct->effective_bits : -1); diff --git a/cmake_targets/tools/test_helper b/cmake_targets/tools/test_helper index 49a991057373dde600a7d7e098de916cb1bd5270..cae0bacbe030578fbd3d4a98ea7cdbe792a64dbb 100644 --- a/cmake_targets/tools/test_helper +++ b/cmake_targets/tools/test_helper @@ -35,7 +35,7 @@ xUnit_fail() { currtime=$(date +%s.%N) time=$(echo "$currtime - $XUNIT_START" | bc -l) xml="<testcase classname='$class' name='$test_case' Run_result='$run_result' time='$time s' RESULT='$result'></testcase>" - echo -e $xml >> $xmlfile_testcase + echo -e "$xml" >> "$xmlfile_testcase" XUNIT_TESTCASES_XML="$XUNIT_TESTCASES_XML \n$xml" XUNIT_FAILED=$((XUNIT_FAILED+1)) } diff --git a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c index 493ff11d33c6b4b9cd0d3473d5f73f178514e459..e6033d50579334141b3483605eb5c2578c9468e1 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c @@ -229,6 +229,12 @@ void rx_sdu( switch (rx_lcids[i]) { case CCCH : + if (rx_lengths[i] > CCCH_PAYLOAD_SIZE_MAX) { + LOG_E(MAC, "[eNB %d/%d] frame %d received CCCH of size %d (too big, maximum allowed is %d), dropping packet\n", + enb_mod_idP, CC_idP, frameP, rx_lengths[i], CCCH_PAYLOAD_SIZE_MAX); + break; + } + LOG_I(MAC,"[eNB %d][RAPROC] CC_id %d Frame %d, Received CCCH: %x.%x.%x.%x.%x.%x, Terminating RA procedure for UE rnti %x\n", enb_mod_idP,CC_idP,frameP, payload_ptr[0],payload_ptr[1],payload_ptr[2],payload_ptr[3],payload_ptr[4], payload_ptr[5], rntiP); @@ -302,26 +308,23 @@ void rx_sdu( #endif if (UE_id != -1) { - // This check is just to make sure we didn't get a bogus SDU length, to be removed ... - if (rx_lengths[i]<CCCH_PAYLOAD_SIZE_MAX) { - LOG_D(MAC,"[eNB %d] CC_id %d Frame %d : ULSCH -> UL-DCCH, received %d bytes form UE %d on LCID %d \n", - enb_mod_idP,CC_idP,frameP, rx_lengths[i], UE_id, rx_lcids[i]); - - mac_rlc_data_ind( - enb_mod_idP, - rntiP, - enb_mod_idP, - frameP, - ENB_FLAG_YES, - MBMS_FLAG_NO, - rx_lcids[i], - (char *)payload_ptr, - rx_lengths[i], - 1, - NULL);//(unsigned int*)crc_status); - UE_list->eNB_UE_stats[CC_idP][UE_id].num_pdu_rx[rx_lcids[i]]+=1; - UE_list->eNB_UE_stats[CC_idP][UE_id].num_bytes_rx[rx_lcids[i]]+=rx_lengths[i]; - } + LOG_D(MAC,"[eNB %d] CC_id %d Frame %d : ULSCH -> UL-DCCH, received %d bytes form UE %d on LCID %d \n", + enb_mod_idP,CC_idP,frameP, rx_lengths[i], UE_id, rx_lcids[i]); + + mac_rlc_data_ind( + enb_mod_idP, + rntiP, + enb_mod_idP, + frameP, + ENB_FLAG_YES, + MBMS_FLAG_NO, + rx_lcids[i], + (char *)payload_ptr, + rx_lengths[i], + 1, + NULL);//(unsigned int*)crc_status); + UE_list->eNB_UE_stats[CC_idP][UE_id].num_pdu_rx[rx_lcids[i]]+=1; + UE_list->eNB_UE_stats[CC_idP][UE_id].num_bytes_rx[rx_lcids[i]]+=rx_lengths[i]; } /* UE_id != -1 */ // } diff --git a/targets/ARCH/COMMON/common_lib.c b/targets/ARCH/COMMON/common_lib.c index e4ee06d0a480ac8d86123cd6fe536745a381b360..dea02f2bba2b50c7ac421480782a1f547cccb4c9 100644 --- a/targets/ARCH/COMMON/common_lib.c +++ b/targets/ARCH/COMMON/common_lib.c @@ -103,14 +103,18 @@ int load_lib(openair0_device *device, openair0_config_t *openair0_cfg, eth_param if (flag == BBU_LOCAL_RADIO_HEAD) { lib_handle = dlopen(OAI_RF_LIBNAME, RTLD_LAZY); if (!lib_handle) { - printf( "Unable to locate %s: HW device set to NONE_DEV.\n", OAI_RF_LIBNAME); - return 0; + fprintf(stderr,"Unable to locate %s: HW device set to NONE_DEV.\n", OAI_RF_LIBNAME); + fprintf(stderr,"%s\n",dlerror()); + return -1; } dp = dlsym(lib_handle,"device_init"); if (dp != NULL ) { - dp(device,openair0_cfg); + if (dp(device,openair0_cfg)!=0) { + fprintf(stderr,"Error initializing device\n"); + return -1; + } } else { fprintf(stderr, "%s %d:oai device intializing function not found %s\n", __FILE__, __LINE__, dlerror()); return -1; @@ -119,7 +123,8 @@ int load_lib(openair0_device *device, openair0_config_t *openair0_cfg, eth_param lib_handle = dlopen(OAI_TP_LIBNAME, RTLD_LAZY); if (!lib_handle) { printf( "Unable to locate %s: transport protocol set to NONE_TP.\n", OAI_TP_LIBNAME); - return 0; + printf( "%s\n",dlerror()); + return -1; } tp = dlsym(lib_handle,"transport_init"); @@ -152,7 +157,7 @@ int openair0_device_load(openair0_device *device, openair0_config_t *openair0_cf } } #endif - return 0; + return rc; } int openair0_transport_load(openair0_device *device, openair0_config_t *openair0_cfg, eth_params_t * eth_params) { @@ -164,7 +169,7 @@ int openair0_transport_load(openair0_device *device, openair0_config_t *openair0 return -1; } } - return 0; + return rc; } diff --git a/targets/ARCH/LMSSDR/USERSPACE/LIB/Si5351C/CMakeLists.txt b/targets/ARCH/LMSSDR/USERSPACE/LIB/Si5351C/CMakeLists.txt index 88a021ae001b40c2992653227425b50a70de9f0e..c331185e1738799cacd04857d5e7d34448f4022a 100644 --- a/targets/ARCH/LMSSDR/USERSPACE/LIB/Si5351C/CMakeLists.txt +++ b/targets/ARCH/LMSSDR/USERSPACE/LIB/Si5351C/CMakeLists.txt @@ -2,7 +2,7 @@ set(si5351_src_files Si5351C.cpp ) set(CMAKE_CXX_FLAGS - "${CMAKE_CXX_FLAGS} ${C_FLAGS_PROCESSOR} -std=c++11 " + "${CMAKE_CXX_FLAGS} ${C_FLAGS_PROCESSOR} -std=c++11 -fPIC" ) diff --git a/targets/ARCH/LMSSDR/USERSPACE/LIB/lms7002m/CMakeLists.txt b/targets/ARCH/LMSSDR/USERSPACE/LIB/lms7002m/CMakeLists.txt index cea22ac8292c7cf8ca74e571df33cd774693667c..4613e9ce72b93fdf302268fdfc273de46b7cb780 100644 --- a/targets/ARCH/LMSSDR/USERSPACE/LIB/lms7002m/CMakeLists.txt +++ b/targets/ARCH/LMSSDR/USERSPACE/LIB/lms7002m/CMakeLists.txt @@ -9,7 +9,7 @@ if(${CMAKE_MAJOR_VERSION} GREATER 2) endif() ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS) if(CMAKE_COMPILER_IS_GNUCXX) - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -fPIC") endif() # set up include-directories diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf index 3043256628a092f51a9ca5b6121b029a298eb362..1ea7b647404ebe08dd75b6b91016c80afade717b 100644 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf @@ -144,7 +144,6 @@ eNBs = ENB_INTERFACE_NAME_FOR_S1U = "eth0:4"; ENB_IPV4_ADDRESS_FOR_S1U = "192.170.1.2/24"; - ENB_IPV4_ADDRESS_FOR_S1U = "192.170.0.2/24"; ENB_PORT_FOR_S1U = 2152; # Spec 2152 }; @@ -167,4 +166,4 @@ eNBs = }; } -); +); \ No newline at end of file