diff --git a/cmake_targets/autotests/run_exec_autotests.bash b/cmake_targets/autotests/run_exec_autotests.bash index a622b07efb050abc0ac2eb0af3237539dfff0a1b..a98a071bae39a3e1d539e2f5897dd7eb4a36fefc 100755 --- a/cmake_targets/autotests/run_exec_autotests.bash +++ b/cmake_targets/autotests/run_exec_autotests.bash @@ -12,7 +12,7 @@ trap handle_ctrl_c INT source $OPENAIR_DIR/cmake_targets/tools/test_helper -#SUDO="sudo -E " +SUDO="sudo -E -S" tdir=$OPENAIR_DIR/cmake_targets/autotests rm -fr $tdir/bin mkdir -p $tdir/bin @@ -404,14 +404,12 @@ until [ -z "$1" ] esac done -if [ "$SET_PASSWORD" == "1" ]; then - mypassword=$passwd -else - read -s -p "Enter Password: " mypassword +if [ "$SET_PASSWORD" != "1" ]; then + read -s -p "Enter Password: " passwd fi tmpfile=`mktemp` -echo \'$passwd\' | $SUDO echo $HOME >& $tmpfile +echo $passwd | $SUDO echo $HOME > $tmpfile tstsudo=`cat $tmpfile` if [ "$tstsudo" != "$HOME" ]; then echo "$USER might not have sudo privileges. Exiting" @@ -509,7 +507,7 @@ for search_expr in "${test_case_array[@]}" if [ "$class" == "compilation" ]; then test_compile "$name" "$compile_prog" "$compile_prog_args" "$pre_exec" "$pre_exec_args" "$main_exec" "$main_exec_args" "search_array_true[@]" "$search_expr_false" "$nruns" "$pre_compile_prog" "$class" "$compile_prog_out" "$tags" elif [ "$class" == "execution" ]; then - $SUDO killall -q oaisim_nos1 + echo \'passwd\' | $SUDO killall -q oaisim_nos1 test_compile_and_run "$name" "$compile_prog" "$compile_prog_args" "$pre_exec" "$pre_exec_args" "$main_exec" "$main_exec_args" "search_array_true[@]" "$search_expr_false" "$nruns" "$pre_compile_prog" "$class" "$compile_prog_out" "$tags" "$mypassword" "$test_config_file" else echo "Unexpected class of test case...Skipping the test case $name ...." diff --git a/cmake_targets/autotests/test_case_list.xml b/cmake_targets/autotests/test_case_list.xml index 8478d6b898adef18c21518bd46b0072064035ba7..4e6ca873cbf093fc592a7db20ccec99d20177184 100644 --- a/cmake_targets/autotests/test_case_list.xml +++ b/cmake_targets/autotests/test_case_list.xml @@ -10,7 +10,7 @@ <CleanUpAluLteBox>sudo -S -E /opt/ltebox/tools/stop_ltebox</CleanUpAluLteBox> <ExmimoRfStop>$OPENAIR_DIR/cmake_targets/build_oai -w EXMIMO -c; sudo -S -E $OPENAIR_DIR/cmake_targets/tools/stop_exmimo2; uname -a; dmesg|tail</ExmimoRfStop> <Timeout_execution>36000</Timeout_execution> - <TestCaseExclusionList>0102+ 0104+ 015502 015505 015506 015507 015508 015509 015510 015511 015602 015605 015702 015705 015802 015805 016002 016005 016102 016105 016302 016305 016502 016505 017002 017005 017502 017505</TestCaseExclusionList> + <TestCaseExclusionList>0102+ 010304 010305 0104+ 015502 015505 015506 015507 015508 015509 015510 015511 015602 015605 015702 015705 015802 015805 0159+ 0160+ 0161+ 0162+ 0163+ 0165+ 0170+ 0175+</TestCaseExclusionList> <nruns_lte-softmodem>3</nruns_lte-softmodem> <MachineListGeneric>mozart calisson stevens nano amerique</MachineListGeneric> <testCase id="010101" > @@ -329,22 +329,19 @@ <testCase id="010200"> <class>execution</class> <desc>Run OAISIM Rel10 TDD, 1 eNB + 1 UE (5 MHz/10MHz/20MHz), (TM 1,2) and search for errors, segmentation fault or exit</desc> - <pre_compile_prog>cp -vf $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf </pre_compile_prog> + <pre_compile_prog>cp -vf $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.generic.oaisim.local_no_mme.conf $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf </pre_compile_prog> <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog> <compile_prog_args>--oaisim --noS1 -c </compile_prog_args> <pre_exec>$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1</pre_exec> <pre_exec_args></pre_exec_args> - <test_config_file>$OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf frame_type \"TDD\" - $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf eutra_band 38 - $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf downlink_frequency 2580000000L - $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf uplink_frequency_offset 0</test_config_file> + <test_config_file></test_config_file> <main_exec>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1</main_exec> - <main_exec_args> -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 1 - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50 -x 1 - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100 -x 1 - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 2 - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50 -x 2 - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100 -x 2 </main_exec_args> + <main_exec_args> -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 1 -s15 + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50 -x 1 -s15 + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100 -x 1 -s15 + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 2 -s15 + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50 -x 2 -s15 + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100 -x 2 -s15 </main_exec_args> <tags>oaisim_noS1.tdd.5MHz.TM1 oaisim_noS1.tdd.10MHz.TM1 oaisim_noS1.tdd.20MHz.TM1 oaisim_noS1.tdd.5MHz.TM2 oaisim_noS1.tdd.10MHz.TM2 oaisim_noS1.tdd.20MHz.TM2</tags> <search_expr_true>"Received RRCConnectionReconfigurationComplete from UE 0"</search_expr_true> <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false> @@ -354,22 +351,19 @@ <testCase id="010201"> <class>execution</class> <desc>Run OAISIM Rel10 TDD, 1 eNB + 1 UE (5 MHz/10MHz/20MHz), (TM 1,2) in PHY_ABSTRACTION mode and search for errors, segmentation fault or exit</desc> - <pre_compile_prog>cp -vf $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf </pre_compile_prog> + <pre_compile_prog>cp -vf $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.generic.oaisim.local_no_mme.conf $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf </pre_compile_prog> <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog> <compile_prog_args>--oaisim --noS1 -c </compile_prog_args> - <test_config_file>$OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf frame_type \"TDD\" - $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf eutra_band 38 - $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf downlink_frequency 2580000000L - $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf uplink_frequency_offset 0</test_config_file> + <test_config_file></test_config_file> <pre_exec>$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1</pre_exec> <pre_exec_args></pre_exec_args> <main_exec>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1</main_exec> - <main_exec_args> -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 1 -a - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50 -x 1 -a - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100 -x 1 -a - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 2 -a - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50 -x 2 -a - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100 -x 2 -a </main_exec_args> + <main_exec_args> -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 1 -a -s15 + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50 -x 1 -a -s15 + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100 -x 1 -a -s15 + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 2 -a -s15 + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50 -x 2 -a -s15 + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100 -x 2 -a -s15 </main_exec_args> <tags>oaisim_noS1.tdd.5MHz.TM1 oaisim_noS1.tdd.10MHz.TM1 oaisim_noS1.tdd.20MHz.TM1 oaisim_noS1.tdd.5MHz.TM2 oaisim_noS1.tdd.10MHz.TM2 oaisim_noS1.tdd.20MHz.TM2</tags> <search_expr_true>"Received RRCConnectionReconfigurationComplete from UE 0"</search_expr_true> <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false> @@ -379,22 +373,19 @@ <testCase id="010202"> <class>execution</class> <desc>Run OAISIM Rel10 TDD, 1 eNB + 3 UEs (5 MHz/10MHz/20MHz), (TM 1,2) and search for errors, segmentation fault or exit</desc> -<pre_compile_prog>cp -vf $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf </pre_compile_prog> +<pre_compile_prog>cp -vf $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.generic.oaisim.local_no_mme.conf $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf </pre_compile_prog> <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog> <compile_prog_args>--oaisim --noS1 -c </compile_prog_args> - <test_config_file>$OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf frame_type \"TDD\" - $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf eutra_band 38 - $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf downlink_frequency 2580000000L - $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf uplink_frequency_offset 0</test_config_file> + <test_config_file></test_config_file> <pre_exec>$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1</pre_exec> <pre_exec_args></pre_exec_args> <main_exec>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1</main_exec> - <main_exec_args> -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 1 - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 1 - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 1 - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 2 - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 2 - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 2</main_exec_args> + <main_exec_args> -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 1 -s15 + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 1 -s15 + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 1 -s15 + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 2 -s15 + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 2 -s15 + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 2 -s15 </main_exec_args> <tags>oaisim_noS1.tdd.5MHz.TM1 oaisim_noS1.tdd.10MHz.TM1 oaisim_noS1.tdd.20MHz.TM1 oaisim_noS1.tdd.5MHz.TM2 oaisim_noS1.tdd.10MHz.TM2 oaisim_noS1.tdd.20MHz.TM2 </tags> <search_expr_true>"Received RRCConnectionReconfigurationComplete from UE 0" "Received RRCConnectionReconfigurationComplete from UE 1" "Received RRCConnectionReconfigurationComplete from UE 2"</search_expr_true> <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false> @@ -404,22 +395,19 @@ <testCase id="010203"> <class>execution</class> <desc>Run OAISIM Rel10 TDD, 1 eNB + 3 UEs (5 MHz) in PHY_ABSTRACTION mode and search for errors, segmentation fault or exit</desc> - <pre_compile_prog>cp -vf $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf </pre_compile_prog> + <pre_compile_prog>cp -vf $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.generic.oaisim.local_no_mme.conf $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf </pre_compile_prog> <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog> <compile_prog_args>--oaisim --noS1 -c </compile_prog_args> - <test_config_file>$OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf frame_type \"TDD\" - $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf eutra_band 38 - $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf downlink_frequency 2580000000L - $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf uplink_frequency_offset 0</test_config_file> + <test_config_file></test_config_file> <pre_exec>$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1</pre_exec> <pre_exec_args></pre_exec_args> <main_exec>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1</main_exec> - <main_exec_args> -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 1 -a - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 1 -a - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 1 -a - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 2 -a - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 2 -a - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 2 -a</main_exec_args> + <main_exec_args> -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 1 -a -s15 + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 1 -a -s15 + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 1 -a -s15 + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 2 -a -s15 + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 2 -a -s15 + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 2 -a -s15</main_exec_args> <tags>oaisim_noS1.tdd.5MHz.TM1 oaisim_noS1.tdd.10MHz.TM1 oaisim_noS1.tdd.20MHz.TM1 oaisim_noS1.tdd.5MHz.TM2 oaisim_noS1.tdd.10MHz.TM2 oaisim_nos1.tdd.20MHz.TM2</tags> <search_expr_true>"Received RRCConnectionReconfigurationComplete from UE 0" "Received RRCConnectionReconfigurationComplete from UE 1" "Received RRCConnectionReconfigurationComplete from UE 2"</search_expr_true> <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false> @@ -429,22 +417,19 @@ <testCase id="010204"> <class>execution</class> <desc>Run OAI Rel10 TDD, 1 eNB + 1 UE (5 MHz) without abstraction mode, send ping from from eNB to UE, and check that there is no packet losses</desc> - <pre_compile_prog>cp -vf $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf </pre_compile_prog> + <pre_compile_prog>cp -vf $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.generic.oaisim.local_no_mme.conf $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf </pre_compile_prog> <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog> <compile_prog_args>--oaisim --noS1 -c </compile_prog_args> <pre_exec>$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1</pre_exec> <pre_exec_args></pre_exec_args> - <test_config_file>$OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf frame_type \"TDD\" - $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf eutra_band 38 - $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf downlink_frequency 2580000000L - $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf uplink_frequency_offset 0</test_config_file> + <test_config_file></test_config_file> <main_exec>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1</main_exec> - <main_exec_args> -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 1 -c26 - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 1 -c26 - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 1 -c26 - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 2 -c26 - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 2 -c26 - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 2 -c26</main_exec_args> + <main_exec_args> -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 1 -c26 + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 1 -c26 + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 1 -c26 + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 2 -c26 + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 2 -c26 + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 2 -c26</main_exec_args> <tags>oaisim_noS1.tdd.5MHz.TM1 oaisim_noS1.tdd.10MHz.TM1 oaisim_noS1.tdd.20MHz.TM1 oaisim_noS1.tdd.5MHz.TM2 oaisim_noS1.tdd.10MHz.TM2 oaisim_noS1.tdd.20MHz.TM2 </tags> <search_expr_true>"DL and UL loss rate below 10"</search_expr_true> <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false> @@ -454,22 +439,19 @@ <testCase id="010205"> <class>execution</class> <desc>Run OAI Rel10 TDD, 1 eNB + 1 UE (5 MHz) in PHY_ABSTRACTION mode, send ping from from eNB to UE, and check that there is no packet losses</desc> - <pre_compile_prog>cp -vf $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf </pre_compile_prog> + <pre_compile_prog>cp -vf $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.generic.oaisim.local_no_mme.conf $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf </pre_compile_prog> <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog> <compile_prog_args>--oaisim --noS1 -c </compile_prog_args> <pre_exec>$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1</pre_exec> <pre_exec_args></pre_exec_args> - <test_config_file>$OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf frame_type \"TDD\" - $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf eutra_band 38 - $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf downlink_frequency 2580000000L - $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf uplink_frequency_offset 0</test_config_file> + <test_config_file></test_config_file> <main_exec>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1</main_exec> - <main_exec_args> -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 1 -c26 -a - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 1 -c26 -a - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 1 -c26 -a - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 2 -c26 -a - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 2 -c26 -a - -O $OPENAIR_LOGDIR/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 2 -c26 -a</main_exec_args> + <main_exec_args> -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 1 -c26 -a + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 1 -c26 -a + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 1 -c26 -a + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 2 -c26 -a + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 2 -c26 -a + -O $OPENAIR_LOGDIR/enb.band38.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 2 -c26 -a</main_exec_args> <tags>oaisim_noS1.tdd.5MHz.TM1 oaisim_noS1.tdd.10MHz.TM1 oaisim_noS1.tdd.20MHz.TM1 oaisim_noS1.tdd.5MHz.TM2 oaisim_noS1.tdd.10MHz.TM2 oaisim_noS1.tdd.20MHz.TM2 </tags> <search_expr_true>"DL and UL loss rate below 10"</search_expr_true> <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false> @@ -485,12 +467,12 @@ <pre_exec>$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1</pre_exec> <pre_exec_args></pre_exec_args> <main_exec>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1</main_exec> - <main_exec_args> -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 1 -F - -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50 -x 1 -F - -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100 -x 1 -F - -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 2 -F - -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50 -x 2 -F - -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100 -x 2 -F</main_exec_args> + <main_exec_args> -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 1 -F -s15 + -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50 -x 1 -F -s15 + -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100 -x 1 -F -s15 + -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 2 -F -s15 + -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50 -x 2 -F -s15 + -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100 -x 2 -F -s15</main_exec_args> <tags>oaisim_noS1.FDD.5MHz.TM1 oaisim_noS1.FDD.10MHz.TM1 oaisim_noS1.FDD.20MHz.TM1 oaisim_noS1.FDD.5MHz.TM2 oaisim_noS1.FDD.10MHz.TM2 oaisim_noS1.FDD.20MHz.TM2</tags> <search_expr_true>"Received RRCConnectionReconfigurationComplete from UE 0"</search_expr_true> <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false> @@ -506,12 +488,12 @@ <pre_exec>$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1</pre_exec> <pre_exec_args></pre_exec_args> <main_exec>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1</main_exec> - <main_exec_args> -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 1 -F -a - -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50 -x 1 -F -a - -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100 -x 1 -F -a - -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 2 -F -a - -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50 -x 2 -F -a - -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100 -x 2 -F -a</main_exec_args> + <main_exec_args> -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 1 -F -a -s15 + -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50 -x 1 -F -a -s15 + -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100 -x 1 -F -a -s15 + -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 2 -F -a -s15 + -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50 -x 2 -F -a -s15 + -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100 -x 2 -F -a -s15</main_exec_args> <tags>oaisim_noS1.FDD.5MHz.TM1 oaisim_noS1.FDD.10MHz.TM1 oaisim_noS1.FDD.20MHz.TM1 oaisim_noS1.FDD.5MHz.TM2 oaisim_noS1.FDD.10MHz.TM2 oaisim_noS1.FDD.20MHz.TM2</tags> <search_expr_true>"Received RRCConnectionReconfigurationComplete from UE 0"</search_expr_true> <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false> @@ -527,12 +509,12 @@ <pre_exec>$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1</pre_exec> <pre_exec_args></pre_exec_args> <main_exec>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1</main_exec> - <main_exec_args> -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 1 -F - -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 1 -F - -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 1 -F - -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 2 -F - -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 2 -F - -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 2 -F </main_exec_args> + <main_exec_args> -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 1 -F -s15 + -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 1 -F -s15 + -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 1 -F -s15 + -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 2 -F -s15 + -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 2 -F -s15 + -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 2 -F -s15</main_exec_args> <tags>oaisim_noS1.FDD.5MHz.TM1 oaisim_noS1.FDD.10MHz.TM1 oaisim_noS1.FDD.20MHz.TM1 oaisim_noS1.FDD.5MHz.TM2 oaisim_noS1.FDD.10MHz.TM2 oaisim_noS1.FDD.20MHz.TM2 </tags> <search_expr_true>"Received RRCConnectionReconfigurationComplete from UE 0" "Received RRCConnectionReconfigurationComplete from UE 1" "Received RRCConnectionReconfigurationComplete from UE 2"</search_expr_true> <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false> @@ -548,12 +530,12 @@ <pre_exec>$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1</pre_exec> <pre_exec_args></pre_exec_args> <main_exec>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1</main_exec> - <main_exec_args> -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 1 -F -a - -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 1 -F -a - -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 1 -F -a - -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 2 -F -a - -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 2 -F -a - -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 2 -F -a</main_exec_args> + <main_exec_args> -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 1 -F -a -s15 + -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 1 -F -a -s15 + -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 1 -F -a -s15 + -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 2 -F -a -s15 + -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 2 -F -a -s15 + -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 2 -F -a -s15</main_exec_args> <tags>oaisim_noS1.FDD.5MHz.TM1 oaisim_noS1.FDD.10MHz.TM1 oaisim_noS1.FDD.20MHz.TM1 oaisim_noS1.FDD.5MHz.TM2 oaisim_noS1.FDD.10MHz.TM2 oaisim_noS1.FDD.20MHz.TM2</tags> <search_expr_true>"Received RRCConnectionReconfigurationComplete from UE 0" "Received RRCConnectionReconfigurationComplete from UE 1" "Received RRCConnectionReconfigurationComplete from UE 2"</search_expr_true> <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false> diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai index 6300e9ec03760071fbee9ba3c33975d74a3c9417..821b3bca274cf0f08affbbd337511e6fd015c7fa 100755 --- a/cmake_targets/build_oai +++ b/cmake_targets/build_oai @@ -42,13 +42,13 @@ THIS_SCRIPT_PATH=$(dirname $(readlink -f $0)) source $THIS_SCRIPT_PATH/tools/build_helper MSC_GEN="False" -XFORMS="False" +XFORMS="True" PRINT_STATS="False" VCD_TIMING="False" LOWLATENCY_FLAG_USER="False" FORCE_LOWLATENCY_FLAG_USER="" REL="Rel10" -HW="EXMIMO" +HW="None" TP="None" NOS1=0 EPC=0 @@ -91,7 +91,7 @@ Options default is Rel10, Rel8 limits the implementation to 3GPP Release 8 version -w | --hardware - EXMIMO (Default), USRP, BLADERF, LMSSDR, None + EXMIMO, USRP, BLADERF, ETHERNET, LMSSDR, None (Default) Adds this RF board support (in external packages installation and in compilation) -t | --transport protocol ETHERNET , None @@ -760,9 +760,9 @@ fi rm -fr $OPENAIR_DIR/cmake_targets/autotests/log mkdir -p $OPENAIR_DIR/cmake_targets/autotests/log if [ "$RUN_GROUP" -eq "1" ]; then - $OPENAIR_DIR/cmake_targets/autotests/run_exec_autotests.bash -g "$TEST_CASE_GROUP" -p '$mypassword' >& $OPENAIR_DIR/cmake_targets/autotests/log/autotests.log & + $OPENAIR_DIR/cmake_targets/autotests/run_exec_autotests.bash -g "$TEST_CASE_GROUP" -p $mypassword >& $OPENAIR_DIR/cmake_targets/autotests/log/autotests.log & else - $OPENAIR_DIR/cmake_targets/autotests/run_exec_autotests.bash -p '$mypassword' >& $OPENAIR_DIR/cmake_targets/autotests/log/autotests.log & + $OPENAIR_DIR/cmake_targets/autotests/run_exec_autotests.bash -p $mypassword >& $OPENAIR_DIR/cmake_targets/autotests/log/autotests.log & fi wait else diff --git a/cmake_targets/lte-simulators/CMakeLists.txt b/cmake_targets/lte-simulators/CMakeLists.txt index 7a0e84b425a8d7493e221ab3e256e7b7486e138f..0b706c8748eae45600e328daef5f39038396170d 100644 --- a/cmake_targets/lte-simulators/CMakeLists.txt +++ b/cmake_targets/lte-simulators/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 2.8) set(PACKAGE_NAME "unitary_tests_simulators") set(PHYSIM True) set(RF_BOARD None) -set(XFORMS False) +set(XFORMS True) set(DEBUG_PHY False) set(MU_RECIEVER False) diff --git a/cmake_targets/tools/run_enb_s1_usrp b/cmake_targets/tools/run_enb_s1_usrp index 01f4156071b828ce414fb0718361579bb6091785..5bb7ef151f5d6a5e7d5d0f6f4912321d0fc1ea68 100755 --- a/cmake_targets/tools/run_enb_s1_usrp +++ b/cmake_targets/tools/run_enb_s1_usrp @@ -29,9 +29,9 @@ ################################################################################ # file run_enb_s1_usrp # brief run script for eNB USRP. -# author Lionel GAUTHIER +# author Lionel GAUTHIER and Navid Nikaein # company Eurecom -# email: lionel.gauthier@eurecom.fr +# email: lionel.gauthier@eurecom.fr and navid.nikaein@eurecom.fr ################################ @@ -56,6 +56,8 @@ function help() echo_error "Mandatory arguments to long options are mandatory for short options too." echo_error " -g, --gdb Run with GDB." echo_error " -h, --help Print this help." + echo_error " -e, --ulsch-max-errors num-errs maximum allowed number of uplink errors" + echo_error " -f, --rf-config-file filename RF specific configuration file" echo_error " -K, --itti-dump-file filename ITTI dump file containing all ITTI events occuring during EPC runtime.(can omit file name if last argument)" echo_error " -M, --target-dl-mcs mcs Downlink target MCS." echo_error " -m, --mscgen directory Generate mscgen output files in a directory" @@ -137,7 +139,27 @@ function main() shift; exit 0 ;; - -K | --itti-dump-file) + -e | --ulsch-max-errors) + ulsch_max_errors=$2 + echo "setting --ulsch-max-errors to $ulsch_max_errors" + exe_arguments="$exe_arguments --ulsch-max-errors=$ulsch_max_errors" + shift 2; + ;; + -f | --rf-config-file) + rf_config_file=$2 + # can omit file name if last arg on the line + if [ "x$rf_config_file" = "x" ]; then + rf_config_file=null + shift 1; + else + shift 2; + fi + if [ "$rf_config_file" != "null" ]; then + echo "setting --rf-config-file to $rf_config_file" + exe_arguments="$exe_arguments --rf-config-file=$rf_config_file" + fi + ;; + -K | --itti-dump-file) itti_dump_file=$2 # can omit file name if last arg on the line if [ "x$itti_dump_file" = "x" ]; then diff --git a/openair1/PHY/LTE_ESTIMATION/adjust_gain.c b/openair1/PHY/LTE_ESTIMATION/adjust_gain.c index 52f26a25629e447e6a9e086ea3d634d28257b199..ead0ed7d99288beee7d910e36389931113153f6e 100644 --- a/openair1/PHY/LTE_ESTIMATION/adjust_gain.c +++ b/openair1/PHY/LTE_ESTIMATION/adjust_gain.c @@ -38,23 +38,16 @@ extern int card; #endif void -phy_adjust_gain (PHY_VARS_UE *phy_vars_ue, uint8_t eNB_id) +phy_adjust_gain (PHY_VARS_UE *phy_vars_ue, uint32_t rx_power_fil_dB, uint8_t eNB_id) { - uint16_t rx_power_fil_dB; #ifdef EXMIMO exmimo_config_t *p_exmimo_config = openair0_exmimo_pci[card].exmimo_config_ptr; uint16_t i; #endif - int rssi; - - rssi = dB_fixed(phy_vars_ue->PHY_measurements.rssi); - - if (rssi>0) rx_power_fil_dB = rssi; - else rx_power_fil_dB = phy_vars_ue->PHY_measurements.rx_power_avg_dB[eNB_id]; LOG_D(PHY,"Gain control: rssi %d (%d,%d)\n", - rssi, + rx_power_fil_dB, phy_vars_ue->PHY_measurements.rssi, phy_vars_ue->PHY_measurements.rx_power_avg_dB[eNB_id] ); diff --git a/openair1/PHY/LTE_ESTIMATION/defs.h b/openair1/PHY/LTE_ESTIMATION/defs.h index 903793c2b57c3902e1c43f0c619d420ff36717e5..c20d24e34f2cb6ae324b87d13920617fdf889938 100644 --- a/openair1/PHY/LTE_ESTIMATION/defs.h +++ b/openair1/PHY/LTE_ESTIMATION/defs.h @@ -213,6 +213,7 @@ int8_t set_RSRQ_filtered(module_id_t Mod_id,uint8_t CC_id,uint8_t eNB_index,floa //! Automatic gain control void phy_adjust_gain (PHY_VARS_UE *phy_vars_ue, + uint32_t rx_power_fil_dB, unsigned char eNB_id); int lte_ul_channel_estimation(PHY_VARS_eNB *phy_vars_eNB, diff --git a/openair1/PHY/LTE_ESTIMATION/lte_sync_time.c b/openair1/PHY/LTE_ESTIMATION/lte_sync_time.c index 6e2311789eabe56d5adf61140a8dca98df309f54..edbdbda2d1986d915f195a9e544149a673e02afb 100644 --- a/openair1/PHY/LTE_ESTIMATION/lte_sync_time.c +++ b/openair1/PHY/LTE_ESTIMATION/lte_sync_time.c @@ -483,13 +483,10 @@ int lte_sync_time(int **rxdata, ///rx data in time domain *eNB_id = sync_source; -#ifdef DEBUG_PHY - msg("[PHY][UE] lte_sync_time: Sync source = %d, Peak found at pos %d, val = %d\n", - sync_source,peak_pos,peak_val); - - + LOG_D(PHY,"[UE] lte_sync_time: Sync source = %d, Peak found at pos %d, val = %d (%d dB)\n",sync_source,peak_pos,peak_val,dB_fixed(peak_val)/2); +#ifdef DEBUG_PHY if (debug_cnt == 0) { write_output("sync_corr0_ue.m","synccorr0",sync_corr_ue0,2*length,1,2); write_output("sync_corr1_ue.m","synccorr1",sync_corr_ue1,2*length,1,2); diff --git a/openair1/PHY/LTE_TRANSPORT/initial_sync.c b/openair1/PHY/LTE_TRANSPORT/initial_sync.c index b8be6305de316644fca26f37cded42365a0d2e2e..5a8463a86129888ba733e2dc142e868398a3dde4 100644 --- a/openair1/PHY/LTE_TRANSPORT/initial_sync.c +++ b/openair1/PHY/LTE_TRANSPORT/initial_sync.c @@ -280,7 +280,6 @@ int initial_sync(PHY_VARS_UE *phy_vars_ue, runmode_t mode) uint8_t flip_fdd_ncp,flip_fdd_ecp,flip_tdd_ncp,flip_tdd_ecp; // uint16_t Nid_cell_fdd_ncp=0,Nid_cell_fdd_ecp=0,Nid_cell_tdd_ncp=0,Nid_cell_tdd_ecp=0; LTE_DL_FRAME_PARMS *frame_parms = &phy_vars_ue->lte_frame_parms; - int i; int ret=-1; int aarx,rx_power=0; /*#ifdef OAI_USRP @@ -309,34 +308,6 @@ int initial_sync(PHY_VARS_UE *phy_vars_ue, runmode_t mode) LOG_I(PHY,"[UE%d] Initial sync : Estimated PSS position %d, Nid2 %d\n",phy_vars_ue->Mod_id,sync_pos,phy_vars_ue->lte_ue_common_vars.eNb_id); #endif - - for (aarx=0; aarx<frame_parms->nb_antennas_rx; aarx++) - rx_power += signal_energy(&phy_vars_ue->lte_ue_common_vars.rxdata[aarx][sync_pos2], - frame_parms->ofdm_symbol_size+frame_parms->nb_prefix_samples); - - phy_vars_ue->PHY_measurements.rx_power_avg_dB[0] = dB_fixed(rx_power/frame_parms->nb_antennas_rx); - -#ifdef DEBUG_INITIAL_SYNCH - LOG_I(PHY,"[UE%d] Initial sync : Estimated power: %d dB\n",phy_vars_ue->Mod_id,phy_vars_ue->PHY_measurements.rx_power_avg_dB[0] ); -#endif - -#ifdef EXMIMO - - if ((openair_daq_vars.rx_gain_mode == DAQ_AGC_ON) && - (mode != rx_calib_ue) && (mode != rx_calib_ue_med) && (mode != rx_calib_ue_byp) ) - //phy_adjust_gain(phy_vars_ue,0); - gain_control_all(phy_vars_ue->PHY_measurements.rx_power_avg_dB[0],0); - -#else -#ifndef OAI_USRP -#ifndef OAI_BLADERF -#ifndef OAI_LMSSDR - phy_adjust_gain(phy_vars_ue,0); -#endif -#endif -#endif -#endif - // SSS detection // PSS is hypothesized in last symbol of first slot in Frame @@ -525,20 +496,20 @@ int initial_sync(PHY_VARS_UE *phy_vars_ue, runmode_t mode) #endif if (phy_vars_ue->UE_scan_carrier == 0) { -#ifdef OPENAIR2 - LOG_I(PHY,"[UE%d] Sending synch status to higher layers\n",phy_vars_ue->Mod_id); - //mac_resynch(); - mac_xface->dl_phy_sync_success(phy_vars_ue->Mod_id,phy_vars_ue->frame_rx,0,1);//phy_vars_ue->lte_ue_common_vars.eNb_id); -#endif //OPENAIR2 - + if (phy_vars_ue->mac_enabled==1) { + LOG_I(PHY,"[UE%d] Sending synch status to higher layers\n",phy_vars_ue->Mod_id); + //mac_resynch(); + mac_xface->dl_phy_sync_success(phy_vars_ue->Mod_id,phy_vars_ue->frame_rx,0,1);//phy_vars_ue->lte_ue_common_vars.eNb_id); + phy_vars_ue->UE_mode[0] = PRACH; + } + else { + phy_vars_ue->UE_mode[0] = PUSCH; + } + generate_pcfich_reg_mapping(frame_parms); generate_phich_reg_mapping(frame_parms); // init_prach625(frame_parms); -#ifndef OPENAIR2 - phy_vars_ue->UE_mode[0] = PUSCH; -#else - phy_vars_ue->UE_mode[0] = PRACH; -#endif + //phy_vars_ue->lte_ue_pbch_vars[0]->pdu_errors=0; phy_vars_ue->lte_ue_pbch_vars[0]->pdu_errors_conseq=0; //phy_vars_ue->lte_ue_pbch_vars[0]->pdu_errors_last=0; @@ -592,6 +563,65 @@ int initial_sync(PHY_VARS_UE *phy_vars_ue, runmode_t mode) } + // gain control + if (ret!=0) { //we are not synched, so we cannot use rssi measurement (which is based on channel estimates) + rx_power = 0; + + // do a measurement on the best guess of the PSS + for (aarx=0; aarx<frame_parms->nb_antennas_rx; aarx++) + rx_power += signal_energy(&phy_vars_ue->lte_ue_common_vars.rxdata[aarx][sync_pos2], + frame_parms->ofdm_symbol_size+frame_parms->nb_prefix_samples); + + /* + // do a measurement on the full frame + for (aarx=0; aarx<frame_parms->nb_antennas_rx; aarx++) + rx_power += signal_energy(&phy_vars_ue->lte_ue_common_vars.rxdata[aarx][0], + frame_parms->samples_per_tti*10); + */ + + // we might add a low-pass filter here later + phy_vars_ue->PHY_measurements.rx_power_avg[0] = rx_power/frame_parms->nb_antennas_rx; + + phy_vars_ue->PHY_measurements.rx_power_avg_dB[0] = dB_fixed(phy_vars_ue->PHY_measurements.rx_power_avg[0]); + +#ifdef DEBUG_INITIAL_SYNCH + LOG_I(PHY,"[UE%d] Initial sync : Estimated power: %d dB\n",phy_vars_ue->Mod_id,phy_vars_ue->PHY_measurements.rx_power_avg_dB[0] ); +#endif + +#ifdef EXMIMO + if ((openair_daq_vars.rx_gain_mode == DAQ_AGC_ON) && + (mode != rx_calib_ue) && (mode != rx_calib_ue_med) && (mode != rx_calib_ue_byp) ) + //phy_adjust_gain(phy_vars_ue,0); + gain_control_all(phy_vars_ue->PHY_measurements.rx_power_avg_dB[0],0); + +#else +#ifndef OAI_USRP +#ifndef OAI_BLADERF +#ifndef OAI_LMSSDR + phy_adjust_gain(phy_vars_ue,phy_vars_ue->PHY_measurements.rx_power_avg_dB[0],0); +#endif +#endif +#endif +#endif + } + else { +#ifdef EXMIMO + if ((openair_daq_vars.rx_gain_mode == DAQ_AGC_ON) && + (mode != rx_calib_ue) && (mode != rx_calib_ue_med) && (mode != rx_calib_ue_byp) ) + //phy_adjust_gain(phy_vars_ue,0); + gain_control_all(dB_fixed(phy_vars_ue->PHY_measurements.rssi),0); + +#else +#ifndef OAI_USRP +#ifndef OAI_BLADERF +#ifndef OAI_LMSSDR + phy_adjust_gain(phy_vars_ue,dB_fixed(phy_vars_ue->PHY_measurements.rssi),0); +#endif +#endif +#endif +#endif + } + // exit_fun("debug exit"); return ret; } diff --git a/openair1/PHY/LTE_TRANSPORT/print_stats.c b/openair1/PHY/LTE_TRANSPORT/print_stats.c index 8f6483a3e39a62dfbde7e542336ff79c88cb6662..de5f05c879f8f46d4610e86b22c40b4fe9da97d8 100644 --- a/openair1/PHY/LTE_TRANSPORT/print_stats.c +++ b/openair1/PHY/LTE_TRANSPORT/print_stats.c @@ -107,10 +107,10 @@ int dump_ue_stats(PHY_VARS_UE *phy_vars_ue, char* buffer, int length, runmode_t len += sprintf(&buffer[len], "[UE PROC] timing_advance = %d\n",phy_vars_ue->timing_advance); if (phy_vars_ue->UE_mode[0]==PUSCH) { len += sprintf(&buffer[len], "[UE PROC] Po_PUSCH = %d dBm (PL %d dB, Po_NOMINAL_PUSCH %d dBm, PHR %d dB)\n", - PHY_vars_UE_g[0][0]->ulsch_ue[0]->Po_PUSCH, + phy_vars_ue->ulsch_ue[0]->Po_PUSCH, get_PL(phy_vars_ue->Mod_id,phy_vars_ue->CC_id,0), - mac_xface->get_Po_NOMINAL_PUSCH(phy_vars_ue->Mod_id,0), - PHY_vars_UE_g[0][0]->ulsch_ue[0]->PHR); + phy_vars_ue->lte_frame_parms.ul_power_control_config_common.p0_NominalPUSCH, + phy_vars_ue->ulsch_ue[0]->PHR); len += sprintf(&buffer[len], "[UE PROC] Po_PUCCH = %d dBm (Po_NOMINAL_PUCCH %d dBm, g_pucch %d dB)\n", get_PL(phy_vars_ue->Mod_id,phy_vars_ue->CC_id,0)+ phy_vars_ue->lte_frame_parms.ul_power_control_config_common.p0_NominalPUCCH+ @@ -582,9 +582,7 @@ int dump_eNB_stats(PHY_VARS_eNB *phy_vars_eNB, char* buffer, int length) len += sprintf(&buffer[len],"%4d ", phy_vars_eNB->PHY_measurements_eNB[eNB].n0_subband_power_tot_dBm[i]); if ((i>0) && ((i%25) == 0)) - len += sprintf(&buffer[len],"\n ", - phy_vars_eNB->PHY_measurements_eNB[eNB].n0_subband_power_tot_dBm[i]); - + len += sprintf(&buffer[len],"\n"); } len += sprintf(&buffer[len],"\n"); len += sprintf(&buffer[len],"\n[eNB PROC] PERFORMANCE PARAMETERS\n"); @@ -644,7 +642,6 @@ int dump_eNB_stats(PHY_VARS_eNB *phy_vars_eNB, char* buffer, int length) dB_fixed(phy_vars_eNB->eNB_UE_stats[UE_id].Po_PUCCH/phy_vars_eNB->lte_frame_parms.N_RB_UL)-phy_vars_eNB->rx_total_gain_eNB_dB, phy_vars_eNB->lte_frame_parms.ul_power_control_config_common.p0_NominalPUCCH, dB_fixed(phy_vars_eNB->eNB_UE_stats[UE_id].Po_PUCCH1_below/phy_vars_eNB->lte_frame_parms.N_RB_UL)-phy_vars_eNB->rx_total_gain_eNB_dB, - dB_fixed(phy_vars_eNB->eNB_UE_stats[UE_id].Po_PUCCH1_above/phy_vars_eNB->lte_frame_parms.N_RB_UL)-phy_vars_eNB->rx_total_gain_eNB_dB, PUCCH1_THRES+phy_vars_eNB->PHY_measurements_eNB[0].n0_power_tot_dBm-dB_fixed(phy_vars_eNB->lte_frame_parms.N_RB_UL), phy_vars_eNB->eNB_UE_stats[UE_id].sector); diff --git a/openair1/PHY/defs.h b/openair1/PHY/defs.h index f308c0500aca2bd6908625c9a63cee6947a21b1c..578b05634cfc40b15b2629fb25f4d1d10629fbeb 100755 --- a/openair1/PHY/defs.h +++ b/openair1/PHY/defs.h @@ -278,6 +278,9 @@ typedef struct PHY_VARS_eNB_s { int **dl_precoder_SeNB[3]; char log2_maxp; /// holds the maximum channel/precoder coefficient + /// if ==0 enables phy only test mode + int mac_enabled; + /// For emulation only (used by UE abstraction to retrieve DCI) uint8_t num_common_dci[2]; // num_dci in even/odd subframes uint8_t num_ue_spec_dci[2]; // num_dci in even/odd subframes @@ -579,6 +582,9 @@ typedef struct { /// holds the maximum channel/precoder coefficient char log2_maxp; + /// if ==0 enables phy only test mode + int mac_enabled; + /// Flag to initialize averaging of PHY measurements int init_averaging; diff --git a/openair1/SCHED/phy_mac_stub.c b/openair1/SCHED/phy_mac_stub.c new file mode 100644 index 0000000000000000000000000000000000000000..9bcba1072c300e8d71f9526c733c11c5ad466489 --- /dev/null +++ b/openair1/SCHED/phy_mac_stub.c @@ -0,0 +1,756 @@ +/******************************************************************************* + OpenAirInterface + Copyright(c) 1999 - 2014 Eurecom + + OpenAirInterface is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + + OpenAirInterface is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OpenAirInterface.The full GNU General Public License is + included in this distribution in the file called "COPYING". If not, + see <http://www.gnu.org/licenses/>. + + Contact Information + OpenAirInterface Admin: openair_admin@eurecom.fr + OpenAirInterface Tech : openair_tech@eurecom.fr + OpenAirInterface Dev : openair4g-devel@lists.eurecom.fr + + Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE + + *******************************************************************************/ + +/*! \file phy_mac_stub.c + * \brief stimulates the phy without mac + * \author R. Knopp, F. Kaltenberger, N. Nikaein + * \date 2011 + * \version 0.1 + * \company Eurecom + * \email: knopp@eurecom.fr,florian.kaltenberger@eurecom.fr,navid.nikaein@eurecom.fr + * \note + * \warning + */ + +#include "PHY/defs.h" +#include "PHY/extern.h" +#include "MAC_INTERFACE/defs.h" +#include "MAC_INTERFACE/extern.h" +#include "SCHED/defs.h" +#include "SCHED/extern.h" +#include "LAYER2/MAC/extern.h" + +#ifdef EMOS +#include "SCHED/phy_procedures_emos.h" +#endif + +void fill_dci(DCI_PDU *DCI_pdu, uint8_t sched_subframe, PHY_VARS_eNB *phy_vars_eNB) +{ + + int i; + uint8_t cooperation_flag = phy_vars_eNB->cooperation_flag; + uint8_t transmission_mode = phy_vars_eNB->transmission_mode[0]; + + uint32_t rballoc = 0x7FFF; + uint32_t rballoc2 = 0x000F; + int subframe = phy_vars_eNB->proc[sched_subframe].subframe_tx; + + LTE_eNB_DLSCH_t *DLSCH_ptr = phy_vars_eNB->dlsch_eNB[0][0]; + + /* + uint32_t rand = taus(); + if ((subframe==8) || (subframe==9) || (subframe==0)) + rand = (rand%5)+5; + else + rand = (rand%4)+5; + */ + uint32_t bcch_pdu; + uint64_t dlsch_pdu; + + DCI_pdu->Num_common_dci = 0; + DCI_pdu->Num_ue_spec_dci=0; + + switch (subframe) { + case 5: + DCI_pdu->Num_common_dci = 1; + DCI_pdu->dci_alloc[0].L = 2; + DCI_pdu->dci_alloc[0].rnti = SI_RNTI; + DCI_pdu->dci_alloc[0].format = format1A; + DCI_pdu->dci_alloc[0].ra_flag = 0; + + switch (phy_vars_eNB->lte_frame_parms.N_RB_DL) { + case 6: + if (phy_vars_eNB->lte_frame_parms.frame_type == FDD) { + DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1A_1_5MHz_FDD_t; + ((DCI1A_1_5MHz_FDD_t*)&bcch_pdu)->type = 1; + ((DCI1A_1_5MHz_FDD_t*)&bcch_pdu)->vrb_type = 0; + ((DCI1A_1_5MHz_FDD_t*)&bcch_pdu)->rballoc = computeRIV(25,10,3); + ((DCI1A_1_5MHz_FDD_t*)&bcch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; + ((DCI1A_1_5MHz_FDD_t*)&bcch_pdu)->rv = 1; + ((DCI1A_1_5MHz_FDD_t*)&bcch_pdu)->mcs = 1; + ((DCI1A_1_5MHz_FDD_t*)&bcch_pdu)->harq_pid = 0; + ((DCI1A_1_5MHz_FDD_t*)&bcch_pdu)->TPC = 1; // set to 3 PRB + memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],&bcch_pdu,sizeof(DCI1A_1_5MHz_TDD_1_6_t)); + } else { + DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1A_1_5MHz_TDD_1_6_t; + ((DCI1A_1_5MHz_TDD_1_6_t*)&bcch_pdu)->type = 1; + ((DCI1A_1_5MHz_TDD_1_6_t*)&bcch_pdu)->vrb_type = 0; + ((DCI1A_1_5MHz_TDD_1_6_t*)&bcch_pdu)->rballoc = computeRIV(25,10,3); + ((DCI1A_1_5MHz_TDD_1_6_t*)&bcch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; + ((DCI1A_1_5MHz_TDD_1_6_t*)&bcch_pdu)->rv = 1; + ((DCI1A_1_5MHz_TDD_1_6_t*)&bcch_pdu)->mcs = 1; + ((DCI1A_1_5MHz_TDD_1_6_t*)&bcch_pdu)->harq_pid = 0; + ((DCI1A_1_5MHz_TDD_1_6_t*)&bcch_pdu)->TPC = 1; // set to 3 PRB + memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],&bcch_pdu,sizeof(DCI1A_1_5MHz_TDD_1_6_t)); + } + + break; + + case 25: + default: + if (phy_vars_eNB->lte_frame_parms.frame_type == FDD) { + DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1A_5MHz_FDD_t; + ((DCI1A_5MHz_FDD_t*)&bcch_pdu)->type = 1; + ((DCI1A_5MHz_FDD_t*)&bcch_pdu)->vrb_type = 0; + ((DCI1A_5MHz_FDD_t*)&bcch_pdu)->rballoc = computeRIV(25,10,3); + ((DCI1A_5MHz_FDD_t*)&bcch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; + ((DCI1A_5MHz_FDD_t*)&bcch_pdu)->rv = 1; + ((DCI1A_5MHz_FDD_t*)&bcch_pdu)->mcs = 1; + ((DCI1A_5MHz_FDD_t*)&bcch_pdu)->harq_pid = 0; + ((DCI1A_5MHz_FDD_t*)&bcch_pdu)->TPC = 1; // set to 3 PRB + memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],&bcch_pdu,sizeof(DCI1A_5MHz_TDD_1_6_t)); + } else { + DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1A_5MHz_TDD_1_6_t; + ((DCI1A_5MHz_TDD_1_6_t*)&bcch_pdu)->type = 1; + ((DCI1A_5MHz_TDD_1_6_t*)&bcch_pdu)->vrb_type = 0; + ((DCI1A_5MHz_TDD_1_6_t*)&bcch_pdu)->rballoc = computeRIV(25,10,3); + ((DCI1A_5MHz_TDD_1_6_t*)&bcch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; + ((DCI1A_5MHz_TDD_1_6_t*)&bcch_pdu)->rv = 1; + ((DCI1A_5MHz_TDD_1_6_t*)&bcch_pdu)->mcs = 1; + ((DCI1A_5MHz_TDD_1_6_t*)&bcch_pdu)->harq_pid = 0; + ((DCI1A_5MHz_TDD_1_6_t*)&bcch_pdu)->TPC = 1; // set to 3 PRB + memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],&bcch_pdu,sizeof(DCI1A_5MHz_TDD_1_6_t)); + } + + break; + + case 50: + if (phy_vars_eNB->lte_frame_parms.frame_type == FDD) { + DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1A_10MHz_FDD_t; + ((DCI1A_10MHz_FDD_t*)&bcch_pdu)->type = 1; + ((DCI1A_10MHz_FDD_t*)&bcch_pdu)->vrb_type = 0; + ((DCI1A_10MHz_FDD_t*)&bcch_pdu)->rballoc = computeRIV(25,10,3); + ((DCI1A_10MHz_FDD_t*)&bcch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; + ((DCI1A_10MHz_FDD_t*)&bcch_pdu)->rv = 1; + ((DCI1A_10MHz_FDD_t*)&bcch_pdu)->mcs = 1; + ((DCI1A_10MHz_FDD_t*)&bcch_pdu)->harq_pid = 0; + ((DCI1A_10MHz_FDD_t*)&bcch_pdu)->TPC = 1; // set to 3 PRB + memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],&bcch_pdu,sizeof(DCI1A_10MHz_TDD_1_6_t)); + } else { + DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1A_10MHz_TDD_1_6_t; + ((DCI1A_10MHz_TDD_1_6_t*)&bcch_pdu)->type = 1; + ((DCI1A_10MHz_TDD_1_6_t*)&bcch_pdu)->vrb_type = 0; + ((DCI1A_10MHz_TDD_1_6_t*)&bcch_pdu)->rballoc = computeRIV(25,10,3); + ((DCI1A_10MHz_TDD_1_6_t*)&bcch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; + ((DCI1A_10MHz_TDD_1_6_t*)&bcch_pdu)->rv = 1; + ((DCI1A_10MHz_TDD_1_6_t*)&bcch_pdu)->mcs = 1; + ((DCI1A_10MHz_TDD_1_6_t*)&bcch_pdu)->harq_pid = DLSCH_ptr->harq_pid_freelist[DLSCH_ptr->head_freelist]; + ((DCI1A_10MHz_TDD_1_6_t*)&bcch_pdu)->TPC = 1; // set to 3 PRB + memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],&bcch_pdu,sizeof(DCI1A_10MHz_TDD_1_6_t)); + } + + break; + + case 100: + if (phy_vars_eNB->lte_frame_parms.frame_type == FDD) { + DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1A_20MHz_FDD_t; + ((DCI1A_20MHz_FDD_t*)&bcch_pdu)->type = 1; + ((DCI1A_20MHz_FDD_t*)&bcch_pdu)->vrb_type = 0; + ((DCI1A_20MHz_FDD_t*)&bcch_pdu)->rballoc = computeRIV(25,10,3); + ((DCI1A_20MHz_FDD_t*)&bcch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; + ((DCI1A_20MHz_FDD_t*)&bcch_pdu)->rv = 1; + ((DCI1A_20MHz_FDD_t*)&bcch_pdu)->mcs = 1; + ((DCI1A_20MHz_FDD_t*)&bcch_pdu)->harq_pid = 0; + ((DCI1A_20MHz_FDD_t*)&bcch_pdu)->TPC = 1; // set to 3 PRB + memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],&bcch_pdu,sizeof(DCI1A_20MHz_TDD_1_6_t)); + } else { + DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1A_20MHz_TDD_1_6_t; + ((DCI1A_20MHz_TDD_1_6_t*)&bcch_pdu)->type = 1; + ((DCI1A_20MHz_TDD_1_6_t*)&bcch_pdu)->vrb_type = 0; + ((DCI1A_20MHz_TDD_1_6_t*)&bcch_pdu)->rballoc = computeRIV(25,10,3); + ((DCI1A_20MHz_TDD_1_6_t*)&bcch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; + ((DCI1A_20MHz_TDD_1_6_t*)&bcch_pdu)->rv = 1; + ((DCI1A_20MHz_TDD_1_6_t*)&bcch_pdu)->mcs = 1; + ((DCI1A_20MHz_TDD_1_6_t*)&bcch_pdu)->harq_pid = 0; + ((DCI1A_20MHz_TDD_1_6_t*)&bcch_pdu)->TPC = 1; // set to 3 PRB + memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],&bcch_pdu,sizeof(DCI1A_20MHz_TDD_1_6_t)); + } + + break; + } + break; //subframe switch + + /* + case 6: + DCI_pdu->Num_ue_spec_dci = 1; + DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI2_5MHz_2A_M10PRB_TDD_t; + DCI_pdu->dci_alloc[0].L = 2; + DCI_pdu->dci_alloc[0].rnti = 0x1236; + DCI_pdu->dci_alloc[0].format = format2_2A_M10PRB; + DCI_pdu->dci_alloc[0].ra_flag = 0; + + DLSCH_alloc_pdu1.rballoc = 0x00ff; + DLSCH_alloc_pdu1.TPC = 0; + DLSCH_alloc_pdu1.dai = 0; + DLSCH_alloc_pdu1.harq_pid = 0; + DLSCH_alloc_pdu1.tb_swap = 0; + DLSCH_alloc_pdu1.mcs1 = 0; + DLSCH_alloc_pdu1.ndi1 = 1; + DLSCH_alloc_pdu1.rv1 = 0; + DLSCH_alloc_pdu1.tpmi = 0; + memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],(void *)&DLSCH_alloc_pdu1,sizeof(DCI2_5MHz_2A_M10PRB_TDD_t)); + break; + */ + + default: + case 7: + DCI_pdu->Num_ue_spec_dci = 1; + DCI_pdu->dci_alloc[0].L = 2; + DCI_pdu->dci_alloc[0].rnti = 0x1235; + DCI_pdu->dci_alloc[0].format = format1; + DCI_pdu->dci_alloc[0].ra_flag = 0; + + if (transmission_mode<3) { + //user 1 + switch (phy_vars_eNB->lte_frame_parms.N_RB_DL) { + case 25: + if (phy_vars_eNB->lte_frame_parms.frame_type == FDD) { + DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1_5MHz_FDD_t; + + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->rballoc = rballoc; + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->TPC = 0; + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->harq_pid = DLSCH_ptr->harq_pid_freelist[DLSCH_ptr->head_freelist]; + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->mcs = openair_daq_vars.target_ue_dl_mcs; + //((DCI1_5MHz_FDD_t *)&dlsch_pdu)->mcs = (unsigned char) ((phy_vars_eNB->frame%1024)%28); + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->rv = 0; + memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],(void *)&dlsch_pdu,sizeof(DCI1_5MHz_TDD_t)); + + /* + //user2 + DCI_pdu->dci_alloc[1].dci_length = sizeof_DCI1_5MHz_TDD_t; + DCI_pdu->dci_alloc[1].L = 2; + DCI_pdu->dci_alloc[1].rnti = 0x1236; + DCI_pdu->dci_alloc[1].format = format1; + DCI_pdu->dci_alloc[1].ra_flag = 0; + + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->rballoc = rballoc2; + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->TPC = 0; + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->dai = 0; + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->harq_pid = 1; + //((DCI1_5MHz_FDD_t *)&dlsch_pdu)->mcs = (unsigned char) ((phy_vars_eNB->proc[subframe].frame%1024)%28); + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->mcs = openair_daq_vars.target_ue_dl_mcs; + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->ndi = 1; + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->rv = 0; + memcpy((void*)&DCI_pdu->dci_alloc[1].dci_pdu[0],(void *)&((DCI1_5MHz_FDD_t *)&dlsch_pdu)->,sizeof(DCI1_5MHz_TDD_t)); + */ + } else { + DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1_5MHz_TDD_t; + + ((DCI1_5MHz_TDD_t *)&dlsch_pdu)->rballoc = rballoc; + ((DCI1_5MHz_TDD_t *)&dlsch_pdu)->TPC = 0; + ((DCI1_5MHz_TDD_t *)&dlsch_pdu)->dai = 0; + ((DCI1_5MHz_TDD_t *)&dlsch_pdu)->harq_pid = DLSCH_ptr->harq_pid_freelist[DLSCH_ptr->head_freelist]; + ((DCI1_5MHz_TDD_t *)&dlsch_pdu)->mcs = openair_daq_vars.target_ue_dl_mcs; + //((DCI1_5MHz_TDD_t *)&dlsch_pdu)->mcs = (unsigned char) ((phy_vars_eNB->frame%1024)%28); + ((DCI1_5MHz_TDD_t *)&dlsch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; + ((DCI1_5MHz_TDD_t *)&dlsch_pdu)->rv = 0; + memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],(void *)&dlsch_pdu,sizeof(DCI1_5MHz_TDD_t)); + + /* + //user2 + DCI_pdu->dci_alloc[1].dci_length = sizeof_DCI1_5MHz_TDD_t; + DCI_pdu->dci_alloc[1].L = 2; + DCI_pdu->dci_alloc[1].rnti = 0x1236; + DCI_pdu->dci_alloc[1].format = format1; + DCI_pdu->dci_alloc[1].ra_flag = 0; + + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->rballoc = rballoc2; + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->TPC = 0; + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->dai = 0; + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->harq_pid = 1; + //((DCI1_5MHz_FDD_t *)&dlsch_pdu)->mcs = (unsigned char) ((phy_vars_eNB->proc[subframe].frame%1024)%28); + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->mcs = openair_daq_vars.target_ue_dl_mcs; + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->ndi = 1; + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->rv = 0; + memcpy((void*)&DCI_pdu->dci_alloc[1].dci_pdu[0],(void *)&((DCI1_5MHz_FDD_t *)&dlsch_pdu)->,sizeof(DCI1_5MHz_TDD_t)); + */ + } + + break; + + case 50: + + if (phy_vars_eNB->lte_frame_parms.frame_type == FDD) { + DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1_10MHz_FDD_t; + + ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->rballoc = rballoc; + ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->TPC = 0; + ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->harq_pid = DLSCH_ptr->harq_pid_freelist[DLSCH_ptr->head_freelist]; + ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->mcs = openair_daq_vars.target_ue_dl_mcs; + //((DCI1_10MHz_FDD_t *)&dlsch_pdu)->mcs = (unsigned char) ((phy_vars_eNB->frame%1024)%28); + ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; + ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->rv = 0; + memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],(void *)&dlsch_pdu,sizeof(DCI1_10MHz_TDD_t)); + + /* + //user2 + DCI_pdu->dci_alloc[1].dci_length = sizeof_DCI1_10MHz_TDD_t; + DCI_pdu->dci_alloc[1].L = 2; + DCI_pdu->dci_alloc[1].rnti = 0x1236; + DCI_pdu->dci_alloc[1].format = format1; + DCI_pdu->dci_alloc[1].ra_flag = 0; + + ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->rballoc = rballoc2; + ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->TPC = 0; + ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->dai = 0; + ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->harq_pid = 1; + //((DCI1_10MHz_FDD_t *)&dlsch_pdu)->mcs = (unsigned char) ((phy_vars_eNB->proc[subframe].frame%1024)%28); + ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->mcs = openair_daq_vars.target_ue_dl_mcs; + ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->ndi = 1; + ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->rv = 0; + memcpy((void*)&DCI_pdu->dci_alloc[1].dci_pdu[0],(void *)&((DCI1_10MHz_FDD_t *)&dlsch_pdu)->,sizeof(DCI1_10MHz_TDD_t)); + */ + } else { + DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1_10MHz_TDD_t; + + ((DCI1_10MHz_TDD_t *)&dlsch_pdu)->rballoc = rballoc; + ((DCI1_10MHz_TDD_t *)&dlsch_pdu)->TPC = 0; + ((DCI1_10MHz_TDD_t *)&dlsch_pdu)->dai = 0; + ((DCI1_10MHz_TDD_t *)&dlsch_pdu)->harq_pid = DLSCH_ptr->harq_pid_freelist[DLSCH_ptr->head_freelist]; + ((DCI1_10MHz_TDD_t *)&dlsch_pdu)->mcs = openair_daq_vars.target_ue_dl_mcs; + //((DCI1_10MHz_TDD_t *)&dlsch_pdu)->mcs = (unsigned char) ((phy_vars_eNB->frame%1024)%28); + ((DCI1_10MHz_TDD_t *)&dlsch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; + ((DCI1_10MHz_TDD_t *)&dlsch_pdu)->rv = 0; + memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],(void *)&dlsch_pdu,sizeof(DCI1_10MHz_TDD_t)); + + /* + //user2 + DCI_pdu->dci_alloc[1].dci_length = sizeof_DCI1_10MHz_TDD_t; + DCI_pdu->dci_alloc[1].L = 2; + DCI_pdu->dci_alloc[1].rnti = 0x1236; + DCI_pdu->dci_alloc[1].format = format1; + DCI_pdu->dci_alloc[1].ra_flag = 0; + + ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->rballoc = rballoc2; + ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->TPC = 0; + ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->dai = 0; + ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->harq_pid = 1; + //((DCI1_10MHz_FDD_t *)&dlsch_pdu)->mcs = (unsigned char) ((phy_vars_eNB->proc[subframe].frame%1024)%28); + ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->mcs = openair_daq_vars.target_ue_dl_mcs; + ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->ndi = 1; + ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->rv = 0; + memcpy((void*)&DCI_pdu->dci_alloc[1].dci_pdu[0],(void *)&((DCI1_10MHz_FDD_t *)&dlsch_pdu)->,sizeof(DCI1_10MHz_TDD_t)); + */ + } + + break; + + case 100: + if (phy_vars_eNB->lte_frame_parms.frame_type == FDD) { + DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1_5MHz_FDD_t; + + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->rballoc = rballoc; + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->TPC = 0; + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->harq_pid = DLSCH_ptr->harq_pid_freelist[DLSCH_ptr->head_freelist]; + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->mcs = openair_daq_vars.target_ue_dl_mcs; + //((DCI1_5MHz_FDD_t *)&dlsch_pdu)->mcs = (unsigned char) ((phy_vars_eNB->frame%1024)%28); + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->rv = 0; + memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],(void *)&dlsch_pdu,sizeof(DCI1_5MHz_TDD_t)); + + /* + //user2 + DCI_pdu->dci_alloc[1].dci_length = sizeof_DCI1_5MHz_TDD_t; + DCI_pdu->dci_alloc[1].L = 2; + DCI_pdu->dci_alloc[1].rnti = 0x1236; + DCI_pdu->dci_alloc[1].format = format1; + DCI_pdu->dci_alloc[1].ra_flag = 0; + + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->rballoc = rballoc2; + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->TPC = 0; + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->dai = 0; + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->harq_pid = 1; + //((DCI1_5MHz_FDD_t *)&dlsch_pdu)->mcs = (unsigned char) ((phy_vars_eNB->proc[subframe].frame%1024)%28); + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->mcs = openair_daq_vars.target_ue_dl_mcs; + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->ndi = 1; + ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->rv = 0; + memcpy((void*)&DCI_pdu->dci_alloc[1].dci_pdu[0],(void *)&((DCI1_5MHz_FDD_t *)&dlsch_pdu)->,sizeof(DCI1_5MHz_TDD_t)); + */ + } else { + DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1_20MHz_TDD_t; + + ((DCI1_20MHz_TDD_t *)&dlsch_pdu)->rballoc = rballoc; + ((DCI1_20MHz_TDD_t *)&dlsch_pdu)->TPC = 0; + ((DCI1_20MHz_TDD_t *)&dlsch_pdu)->dai = 0; + ((DCI1_20MHz_TDD_t *)&dlsch_pdu)->harq_pid = DLSCH_ptr->harq_pid_freelist[DLSCH_ptr->head_freelist]; + ((DCI1_20MHz_TDD_t *)&dlsch_pdu)->mcs = openair_daq_vars.target_ue_dl_mcs; + //((DCI1_20MHz_TDD_t *)&dlsch_pdu)->mcs = (unsigned char) ((phy_vars_eNB->frame%1024)%28); + ((DCI1_20MHz_TDD_t *)&dlsch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; + ((DCI1_20MHz_TDD_t *)&dlsch_pdu)->rv = 0; + memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],(void *)&dlsch_pdu,sizeof(DCI1_20MHz_TDD_t)); + + /* + //user2 + DCI_pdu->dci_alloc[1].dci_length = sizeof_DCI1_20MHz_TDD_t; + DCI_pdu->dci_alloc[1].L = 2; + DCI_pdu->dci_alloc[1].rnti = 0x1236; + DCI_pdu->dci_alloc[1].format = format1; + DCI_pdu->dci_alloc[1].ra_flag = 0; + + ((DCI1_20MHz_FDD_t *)&dlsch_pdu)->rballoc = rballoc2; + ((DCI1_20MHz_FDD_t *)&dlsch_pdu)->TPC = 0; + ((DCI1_20MHz_FDD_t *)&dlsch_pdu)->dai = 0; + ((DCI1_20MHz_FDD_t *)&dlsch_pdu)->harq_pid = 1; + //((DCI1_20MHz_FDD_t *)&dlsch_pdu)->mcs = (unsigned char) ((phy_vars_eNB->proc[subframe].frame%1024)%28); + ((DCI1_20MHz_FDD_t *)&dlsch_pdu)->mcs = openair_daq_vars.target_ue_dl_mcs; + ((DCI1_20MHz_FDD_t *)&dlsch_pdu)->ndi = 1; + ((DCI1_20MHz_FDD_t *)&dlsch_pdu)->rv = 0; + memcpy((void*)&DCI_pdu->dci_alloc[1].dci_pdu[0],(void *)&((DCI1_20MHz_FDD_t *)&dlsch_pdu)->,sizeof(DCI1_5MHz_TDD_t)); + */ + } + + break; + } + } else if (transmission_mode==4) { + DCI_pdu->Num_ue_spec_dci = 1; + // user 1 + DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI2_5MHz_2A_FDD_t; + DCI_pdu->dci_alloc[0].L = 3; + DCI_pdu->dci_alloc[0].rnti = 0x1235; + DCI_pdu->dci_alloc[0].format = format2; + DCI_pdu->dci_alloc[0].ra_flag = 0; + + ((DCI2_5MHz_2A_FDD_t*) (&DCI_pdu->dci_alloc[0].dci_pdu))->tpmi = 0; + ((DCI2_5MHz_2A_FDD_t*) (&DCI_pdu->dci_alloc[0].dci_pdu))->rv1 = 0; + ((DCI2_5MHz_2A_FDD_t*) (&DCI_pdu->dci_alloc[0].dci_pdu))->ndi1 = phy_vars_eNB->proc[sched_subframe].frame_tx&1; + ((DCI2_5MHz_2A_FDD_t*) (&DCI_pdu->dci_alloc[0].dci_pdu))->mcs1 = openair_daq_vars.target_ue_dl_mcs; + ((DCI2_5MHz_2A_FDD_t*) (&DCI_pdu->dci_alloc[0].dci_pdu))->rv2 = 0; + ((DCI2_5MHz_2A_FDD_t*) (&DCI_pdu->dci_alloc[0].dci_pdu))->ndi2 = phy_vars_eNB->proc[sched_subframe].frame_tx&1; + ((DCI2_5MHz_2A_FDD_t*) (&DCI_pdu->dci_alloc[0].dci_pdu))->mcs2 = openair_daq_vars.target_ue_dl_mcs; + ((DCI2_5MHz_2A_FDD_t*) (&DCI_pdu->dci_alloc[0].dci_pdu))->tb_swap = 0; + ((DCI2_5MHz_2A_FDD_t*) (&DCI_pdu->dci_alloc[0].dci_pdu))->harq_pid = DLSCH_ptr->harq_pid_freelist[DLSCH_ptr->head_freelist]; + ((DCI2_5MHz_2A_FDD_t*) (&DCI_pdu->dci_alloc[0].dci_pdu))->TPC = 0; + ((DCI2_5MHz_2A_FDD_t*) (&DCI_pdu->dci_alloc[0].dci_pdu))->rballoc = openair_daq_vars.ue_dl_rb_alloc; + ((DCI2_5MHz_2A_FDD_t*) (&DCI_pdu->dci_alloc[0].dci_pdu))->rah = 0; + + } else if (transmission_mode==5) { + DCI_pdu->Num_ue_spec_dci = 2; + // user 1 + DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1E_5MHz_2A_M10PRB_TDD_t; + DCI_pdu->dci_alloc[0].L = 3; + DCI_pdu->dci_alloc[0].rnti = 0x1235; + DCI_pdu->dci_alloc[0].format = format1E_2A_M10PRB; + DCI_pdu->dci_alloc[0].ra_flag = 0; + + DLSCH_alloc_pdu1E.tpmi = 5; //5=use feedback + DLSCH_alloc_pdu1E.rv = 0; + DLSCH_alloc_pdu1E.ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; + //DLSCH_alloc_pdu1E.mcs = cqi_to_mcs[phy_vars_eNB->eNB_UE_stats->DL_cqi[0]]; + //DLSCH_alloc_pdu1E.mcs = (unsigned char) (taus()%28); + DLSCH_alloc_pdu1E.mcs = openair_daq_vars.target_ue_dl_mcs; + //DLSCH_alloc_pdu1E.mcs = (unsigned char) ((phy_vars_eNB->proc[subframe].frame%1024)%28); + phy_vars_eNB->eNB_UE_stats[0].dlsch_mcs1 = DLSCH_alloc_pdu1E.mcs; + DLSCH_alloc_pdu1E.harq_pid = DLSCH_ptr->harq_pid_freelist[DLSCH_ptr->head_freelist]; + DLSCH_alloc_pdu1E.dai = 0; + DLSCH_alloc_pdu1E.TPC = 0; + DLSCH_alloc_pdu1E.rballoc = openair_daq_vars.ue_dl_rb_alloc; + DLSCH_alloc_pdu1E.rah = 0; + DLSCH_alloc_pdu1E.dl_power_off = 0; //0=second user present + memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],(void *)&DLSCH_alloc_pdu1E,sizeof(DCI1E_5MHz_2A_M10PRB_TDD_t)); + + //user 2 + DCI_pdu->dci_alloc[1].dci_length = sizeof_DCI1E_5MHz_2A_M10PRB_TDD_t; + DCI_pdu->dci_alloc[1].L = 0; + DCI_pdu->dci_alloc[1].rnti = 0x1236; + DCI_pdu->dci_alloc[1].format = format1E_2A_M10PRB; + DCI_pdu->dci_alloc[1].ra_flag = 0; + //DLSCH_alloc_pdu1E.mcs = openair_daq_vars.target_ue_dl_mcs; + //DLSCH_alloc_pdu1E.mcs = (unsigned char) (taus()%28); + //DLSCH_alloc_pdu1E.mcs = (unsigned char) ((phy_vars_eNB->frame%1024)%28); + DLSCH_alloc_pdu1E.mcs = (unsigned char) (((phy_vars_eNB->proc[sched_subframe].frame_tx%1024)/3)%28); + phy_vars_eNB->eNB_UE_stats[1].dlsch_mcs1 = DLSCH_alloc_pdu1E.mcs; + + memcpy((void*)&DCI_pdu->dci_alloc[1].dci_pdu[0],(void *)&DLSCH_alloc_pdu1E,sizeof(DCI1E_5MHz_2A_M10PRB_TDD_t)); + + // set the precoder of the second UE orthogonal to the first + phy_vars_eNB->eNB_UE_stats[1].DL_pmi_single = (phy_vars_eNB->eNB_UE_stats[0].DL_pmi_single ^ 0x1555); + } + + break; //subframe switch + + /* + case 8: + DCI_pdu->Num_common_dci = 1; + DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1A_5MHz_TDD_1_6_t; + DCI_pdu->dci_alloc[0].L = 2; + DCI_pdu->dci_alloc[0].rnti = 0xbeef; + DCI_pdu->dci_alloc[0].format = format1A; + DCI_pdu->dci_alloc[0].ra_flag = 1; + + RA_alloc_pdu.type = 1; + RA_alloc_pdu.vrb_type = 0; + RA_alloc_pdu.rballoc = computeRIV(25,12,3); + RA_alloc_pdu.ndi = 1; + RA_alloc_pdu.rv = 1; + RA_alloc_pdu.mcs = 4; + RA_alloc_pdu.harq_pid = 0; + RA_alloc_pdu.TPC = 1; + + memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],&RA_alloc_pdu,sizeof(DCI1A_5MHz_TDD_1_6_t)); + break; + */ + /* + case 9: + DCI_pdu->Num_ue_spec_dci = 1; + + //user 1 + if (phy_vars_eNB->lte_frame_parms.frame_type == FDD) + DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI0_5MHz_FDD_t ; + else + DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI0_5MHz_TDD_1_6_t ; + + DCI_pdu->dci_alloc[0].L = 2; + DCI_pdu->dci_alloc[0].rnti = 0x1235; + DCI_pdu->dci_alloc[0].format = format0; + DCI_pdu->dci_alloc[0].ra_flag = 0; + + UL_alloc_pdu.type = 0; + UL_alloc_pdu.hopping = 0; + UL_alloc_pdu.rballoc = computeRIV(25,2,openair_daq_vars.ue_ul_nb_rb); + UL_alloc_pdu.mcs = openair_daq_vars.target_ue_ul_mcs; + UL_alloc_pdu.ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; + UL_alloc_pdu.TPC = 0; + UL_alloc_pdu.cshift = 0; + UL_alloc_pdu.dai = 0; + UL_alloc_pdu.cqi_req = 1; + memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],(void *)&UL_alloc_pdu,sizeof(DCI0_5MHz_TDD_1_6_t)); + */ + // user 2 + /* + DCI_pdu->dci_alloc[1].dci_length = sizeof_DCI0_5MHz_TDD_1_6_t ; + DCI_pdu->dci_alloc[1].L = 2; + DCI_pdu->dci_alloc[1].rnti = 0x1236; + DCI_pdu->dci_alloc[1].format = format0; + DCI_pdu->dci_alloc[1].ra_flag = 0; + + UL_alloc_pdu.type = 0; + UL_alloc_pdu.hopping = 0; + if (cooperation_flag==0) + UL_alloc_pdu.rballoc = computeRIV(25,2+openair_daq_vars.ue_ul_nb_rb,openair_daq_vars.ue_ul_nb_rb); + else + UL_alloc_pdu.rballoc = computeRIV(25,0,openair_daq_vars.ue_ul_nb_rb); + UL_alloc_pdu.mcs = openair_daq_vars.target_ue_ul_mcs; + UL_alloc_pdu.ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; + UL_alloc_pdu.TPC = 0; + if ((cooperation_flag==0) || (cooperation_flag==1)) + UL_alloc_pdu.cshift = 0; + else + UL_alloc_pdu.cshift = 1; + UL_alloc_pdu.dai = 0; + UL_alloc_pdu.cqi_req = 1; + memcpy((void*)&DCI_pdu->dci_alloc[1].dci_pdu[0],(void *)&UL_alloc_pdu,sizeof(DCI0_5MHz_TDD_1_6_t)); + break; + */ + + /*default: + break;*/ + } + + DCI_pdu->nCCE = 0; + + for (i=0; i<DCI_pdu->Num_common_dci+DCI_pdu->Num_ue_spec_dci; i++) { + DCI_pdu->nCCE += (1<<(DCI_pdu->dci_alloc[i].L)); + } + +} + +void fill_dci_emos(DCI_PDU *DCI_pdu, uint8_t subframe, PHY_VARS_eNB *phy_vars_eNB) +{ + + int i; + uint8_t cooperation_flag = phy_vars_eNB->cooperation_flag; + uint8_t transmission_mode = phy_vars_eNB->transmission_mode[0]; + + //uint32_t rballoc = 0x00F0; + //uint32_t rballoc2 = 0x000F; + /* + uint32_t rand = taus(); + if ((subframe==8) || (subframe==9) || (subframe==0)) + rand = (rand%5)+5; + else + rand = (rand%4)+5; + */ + + DCI_pdu->Num_common_dci = 0; + DCI_pdu->Num_ue_spec_dci=0; + + switch (subframe) { + case 5: + DCI_pdu->Num_ue_spec_dci = 1; + + if (transmission_mode<3) { + //user 1 + DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1_5MHz_TDD_t; + DCI_pdu->dci_alloc[0].L = 2; + DCI_pdu->dci_alloc[0].rnti = 0x1235; + DCI_pdu->dci_alloc[0].format = format1; + DCI_pdu->dci_alloc[0].ra_flag = 0; + + DLSCH_alloc_pdu.rballoc = openair_daq_vars.ue_dl_rb_alloc; + DLSCH_alloc_pdu.TPC = 0; + DLSCH_alloc_pdu.dai = 0; + DLSCH_alloc_pdu.harq_pid = 1; + DLSCH_alloc_pdu.mcs = openair_daq_vars.target_ue_dl_mcs; + DLSCH_alloc_pdu.ndi = 1; + DLSCH_alloc_pdu.rv = 0; + memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],(void *)&DLSCH_alloc_pdu,sizeof(DCI1_5MHz_TDD_t)); + + /* + //user2 + DCI_pdu->dci_alloc[1].dci_length = sizeof_DCI1_5MHz_TDD_t; + DCI_pdu->dci_alloc[1].L = 2; + DCI_pdu->dci_alloc[1].rnti = 0x1236; + DCI_pdu->dci_alloc[1].format = format1; + DCI_pdu->dci_alloc[1].ra_flag = 0; + + DLSCH_alloc_pdu.rballoc = rballoc2; + DLSCH_alloc_pdu.TPC = 0; + DLSCH_alloc_pdu.dai = 0; + DLSCH_alloc_pdu.harq_pid = 1; + DLSCH_alloc_pdu.mcs = openair_daq_vars.target_ue_dl_mcs; + DLSCH_alloc_pdu.ndi = 1; + DLSCH_alloc_pdu.rv = 0; + memcpy((void*)&DCI_pdu->dci_alloc[1].dci_pdu[0],(void *)&DLSCH_alloc_pdu,sizeof(DCI1_5MHz_TDD_t)); + */ + } else if (transmission_mode==5) { + DCI_pdu->Num_ue_spec_dci = 2; + // user 1 + DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1E_5MHz_2A_M10PRB_TDD_t; + DCI_pdu->dci_alloc[0].L = 2; + DCI_pdu->dci_alloc[0].rnti = 0x1235; + DCI_pdu->dci_alloc[0].format = format1E_2A_M10PRB; + DCI_pdu->dci_alloc[0].ra_flag = 0; + + DLSCH_alloc_pdu1E.tpmi = 5; //5=use feedback + DLSCH_alloc_pdu1E.rv = 0; + DLSCH_alloc_pdu1E.ndi = 1; + DLSCH_alloc_pdu1E.mcs = openair_daq_vars.target_ue_dl_mcs; + DLSCH_alloc_pdu1E.harq_pid = 1; + DLSCH_alloc_pdu1E.dai = 0; + DLSCH_alloc_pdu1E.TPC = 0; + DLSCH_alloc_pdu1E.rballoc = openair_daq_vars.ue_dl_rb_alloc; + DLSCH_alloc_pdu1E.rah = 0; + DLSCH_alloc_pdu1E.dl_power_off = 0; //0=second user present + memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],(void *)&DLSCH_alloc_pdu1E,sizeof(DCI1E_5MHz_2A_M10PRB_TDD_t)); + + //user 2 + DCI_pdu->dci_alloc[1].dci_length = sizeof_DCI1E_5MHz_2A_M10PRB_TDD_t; + DCI_pdu->dci_alloc[1].L = 2; + DCI_pdu->dci_alloc[1].rnti = 0x1236; + DCI_pdu->dci_alloc[1].format = format1E_2A_M10PRB; + DCI_pdu->dci_alloc[1].ra_flag = 0; + + memcpy((void*)&DCI_pdu->dci_alloc[1].dci_pdu[0],(void *)&DLSCH_alloc_pdu1E,sizeof(DCI1E_5MHz_2A_M10PRB_TDD_t)); + + // set the precoder of the second UE orthogonal to the first + phy_vars_eNB->eNB_UE_stats[1].DL_pmi_single = (phy_vars_eNB->eNB_UE_stats[0].DL_pmi_single ^ 0x1555); + } + + break; + + case 7: + DCI_pdu->Num_common_dci = 1; + DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1A_5MHz_TDD_1_6_t; + DCI_pdu->dci_alloc[0].L = 2; + DCI_pdu->dci_alloc[0].rnti = 0xbeef; + DCI_pdu->dci_alloc[0].format = format1A; + DCI_pdu->dci_alloc[0].ra_flag = 1; + + RA_alloc_pdu.type = 1; + RA_alloc_pdu.vrb_type = 0; + RA_alloc_pdu.rballoc = computeRIV(25,12,3); + RA_alloc_pdu.ndi = 1; + RA_alloc_pdu.rv = 1; + RA_alloc_pdu.mcs = 4; + RA_alloc_pdu.harq_pid = 0; + RA_alloc_pdu.TPC = 1; + + memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],&RA_alloc_pdu,sizeof(DCI1A_5MHz_TDD_1_6_t)); + break; + + case 9: + DCI_pdu->Num_ue_spec_dci = 1; + + //user 1 + DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI0_5MHz_TDD_1_6_t ; + DCI_pdu->dci_alloc[0].L = 2; + DCI_pdu->dci_alloc[0].rnti = 0x1235; + DCI_pdu->dci_alloc[0].format = format0; + DCI_pdu->dci_alloc[0].ra_flag = 0; + + UL_alloc_pdu.type = 0; + UL_alloc_pdu.hopping = 0; + UL_alloc_pdu.rballoc = computeRIV(25,0,openair_daq_vars.ue_ul_nb_rb); + UL_alloc_pdu.mcs = openair_daq_vars.target_ue_ul_mcs; + UL_alloc_pdu.ndi = 1; + UL_alloc_pdu.TPC = 0; + UL_alloc_pdu.cshift = 0; + UL_alloc_pdu.dai = 0; + UL_alloc_pdu.cqi_req = 1; + memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],(void *)&UL_alloc_pdu,sizeof(DCI0_5MHz_TDD_1_6_t)); + + /* + //user 2 + DCI_pdu->dci_alloc[1].dci_length = sizeof_DCI0_5MHz_TDD_1_6_t ; + DCI_pdu->dci_alloc[1].L = 2; + DCI_pdu->dci_alloc[1].rnti = 0x1236; + DCI_pdu->dci_alloc[1].format = format0; + DCI_pdu->dci_alloc[1].ra_flag = 0; + + UL_alloc_pdu.type = 0; + UL_alloc_pdu.hopping = 0; + if (cooperation_flag==0) + UL_alloc_pdu.rballoc = computeRIV(25,2+openair_daq_vars.ue_ul_nb_rb,openair_daq_vars.ue_ul_nb_rb); + else + UL_alloc_pdu.rballoc = computeRIV(25,0,openair_daq_vars.ue_ul_nb_rb); + UL_alloc_pdu.mcs = openair_daq_vars.target_ue_ul_mcs; + UL_alloc_pdu.ndi = 1; + UL_alloc_pdu.TPC = 0; + if ((cooperation_flag==0) || (cooperation_flag==1)) + UL_alloc_pdu.cshift = 0; + else + UL_alloc_pdu.cshift = 1; + UL_alloc_pdu.dai = 0; + UL_alloc_pdu.cqi_req = 1; + memcpy((void*)&DCI_pdu->dci_alloc[1].dci_pdu[0],(void *)&UL_alloc_pdu,sizeof(DCI0_5MHz_TDD_1_6_t)); + */ + break; + + default: + break; + } + + DCI_pdu->nCCE = 0; + + for (i=0; i<DCI_pdu->Num_common_dci+DCI_pdu->Num_ue_spec_dci; i++) { + DCI_pdu->nCCE += (1<<(DCI_pdu->dci_alloc[i].L)); + } + +} diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c index 60cd0ec0f7515d23d510cdf0e81dbdba4c8ff702..375c0dcd1f165cf712e39e03e983c83da8a5fbc3 100755 --- a/openair1/SCHED/phy_procedures_lte_eNb.c +++ b/openair1/SCHED/phy_procedures_lte_eNb.c @@ -52,12 +52,10 @@ //#define DEBUG_PHY_PROC (Already defined in cmake) //#define DEBUG_ULSCH -//#ifdef OPENAIR2 #include "LAYER2/MAC/extern.h" #include "LAYER2/MAC/defs.h" #include "UTIL/LOG/log.h" #include "UTIL/LOG/vcd_signal_dumper.h" -//#endif #include "assertions.h" #include "msc.h" @@ -479,689 +477,6 @@ void phy_procedures_emos_eNB_RX(unsigned char subframe,PHY_VARS_eNB *phy_vars_eN } #endif -#ifndef OPENAIR2 -void fill_dci(DCI_PDU *DCI_pdu, uint8_t sched_subframe, PHY_VARS_eNB *phy_vars_eNB) -{ - - int i; - uint8_t cooperation_flag = phy_vars_eNB->cooperation_flag; - uint8_t transmission_mode = phy_vars_eNB->transmission_mode[0]; - - uint32_t rballoc = 0x7FFF; - uint32_t rballoc2 = 0x000F; - int subframe = phy_vars_eNB->proc[sched_subframe].subframe_tx; - /* - uint32_t rand = taus(); - if ((subframe==8) || (subframe==9) || (subframe==0)) - rand = (rand%5)+5; - else - rand = (rand%4)+5; - */ - uint32_t bcch_pdu; - uint64_t dlsch_pdu; - - DCI_pdu->Num_common_dci = 0; - DCI_pdu->Num_ue_spec_dci=0; - - - - switch (subframe) { - case 5: - DCI_pdu->Num_common_dci = 1; - DCI_pdu->dci_alloc[0].L = 2; - DCI_pdu->dci_alloc[0].rnti = SI_RNTI; - DCI_pdu->dci_alloc[0].format = format1A; - DCI_pdu->dci_alloc[0].ra_flag = 0; - - switch (phy_vars_eNB->lte_frame_parms.N_RB_DL) { - case 6: - if (phy_vars_eNB->lte_frame_parms.frame_type == FDD) { - DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1A_1_5MHz_FDD_t; - ((DCI1A_1_5MHz_FDD_t*)&bcch_pdu)->type = 1; - ((DCI1A_1_5MHz_FDD_t*)&bcch_pdu)->vrb_type = 0; - ((DCI1A_1_5MHz_FDD_t*)&bcch_pdu)->rballoc = computeRIV(25,10,3); - ((DCI1A_1_5MHz_FDD_t*)&bcch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; - ((DCI1A_1_5MHz_FDD_t*)&bcch_pdu)->rv = 1; - ((DCI1A_1_5MHz_FDD_t*)&bcch_pdu)->mcs = 1; - ((DCI1A_1_5MHz_FDD_t*)&bcch_pdu)->harq_pid = 0; - ((DCI1A_1_5MHz_FDD_t*)&bcch_pdu)->TPC = 1; // set to 3 PRB - memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],&bcch_pdu,sizeof(DCI1A_1_5MHz_TDD_1_6_t)); - } else { - DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1A_1_5MHz_TDD_1_6_t; - ((DCI1A_1_5MHz_TDD_1_6_t*)&bcch_pdu)->type = 1; - ((DCI1A_1_5MHz_TDD_1_6_t*)&bcch_pdu)->vrb_type = 0; - ((DCI1A_1_5MHz_TDD_1_6_t*)&bcch_pdu)->rballoc = computeRIV(25,10,3); - ((DCI1A_1_5MHz_TDD_1_6_t*)&bcch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; - ((DCI1A_1_5MHz_TDD_1_6_t*)&bcch_pdu)->rv = 1; - ((DCI1A_1_5MHz_TDD_1_6_t*)&bcch_pdu)->mcs = 1; - ((DCI1A_1_5MHz_TDD_1_6_t*)&bcch_pdu)->harq_pid = 0; - ((DCI1A_1_5MHz_TDD_1_6_t*)&bcch_pdu)->TPC = 1; // set to 3 PRB - memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],&bcch_pdu,sizeof(DCI1A_1_5MHz_TDD_1_6_t)); - } - - break; - - case 25: - default: - if (phy_vars_eNB->lte_frame_parms.frame_type == FDD) { - DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1A_5MHz_FDD_t; - ((DCI1A_5MHz_FDD_t*)&bcch_pdu)->type = 1; - ((DCI1A_5MHz_FDD_t*)&bcch_pdu)->vrb_type = 0; - ((DCI1A_5MHz_FDD_t*)&bcch_pdu)->rballoc = computeRIV(25,10,3); - ((DCI1A_5MHz_FDD_t*)&bcch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; - ((DCI1A_5MHz_FDD_t*)&bcch_pdu)->rv = 1; - ((DCI1A_5MHz_FDD_t*)&bcch_pdu)->mcs = 1; - ((DCI1A_5MHz_FDD_t*)&bcch_pdu)->harq_pid = 0; - ((DCI1A_5MHz_FDD_t*)&bcch_pdu)->TPC = 1; // set to 3 PRB - memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],&bcch_pdu,sizeof(DCI1A_5MHz_TDD_1_6_t)); - } else { - DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1A_5MHz_TDD_1_6_t; - ((DCI1A_5MHz_TDD_1_6_t*)&bcch_pdu)->type = 1; - ((DCI1A_5MHz_TDD_1_6_t*)&bcch_pdu)->vrb_type = 0; - ((DCI1A_5MHz_TDD_1_6_t*)&bcch_pdu)->rballoc = computeRIV(25,10,3); - ((DCI1A_5MHz_TDD_1_6_t*)&bcch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; - ((DCI1A_5MHz_TDD_1_6_t*)&bcch_pdu)->rv = 1; - ((DCI1A_5MHz_TDD_1_6_t*)&bcch_pdu)->mcs = 1; - ((DCI1A_5MHz_TDD_1_6_t*)&bcch_pdu)->harq_pid = 0; - ((DCI1A_5MHz_TDD_1_6_t*)&bcch_pdu)->TPC = 1; // set to 3 PRB - memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],&bcch_pdu,sizeof(DCI1A_5MHz_TDD_1_6_t)); - } - - break; - - case 50: - if (phy_vars_eNB->lte_frame_parms.frame_type == FDD) { - DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1A_10MHz_FDD_t; - ((DCI1A_10MHz_FDD_t*)&bcch_pdu)->type = 1; - ((DCI1A_10MHz_FDD_t*)&bcch_pdu)->vrb_type = 0; - ((DCI1A_10MHz_FDD_t*)&bcch_pdu)->rballoc = computeRIV(25,10,3); - ((DCI1A_10MHz_FDD_t*)&bcch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; - ((DCI1A_10MHz_FDD_t*)&bcch_pdu)->rv = 1; - ((DCI1A_10MHz_FDD_t*)&bcch_pdu)->mcs = 1; - ((DCI1A_10MHz_FDD_t*)&bcch_pdu)->harq_pid = 0; - ((DCI1A_10MHz_FDD_t*)&bcch_pdu)->TPC = 1; // set to 3 PRB - memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],&bcch_pdu,sizeof(DCI1A_10MHz_TDD_1_6_t)); - } else { - DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1A_10MHz_TDD_1_6_t; - ((DCI1A_10MHz_TDD_1_6_t*)&bcch_pdu)->type = 1; - ((DCI1A_10MHz_TDD_1_6_t*)&bcch_pdu)->vrb_type = 0; - ((DCI1A_10MHz_TDD_1_6_t*)&bcch_pdu)->rballoc = computeRIV(25,10,3); - ((DCI1A_10MHz_TDD_1_6_t*)&bcch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; - ((DCI1A_10MHz_TDD_1_6_t*)&bcch_pdu)->rv = 1; - ((DCI1A_10MHz_TDD_1_6_t*)&bcch_pdu)->mcs = 1; - ((DCI1A_10MHz_TDD_1_6_t*)&bcch_pdu)->harq_pid = 0; - ((DCI1A_10MHz_TDD_1_6_t*)&bcch_pdu)->TPC = 1; // set to 3 PRB - memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],&bcch_pdu,sizeof(DCI1A_10MHz_TDD_1_6_t)); - } - - break; - - case 100: - if (phy_vars_eNB->lte_frame_parms.frame_type == FDD) { - DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1A_20MHz_FDD_t; - ((DCI1A_20MHz_FDD_t*)&bcch_pdu)->type = 1; - ((DCI1A_20MHz_FDD_t*)&bcch_pdu)->vrb_type = 0; - ((DCI1A_20MHz_FDD_t*)&bcch_pdu)->rballoc = computeRIV(25,10,3); - ((DCI1A_20MHz_FDD_t*)&bcch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; - ((DCI1A_20MHz_FDD_t*)&bcch_pdu)->rv = 1; - ((DCI1A_20MHz_FDD_t*)&bcch_pdu)->mcs = 1; - ((DCI1A_20MHz_FDD_t*)&bcch_pdu)->harq_pid = 0; - ((DCI1A_20MHz_FDD_t*)&bcch_pdu)->TPC = 1; // set to 3 PRB - memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],&bcch_pdu,sizeof(DCI1A_20MHz_TDD_1_6_t)); - } else { - DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1A_20MHz_TDD_1_6_t; - ((DCI1A_20MHz_TDD_1_6_t*)&bcch_pdu)->type = 1; - ((DCI1A_20MHz_TDD_1_6_t*)&bcch_pdu)->vrb_type = 0; - ((DCI1A_20MHz_TDD_1_6_t*)&bcch_pdu)->rballoc = computeRIV(25,10,3); - ((DCI1A_20MHz_TDD_1_6_t*)&bcch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; - ((DCI1A_20MHz_TDD_1_6_t*)&bcch_pdu)->rv = 1; - ((DCI1A_20MHz_TDD_1_6_t*)&bcch_pdu)->mcs = 1; - ((DCI1A_20MHz_TDD_1_6_t*)&bcch_pdu)->harq_pid = 0; - ((DCI1A_20MHz_TDD_1_6_t*)&bcch_pdu)->TPC = 1; // set to 3 PRB - memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],&bcch_pdu,sizeof(DCI1A_20MHz_TDD_1_6_t)); - } - - break; - } - - case 6: - /* - DCI_pdu->Num_ue_spec_dci = 1; - DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI2_5MHz_2A_M10PRB_TDD_t; - DCI_pdu->dci_alloc[0].L = 2; - DCI_pdu->dci_alloc[0].rnti = 0x1236; - DCI_pdu->dci_alloc[0].format = format2_2A_M10PRB; - DCI_pdu->dci_alloc[0].ra_flag = 0; - - DLSCH_alloc_pdu1.rballoc = 0x00ff; - DLSCH_alloc_pdu1.TPC = 0; - DLSCH_alloc_pdu1.dai = 0; - DLSCH_alloc_pdu1.harq_pid = 0; - DLSCH_alloc_pdu1.tb_swap = 0; - DLSCH_alloc_pdu1.mcs1 = 0; - DLSCH_alloc_pdu1.ndi1 = 1; - DLSCH_alloc_pdu1.rv1 = 0; - DLSCH_alloc_pdu1.tpmi = 0; - memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],(void *)&DLSCH_alloc_pdu1,sizeof(DCI2_5MHz_2A_M10PRB_TDD_t)); - */ - break; - - case 7: - DCI_pdu->Num_ue_spec_dci = 1; - DCI_pdu->dci_alloc[0].L = 2; - DCI_pdu->dci_alloc[0].rnti = 0x1235; - DCI_pdu->dci_alloc[0].format = format1; - DCI_pdu->dci_alloc[0].ra_flag = 0; - - if (transmission_mode<3) { - //user 1 - switch (phy_vars_eNB->lte_frame_parms.N_RB_DL) { - case 25: - if (phy_vars_eNB->lte_frame_parms.frame_type == FDD) { - DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1_5MHz_FDD_t; - - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->rballoc = rballoc; - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->TPC = 0; - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->harq_pid = 0; - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->mcs = openair_daq_vars.target_ue_dl_mcs; - //((DCI1_5MHz_FDD_t *)&dlsch_pdu)->mcs = (unsigned char) ((phy_vars_eNB->frame%1024)%28); - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->rv = 0; - memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],(void *)&dlsch_pdu,sizeof(DCI1_5MHz_TDD_t)); - - /* - //user2 - DCI_pdu->dci_alloc[1].dci_length = sizeof_DCI1_5MHz_TDD_t; - DCI_pdu->dci_alloc[1].L = 2; - DCI_pdu->dci_alloc[1].rnti = 0x1236; - DCI_pdu->dci_alloc[1].format = format1; - DCI_pdu->dci_alloc[1].ra_flag = 0; - - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->rballoc = rballoc2; - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->TPC = 0; - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->dai = 0; - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->harq_pid = 1; - //((DCI1_5MHz_FDD_t *)&dlsch_pdu)->mcs = (unsigned char) ((phy_vars_eNB->proc[subframe].frame%1024)%28); - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->mcs = openair_daq_vars.target_ue_dl_mcs; - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->ndi = 1; - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->rv = 0; - memcpy((void*)&DCI_pdu->dci_alloc[1].dci_pdu[0],(void *)&((DCI1_5MHz_FDD_t *)&dlsch_pdu)->,sizeof(DCI1_5MHz_TDD_t)); - */ - } else { - DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1_5MHz_TDD_t; - - ((DCI1_5MHz_TDD_t *)&dlsch_pdu)->rballoc = rballoc; - ((DCI1_5MHz_TDD_t *)&dlsch_pdu)->TPC = 0; - ((DCI1_5MHz_TDD_t *)&dlsch_pdu)->dai = 0; - ((DCI1_5MHz_TDD_t *)&dlsch_pdu)->harq_pid = 0; - ((DCI1_5MHz_TDD_t *)&dlsch_pdu)->mcs = openair_daq_vars.target_ue_dl_mcs; - //((DCI1_5MHz_TDD_t *)&dlsch_pdu)->mcs = (unsigned char) ((phy_vars_eNB->frame%1024)%28); - ((DCI1_5MHz_TDD_t *)&dlsch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; - ((DCI1_5MHz_TDD_t *)&dlsch_pdu)->rv = 0; - memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],(void *)&dlsch_pdu,sizeof(DCI1_5MHz_TDD_t)); - - /* - //user2 - DCI_pdu->dci_alloc[1].dci_length = sizeof_DCI1_5MHz_TDD_t; - DCI_pdu->dci_alloc[1].L = 2; - DCI_pdu->dci_alloc[1].rnti = 0x1236; - DCI_pdu->dci_alloc[1].format = format1; - DCI_pdu->dci_alloc[1].ra_flag = 0; - - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->rballoc = rballoc2; - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->TPC = 0; - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->dai = 0; - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->harq_pid = 1; - //((DCI1_5MHz_FDD_t *)&dlsch_pdu)->mcs = (unsigned char) ((phy_vars_eNB->proc[subframe].frame%1024)%28); - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->mcs = openair_daq_vars.target_ue_dl_mcs; - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->ndi = 1; - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->rv = 0; - memcpy((void*)&DCI_pdu->dci_alloc[1].dci_pdu[0],(void *)&((DCI1_5MHz_FDD_t *)&dlsch_pdu)->,sizeof(DCI1_5MHz_TDD_t)); - */ - } - - break; - - case 50: - - if (phy_vars_eNB->lte_frame_parms.frame_type == FDD) { - DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1_10MHz_FDD_t; - - ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->rballoc = rballoc; - ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->TPC = 0; - ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->harq_pid = 0; - ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->mcs = openair_daq_vars.target_ue_dl_mcs; - //((DCI1_10MHz_FDD_t *)&dlsch_pdu)->mcs = (unsigned char) ((phy_vars_eNB->frame%1024)%28); - ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; - ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->rv = 0; - memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],(void *)&dlsch_pdu,sizeof(DCI1_10MHz_TDD_t)); - - /* - //user2 - DCI_pdu->dci_alloc[1].dci_length = sizeof_DCI1_10MHz_TDD_t; - DCI_pdu->dci_alloc[1].L = 2; - DCI_pdu->dci_alloc[1].rnti = 0x1236; - DCI_pdu->dci_alloc[1].format = format1; - DCI_pdu->dci_alloc[1].ra_flag = 0; - - ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->rballoc = rballoc2; - ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->TPC = 0; - ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->dai = 0; - ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->harq_pid = 1; - //((DCI1_10MHz_FDD_t *)&dlsch_pdu)->mcs = (unsigned char) ((phy_vars_eNB->proc[subframe].frame%1024)%28); - ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->mcs = openair_daq_vars.target_ue_dl_mcs; - ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->ndi = 1; - ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->rv = 0; - memcpy((void*)&DCI_pdu->dci_alloc[1].dci_pdu[0],(void *)&((DCI1_10MHz_FDD_t *)&dlsch_pdu)->,sizeof(DCI1_10MHz_TDD_t)); - */ - } else { - DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1_10MHz_TDD_t; - - ((DCI1_10MHz_TDD_t *)&dlsch_pdu)->rballoc = rballoc; - ((DCI1_10MHz_TDD_t *)&dlsch_pdu)->TPC = 0; - ((DCI1_10MHz_TDD_t *)&dlsch_pdu)->dai = 0; - ((DCI1_10MHz_TDD_t *)&dlsch_pdu)->harq_pid = 0; - ((DCI1_10MHz_TDD_t *)&dlsch_pdu)->mcs = openair_daq_vars.target_ue_dl_mcs; - //((DCI1_10MHz_TDD_t *)&dlsch_pdu)->mcs = (unsigned char) ((phy_vars_eNB->frame%1024)%28); - ((DCI1_10MHz_TDD_t *)&dlsch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; - ((DCI1_10MHz_TDD_t *)&dlsch_pdu)->rv = 0; - memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],(void *)&dlsch_pdu,sizeof(DCI1_10MHz_TDD_t)); - - /* - //user2 - DCI_pdu->dci_alloc[1].dci_length = sizeof_DCI1_10MHz_TDD_t; - DCI_pdu->dci_alloc[1].L = 2; - DCI_pdu->dci_alloc[1].rnti = 0x1236; - DCI_pdu->dci_alloc[1].format = format1; - DCI_pdu->dci_alloc[1].ra_flag = 0; - - ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->rballoc = rballoc2; - ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->TPC = 0; - ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->dai = 0; - ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->harq_pid = 1; - //((DCI1_10MHz_FDD_t *)&dlsch_pdu)->mcs = (unsigned char) ((phy_vars_eNB->proc[subframe].frame%1024)%28); - ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->mcs = openair_daq_vars.target_ue_dl_mcs; - ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->ndi = 1; - ((DCI1_10MHz_FDD_t *)&dlsch_pdu)->rv = 0; - memcpy((void*)&DCI_pdu->dci_alloc[1].dci_pdu[0],(void *)&((DCI1_10MHz_FDD_t *)&dlsch_pdu)->,sizeof(DCI1_10MHz_TDD_t)); - */ - } - - break; - - case 100: - if (phy_vars_eNB->lte_frame_parms.frame_type == FDD) { - DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1_5MHz_FDD_t; - - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->rballoc = rballoc; - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->TPC = 0; - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->harq_pid = 0; - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->mcs = openair_daq_vars.target_ue_dl_mcs; - //((DCI1_5MHz_FDD_t *)&dlsch_pdu)->mcs = (unsigned char) ((phy_vars_eNB->frame%1024)%28); - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->rv = 0; - memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],(void *)&dlsch_pdu,sizeof(DCI1_5MHz_TDD_t)); - - /* - //user2 - DCI_pdu->dci_alloc[1].dci_length = sizeof_DCI1_5MHz_TDD_t; - DCI_pdu->dci_alloc[1].L = 2; - DCI_pdu->dci_alloc[1].rnti = 0x1236; - DCI_pdu->dci_alloc[1].format = format1; - DCI_pdu->dci_alloc[1].ra_flag = 0; - - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->rballoc = rballoc2; - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->TPC = 0; - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->dai = 0; - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->harq_pid = 1; - //((DCI1_5MHz_FDD_t *)&dlsch_pdu)->mcs = (unsigned char) ((phy_vars_eNB->proc[subframe].frame%1024)%28); - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->mcs = openair_daq_vars.target_ue_dl_mcs; - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->ndi = 1; - ((DCI1_5MHz_FDD_t *)&dlsch_pdu)->rv = 0; - memcpy((void*)&DCI_pdu->dci_alloc[1].dci_pdu[0],(void *)&((DCI1_5MHz_FDD_t *)&dlsch_pdu)->,sizeof(DCI1_5MHz_TDD_t)); - */ - } else { - DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1_20MHz_TDD_t; - - ((DCI1_20MHz_TDD_t *)&dlsch_pdu)->rballoc = rballoc; - ((DCI1_20MHz_TDD_t *)&dlsch_pdu)->TPC = 0; - ((DCI1_20MHz_TDD_t *)&dlsch_pdu)->dai = 0; - ((DCI1_20MHz_TDD_t *)&dlsch_pdu)->harq_pid = 0; - ((DCI1_20MHz_TDD_t *)&dlsch_pdu)->mcs = openair_daq_vars.target_ue_dl_mcs; - //((DCI1_20MHz_TDD_t *)&dlsch_pdu)->mcs = (unsigned char) ((phy_vars_eNB->frame%1024)%28); - ((DCI1_20MHz_TDD_t *)&dlsch_pdu)->ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; - ((DCI1_20MHz_TDD_t *)&dlsch_pdu)->rv = 0; - memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],(void *)&dlsch_pdu,sizeof(DCI1_20MHz_TDD_t)); - - /* - //user2 - DCI_pdu->dci_alloc[1].dci_length = sizeof_DCI1_20MHz_TDD_t; - DCI_pdu->dci_alloc[1].L = 2; - DCI_pdu->dci_alloc[1].rnti = 0x1236; - DCI_pdu->dci_alloc[1].format = format1; - DCI_pdu->dci_alloc[1].ra_flag = 0; - - ((DCI1_20MHz_FDD_t *)&dlsch_pdu)->rballoc = rballoc2; - ((DCI1_20MHz_FDD_t *)&dlsch_pdu)->TPC = 0; - ((DCI1_20MHz_FDD_t *)&dlsch_pdu)->dai = 0; - ((DCI1_20MHz_FDD_t *)&dlsch_pdu)->harq_pid = 1; - //((DCI1_20MHz_FDD_t *)&dlsch_pdu)->mcs = (unsigned char) ((phy_vars_eNB->proc[subframe].frame%1024)%28); - ((DCI1_20MHz_FDD_t *)&dlsch_pdu)->mcs = openair_daq_vars.target_ue_dl_mcs; - ((DCI1_20MHz_FDD_t *)&dlsch_pdu)->ndi = 1; - ((DCI1_20MHz_FDD_t *)&dlsch_pdu)->rv = 0; - memcpy((void*)&DCI_pdu->dci_alloc[1].dci_pdu[0],(void *)&((DCI1_20MHz_FDD_t *)&dlsch_pdu)->,sizeof(DCI1_5MHz_TDD_t)); - */ - } - - break; - } - - } else if (transmission_mode==5) { - DCI_pdu->Num_ue_spec_dci = 2; - // user 1 - DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1E_5MHz_2A_M10PRB_TDD_t; - DCI_pdu->dci_alloc[0].L = 3; - DCI_pdu->dci_alloc[0].rnti = 0x1235; - DCI_pdu->dci_alloc[0].format = format1E_2A_M10PRB; - DCI_pdu->dci_alloc[0].ra_flag = 0; - - DLSCH_alloc_pdu1E.tpmi = 5; //5=use feedback - DLSCH_alloc_pdu1E.rv = 0; - DLSCH_alloc_pdu1E.ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; - //DLSCH_alloc_pdu1E.mcs = cqi_to_mcs[phy_vars_eNB->eNB_UE_stats->DL_cqi[0]]; - //DLSCH_alloc_pdu1E.mcs = (unsigned char) (taus()%28); - DLSCH_alloc_pdu1E.mcs = openair_daq_vars.target_ue_dl_mcs; - //DLSCH_alloc_pdu1E.mcs = (unsigned char) ((phy_vars_eNB->proc[subframe].frame%1024)%28); - phy_vars_eNB->eNB_UE_stats[0].dlsch_mcs1 = DLSCH_alloc_pdu1E.mcs; - DLSCH_alloc_pdu1E.harq_pid = 0; - DLSCH_alloc_pdu1E.dai = 0; - DLSCH_alloc_pdu1E.TPC = 0; - DLSCH_alloc_pdu1E.rballoc = openair_daq_vars.ue_dl_rb_alloc; - DLSCH_alloc_pdu1E.rah = 0; - DLSCH_alloc_pdu1E.dl_power_off = 0; //0=second user present - memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],(void *)&DLSCH_alloc_pdu1E,sizeof(DCI1E_5MHz_2A_M10PRB_TDD_t)); - - //user 2 - DCI_pdu->dci_alloc[1].dci_length = sizeof_DCI1E_5MHz_2A_M10PRB_TDD_t; - DCI_pdu->dci_alloc[1].L = 0; - DCI_pdu->dci_alloc[1].rnti = 0x1236; - DCI_pdu->dci_alloc[1].format = format1E_2A_M10PRB; - DCI_pdu->dci_alloc[1].ra_flag = 0; - //DLSCH_alloc_pdu1E.mcs = openair_daq_vars.target_ue_dl_mcs; - //DLSCH_alloc_pdu1E.mcs = (unsigned char) (taus()%28); - //DLSCH_alloc_pdu1E.mcs = (unsigned char) ((phy_vars_eNB->frame%1024)%28); - DLSCH_alloc_pdu1E.mcs = (unsigned char) (((phy_vars_eNB->proc[sched_subframe].frame_tx%1024)/3)%28); - phy_vars_eNB->eNB_UE_stats[1].dlsch_mcs1 = DLSCH_alloc_pdu1E.mcs; - - memcpy((void*)&DCI_pdu->dci_alloc[1].dci_pdu[0],(void *)&DLSCH_alloc_pdu1E,sizeof(DCI1E_5MHz_2A_M10PRB_TDD_t)); - - // set the precoder of the second UE orthogonal to the first - phy_vars_eNB->eNB_UE_stats[1].DL_pmi_single = (phy_vars_eNB->eNB_UE_stats[0].DL_pmi_single ^ 0x1555); - } - - break; - - /* - case 8: - DCI_pdu->Num_common_dci = 1; - DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1A_5MHz_TDD_1_6_t; - DCI_pdu->dci_alloc[0].L = 2; - DCI_pdu->dci_alloc[0].rnti = 0xbeef; - DCI_pdu->dci_alloc[0].format = format1A; - DCI_pdu->dci_alloc[0].ra_flag = 1; - - RA_alloc_pdu.type = 1; - RA_alloc_pdu.vrb_type = 0; - RA_alloc_pdu.rballoc = computeRIV(25,12,3); - RA_alloc_pdu.ndi = 1; - RA_alloc_pdu.rv = 1; - RA_alloc_pdu.mcs = 4; - RA_alloc_pdu.harq_pid = 0; - RA_alloc_pdu.TPC = 1; - - memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],&RA_alloc_pdu,sizeof(DCI1A_5MHz_TDD_1_6_t)); - break; - */ - case 9: - DCI_pdu->Num_ue_spec_dci = 1; - - //user 1 - if (phy_vars_eNB->lte_frame_parms.frame_type == FDD) - DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI0_5MHz_FDD_t ; - else - DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI0_5MHz_TDD_1_6_t ; - - DCI_pdu->dci_alloc[0].L = 2; - DCI_pdu->dci_alloc[0].rnti = 0x1235; - DCI_pdu->dci_alloc[0].format = format0; - DCI_pdu->dci_alloc[0].ra_flag = 0; - - UL_alloc_pdu.type = 0; - UL_alloc_pdu.hopping = 0; - UL_alloc_pdu.rballoc = computeRIV(25,2,openair_daq_vars.ue_ul_nb_rb); - UL_alloc_pdu.mcs = openair_daq_vars.target_ue_ul_mcs; - UL_alloc_pdu.ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; - UL_alloc_pdu.TPC = 0; - UL_alloc_pdu.cshift = 0; - UL_alloc_pdu.dai = 0; - UL_alloc_pdu.cqi_req = 1; - memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],(void *)&UL_alloc_pdu,sizeof(DCI0_5MHz_TDD_1_6_t)); - - // user 2 - /* - DCI_pdu->dci_alloc[1].dci_length = sizeof_DCI0_5MHz_TDD_1_6_t ; - DCI_pdu->dci_alloc[1].L = 2; - DCI_pdu->dci_alloc[1].rnti = 0x1236; - DCI_pdu->dci_alloc[1].format = format0; - DCI_pdu->dci_alloc[1].ra_flag = 0; - - UL_alloc_pdu.type = 0; - UL_alloc_pdu.hopping = 0; - if (cooperation_flag==0) - UL_alloc_pdu.rballoc = computeRIV(25,2+openair_daq_vars.ue_ul_nb_rb,openair_daq_vars.ue_ul_nb_rb); - else - UL_alloc_pdu.rballoc = computeRIV(25,0,openair_daq_vars.ue_ul_nb_rb); - UL_alloc_pdu.mcs = openair_daq_vars.target_ue_ul_mcs; - UL_alloc_pdu.ndi = phy_vars_eNB->proc[sched_subframe].frame_tx&1; - UL_alloc_pdu.TPC = 0; - if ((cooperation_flag==0) || (cooperation_flag==1)) - UL_alloc_pdu.cshift = 0; - else - UL_alloc_pdu.cshift = 1; - UL_alloc_pdu.dai = 0; - UL_alloc_pdu.cqi_req = 1; - memcpy((void*)&DCI_pdu->dci_alloc[1].dci_pdu[0],(void *)&UL_alloc_pdu,sizeof(DCI0_5MHz_TDD_1_6_t)); - */ - break; - - default: - break; - } - - DCI_pdu->nCCE = 0; - - for (i=0; i<DCI_pdu->Num_common_dci+DCI_pdu->Num_ue_spec_dci; i++) { - DCI_pdu->nCCE += (1<<(DCI_pdu->dci_alloc[i].L)); - } - -} - -#ifdef EMOS -void fill_dci_emos(DCI_PDU *DCI_pdu, uint8_t subframe, PHY_VARS_eNB *phy_vars_eNB) -{ - - int i; - uint8_t cooperation_flag = phy_vars_eNB->cooperation_flag; - uint8_t transmission_mode = phy_vars_eNB->transmission_mode[0]; - - //uint32_t rballoc = 0x00F0; - //uint32_t rballoc2 = 0x000F; - /* - uint32_t rand = taus(); - if ((subframe==8) || (subframe==9) || (subframe==0)) - rand = (rand%5)+5; - else - rand = (rand%4)+5; - */ - - DCI_pdu->Num_common_dci = 0; - DCI_pdu->Num_ue_spec_dci=0; - - switch (subframe) { - case 5: - DCI_pdu->Num_ue_spec_dci = 1; - - if (transmission_mode<3) { - //user 1 - DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1_5MHz_TDD_t; - DCI_pdu->dci_alloc[0].L = 2; - DCI_pdu->dci_alloc[0].rnti = 0x1235; - DCI_pdu->dci_alloc[0].format = format1; - DCI_pdu->dci_alloc[0].ra_flag = 0; - - DLSCH_alloc_pdu.rballoc = openair_daq_vars.ue_dl_rb_alloc; - DLSCH_alloc_pdu.TPC = 0; - DLSCH_alloc_pdu.dai = 0; - DLSCH_alloc_pdu.harq_pid = 1; - DLSCH_alloc_pdu.mcs = openair_daq_vars.target_ue_dl_mcs; - DLSCH_alloc_pdu.ndi = 1; - DLSCH_alloc_pdu.rv = 0; - memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],(void *)&DLSCH_alloc_pdu,sizeof(DCI1_5MHz_TDD_t)); - - /* - //user2 - DCI_pdu->dci_alloc[1].dci_length = sizeof_DCI1_5MHz_TDD_t; - DCI_pdu->dci_alloc[1].L = 2; - DCI_pdu->dci_alloc[1].rnti = 0x1236; - DCI_pdu->dci_alloc[1].format = format1; - DCI_pdu->dci_alloc[1].ra_flag = 0; - - DLSCH_alloc_pdu.rballoc = rballoc2; - DLSCH_alloc_pdu.TPC = 0; - DLSCH_alloc_pdu.dai = 0; - DLSCH_alloc_pdu.harq_pid = 1; - DLSCH_alloc_pdu.mcs = openair_daq_vars.target_ue_dl_mcs; - DLSCH_alloc_pdu.ndi = 1; - DLSCH_alloc_pdu.rv = 0; - memcpy((void*)&DCI_pdu->dci_alloc[1].dci_pdu[0],(void *)&DLSCH_alloc_pdu,sizeof(DCI1_5MHz_TDD_t)); - */ - } else if (transmission_mode==5) { - DCI_pdu->Num_ue_spec_dci = 2; - // user 1 - DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1E_5MHz_2A_M10PRB_TDD_t; - DCI_pdu->dci_alloc[0].L = 2; - DCI_pdu->dci_alloc[0].rnti = 0x1235; - DCI_pdu->dci_alloc[0].format = format1E_2A_M10PRB; - DCI_pdu->dci_alloc[0].ra_flag = 0; - - DLSCH_alloc_pdu1E.tpmi = 5; //5=use feedback - DLSCH_alloc_pdu1E.rv = 0; - DLSCH_alloc_pdu1E.ndi = 1; - DLSCH_alloc_pdu1E.mcs = openair_daq_vars.target_ue_dl_mcs; - DLSCH_alloc_pdu1E.harq_pid = 1; - DLSCH_alloc_pdu1E.dai = 0; - DLSCH_alloc_pdu1E.TPC = 0; - DLSCH_alloc_pdu1E.rballoc = openair_daq_vars.ue_dl_rb_alloc; - DLSCH_alloc_pdu1E.rah = 0; - DLSCH_alloc_pdu1E.dl_power_off = 0; //0=second user present - memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],(void *)&DLSCH_alloc_pdu1E,sizeof(DCI1E_5MHz_2A_M10PRB_TDD_t)); - - //user 2 - DCI_pdu->dci_alloc[1].dci_length = sizeof_DCI1E_5MHz_2A_M10PRB_TDD_t; - DCI_pdu->dci_alloc[1].L = 2; - DCI_pdu->dci_alloc[1].rnti = 0x1236; - DCI_pdu->dci_alloc[1].format = format1E_2A_M10PRB; - DCI_pdu->dci_alloc[1].ra_flag = 0; - - memcpy((void*)&DCI_pdu->dci_alloc[1].dci_pdu[0],(void *)&DLSCH_alloc_pdu1E,sizeof(DCI1E_5MHz_2A_M10PRB_TDD_t)); - - // set the precoder of the second UE orthogonal to the first - phy_vars_eNB->eNB_UE_stats[1].DL_pmi_single = (phy_vars_eNB->eNB_UE_stats[0].DL_pmi_single ^ 0x1555); - } - - break; - - case 7: - DCI_pdu->Num_common_dci = 1; - DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1A_5MHz_TDD_1_6_t; - DCI_pdu->dci_alloc[0].L = 2; - DCI_pdu->dci_alloc[0].rnti = 0xbeef; - DCI_pdu->dci_alloc[0].format = format1A; - DCI_pdu->dci_alloc[0].ra_flag = 1; - - RA_alloc_pdu.type = 1; - RA_alloc_pdu.vrb_type = 0; - RA_alloc_pdu.rballoc = computeRIV(25,12,3); - RA_alloc_pdu.ndi = 1; - RA_alloc_pdu.rv = 1; - RA_alloc_pdu.mcs = 4; - RA_alloc_pdu.harq_pid = 0; - RA_alloc_pdu.TPC = 1; - - memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],&RA_alloc_pdu,sizeof(DCI1A_5MHz_TDD_1_6_t)); - break; - - case 9: - DCI_pdu->Num_ue_spec_dci = 1; - - //user 1 - DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI0_5MHz_TDD_1_6_t ; - DCI_pdu->dci_alloc[0].L = 2; - DCI_pdu->dci_alloc[0].rnti = 0x1235; - DCI_pdu->dci_alloc[0].format = format0; - DCI_pdu->dci_alloc[0].ra_flag = 0; - - UL_alloc_pdu.type = 0; - UL_alloc_pdu.hopping = 0; - UL_alloc_pdu.rballoc = computeRIV(25,0,openair_daq_vars.ue_ul_nb_rb); - UL_alloc_pdu.mcs = openair_daq_vars.target_ue_ul_mcs; - UL_alloc_pdu.ndi = 1; - UL_alloc_pdu.TPC = 0; - UL_alloc_pdu.cshift = 0; - UL_alloc_pdu.dai = 0; - UL_alloc_pdu.cqi_req = 1; - memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],(void *)&UL_alloc_pdu,sizeof(DCI0_5MHz_TDD_1_6_t)); - - /* - //user 2 - DCI_pdu->dci_alloc[1].dci_length = sizeof_DCI0_5MHz_TDD_1_6_t ; - DCI_pdu->dci_alloc[1].L = 2; - DCI_pdu->dci_alloc[1].rnti = 0x1236; - DCI_pdu->dci_alloc[1].format = format0; - DCI_pdu->dci_alloc[1].ra_flag = 0; - - UL_alloc_pdu.type = 0; - UL_alloc_pdu.hopping = 0; - if (cooperation_flag==0) - UL_alloc_pdu.rballoc = computeRIV(25,2+openair_daq_vars.ue_ul_nb_rb,openair_daq_vars.ue_ul_nb_rb); - else - UL_alloc_pdu.rballoc = computeRIV(25,0,openair_daq_vars.ue_ul_nb_rb); - UL_alloc_pdu.mcs = openair_daq_vars.target_ue_ul_mcs; - UL_alloc_pdu.ndi = 1; - UL_alloc_pdu.TPC = 0; - if ((cooperation_flag==0) || (cooperation_flag==1)) - UL_alloc_pdu.cshift = 0; - else - UL_alloc_pdu.cshift = 1; - UL_alloc_pdu.dai = 0; - UL_alloc_pdu.cqi_req = 1; - memcpy((void*)&DCI_pdu->dci_alloc[1].dci_pdu[0],(void *)&UL_alloc_pdu,sizeof(DCI0_5MHz_TDD_1_6_t)); - */ - break; - - default: - break; - } - - DCI_pdu->nCCE = 0; - - for (i=0; i<DCI_pdu->Num_common_dci+DCI_pdu->Num_ue_spec_dci; i++) { - DCI_pdu->nCCE += (1<<(DCI_pdu->dci_alloc[i].L)); - } - -} -#endif //EMOS -#endif //OPENAIR2 #define AMP_OVER_SQRT2 ((AMP*ONE_OVER_SQRT2_Q15)>>15) #define AMP_OVER_2 (AMP>>1) @@ -1308,10 +623,8 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e uint8_t harq_pid; DCI_PDU *DCI_pdu; uint8_t *DLSCH_pdu=NULL; -#ifndef OPENAIR2 DCI_PDU DCI_pdu_tmp; uint8_t DLSCH_pdu_tmp[768*8]; -#endif int8_t UE_id; uint8_t num_pdcch_symbols=0; uint8_t ul_subframe; @@ -1353,13 +666,12 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e } -#ifdef OPENAIR2 - // Get scheduling info for next subframe - if (phy_vars_eNB->CC_id == 0) - mac_xface->eNB_dlsch_ulsch_scheduler(phy_vars_eNB->Mod_id,0,phy_vars_eNB->proc[sched_subframe].frame_tx,subframe);//,1); - -#endif + if (phy_vars_eNB->mac_enabled==1) { + if (phy_vars_eNB->CC_id == 0) { + mac_xface->eNB_dlsch_ulsch_scheduler(phy_vars_eNB->Mod_id,0,phy_vars_eNB->proc[sched_subframe].frame_tx,subframe);//,1); + } + } if (abstraction_flag==0) { // clear the transmit data array for the current subframe @@ -1687,36 +999,22 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e #endif -#ifdef OPENAIR2 - - // Parse DCI received from MAC - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_PDCCH_TX,1); - DCI_pdu = mac_xface->get_dci_sdu(phy_vars_eNB->Mod_id, - phy_vars_eNB->CC_id, - phy_vars_eNB->proc[sched_subframe].frame_tx, - subframe); -#else - DCI_pdu = &DCI_pdu_tmp; -#ifdef EMOS - /* - if (((phy_vars_eNB->proc[sched_subframe].frame_tx%1024)%3 == 0) && (next_slot == 0)) { - //openair_daq_vars.target_ue_dl_mcs = (openair_daq_vars.target_ue_dl_mcs+1)%28; - openair_daq_vars.target_ue_dl_mcs = taus()%28; - LOG_D(PHY,"[MYEMOS] frame %d, increasing MCS to %d\n",phy_vars_eNB->proc[sched_subframe].frame_tx,openair_daq_vars.target_ue_dl_mcs); - } - */ - /* - if (phy_vars_eNB->proc[sched_subframe].frame_tx > 28000) { - LOG_E(PHY,"More that 28000 frames reached! Exiting!\n"); - } - */ -#endif + if (phy_vars_eNB->mac_enabled==1) { + // Parse DCI received from MAC + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_PDCCH_TX,1); + DCI_pdu = mac_xface->get_dci_sdu(phy_vars_eNB->Mod_id, + phy_vars_eNB->CC_id, + phy_vars_eNB->proc[sched_subframe].frame_tx, + subframe); + } + else { + DCI_pdu = &DCI_pdu_tmp; #ifdef EMOS_CHANNEL - fill_dci_emos(DCI_pdu,sched_subframe,phy_vars_eNB); + fill_dci_emos(DCI_pdu,sched_subframe,phy_vars_eNB); #else - fill_dci(DCI_pdu,sched_subframe,phy_vars_eNB); -#endif + fill_dci(DCI_pdu,sched_subframe,phy_vars_eNB); #endif + } // clear existing ulsch dci allocations before applying info from MAC (this is table ul_subframe = pdcch_alloc2ul_subframe(&phy_vars_eNB->lte_frame_parms,subframe); @@ -1783,6 +1081,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e #ifdef DEBUG_PHY_PROC LOG_D(PHY,"[eNB %"PRIu8"] SI generate_eNB_dlsch_params_from_dci\n", phy_vars_eNB->Mod_id); #endif + generate_eNB_dlsch_params_from_dci(frame, subframe, &DCI_pdu->dci_alloc[i].dci_pdu[0], @@ -1817,6 +1116,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e #ifdef DEBUG_PHY_PROC LOG_D(PHY,"[eNB %"PRIu8"] RA generate_eNB_dlsch_params_from_dci\n", phy_vars_eNB->Mod_id); #endif + generate_eNB_dlsch_params_from_dci(frame, subframe, &DCI_pdu->dci_alloc[i].dci_pdu[0], @@ -1851,17 +1151,20 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e else if (DCI_pdu->dci_alloc[i].format != format0) { // this is a normal DLSCH allocation -#ifdef OPENAIR2 #ifdef DEBUG_PHY_PROC LOG_D(PHY,"[eNB] Searching for RNTI %"PRIx16"\n",DCI_pdu->dci_alloc[i].rnti); #endif - UE_id = find_ue((int16_t)DCI_pdu->dci_alloc[i].rnti,phy_vars_eNB); -#else - UE_id = i; -#endif + + if (phy_vars_eNB->mac_enabled==1) + UE_id = find_ue((int16_t)DCI_pdu->dci_alloc[i].rnti,phy_vars_eNB); + else + UE_id = i; if (UE_id>=0) { - // dump_dci(&phy_vars_eNB->lte_frame_parms,&DCI_pdu->dci_alloc[i]); + if ((frame%100)==0) { + LOG_D(PHY,"Frame %3d, SF %d \n",frame,subframe); + dump_dci(&phy_vars_eNB->lte_frame_parms,&DCI_pdu->dci_alloc[i]); + } #if defined(SMBV) && !defined(EXMIMO) // Configure this user if (smbv_is_config_frame(phy_vars_eNB->proc[sched_subframe].frame_tx) && (smbv_frame_cnt < 4)) { @@ -1871,6 +1174,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e } #endif + generate_eNB_dlsch_params_from_dci(frame, subframe, &DCI_pdu->dci_alloc[i].dci_pdu[0], @@ -1931,14 +1235,13 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e if (harq_pid==255) { LOG_E(PHY,"[eNB %"PRIu8"] Frame %d: Bad harq_pid for ULSCH allocation\n",phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx); //mac_exit_wrapper("Invalid harq_pid (255) detected"); - return; // not reached + return; } -#ifdef OPENAIR2 - UE_id = find_ue((int16_t)DCI_pdu->dci_alloc[i].rnti,phy_vars_eNB); -#else - UE_id = i; -#endif + if (phy_vars_eNB->mac_enabled==1) + UE_id = find_ue((int16_t)DCI_pdu->dci_alloc[i].rnti,phy_vars_eNB); + else + UE_id = i; if (UE_id<0) { LOG_E(PHY,"[eNB %"PRIu8"] Frame %d: Unknown UE_id for rnti %"PRIx16"\n",phy_vars_eNB->Mod_id,phy_vars_eNB->proc[sched_subframe].frame_tx,DCI_pdu->dci_alloc[i].rnti); @@ -1967,6 +1270,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e //dump_dci(&phy_vars_eNB->lte_frame_parms,&DCI_pdu->dci_alloc[i]); //LOG_D(PHY,"[eNB] cba generate_eNB_ulsch_params_from_dci for ue %d for dci rnti %x\n", UE_id, DCI_pdu->dci_alloc[i].rnti); + generate_eNB_ulsch_params_from_dci(&DCI_pdu->dci_alloc[i].dci_pdu[0], DCI_pdu->dci_alloc[i].rnti, sched_subframe, @@ -2068,19 +1372,19 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e input_buffer_length = phy_vars_eNB->dlsch_eNB_SI->harq_processes[0]->TBS/8; -#ifdef OPENAIR2 - DLSCH_pdu = mac_xface->get_dlsch_sdu(phy_vars_eNB->Mod_id, - phy_vars_eNB->CC_id, - phy_vars_eNB->proc[sched_subframe].frame_tx, - SI_RNTI, - 0); -#else - DLSCH_pdu = DLSCH_pdu_tmp; - - for (i=0; i<input_buffer_length; i++) - DLSCH_pdu[i] = (unsigned char)(taus()&0xff); + if (phy_vars_eNB->mac_enabled==1) { + DLSCH_pdu = mac_xface->get_dlsch_sdu(phy_vars_eNB->Mod_id, + phy_vars_eNB->CC_id, + phy_vars_eNB->proc[sched_subframe].frame_tx, + SI_RNTI, + 0); + } + else { + DLSCH_pdu = DLSCH_pdu_tmp; -#endif + for (i=0; i<input_buffer_length; i++) + DLSCH_pdu[i] = (unsigned char)(taus()&0xff); + } #if defined(SMBV) && !defined(EXMIMO) @@ -2170,7 +1474,6 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e input_buffer_length = phy_vars_eNB->dlsch_eNB_ra->harq_processes[0]->TBS/8; -#ifdef OPENAIR2 int16_t crnti = mac_xface->fill_rar(phy_vars_eNB->Mod_id, phy_vars_eNB->CC_id, phy_vars_eNB->proc[sched_subframe].frame_tx, @@ -2219,15 +1522,14 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e phy_vars_eNB->ulsch_eNB[(uint32_t)UE_id]->Msg3_frame, phy_vars_eNB->ulsch_eNB[(uint32_t)UE_id]->Msg3_subframe); -#else - - for (i=0; i<input_buffer_length; i++) - dlsch_input_buffer[i]= (unsigned char) i; //(taus()&0xff); - - dlsch_input_buffer[1] = (phy_vars_eNB->eNB_UE_stats[0].UE_timing_offset)>>(2+4); // 7 MSBs of timing advance + divide by 4 - dlsch_input_buffer[2] = ((phy_vars_eNB->eNB_UE_stats[0].UE_timing_offset)<<(4-2))&0xf0; // 4 LSBs of timing advance + divide by 4 - //LOG_I(PHY,"UE %d: timing_offset = %d\n",UE_id,phy_vars_eNB->eNB_UE_stats[0].UE_timing_offset); -#endif + /* + for (i=0; i<input_buffer_length; i++) + dlsch_input_buffer[i]= (unsigned char) i; //(taus()&0xff); + + dlsch_input_buffer[1] = (phy_vars_eNB->eNB_UE_stats[0].UE_timing_offset)>>(2+4); // 7 MSBs of timing advance + divide by 4 + dlsch_input_buffer[2] = ((phy_vars_eNB->eNB_UE_stats[0].UE_timing_offset)<<(4-2))&0xf0; // 4 LSBs of timing advance + divide by 4 + //LOG_I(PHY,"UE %d: timing_offset = %d\n",UE_id,phy_vars_eNB->eNB_UE_stats[0].UE_timing_offset); + */ #if defined(SMBV) && !defined(EXMIMO) @@ -2296,10 +1598,8 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e phy_vars_eNB->proc[sched_subframe].frame_tx, subframe, re_allocated); #endif -#ifdef OPENAIR2 } //max user count -#endif phy_vars_eNB->dlsch_eNB_ra->active = 0; } @@ -2356,21 +1656,21 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e phy_vars_eNB->eNB_UE_stats[(uint32_t)UE_id].dlsch_trials[harq_pid][0]++; -#ifdef OPENAIR2 - DLSCH_pdu = mac_xface->get_dlsch_sdu(phy_vars_eNB->Mod_id, - phy_vars_eNB->CC_id, - phy_vars_eNB->proc[sched_subframe].frame_tx, - phy_vars_eNB->dlsch_eNB[(uint8_t)UE_id][0]->rnti, - 0); - phy_vars_eNB->eNB_UE_stats[UE_id].total_TBS_MAC += phy_vars_eNB->dlsch_eNB[(uint8_t)UE_id][0]->harq_processes[harq_pid]->TBS; -#else - DLSCH_pdu = DLSCH_pdu_tmp; - - for (i=0; i<input_buffer_length; i++) - DLSCH_pdu[i] = (unsigned char)(taus()&0xff); - -#endif - + if (phy_vars_eNB->mac_enabled==1) { + DLSCH_pdu = mac_xface->get_dlsch_sdu(phy_vars_eNB->Mod_id, + phy_vars_eNB->CC_id, + phy_vars_eNB->proc[sched_subframe].frame_tx, + phy_vars_eNB->dlsch_eNB[(uint8_t)UE_id][0]->rnti, + 0); + phy_vars_eNB->eNB_UE_stats[UE_id].total_TBS_MAC += phy_vars_eNB->dlsch_eNB[(uint8_t)UE_id][0]->harq_processes[harq_pid]->TBS; + } + else { + DLSCH_pdu = DLSCH_pdu_tmp; + + for (i=0; i<input_buffer_length; i++) + DLSCH_pdu[i] = (unsigned char)(taus()&0xff); + } + #if defined(SMBV) && !defined(EXMIMO) // Configures the data source of allocation (allocation is configured by DCI) @@ -2755,7 +2055,7 @@ void process_HARQ_feedback(uint8_t UE_id, // then Increment DLSCH round index dlsch_harq_proc->round++; - if (dlsch_harq_proc->round == dlsch->Mdlharq) { + if (dlsch_harq_proc->round == 1/*dlsch->Mdlharq*/) { // This was the last round for DLSCH so reset round and increment l2_error counter #ifdef DEBUG_PHY_PROC LOG_W(PHY,"[eNB %d][PDSCH %x/%d] DLSCH retransmissions exhausted, dropping packet\n",phy_vars_eNB->Mod_id, @@ -3061,7 +2361,8 @@ void prach_procedures(PHY_VARS_eNB *phy_vars_eNB,uint8_t sched_subframe,uint8_t preamble_energy_max/10, preamble_energy_max%10, preamble_delay_list[preamble_max]); -#ifdef OPENAIR2 + + if (phy_vars_eNB->mac_enabled==1) { uint8_t update_TA=4; switch (phy_vars_eNB->lte_frame_parms.N_RB_DL) { @@ -3082,16 +2383,14 @@ void prach_procedures(PHY_VARS_eNB *phy_vars_eNB,uint8_t sched_subframe,uint8_t break; } - - mac_xface->initiate_ra_proc(phy_vars_eNB->Mod_id, phy_vars_eNB->CC_id, frame, preamble_max, preamble_delay_list[preamble_max]*update_TA, 0,subframe,0); - -#endif + } + } else { MSC_LOG_EVENT(MSC_PHY_ENB, "0 RA Failed add user, too many"); LOG_I(PHY,"[eNB %d][RAPROC] frame %d, subframe %d: Unable to add user, max user count reached\n", @@ -3277,11 +2576,13 @@ void phy_procedures_eNB_RX(const unsigned char sched_subframe,PHY_VARS_eNB *phy_ if ((i == 1) && (phy_vars_eNB->cooperation_flag > 0) && (two_ues_connected == 1)) break; */ -#ifdef OPENAIR2 - if (phy_vars_eNB->eNB_UE_stats[i].mode == RA_RESPONSE) - process_Msg3(phy_vars_eNB,sched_subframe,i,harq_pid); -#endif + if (phy_vars_eNB->mac_enabled==1) { + if (phy_vars_eNB->eNB_UE_stats[i].mode == RA_RESPONSE) { + process_Msg3(phy_vars_eNB,sched_subframe,i,harq_pid); + } + } + /* #ifdef DEBUG_PHY_PROC @@ -3518,12 +2819,12 @@ void phy_procedures_eNB_RX(const unsigned char sched_subframe,PHY_VARS_eNB *phy_ LOG_I(PHY,"[eNB %d][RAPROC] maxHARQ_Msg3Tx reached, abandoning RA procedure for UE %d\n", phy_vars_eNB->Mod_id, i); phy_vars_eNB->eNB_UE_stats[i].mode = PRACH; -#ifdef OPENAIR2 - mac_xface->cancel_ra_proc(phy_vars_eNB->Mod_id, - phy_vars_eNB->CC_id, - frame, - phy_vars_eNB->eNB_UE_stats[i].crnti); -#endif + if (phy_vars_eNB->mac_enabled==1) { + mac_xface->cancel_ra_proc(phy_vars_eNB->Mod_id, + phy_vars_eNB->CC_id, + frame, + phy_vars_eNB->eNB_UE_stats[i].crnti); + } remove_ue(phy_vars_eNB->eNB_UE_stats[i].crnti,phy_vars_eNB,abstraction_flag); phy_vars_eNB->ulsch_eNB[(uint32_t)i]->Msg3_active = 0; //phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->phich_active = 0; @@ -3649,7 +2950,7 @@ void phy_procedures_eNB_RX(const unsigned char sched_subframe,PHY_VARS_eNB *phy_ phy_vars_eNB->eNB_UE_stats[i].ulsch_consecutive_errors = 0; if (phy_vars_eNB->ulsch_eNB[i]->Msg3_flag == 1) { -#ifdef OPENAIR2 + if (phy_vars_eNB->mac_enabled==1) { //#ifdef DEBUG_PHY_PROC LOG_I(PHY,"[eNB %d][RAPROC] Frame %d Terminating ra_proc for harq %d, UE %d\n", phy_vars_eNB->Mod_id, @@ -3682,7 +2983,7 @@ void phy_procedures_eNB_RX(const unsigned char sched_subframe,PHY_VARS_eNB *phy_ phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->b, phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->TBS>>3); */ -#endif + } phy_vars_eNB->eNB_UE_stats[i].mode = PUSCH; phy_vars_eNB->ulsch_eNB[i]->Msg3_flag = 0; @@ -3731,7 +3032,7 @@ void phy_procedures_eNB_RX(const unsigned char sched_subframe,PHY_VARS_eNB *phy_ //dump_ulsch(phy_vars_eNB,sched_subframe,i); -#ifdef OPENAIR2 + if (phy_vars_eNB->mac_enabled==1) { // if (phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->calibration_flag == 0) { mac_xface->rx_sdu(phy_vars_eNB->Mod_id, phy_vars_eNB->CC_id, @@ -3758,7 +3059,7 @@ void phy_procedures_eNB_RX(const unsigned char sched_subframe,PHY_VARS_eNB *phy_ stop_meas(&phy_vars_eNB->localization_stats); #endif -#endif + } } // estimate timing advance for MAC @@ -3909,12 +3210,12 @@ void phy_procedures_eNB_RX(const unsigned char sched_subframe,PHY_VARS_eNB *phy_ phy_vars_eNB->ulsch_eNB[i]->rnti,frame,subframe); } -#ifdef OPENAIR2 - mac_xface->SR_indication(phy_vars_eNB->Mod_id, - phy_vars_eNB->CC_id, - frame, - phy_vars_eNB->dlsch_eNB[i][0]->rnti,subframe); -#endif + if (phy_vars_eNB->mac_enabled==1) { + mac_xface->SR_indication(phy_vars_eNB->Mod_id, + phy_vars_eNB->CC_id, + frame, + phy_vars_eNB->dlsch_eNB[i][0]->rnti,subframe); + } } }// do_SR==1 diff --git a/openair1/SCHED/phy_procedures_lte_ue.c b/openair1/SCHED/phy_procedures_lte_ue.c index afaecb7075de7524e11323c289edf8c0721f2c9b..b29c229f27aa0a277c1021830a2d33228dc78c07 100755 --- a/openair1/SCHED/phy_procedures_lte_ue.c +++ b/openair1/SCHED/phy_procedures_lte_ue.c @@ -59,20 +59,15 @@ extern int card; #endif #endif -//#define DEBUG_PHY_PROC -#define UE_TX_POWER (-10) +#define DEBUG_PHY_PROC -//#ifdef OPENAIR2 #ifndef PUCCH #define PUCCH #endif -//#endif -//#ifdef OPENAIR2 #include "LAYER2/MAC/extern.h" #include "LAYER2/MAC/defs.h" #include "UTIL/LOG/log.h" -//#endif #ifdef EMOS fifo_dump_emos_UE emos_dump_UE; @@ -87,9 +82,6 @@ fifo_dump_emos_UE emos_dump_UE; # endif #endif -#ifndef OPENAIR2 -//#define DIAG_PHY -#endif #define DLSCH_RB_ALLOC 0x1fbf // skip DC RB (total 23/25 RBs) #define DLSCH_RB_ALLOC_12 0x0aaa // skip DC RB (total 23/25 RBs) @@ -454,7 +446,7 @@ uint16_t get_n1_pucch(PHY_VARS_UE *phy_vars_ue, if (frame_parms->frame_type == FDD ) { // FDD sf = (subframe<4)? subframe+6 : subframe-4; - printf("n1_pucch_UE: subframe %d, nCCE %d\n",sf,phy_vars_ue->lte_ue_pdcch_vars[eNB_id]->nCCE[sf]); + LOG_D(PHY,"n1_pucch_UE: subframe %d, nCCE %d\n",sf,phy_vars_ue->lte_ue_pdcch_vars[eNB_id]->nCCE[sf]); if (SR == 0) return(frame_parms->pucch_config_common.n1PUCCH_AN + phy_vars_ue->lte_ue_pdcch_vars[eNB_id]->nCCE[sf]); @@ -642,16 +634,12 @@ void phy_procedures_emos_UE_TX(uint8_t next_slot,uint8_t eNB_id) { #endif int dummy_tx_buffer[3840*4] __attribute__((aligned(16))); -#ifndef OPENAIR2 PRACH_RESOURCES_t prach_resources_local; -#endif void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstraction_flag,runmode_t mode,relaying_type_t r_type) { -#ifndef OPENAIR2 int i; -#endif uint16_t first_rb, nb_rb; uint8_t harq_pid; unsigned int input_buffer_length; @@ -724,8 +712,7 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra subframe_tx); -#ifdef OPENAIR2 - + if (phy_vars_ue->mac_enabled == 1) { if ((phy_vars_ue->ulsch_ue_Msg3_active[eNB_id] == 1) && (phy_vars_ue->ulsch_ue_Msg3_frame[eNB_id] == frame_tx) && (phy_vars_ue->ulsch_ue_Msg3_subframe[eNB_id] == subframe_tx)) { // Initial Transmission of Msg3 @@ -756,8 +743,7 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra Msg3_flag=0; } - -#endif + } if (phy_vars_ue->ulsch_ue[eNB_id]->harq_processes[harq_pid]->subframe_scheduling_flag == 1) { @@ -856,19 +842,17 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra #endif stop_meas(&phy_vars_ue->ulsch_encoding_stats); - -#ifdef OPENAIR2 - // signal MAC that Msg3 was sent - mac_xface->Msg3_transmitted(Mod_id, - CC_id, - frame_tx, - eNB_id); -#endif + if (phy_vars_ue->mac_enabled == 1) { + // signal MAC that Msg3 was sent + mac_xface->Msg3_transmitted(Mod_id, + CC_id, + frame_tx, + eNB_id); + } } else { input_buffer_length = phy_vars_ue->ulsch_ue[eNB_id]->harq_processes[harq_pid]->TBS/8; -#ifdef OPENAIR2 - + if (phy_vars_ue->mac_enabled==1) { // LOG_D(PHY,"[UE %d] ULSCH : Searching for MAC SDUs\n",Mod_id); if (phy_vars_ue->ulsch_ue[eNB_id]->harq_processes[harq_pid]->round==0) { //if (phy_vars_ue->ulsch_ue[eNB_id]->harq_processes[harq_pid]->calibration_flag == 0) { @@ -905,7 +889,8 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra LOG_T(PHY,"\n"); #endif #endif -#else //OPENAIR2 + } + else { // the following lines were necessary for the calibration in CROWN /* if (phy_vars_ue->ulsch_ue[eNB_id]->harq_processes[harq_pid]->calibration_flag == 0) { @@ -928,8 +913,8 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra for (i=0;i<input_buffer_length;i++) ulsch_input_buffer[i]= i; */ + } -#endif //OPENAIR2 start_meas(&phy_vars_ue->ulsch_encoding_stats); if (abstraction_flag==0) { @@ -961,12 +946,13 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra } if (abstraction_flag == 0) { -#ifdef OPENAIR2 - pusch_power_cntl(phy_vars_ue,subframe_tx,eNB_id,1, abstraction_flag); - phy_vars_ue->tx_power_dBm = phy_vars_ue->ulsch_ue[eNB_id]->Po_PUSCH; -#else - phy_vars_ue->tx_power_dBm = UE_TX_POWER; -#endif + if (phy_vars_ue->mac_enabled==1) { + pusch_power_cntl(phy_vars_ue,subframe_tx,eNB_id,1, abstraction_flag); + phy_vars_ue->tx_power_dBm = phy_vars_ue->ulsch_ue[eNB_id]->Po_PUSCH; + } + else { + phy_vars_ue->tx_power_dBm = phy_vars_ue->tx_power_max_dBm; + } phy_vars_ue->tx_total_RE = nb_rb*12; #if defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR) @@ -1023,17 +1009,19 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra if (is_SR_TXOp(phy_vars_ue,eNB_id,subframe_tx)==1) { LOG_D(PHY,"[UE %d][SR %x] Frame %d subframe %d: got SR_TXOp, Checking for SR for PUSCH from MAC\n", Mod_id,phy_vars_ue->lte_ue_pdcch_vars[eNB_id]->crnti,frame_tx,subframe_tx); -#ifdef OPENAIR2 - SR_payload = mac_xface->ue_get_SR(Mod_id, - CC_id, - frame_tx, - eNB_id, - phy_vars_ue->lte_ue_pdcch_vars[eNB_id]->crnti, - subframe_tx); // subframe used for meas gap -#else - SR_payload = 1; -#endif + if (phy_vars_ue->mac_enabled==1) { + SR_payload = mac_xface->ue_get_SR(Mod_id, + CC_id, + frame_tx, + eNB_id, + phy_vars_ue->lte_ue_pdcch_vars[eNB_id]->crnti, + subframe_tx); // subframe used for meas gap + } + else { + SR_payload = 1; + } + if (SR_payload>0) { generate_ul_signal = 1; LOG_D(PHY,"[UE %d][SR %x] Frame %d subframe %d got the SR for PUSCH is %d\n", @@ -1041,8 +1029,9 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra } else { phy_vars_ue->sr[subframe_tx]=0; } - } else + } else { SR_payload=0; + } if (get_ack(&phy_vars_ue->lte_frame_parms, phy_vars_ue->dlsch_ue[eNB_id][0]->harq_ack, @@ -1057,12 +1046,13 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra pucch_ack_payload, SR_payload); -#ifdef OPENAIR2 - Po_PUCCH = pucch_power_cntl(phy_vars_ue,subframe_tx,eNB_id,format); - phy_vars_ue->tx_power_dBm = Po_PUCCH; -#else - phy_vars_ue->tx_power_dBm = UE_TX_POWER; -#endif + if (phy_vars_ue->mac_enabled == 1) { + Po_PUCCH = pucch_power_cntl(phy_vars_ue,subframe_tx,eNB_id,format); + } + else { + Po_PUCCH = phy_vars_ue->tx_power_max_dBm; + } + phy_vars_ue->tx_power_dBm = Po_PUCCH; phy_vars_ue->tx_total_RE = 12; #if defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR) @@ -1120,12 +1110,13 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra } } else if (SR_payload==1) { // no ACK/NAK but SR is triggered by MAC -#ifdef OPENAIR2 - Po_PUCCH = pucch_power_cntl(phy_vars_ue,subframe_tx,eNB_id,pucch_format1); - phy_vars_ue->tx_power_dBm = Po_PUCCH; -#else - phy_vars_ue->tx_power_dBm = UE_TX_POWER; -#endif + if (phy_vars_ue->mac_enabled == 1) { + Po_PUCCH = pucch_power_cntl(phy_vars_ue,subframe_tx,eNB_id,pucch_format1); + } + else { + Po_PUCCH = phy_vars_ue->tx_power_max_dBm; + } + phy_vars_ue->tx_power_dBm = Po_PUCCH; phy_vars_ue->tx_total_RE = 12; #if defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR) @@ -1345,30 +1336,23 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra // }// slot_tx is even // else { // slot_tx is odd, do the PRACH here -#ifdef OPENAIR2 - if ((phy_vars_ue->UE_mode[eNB_id] == PRACH) && (phy_vars_ue->lte_frame_parms.prach_config_common.prach_Config_enabled==1)) { -#else - - if (1) { -#endif - // check if we have PRACH opportunity if (is_prach_subframe(&phy_vars_ue->lte_frame_parms,frame_tx,subframe_tx)) { phy_vars_ue->generate_prach=0; -#ifdef OPENAIR2 - - // ask L2 for RACH transport - if ((mode != rx_calib_ue) && (mode != rx_calib_ue_med) && (mode != rx_calib_ue_byp) && (mode != no_L2_connect) ) { - phy_vars_ue->prach_resources[eNB_id] = mac_xface->ue_get_rach(Mod_id, - CC_id, - frame_tx, - eNB_id, - subframe_tx); - // LOG_I(PHY,"Got prach_resources for eNB %d address %d, RRCCommon %d\n",eNB_id,phy_vars_ue->prach_resources[eNB_id],UE_mac_inst[Mod_id].radioResourceConfigCommon); - } -#endif + + if (phy_vars_ue->mac_enabled==1){ + // ask L2 for RACH transport + if ((mode != rx_calib_ue) && (mode != rx_calib_ue_med) && (mode != rx_calib_ue_byp) && (mode != no_L2_connect) ) { + phy_vars_ue->prach_resources[eNB_id] = mac_xface->ue_get_rach(Mod_id, + CC_id, + frame_tx, + eNB_id, + subframe_tx); + // LOG_I(PHY,"Got prach_resources for eNB %d address %d, RRCCommon %d\n",eNB_id,phy_vars_ue->prach_resources[eNB_id],UE_mac_inst[Mod_id].radioResourceConfigCommon); + } + } if (phy_vars_ue->prach_resources[eNB_id]!=NULL) { @@ -1391,16 +1375,13 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra phy_vars_ue->prach_resources[eNB_id]->ra_TDD_map_index, phy_vars_ue->prach_resources[eNB_id]->ra_RNTI); -#ifdef OPENAIR2 - if (mode != calib_prach_tx) + if ((phy_vars_ue->mac_enabled==1) && (mode != calib_prach_tx)) { phy_vars_ue->tx_power_dBm = phy_vars_ue->prach_resources[eNB_id]->ra_PREAMBLE_RECEIVED_TARGET_POWER+get_PL(Mod_id,CC_id,eNB_id); + } else { phy_vars_ue->tx_power_dBm = phy_vars_ue->tx_power_max_dBm; phy_vars_ue->prach_resources[eNB_id]->ra_PreambleIndex = 19; } -#else - phy_vars_ue->tx_power_dBm = UE_TX_POWER; -#endif phy_vars_ue->tx_total_RE = 96; @@ -1431,12 +1412,12 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra } else { UE_transport_info[Mod_id][CC_id].cntl.prach_flag=1; UE_transport_info[Mod_id][CC_id].cntl.prach_id=phy_vars_ue->prach_resources[eNB_id]->ra_PreambleIndex; -#ifdef OPENAIR2 - mac_xface->Msg1_transmitted(Mod_id, - CC_id, - frame_tx, - eNB_id); -#endif + if (phy_vars_ue->mac_enabled==1){ + mac_xface->Msg1_transmitted(Mod_id, + CC_id, + frame_tx, + eNB_id); + } } LOG_D(PHY,"[UE %d][RAPROC] Frame %d, subframe %d: Generating PRACH (eNB %d) preamble index %d for UL, TX power %d dBm (PL %d dB), l3msg \n", @@ -1549,13 +1530,13 @@ void lte_ue_measurement_procedures(uint16_t l, PHY_VARS_UE *phy_vars_ue,uint8_t if ((openair_daq_vars.rx_gain_mode == DAQ_AGC_ON) && (mode != rx_calib_ue) && (mode != rx_calib_ue_med) && (mode != rx_calib_ue_byp) ) if (phy_vars_ue->frame_rx%100==0) - gain_control_all(phy_vars_ue->PHY_measurements.rx_power_avg_dB[eNB_id],0); + gain_control_all(dB_fixed(phy_vars_ue->PHY_measurements.rssi),0); #else #ifndef OAI_USRP #ifndef OAI_BLADERF #ifndef OAI_LMSSDR - phy_adjust_gain (phy_vars_ue,0); + phy_adjust_gain (phy_vars_ue,dB_fixed(phy_vars_ue->PHY_measurements.rssi),0); #endif #endif #endif @@ -1822,11 +1803,11 @@ void lte_ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_UE *phy_vars_ue,uint8_t abst frame_tx += ((int)(phy_vars_ue->lte_ue_pbch_vars[eNB_id]->decoded_output[1]&0xfc)); frame_tx += pbch_phase; -#ifdef OPENAIR2 - mac_xface->dl_phy_sync_success(phy_vars_ue->Mod_id,frame_rx,eNB_id, - phy_vars_ue->UE_mode[eNB_id]==NOT_SYNCHED ? 1 : 0); -#endif - + if (phy_vars_ue->mac_enabled==1) { + mac_xface->dl_phy_sync_success(phy_vars_ue->Mod_id,frame_rx,eNB_id, + phy_vars_ue->UE_mode[eNB_id]==NOT_SYNCHED ? 1 : 0); + } + #ifdef EMOS //emos_dump_UE.frame_tx = frame_tx; //emos_dump_UE.mimo_mode = phy_vars_ue->lte_ue_pbch_vars[eNB_id]->decoded_output[1]; @@ -1906,16 +1887,15 @@ void lte_ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_UE *phy_vars_ue,uint8_t abst phy_vars_ue->Mod_id,frame_rx, slot_rx); phy_vars_ue->lte_ue_pbch_vars[eNB_id]->pdu_errors_conseq++; phy_vars_ue->lte_ue_pbch_vars[eNB_id]->pdu_errors++; -#ifdef OPENAIR2 - mac_xface->out_of_sync_ind(phy_vars_ue->Mod_id,frame_rx,eNB_id); -#else - - if (phy_vars_ue->lte_ue_pbch_vars[eNB_id]->pdu_errors_conseq>=100) { - LOG_E(PHY,"More that 100 consecutive PBCH errors! Exiting!\n"); - mac_xface->macphy_exit("More that 100 consecutive PBCH errors!"); + if (phy_vars_ue->mac_enabled == 1) { + mac_xface->out_of_sync_ind(phy_vars_ue->Mod_id,frame_rx,eNB_id); + } + else{ + if (phy_vars_ue->lte_ue_pbch_vars[eNB_id]->pdu_errors_conseq>=100) { + LOG_E(PHY,"More that 100 consecutive PBCH errors! Exiting!\n"); + mac_xface->macphy_exit("More that 100 consecutive PBCH errors!"); + } } - -#endif } if (frame_rx % 100 == 0) { @@ -2105,10 +2085,10 @@ int lte_ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *phy_vars_ue,uint8_t abst #ifdef DEBUG_PHY_PROC - // if (subframe_rx == 9) { //( frame_rx % 100 == 0) { + if ( frame_rx % 100 == 0) { LOG_D(PHY,"frame %d, subframe %d, rnti %x: dci %d/%d\n",frame_rx,subframe_rx,phy_vars_ue->lte_ue_pdcch_vars[eNB_id]->crnti,i,dci_cnt); - //dump_dci(&phy_vars_ue->lte_frame_parms, &dci_alloc_rx[i]); - // } + dump_dci(&phy_vars_ue->lte_frame_parms, &dci_alloc_rx[i]); + } #endif @@ -2416,9 +2396,7 @@ int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstrac int eNB_id_i = 1; uint8_t dual_stream_UE = 0; #endif -#ifndef OPENAIR2 uint8_t *rar; -#endif int pmch_flag=0; uint8_t sync_area=255; int pmch_mcs=-1; @@ -2427,9 +2405,7 @@ int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstrac int slot_rx = phy_vars_ue->slot_rx; int subframe_rx = slot_rx>>1; int subframe_prev = (subframe_rx+9)%10; -#ifdef OPENAIR2 int CC_id = phy_vars_ue->CC_id; -#endif VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_RX, VCD_FUNCTION_IN); @@ -2678,18 +2654,12 @@ int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstrac if (ret == (1+phy_vars_ue->dlsch_ue[eNB_id][0]->max_turbo_iterations)) { phy_vars_ue->dlsch_errors[eNB_id]++; -#ifdef DEBUG_PHY_PROC LOG_D(PHY,"[UE %d][PDSCH %x/%d] Frame %d subframe %d DLSCH in error (rv %d,mcs %d,TBS %d)\n", phy_vars_ue->Mod_id,phy_vars_ue->dlsch_ue[eNB_id][0]->rnti, harq_pid,frame_rx,subframe_prev, phy_vars_ue->dlsch_ue[eNB_id][0]->harq_processes[harq_pid]->rvidx, phy_vars_ue->dlsch_ue[eNB_id][0]->harq_processes[harq_pid]->mcs, phy_vars_ue->dlsch_ue[eNB_id][0]->harq_processes[harq_pid]->TBS); -/* - if (abstraction_flag ==0 ) - dump_dlsch(phy_vars_ue,eNB_id,subframe_prev,harq_pid); - mac_xface->macphy_exit(""); */ -#endif } else { LOG_D(PHY,"[UE %d][PDSCH %x/%d] Frame %d subframe %d (slot_rx %d): Received DLSCH (rv %d,mcs %d,TBS %d)\n", phy_vars_ue->Mod_id,phy_vars_ue->dlsch_ue[eNB_id][0]->rnti, @@ -2708,14 +2678,14 @@ int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstrac LOG_T(PHY,"\n"); #endif #endif -#ifdef OPENAIR2 - mac_xface->ue_send_sdu(phy_vars_ue->Mod_id, - CC_id, - frame_rx, - phy_vars_ue->dlsch_ue[eNB_id][0]->harq_processes[phy_vars_ue->dlsch_ue[eNB_id][0]->current_harq_pid]->b, - phy_vars_ue->dlsch_ue[eNB_id][0]->harq_processes[phy_vars_ue->dlsch_ue[eNB_id][0]->current_harq_pid]->TBS>>3, - eNB_id); -#endif + if (phy_vars_ue->mac_enabled == 1) { + mac_xface->ue_send_sdu(phy_vars_ue->Mod_id, + CC_id, + frame_rx, + phy_vars_ue->dlsch_ue[eNB_id][0]->harq_processes[phy_vars_ue->dlsch_ue[eNB_id][0]->current_harq_pid]->b, + phy_vars_ue->dlsch_ue[eNB_id][0]->harq_processes[phy_vars_ue->dlsch_ue[eNB_id][0]->current_harq_pid]->TBS>>3, + eNB_id); + } phy_vars_ue->total_TBS[eNB_id] = phy_vars_ue->total_TBS[eNB_id] + phy_vars_ue->dlsch_ue[eNB_id][0]->harq_processes[phy_vars_ue->dlsch_ue[eNB_id][0]->current_harq_pid]->TBS; phy_vars_ue->total_received_bits[eNB_id] = phy_vars_ue->total_TBS[eNB_id] + @@ -2885,24 +2855,20 @@ int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstrac phy_vars_ue->dlsch_ue_SI[eNB_id]->harq_processes[0]->rb_alloc_even[3]); #endif -#ifdef OPENAIR2 - /* - printf("\n\n"); - for (i=0;i<phy_vars_ue->dlsch_ue_SI[eNB_id]->harq_processes[0]->TBS>>3;i++) - printf("%02x ",phy_vars_ue->dlsch_ue_SI[eNB_id]->harq_processes[0]->b[i]); - printf("\n"); - */ - mac_xface->ue_decode_si(phy_vars_ue->Mod_id, - CC_id, - frame_rx, - eNB_id, - phy_vars_ue->dlsch_ue_SI[eNB_id]->harq_processes[0]->b, - phy_vars_ue->dlsch_ue_SI[eNB_id]->harq_processes[0]->TBS>>3); - /* - if ((frame_rx % 160) < 10) - printf("sending SI to L2 in frame %d\n",frame_rx); - */ -#endif + if (phy_vars_ue->mac_enabled == 1) { + /* + printf("\n\n"); + for (i=0;i<phy_vars_ue->dlsch_ue_SI[eNB_id]->harq_processes[0]->TBS>>3;i++) + printf("%02x ",phy_vars_ue->dlsch_ue_SI[eNB_id]->harq_processes[0]->b[i]); + printf("\n"); + */ + mac_xface->ue_decode_si(phy_vars_ue->Mod_id, + CC_id, + frame_rx, + eNB_id, + phy_vars_ue->dlsch_ue_SI[eNB_id]->harq_processes[0]->b, + phy_vars_ue->dlsch_ue_SI[eNB_id]->harq_processes[0]->TBS>>3); + } } } @@ -3018,8 +2984,7 @@ int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstrac subframe_prev, phy_vars_ue->UE_mode[eNB_id]); #endif -#ifdef OPENAIR2 - + if (phy_vars_ue->mac_enabled == 1) { if ((phy_vars_ue->UE_mode[eNB_id] != PUSCH) && (phy_vars_ue->prach_resources[eNB_id]->Msg3!=NULL)) { LOG_D(PHY,"[UE %d][RAPROC] Frame %d subframe %d Invoking MAC for RAR (current preamble %d)\n", phy_vars_ue->Mod_id,frame_rx-((subframe_prev==9) ? 1 : 0), @@ -3076,14 +3041,13 @@ int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstrac phy_vars_ue->prach_resources[eNB_id]->ra_PreambleIndex); } } // mode != PUSCH - -#else //OPENAIR2 - - rar = phy_vars_ue->dlsch_ue_ra[eNB_id]->harq_processes[0]->b+1; - timing_advance = ((((uint16_t)(rar[0]&0x7f))<<4) + (rar[1]>>4)); - //timing_advance = phy_vars_ue->dlsch_ue_ra[eNB_id]->harq_processes[0]->b[0]; - process_timing_advance_rar(phy_vars_ue,timing_advance); -#endif + } + else { + rar = phy_vars_ue->dlsch_ue_ra[eNB_id]->harq_processes[0]->b+1; + timing_advance = ((((uint16_t)(rar[0]&0x7f))<<4) + (rar[1]>>4)); + //timing_advance = phy_vars_ue->dlsch_ue_ra[eNB_id]->harq_processes[0]->b[0]; + process_timing_advance_rar(phy_vars_ue,timing_advance); + } } //ret <= MAX_ITERATIONS /* @@ -3635,24 +3599,21 @@ void phy_procedures_UE_lte(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstr int CC_id =0; #endif int frame_rx = phy_vars_ue->frame_rx; -#ifdef OPENAIR2 int frame_tx = phy_vars_ue->frame_tx; -#endif int slot_rx = phy_vars_ue->slot_rx; int slot_tx = phy_vars_ue->slot_tx; int subframe_tx = slot_tx>>1; int subframe_rx = slot_rx>>1; #undef DEBUG_PHY_PROC -#ifdef OPENAIR2 UE_L2_STATE_t ret; -#endif -#ifndef OPENAIR2 - phy_vars_ue->UE_mode[eNB_id]=PUSCH; - phy_vars_ue->prach_resources[eNB_id] = &prach_resources_local; - prach_resources_local.ra_RNTI = 0xbeef; - prach_resources_local.ra_PreambleIndex = 0; -#endif + + if (phy_vars_ue->mac_enabled == 0) { + phy_vars_ue->UE_mode[eNB_id]=PUSCH; + phy_vars_ue->prach_resources[eNB_id] = &prach_resources_local; + prach_resources_local.ra_RNTI = 0xbeef; + prach_resources_local.ra_PreambleIndex = 0; + } VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_LTE,1); @@ -3851,16 +3812,14 @@ void phy_procedures_UE_lte(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstr phy_procedures_UE_RX(phy_vars_ue,eNB_id,abstraction_flag,mode,r_type,phy_vars_rn); } -#ifdef OPENAIR2 - - if (slot_rx%2==0) { - - ret = mac_xface->ue_scheduler(phy_vars_ue->Mod_id, - frame_tx, - subframe_rx, - subframe_select(&phy_vars_ue->lte_frame_parms,subframe_tx), - eNB_id, - 0/*FIXME CC_id*/); + if (phy_vars_ue->mac_enabled==1) { + if (slot_rx%2==0) { + ret = mac_xface->ue_scheduler(phy_vars_ue->Mod_id, + frame_tx, + subframe_rx, + subframe_select(&phy_vars_ue->lte_frame_parms,subframe_tx), + eNB_id, + 0/*FIXME CC_id*/); if (ret == CONNECTION_LOST) { LOG_E(PHY,"[UE %d] Frame %d, subframe %d RRC Connection lost, returning to PRACH\n",phy_vars_ue->Mod_id, @@ -3879,11 +3838,7 @@ void phy_procedures_UE_lte(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstr phy_vars_ue->UE_mode[eNB_id] = PRACH; } } - -#endif - - // if (last_slot == 19) - // phy_vars_ue->frame++; + } VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_LTE,0); stop_meas(&phy_vars_ue->phy_proc); diff --git a/openair1/SIMULATION/LTE_PHY/dlsim.c b/openair1/SIMULATION/LTE_PHY/dlsim.c index 2c3d0848c2e90a5e19f63588d4ad2ffc85e8d995..d67024810a6672107e7e4a3f7b6ddd76cf631dc1 100644 --- a/openair1/SIMULATION/LTE_PHY/dlsim.c +++ b/openair1/SIMULATION/LTE_PHY/dlsim.c @@ -61,25 +61,7 @@ extern unsigned int dlsch_tbs25[27][25],TBStable[27][110]; extern unsigned char offset_mumimo_llr_drange_fix; -#ifdef XFORMS #include "PHY/TOOLS/lte_phy_scope.h" -#endif - - - -//#define AWGN -//#define NO_DCI - - - -//#define ABSTRACTION - -/* - #define RBmask0 0x00fc00fc - #define RBmask1 0x0 - #define RBmask2 0x0 - #define RBmask3 0x0 -*/ PHY_VARS_eNB *PHY_vars_eNB; PHY_VARS_UE *PHY_vars_UE; @@ -237,10 +219,9 @@ int main(int argc, char **argv) short *uncoded_ber_bit=NULL; uint8_t N_RB_DL=25,osf=1; frame_t frame_type = FDD; -#ifdef XFORMS + int xforms=0; FD_lte_phy_scope_ue *form_ue; char title[255]; -#endif uint32_t DLSCH_RB_ALLOC = 0x1fff; int numCCE=0; int dci_length_bytes=0,dci_length=0; @@ -305,7 +286,7 @@ int main(int argc, char **argv) // num_layers = 1; perfect_ce = 0; - while ((c = getopt (argc, argv, "ahdpZDe:Em:n:o:s:f:t:c:g:r:F:x:y:z:AM:N:I:i:O:R:S:C:T:b:u:v:w:B:PLl:Y")) != -1) { + while ((c = getopt (argc, argv, "ahdpZDe:Em:n:o:s:f:t:c:g:r:F:x:y:z:AM:N:I:i:O:R:S:C:T:b:u:v:w:B:PLl:XY")) != -1) { switch (c) { case 'a': awgn_flag = 1; @@ -557,6 +538,10 @@ int main(int argc, char **argv) break; + case 'X': + xforms=1; + break; + case 'Y': perfect_ce=1; break; @@ -636,21 +621,20 @@ int main(int argc, char **argv) if ((transmission_mode > 1) && (n_tx != 2)) printf("n_tx must be >1 for transmission_mode %d\n",transmission_mode); -#ifdef XFORMS - fl_initialize (&argc, argv, NULL, 0, 0); - form_ue = create_lte_phy_scope_ue(); - sprintf (title, "LTE PHY SCOPE eNB"); - fl_show_form (form_ue->lte_phy_scope_ue, FL_PLACE_HOTSPOT, FL_FULLBORDER, title); - - if (!dual_stream_UE==0) { - openair_daq_vars.use_ia_receiver = 1; - fl_set_button(form_ue->button_0,1); - fl_set_object_label(form_ue->button_0, "IA Receiver ON"); - fl_set_object_color(form_ue->button_0, FL_GREEN, FL_GREEN); + if (xforms==1) { + fl_initialize (&argc, argv, NULL, 0, 0); + form_ue = create_lte_phy_scope_ue(); + sprintf (title, "LTE PHY SCOPE eNB"); + fl_show_form (form_ue->lte_phy_scope_ue, FL_PLACE_HOTSPOT, FL_FULLBORDER, title); + + if (!dual_stream_UE==0) { + openair_daq_vars.use_ia_receiver = 1; + fl_set_button(form_ue->button_0,1); + fl_set_object_label(form_ue->button_0, "IA Receiver ON"); + fl_set_object_color(form_ue->button_0, FL_GREEN, FL_GREEN); + } } -#endif - if (transmission_mode==5) { n_users = 2; printf("dual_stream_UE=%d\n", dual_stream_UE); @@ -3496,13 +3480,13 @@ PMI_FEEDBACK: // PHY_vars_UE->dlsch_ue[0][0]->harq_processes[0]->round++; } -#ifdef XFORMS - phy_scope_UE(form_ue, - PHY_vars_UE, - eNB_id, - 0,// UE_id - subframe); -#endif + if (xforms==1) { + phy_scope_UE(form_ue, + PHY_vars_UE, + eNB_id, + 0,// UE_id + subframe); + } } //round diff --git a/openair1/SIMULATION/LTE_PHY/mbmssim.c b/openair1/SIMULATION/LTE_PHY/mbmssim.c index 98d1b68a1509c4b6f230f6221e9dd6de3cc55f0d..0044b2ff5155bdbedb02c9eaaedb2ae035b21f28 100644 --- a/openair1/SIMULATION/LTE_PHY/mbmssim.c +++ b/openair1/SIMULATION/LTE_PHY/mbmssim.c @@ -173,7 +173,9 @@ int main(int argc, char **argv) lte_frame_type_t frame_type = FDD; + uint32_t Nsoft = 1827072; + /* #ifdef XFORMS FD_lte_phy_scope_ue *form_ue; char title[255]; @@ -183,6 +185,7 @@ int main(int argc, char **argv) sprintf (title, "LTE DL SCOPE UE"); fl_show_form (form_ue->lte_phy_scope_ue, FL_PLACE_HOTSPOT, FL_FULLBORDER, title); #endif + */ logInit(); number_of_cards = 1; @@ -382,14 +385,14 @@ int main(int argc, char **argv) 0); // Create transport channel structures for 2 transport blocks (MIMO) - PHY_vars_eNB->dlsch_eNB_MCH = new_eNB_dlsch(1,8,N_RB_DL,0); + PHY_vars_eNB->dlsch_eNB_MCH = new_eNB_dlsch(1,8,Nsoft,N_RB_DL,0); if (!PHY_vars_eNB->dlsch_eNB_MCH) { printf("Can't get eNB dlsch structures\n"); exit(-1); } - PHY_vars_UE->dlsch_ue_MCH[0] = new_ue_dlsch(1,8,MAX_TURBO_ITERATIONS_MBSFN,N_RB_DL,0); + PHY_vars_UE->dlsch_ue_MCH[0] = new_ue_dlsch(1,8,Nsoft,MAX_TURBO_ITERATIONS_MBSFN,N_RB_DL,0); PHY_vars_eNB->lte_frame_parms.num_MBSFN_config = 1; PHY_vars_eNB->lte_frame_parms.MBSFN_config[0].radioframeAllocationPeriod = 0; diff --git a/openair1/SIMULATION/LTE_PHY/ulsim.c b/openair1/SIMULATION/LTE_PHY/ulsim.c index 463c74c123b39cf428201d4a5c16be6d05f2308e..de40298d584c0a3e7eea7722b941f828a9d1c28e 100644 --- a/openair1/SIMULATION/LTE_PHY/ulsim.c +++ b/openair1/SIMULATION/LTE_PHY/ulsim.c @@ -52,9 +52,7 @@ #include "LAYER2/MAC/vars.h" #include "OCG_vars.h" -#ifdef XFORMS #include "PHY/TOOLS/lte_phy_scope.h" -#endif extern unsigned short dftsizes[33]; extern short *ul_ref_sigs[30][2][33]; @@ -74,12 +72,9 @@ node_desc_t *ue_data[NUMBER_OF_UE_MAX]; extern uint16_t beta_ack[16],beta_ri[16],beta_cqi[16]; //extern char* namepointer_chMag ; - - -#ifdef XFORMS +int xforms=0; FD_lte_phy_scope_enb *form_enb; char title[255]; -#endif /*the following parameters are used to control the processing times*/ double t_tx_max = -1000000000; /*!< \brief initial max process time for tx */ @@ -204,7 +199,7 @@ int main(int argc, char **argv) logInit(); - while ((c = getopt (argc, argv, "hapZEbm:n:Y:X:x:s:w:e:q:d:D:O:c:r:i:f:y:c:oA:C:R:g:N:l:S:T:QB:PI:L")) != -1) { + while ((c = getopt (argc, argv, "hapZEbm:n:Y:X:x:s:w:e:q:d:D:O:c:r:i:f:y:c:oA:C:R:g:N:l:S:T:QB:PI:LF")) != -1) { switch (c) { case 'a': channel_model = AWGN; @@ -454,6 +449,10 @@ int main(int argc, char **argv) max_turbo_iterations=atoi(optarg); break; + case 'F': + xforms=1; + break; + case 'Z': dump_table = 1; break; @@ -594,12 +593,12 @@ int main(int argc, char **argv) } -#ifdef XFORMS - fl_initialize (&argc, argv, NULL, 0, 0); - form_enb = create_lte_phy_scope_enb(); - sprintf (title, "LTE PHY SCOPE eNB"); - fl_show_form (form_enb->lte_phy_scope_enb, FL_PLACE_HOTSPOT, FL_FULLBORDER, title); -#endif + if (xforms==1) { + fl_initialize (&argc, argv, NULL, 0, 0); + form_enb = create_lte_phy_scope_enb(); + sprintf (title, "LTE PHY SCOPE eNB"); + fl_show_form (form_enb->lte_phy_scope_enb, FL_PLACE_HOTSPOT, FL_FULLBORDER, title); + } PHY_vars_UE->lte_ue_pdcch_vars[0]->crnti = 14; @@ -1354,9 +1353,9 @@ int main(int argc, char **argv) if ((errs[0]>=100) && (trials>(n_frames/2))) break; -#ifdef XFORMS - phy_scope_eNB(form_enb,PHY_vars_eNB,0); -#endif + if (xforms==1) + phy_scope_eNB(form_enb,PHY_vars_eNB,0); + /*calculate the total processing time for each packet, get the max, min, and number of packets that exceed t>3000us*/ double t_tx = (double)PHY_vars_UE->phy_proc_tx.p_time/cpu_freq_GHz/1000.0; diff --git a/openair2/LAYER2/MAC/l1_helpers.c b/openair2/LAYER2/MAC/l1_helpers.c index 3b4c78ea9253b66a42860beaeb9a95ec0cd538d2..44bdbfe00ec68e2f10a8b9e285ef275374babe13 100644 --- a/openair2/LAYER2/MAC/l1_helpers.c +++ b/openair2/LAYER2/MAC/l1_helpers.c @@ -47,8 +47,8 @@ int8_t get_Po_NOMINAL_PUSCH(module_id_t module_idP,uint8_t CC_id) if (CC_id>0) { LOG_E(MAC,"Transmission on secondary CCs is not supported yet\n"); - mac_xface->macphy_exit("MAC FATAL CC_id>0"); - return 0; // not reached + //mac_xface->macphy_exit("MAC FATAL CC_id>0"); + return 0; } if (UE_mac_inst[module_idP].radioResourceConfigCommon) { @@ -56,7 +56,8 @@ int8_t get_Po_NOMINAL_PUSCH(module_id_t module_idP,uint8_t CC_id) } else { LOG_E(MAC,"[UE %d] CCid %d FATAL radioResourceConfigCommon is NULL !!!\n",module_idP,CC_id); - mac_xface->macphy_exit("FATAL radioResourceConfigCommon is NULL"); + //mac_xface->macphy_exit("FATAL radioResourceConfigCommon is NULL"); + return 0; } return(-120 + (rach_ConfigCommon->powerRampingParameters.preambleInitialReceivedTargetPower<<1) + diff --git a/targets/ARCH/LMSSDR/enb_sodera_lowband_Lrx_10MHz_rx19dB_txfull.ini b/targets/ARCH/LMSSDR/enb_sodera_lowband_Lrx_10MHz_rx19dB_txfull.ini new file mode 100644 index 0000000000000000000000000000000000000000..f47d3bf433b617f82c7cd66b0b53ee22557a2726 --- /dev/null +++ b/targets/ARCH/LMSSDR/enb_sodera_lowband_Lrx_10MHz_rx19dB_txfull.ini @@ -0,0 +1,1128 @@ +[reference_clocks] +sxr_ref_clk_mhz=30.72 +sxt_ref_clk_mhz=30.72 +[lms7002_registers_b] +0x05A7=0x0000 +0x05A5=0x0000 +0x05A2=0x0000 +0x05A0=0x0000 +0x0599=0x0000 +0x0598=0x0000 +0x0596=0x0000 +0x0594=0x0000 +0x0592=0x0000 +0x0591=0x0000 +0x0590=0x0000 +0x058E=0x0000 +0x058C=0x0000 +0x059D=0x0000 +0x058A=0x0000 +0x0589=0x0000 +0x0587=0x0000 +0x0585=0x0000 +0x0595=0x0000 +0x0584=0x0000 +0x059F=0x0000 +0x0583=0x0000 +0x0582=0x0000 +0x0567=0x0000 +0x0566=0x0000 +0x0565=0x0000 +0x0564=0x0000 +0x0563=0x0000 +0x0562=0x0000 +0x055F=0x0000 +0x055D=0x0000 +0x055A=0x0000 +0x058F=0x0000 +0x0557=0x0000 +0x0593=0x0000 +0x0554=0x0000 +0x0552=0x0000 +0x0551=0x0000 +0x0550=0x0000 +0x054D=0x0000 +0x054C=0x0000 +0x0549=0x0000 +0x0547=0x0000 +0x0546=0x0000 +0x0545=0x0000 +0x0544=0x0000 +0x0543=0x0000 +0x0553=0x0000 +0x0542=0x0000 +0x0541=0x0000 +0x0527=0x0000 +0x0526=0x0000 +0x0524=0x0000 +0x0525=0x0000 +0x0523=0x0000 +0x0521=0x0000 +0x055C=0x0000 +0x051A=0x0000 +0x0519=0x0000 +0x0518=0x0000 +0x0514=0x0000 +0x0513=0x0000 +0x0511=0x0000 +0x05A6=0x0000 +0x051E=0x0000 +0x050F=0x0000 +0x0516=0x0000 +0x050E=0x0000 +0x050C=0x0000 +0x050B=0x0000 +0x050A=0x0000 +0x0509=0x0000 +0x0507=0x0000 +0x0506=0x0000 +0x0503=0x0000 +0x04E7=0x0000 +0x04E6=0x0000 +0x0512=0x0000 +0x04E5=0x0000 +0x04E4=0x0000 +0x0321=0x0000 +0x0320=0x0000 +0x0323=0x0000 +0x031B=0x0000 +0x0319=0x0000 +0x0260=0x0000 +0x031F=0x0000 +0x0360=0x0000 +0x0312=0x0000 +0x0310=0x0000 +0x0245=0x0000 +0x0581=0x0000 +0x045D=0x0000 +0x030E=0x0000 +0x0203=0x0000 +0x0482=0x0000 +0x0588=0x0000 +0x0308=0x0000 +0x048A=0x0000 +0x0307=0x0000 +0x0282=0x0000 +0x038C=0x0000 +0x0510=0x0000 +0x0302=0x0000 +0x0301=0x0000 +0x0309=0x0000 +0x0300=0x0000 +0x044E=0x0000 +0x034F=0x0000 +0x055B=0x0000 +0x0114=0x008D +0x02E5=0x0000 +0x02E4=0x0000 +0x02E1=0x0000 +0x02D5=0x0000 +0x0259=0x0000 +0x0517=0x0000 +0x0481=0x0000 +0x030B=0x0000 +0x0392=0x0000 +0x02DE=0x0000 +0x02DD=0x0000 +0x0297=0x0000 +0x0209=0x0000 +0x0400=0x0081 +0x02D8=0x0000 +0x0104=0x0088 +0x0103=0x0A12 +0x0347=0x0000 +0x0457=0x0000 +0x058D=0x0000 +0x02D7=0x0000 +0x02D1=0x0000 +0x04C8=0x0000 +0x02D3=0x0000 +0x02CB=0x0000 +0x0250=0x0000 +0x0306=0x0000 +0x04A4=0x0000 +0x044A=0x0000 +0x054B=0x0000 +0x02C7=0x0000 +0x02C1=0x0000 +0x031D=0x0000 +0x0440=0x0020 +0x045E=0x0000 +0x02C4=0x0000 +0x02C2=0x0000 +0x02DB=0x0000 +0x0357=0x0000 +0x0201=0x07FF +0x0483=0x0000 +0x05A4=0x0000 +0x02A3=0x0000 +0x02A1=0x0000 +0x028D=0x0000 +0x02D2=0x0000 +0x039C=0x0000 +0x02A0=0x0000 +0x010E=0x2040 +0x030A=0x0000 +0x029F=0x0000 +0x029C=0x0000 +0x029E=0x0000 +0x011D=0x9555 +0x039E=0x0000 +0x0296=0x0000 +0x0555=0x0000 +0x0349=0x0000 +0x0295=0x0000 +0x010D=0x009E +0x04C4=0x0000 +0x0292=0x0000 +0x02CF=0x0000 +0x04D1=0x0000 +0x0291=0x0000 +0x02DF=0x0000 +0x0290=0x0000 +0x020A=0x0080 +0x0102=0x3180 +0x0388=0x0000 +0x0120=0xB9FF +0x0317=0x0000 +0x0244=0x0000 +0x059B=0x0000 +0x0322=0x0000 +0x010F=0x3042 +0x0119=0x18CB +0x02A6=0x0000 +0x051F=0x0000 +0x029A=0x0000 +0x049A=0x0000 +0x059E=0x0000 +0x04D7=0x0000 +0x0318=0x0000 +0x02A7=0x0000 +0x0200=0x0081 +0x02C5=0x0000 +0x0122=0x033F +0x0110=0x0BF4 +0x0204=0x0000 +0x0252=0x0000 +0x011E=0x05DC +0x049B=0x0000 +0x0294=0x0000 +0x011C=0xAD41 +0x02D6=0x0000 +0x0311=0x0000 +0x0117=0x280C +0x0540=0x0000 +0x02A4=0x0000 +0x0485=0x0000 +0x02E0=0x0000 +0x0118=0x018C +0x0489=0x0000 +0x04A7=0x0000 +0x0101=0x7800 +0x0558=0x0000 +0x02C6=0x0000 +0x05A1=0x0000 +0x02C9=0x0000 +0x0500=0x0000 +0x039D=0x0000 +0x011F=0x3680 +0x030C=0x0000 +0x04DF=0x0000 +0x0281=0x0000 +0x0106=0x3182 +0x028E=0x0000 +0x0326=0x0000 +0x0113=0x03C3 +0x04CB=0x0000 +0x0391=0x0000 +0x0105=0x0007 +0x02D9=0x0000 +0x02CE=0x0000 +0x044F=0x0000 +0x038B=0x0000 +0x02D4=0x0000 +0x0107=0x318C +0x0495=0x0000 +0x0246=0x0000 +0x0303=0x0000 +0x02E6=0x0000 +0x045B=0x0000 +0x0100=0x3409 +0x0340=0x0000 +0x0208=0x0070 +0x0111=0x0083 +0x0247=0x0000 +0x024B=0x0000 +0x045C=0x0000 +0x024D=0x0000 +0x0202=0x07FF +0x0383=0x0000 +0x054A=0x0000 +0x0401=0x07FF +0x0206=0x0000 +0x0124=0x0000 +0x0341=0x0000 +0x0287=0x0000 +0x0501=0x0000 +0x034C=0x0000 +0x030F=0x0000 +0x025D=0x0000 +0x0406=0x0000 +0x051B=0x0000 +0x0313=0x0000 +0x010A=0x104C +0x0461=0x0000 +0x0121=0x356A +0x0115=0x0009 +0x0112=0xC0E6 +0x039A=0x0000 +0x02CC=0x0000 +0x0116=0x8180 +0x04A0=0x0000 +0x0108=0x9442 +0x020B=0x4000 +0x0251=0x0000 +0x0488=0x0000 +0x0241=0x0000 +0x038F=0x0000 +0x02DC=0x0000 +0x024C=0x0000 +0x0494=0x0000 +0x051D=0x0000 +0x0243=0x0000 +0x0556=0x0000 +0x040A=0x0000 +0x04CD=0x0000 +0x0249=0x0000 +0x0261=0x0000 +0x024A=0x0000 +0x0285=0x0000 +0x0280=0x0000 +0x0346=0x0000 +0x024E=0x0000 +0x024F=0x0000 +0x0253=0x0000 +0x0255=0x0000 +0x0502=0x0000 +0x0258=0x0000 +0x0298=0x0000 +0x05A3=0x0000 +0x0367=0x0000 +0x0240=0x0020 +0x0256=0x0000 +0x0242=0x0000 +0x025A=0x0000 +0x04E2=0x0000 +0x04C5=0x0000 +0x025B=0x0000 +0x020C=0x7FFF +0x0205=0x0000 +0x0361=0x0000 +0x0515=0x0000 +0x025C=0x0000 +0x0355=0x0000 +0x044C=0x0000 +0x010C=0x88FD +0x0284=0x0000 +0x0396=0x0000 +0x0286=0x0000 +0x028F=0x0000 +0x031C=0x0000 +0x031A=0x0000 +0x0363=0x0000 +0x0289=0x0000 +0x059C=0x0000 +0x04DD=0x0000 +0x028A=0x0000 +0x040C=0x0000 +0x028B=0x0000 +0x0450=0x0000 +0x0352=0x0000 +0x028C=0x0000 +0x04C2=0x0000 +0x025E=0x0000 +0x04DA=0x0000 +0x0327=0x0000 +0x0380=0x0000 +0x0342=0x0000 +0x0343=0x0000 +0x0561=0x0000 +0x0344=0x0000 +0x0586=0x0000 +0x0484=0x0000 +0x0345=0x0000 +0x0505=0x0000 +0x035B=0x0000 +0x034A=0x0000 +0x0455=0x0000 +0x011A=0x2E02 +0x034B=0x0000 +0x034D=0x0000 +0x035C=0x0000 +0x034E=0x0000 +0x0293=0x0000 +0x03A6=0x0000 +0x0350=0x0000 +0x0445=0x0000 +0x048F=0x0000 +0x0351=0x0000 +0x0353=0x0000 +0x050D=0x0000 +0x02CD=0x0000 +0x0490=0x0000 +0x0354=0x0000 +0x0348=0x0000 +0x0498=0x0000 +0x0356=0x0000 +0x0316=0x0000 +0x030D=0x0000 +0x040E=0x0000 +0x0522=0x0000 +0x049F=0x0000 +0x029D=0x0000 +0x04A3=0x0000 +0x0359=0x0000 +0x0299=0x0000 +0x0452=0x0000 +0x02C8=0x0000 +0x035A=0x0000 +0x0449=0x0000 +0x0442=0x0000 +0x035D=0x0000 +0x035E=0x0000 +0x0597=0x0000 +0x035F=0x0000 +0x0325=0x0000 +0x0364=0x0000 +0x0365=0x0000 +0x0366=0x0000 +0x0381=0x0000 +0x0288=0x0000 +0x0382=0x0000 +0x0384=0x0000 +0x0315=0x0000 +0x0385=0x0000 +0x054F=0x0000 +0x0389=0x0000 +0x04E3=0x0000 +0x040F=0x0000 +0x0386=0x0000 +0x054E=0x0000 +0x02D0=0x0000 +0x03A0=0x0000 +0x0387=0x0000 +0x0362=0x0000 +0x038A=0x0000 +0x0395=0x0000 +0x038D=0x0000 +0x02E7=0x0000 +0x0324=0x0000 +0x038E=0x0000 +0x0305=0x0000 +0x0393=0x0000 +0x0459=0x0000 +0x0394=0x0000 +0x0123=0x267B +0x0497=0x0000 +0x0398=0x0000 +0x0408=0x0000 +0x0399=0x0000 +0x039B=0x0000 +0x0248=0x0000 +0x039F=0x0000 +0x049E=0x0000 +0x059A=0x0000 +0x048D=0x0000 +0x051C=0x0000 +0x03A2=0x0000 +0x03A3=0x0000 +0x03A4=0x0000 +0x03A5=0x0000 +0x0520=0x0000 +0x03A7=0x0000 +0x055E=0x0000 +0x0402=0x07FF +0x0403=0x0000 +0x04D8=0x0000 +0x0560=0x0000 +0x0404=0x0000 +0x0254=0x0000 +0x0405=0x0000 +0x0407=0x0000 +0x0580=0x0000 +0x0409=0x0000 +0x040B=0x7FFF +0x040D=0x0000 +0x0441=0x0000 +0x0508=0x0000 +0x0443=0x0000 +0x0444=0x0000 +0x04CA=0x0000 +0x0446=0x0000 +0x0454=0x0000 +0x0448=0x0000 +0x044B=0x0000 +0x02E2=0x0000 +0x044D=0x0000 +0x0390=0x0000 +0x0451=0x0000 +0x0453=0x0000 +0x0559=0x0000 +0x0456=0x0000 +0x0314=0x0000 +0x0458=0x0000 +0x02DA=0x0000 +0x045A=0x0000 +0x0447=0x0000 +0x0460=0x0000 +0x0480=0x0000 +0x045F=0x0000 +0x0486=0x0000 +0x0487=0x0000 +0x0358=0x0000 +0x048B=0x0000 +0x048C=0x0000 +0x0283=0x0000 +0x048E=0x0000 +0x029B=0x0000 +0x0491=0x0000 +0x0492=0x0000 +0x04A1=0x0000 +0x0493=0x0000 +0x04C3=0x0000 +0x0496=0x0000 +0x02C0=0x0000 +0x0499=0x0000 +0x02E3=0x0000 +0x0397=0x0000 +0x049C=0x0000 +0x04C7=0x0000 +0x049D=0x0000 +0x0109=0x61C1 +0x04A2=0x0000 +0x04A5=0x0000 +0x04A6=0x0000 +0x0257=0x0000 +0x04D6=0x0000 +0x031E=0x0000 +0x04C0=0x0000 +0x02CA=0x0000 +0x04C9=0x0000 +0x02C3=0x0000 +0x04C1=0x0000 +0x0207=0x0000 +0x04C6=0x0000 +0x02A5=0x0000 +0x04CC=0x0000 +0x04CE=0x0000 +0x025F=0x0000 +0x04CF=0x0000 +0x04D0=0x0000 +0x0548=0x0000 +0x04D2=0x0000 +0x04D3=0x0000 +0x0504=0x0000 +0x04D4=0x0000 +0x0304=0x0000 +0x04D5=0x0000 +0x04D9=0x0000 +0x04DB=0x0000 +0x04DC=0x0000 +0x058B=0x0000 +0x04DE=0x0000 +0x04E0=0x0000 +0x02A2=0x0000 +0x03A1=0x0000 +0x04E1=0x0000 +[lms7002_registers_a] +0x05A7=0x0000 +0x05A5=0x0000 +0x05A2=0x0000 +0x0599=0x0000 +0x0598=0xF61D +0x0596=0x0A94 +0x0594=0xF40D +0x0592=0x0DF1 +0x0591=0xFCFE +0x0590=0xEF99 +0x058E=0x1316 +0x058C=0xEA50 +0x059D=0x0000 +0x058A=0x17DC +0x0585=0xDAA2 +0x0595=0x00BC +0x0584=0xE7E2 +0x059F=0x0000 +0x0583=0x2E45 +0x0582=0x150F +0x0567=0x4049 +0x0566=0x0906 +0x0565=0xB77F +0x0563=0x4F91 +0x055F=0x5852 +0x055D=0xA6B5 +0x055A=0xBE2A +0x058F=0x0605 +0x0557=0x4C24 +0x0593=0x00D8 +0x0554=0x6901 +0x0552=0x8D44 +0x0551=0xD7B7 +0x0550=0x79FA +0x054C=0x7FFF +0x0549=0x18C9 +0x0547=0xD7B7 +0x0546=0x8D44 +0x0545=0x364E +0x0544=0x6901 +0x0543=0xBD96 +0x0553=0x364E +0x0542=0xA2B5 +0x0541=0x4C24 +0x0527=0xACB9 +0x0526=0xBE2A +0x0525=0x57AC +0x0523=0xA6B5 +0x0521=0x5852 +0x055C=0x3347 +0x051A=0x0906 +0x0518=0xEFF2 +0x0514=0xE7E2 +0x0513=0xDAA2 +0x0511=0x1D10 +0x05A6=0x0000 +0x051E=0xF524 +0x050F=0xEA5F +0x0516=0x150F +0x050E=0x17DC +0x050C=0xEA50 +0x050B=0xF5EF +0x050A=0x1316 +0x0509=0x0605 +0x0507=0xFCFE +0x0506=0x0DF1 +0x0503=0x00BC +0x04E7=0x0000 +0x04E6=0x0000 +0x04E4=0x0000 +0x04E0=0x0000 +0x058B=0x0F45 +0x04DE=0x0000 +0x04DC=0x0000 +0x04DB=0x0000 +0x04D9=0x0000 +0x04D8=0x0000 +0x059E=0x0000 +0x04D7=0x0000 +0x0504=0xF40D +0x04D4=0x0000 +0x04D3=0x0000 +0x0548=0x79FA +0x04D2=0x0000 +0x04D1=0x0000 +0x04D0=0x0000 +0x04CE=0x0000 +0x04C8=0x0000 +0x04E2=0x0000 +0x04C5=0x0000 +0x04C4=0x0000 +0x04C2=0x0000 +0x04A7=0x0000 +0x04A6=0x0000 +0x04A5=0x0000 +0x04A1=0x0000 +0x04A0=0x0000 +0x0522=0xDB10 +0x049F=0x0000 +0x049E=0x0000 +0x04C7=0x0000 +0x049D=0x0000 +0x049B=0x0000 +0x049A=0x0000 +0x04C3=0x0000 +0x0496=0x0000 +0x0494=0x0000 +0x02D3=0x0000 +0x02D1=0x0000 +0x02CB=0x0000 +0x0250=0x0000 +0x0096=0x0000 +0x04C1=0x0000 +0x02C3=0x0000 +0x02C4=0x0000 +0x02C2=0x0000 +0x0499=0x0000 +0x02C0=0x0000 +0x0201=0x07FF +0x0483=0x0000 +0x05A4=0x0000 +0x02A3=0x0000 +0x008B=0x2756 +0x02A1=0x0000 +0x028D=0x0000 +0x029C=0x0000 +0x029E=0x0000 +0x0297=0x0000 +0x0296=0x0000 +0x0555=0xBD96 +0x0349=0x0000 +0x010D=0x015C +0x02CF=0x0000 +0x0291=0x0000 +0x02DF=0x0000 +0x0290=0x0000 +0x0021=0x0E9F +0x0450=0x0000 +0x0558=0x5009 +0x02C6=0x0000 +0x0101=0x7800 +0x059C=0x0000 +0x04DD=0x0000 +0x028A=0x0000 +0x0121=0x3652 +0x0285=0x0000 +0x0280=0x0000 +0x0319=0x0000 +0x04CF=0x0000 +0x025F=0x0000 +0x025D=0x0000 +0x030F=0x0000 +0x0406=0x0000 +0x02C5=0x0000 +0x0200=0x0301 +0x0281=0x0000 +0x04A2=0x0000 +0x0109=0x8CC1 +0x0355=0x0000 +0x044C=0x0000 +0x025B=0x0000 +0x0298=0x0000 +0x0502=0x0A94 +0x0258=0x0000 +0x0255=0x0000 +0x04D6=0x0000 +0x0257=0x0000 +0x0252=0x0000 +0x0204=0xC016 +0x024F=0x0000 +0x04CC=0x0000 +0x02A5=0x0000 +0x0497=0x0000 +0x0123=0x067B +0x0495=0x0000 +0x0246=0x0000 +0x051D=0x4F91 +0x0243=0x0000 +0x0556=0xA2B5 +0x040A=0x1000 +0x025A=0x0000 +0x0242=0x0000 +0x020C=0x8000 +0x0251=0x0000 +0x02DD=0x0000 +0x0020=0xFFFD +0x0488=0x0000 +0x020A=0x0080 +0x0102=0x3180 +0x04C6=0x0000 +0x0207=0x0000 +0x04DA=0x0000 +0x025E=0x0000 +0x0206=0x0000 +0x00A3=0x6565 +0x02E2=0x0000 +0x044D=0x0000 +0x0292=0x0000 +0x002A=0x0086 +0x0245=0x0000 +0x0581=0xC89D +0x045D=0x0000 +0x024D=0x0000 +0x002B=0x4032 +0x02A0=0x0000 +0x010E=0x0285 +0x0286=0x0000 +0x009E=0x658C +0x0088=0x04F0 +0x0085=0x0001 +0x0295=0x0000 +0x0089=0x0048 +0x0256=0x0000 +0x0093=0x0000 +0x0092=0x0001 +0x031B=0x0000 +0x0111=0x0099 +0x0095=0x0000 +0x02A7=0x0000 +0x0203=0x2F99 +0x030E=0x0000 +0x0482=0x0000 +0x05A0=0x0000 +0x009C=0x658C +0x0381=0x0000 +0x0122=0x033F +0x0110=0x0BFF +0x0100=0xB409 +0x0028=0x0101 +0x0026=0x0101 +0x0524=0x3347 +0x009D=0x6565 +0x0294=0x0000 +0x0106=0x3182 +0x028E=0x0000 +0x0326=0x0000 +0x0113=0x03C3 +0x04CB=0x0000 +0x0391=0x0000 +0x05A1=0x0000 +0x02C9=0x0000 +0x0500=0xF61D +0x039D=0x0000 +0x011F=0x3680 +0x0395=0x0000 +0x024B=0x0000 +0x045C=0x0000 +0x0247=0x0000 +0x0512=0x196B +0x04E5=0x0000 +0x0024=0x50D8 +0x0353=0x0000 +0x050D=0x0F45 +0x02CD=0x0000 +0x0490=0x0000 +0x0501=0xFDFB +0x034C=0x0000 +0x00AA=0x0000 +0x0350=0x0000 +0x0445=0x0000 +0x048F=0x0000 +0x008A=0x0491 +0x0453=0x0000 +0x0124=0x0000 +0x0260=0x0000 +0x00A1=0x6565 +0x0356=0x0000 +0x0241=0x0000 +0x04CD=0x0000 +0x0249=0x0000 +0x002C=0x0000 +0x038F=0x0000 +0x008C=0x267B +0x0459=0x0000 +0x0394=0x0000 +0x054D=0xF7A3 +0x00A6=0x0001 +0x002D=0xFFFF +0x00AC=0x2000 +0x0253=0x0000 +0x028B=0x0000 +0x040C=0x40F8 +0x0099=0x6565 +0x0310=0x0000 +0x00A2=0x6565 +0x0589=0xEA5F +0x002F=0x3840 +0x0597=0xFDFB +0x035F=0x0000 +0x0562=0xF524 +0x0025=0x0101 +0x011C=0xAD41 +0x011D=0x2AAA +0x039E=0x0000 +0x0289=0x0000 +0x0282=0x0000 +0x0307=0x0000 +0x038C=0x0000 +0x0087=0x0000 +0x0399=0x0000 +0x054B=0xF7A3 +0x02C7=0x0000 +0x0519=0x4049 +0x009F=0x658C +0x0515=0x2E45 +0x025C=0x0000 +0x00A5=0x6565 +0x0301=0x0000 +0x02C1=0x0000 +0x0259=0x0000 +0x02D5=0x0000 +0x02E1=0x0000 +0x0517=0xC89D +0x0481=0x0000 +0x00A8=0x0000 +0x02D2=0x0000 +0x039C=0x0000 +0x0564=0x0000 +0x00AB=0x0040 +0x0261=0x0000 +0x002E=0x0000 +0x02DE=0x0000 +0x0540=0x5009 +0x02A4=0x0000 +0x0485=0x0000 +0x0489=0x0000 +0x00AD=0x03FF +0x024A=0x0000 +0x0029=0x0101 +0x0097=0x0000 +0x011E=0x061D +0x00AE=0x0000 +0x00A7=0x6565 +0x020B=0x4000 +0x0098=0x0000 +0x0108=0xFC26 +0x0027=0x05E4 +0x0117=0x100C +0x0383=0x0000 +0x0202=0x0794 +0x054A=0x8184 +0x00A4=0x6565 +0x0401=0x07FF +0x0086=0x4101 +0x010C=0x8865 +0x02D8=0x0000 +0x0347=0x0000 +0x0457=0x0000 +0x0103=0x0A12 +0x0104=0x0088 +0x0357=0x0000 +0x02DB=0x0000 +0x0400=0x0101 +0x009B=0x6565 +0x0105=0x0007 +0x05A3=0x0000 +0x0240=0x0028 +0x0367=0x0000 +0x044F=0x0000 +0x038B=0x0000 +0x0284=0x0000 +0x0396=0x0000 +0x051F=0xAB08 +0x029A=0x0000 +0x0361=0x0000 +0x0205=0x0000 +0x0119=0x18DF +0x02A6=0x0000 +0x010F=0x3042 +0x04C0=0x0000 +0x031E=0x0000 +0x02CC=0x0000 +0x0116=0x8180 +0x0587=0x1D10 +0x0023=0x5550 +0x048C=0x0000 +0x0112=0x3171 +0x039A=0x0000 +0x0320=0x0000 +0x0323=0x0000 +0x0115=0x0009 +0x00A9=0x8000 +0x0244=0x0000 +0x0094=0x0000 +0x0317=0x0000 +0x0208=0x0170 +0x0340=0x0000 +0x058D=0xF5EF +0x02D7=0x0000 +0x04A3=0x0000 +0x029D=0x0000 +0x0388=0x0000 +0x0120=0xB9FF +0x04C9=0x0000 +0x02CA=0x0000 +0x0209=0x0000 +0x0082=0x8001 +0x0107=0x318C +0x02D4=0x0000 +0x02CE=0x0000 +0x02D9=0x0000 +0x02E4=0x0000 +0x024C=0x0000 +0x02DC=0x0000 +0x0118=0x018C +0x02E0=0x0000 +0x055B=0x57AC +0x0114=0x0110 +0x02E5=0x0000 +0x02E6=0x0000 +0x045B=0x0000 +0x034F=0x0000 +0x0300=0x0000 +0x044E=0x0000 +0x0510=0xE6C7 +0x0302=0x0000 +0x0303=0x0000 +0x04D5=0x0000 +0x0304=0x0000 +0x0306=0x0000 +0x04A4=0x0000 +0x044A=0x0000 +0x049C=0x0000 +0x02E3=0x0000 +0x0397=0x0000 +0x0588=0xE6C7 +0x0308=0x0000 +0x048A=0x0000 +0x0309=0x0000 +0x029F=0x0000 +0x030A=0x0000 +0x0392=0x0000 +0x030B=0x0000 +0x04DF=0x0000 +0x030C=0x0000 +0x02D6=0x0000 +0x0311=0x0000 +0x024E=0x0000 +0x0346=0x0000 +0x0312=0x0000 +0x051B=0xB77F +0x010A=0x104C +0x0461=0x0000 +0x0313=0x0000 +0x0360=0x0000 +0x028C=0x0000 +0x0352=0x0000 +0x040E=0x0003 +0x030D=0x0000 +0x0316=0x0000 +0x031F=0x0000 +0x0318=0x0000 +0x0287=0x0000 +0x0341=0x0000 +0x028F=0x0000 +0x031C=0x0000 +0x031A=0x0000 +0x0363=0x0000 +0x031D=0x0000 +0x0440=0x0024 +0x045E=0x0000 +0x0321=0x0000 +0x059B=0x0000 +0x0322=0x0000 +0x0327=0x0000 +0x0380=0x0000 +0x0342=0x0000 +0x0343=0x0000 +0x0561=0xAB08 +0x0344=0x0000 +0x0586=0x196B +0x0484=0x0000 +0x0345=0x0000 +0x0505=0x00D8 +0x035B=0x0000 +0x0498=0x0000 +0x0084=0x0400 +0x0348=0x0000 +0x034A=0x0000 +0x0455=0x0000 +0x011A=0x2E14 +0x034B=0x0000 +0x034D=0x0000 +0x035C=0x0000 +0x034E=0x0000 +0x0293=0x0000 +0x03A6=0x0000 +0x0351=0x0000 +0x0354=0x0000 +0x048B=0x0000 +0x0358=0x0000 +0x0359=0x0000 +0x0299=0x0000 +0x0452=0x0000 +0x02C8=0x0000 +0x035A=0x0000 +0x0449=0x0000 +0x0442=0x0000 +0x035D=0x0000 +0x035E=0x0000 +0x038A=0x0000 +0x0362=0x0000 +0x0081=0x0000 +0x0325=0x0000 +0x0364=0x0000 +0x0365=0x0000 +0x0366=0x0000 +0x0288=0x0000 +0x0382=0x0000 +0x0384=0x0000 +0x0315=0x0000 +0x0385=0x0000 +0x054F=0x18C9 +0x0389=0x0000 +0x04E3=0x0000 +0x040F=0x43E4 +0x0386=0x0000 +0x054E=0x8184 +0x009A=0x658C +0x02D0=0x0000 +0x03A0=0x0000 +0x0387=0x0000 +0x038D=0x0000 +0x02E7=0x0000 +0x0324=0x0000 +0x038E=0x0000 +0x0305=0x0000 +0x0393=0x0000 +0x0398=0x0000 +0x0408=0x0000 +0x039B=0x0000 +0x0248=0x0000 +0x039F=0x0000 +0x04E1=0x0000 +0x02A2=0x0000 +0x03A1=0x0000 +0x059A=0x0000 +0x048D=0x0000 +0x051C=0x0000 +0x03A2=0x0000 +0x03A3=0x0000 +0x03A4=0x0000 +0x03A5=0x0000 +0x0520=0x174B +0x03A7=0x0000 +0x055E=0xDB10 +0x0402=0x07D9 +0x0403=0x0013 +0x0560=0x174B +0x00A0=0x6565 +0x0404=0x0000 +0x0254=0x0000 +0x0405=0x0000 +0x0407=0x0000 +0x0580=0xEFF2 +0x0409=0x0000 +0x040B=0x000F +0x040D=0x0000 +0x0441=0x0000 +0x0508=0xEF99 +0x0443=0x0000 +0x0444=0x0000 +0x04CA=0x0000 +0x0446=0x0000 +0x0454=0x0000 +0x0448=0x0000 +0x044B=0x0000 +0x0390=0x0000 +0x0451=0x0000 +0x0559=0xACB9 +0x0456=0x0000 +0x0314=0x0000 +0x0458=0x0000 +0x02DA=0x0000 +0x045A=0x0000 +0x0447=0x0000 +0x0460=0x0000 +0x0480=0x0000 +0x045F=0x0000 +0x0486=0x0000 +0x0487=0x0000 +0x0283=0x0000 +0x0022=0x07FF +0x048E=0x0000 +0x029B=0x0000 +0x0491=0x0000 +0x0492=0x0000 +0x0493=0x0000 +[file_info] +version=1 +type=lms7002m_minimal_config diff --git a/targets/ARCH/LMSSDR/enb_sodera_lowband_Lrx_5MHz_rx19dB_txfull.ini b/targets/ARCH/LMSSDR/enb_sodera_lowband_Lrx_5MHz_rx19dB_txfull.ini new file mode 100644 index 0000000000000000000000000000000000000000..34ce70c888f089f0498a5000848e4d99858de8ce --- /dev/null +++ b/targets/ARCH/LMSSDR/enb_sodera_lowband_Lrx_5MHz_rx19dB_txfull.ini @@ -0,0 +1,1128 @@ +[reference_clocks] +sxr_ref_clk_mhz=30.72 +sxt_ref_clk_mhz=30.72 +[lms7002_registers_b] +0x05A7=0x0000 +0x05A5=0x0000 +0x05A2=0x0000 +0x05A0=0x0000 +0x0599=0x0000 +0x0598=0x0000 +0x0596=0x0000 +0x0594=0x0000 +0x0592=0x0000 +0x0591=0x0000 +0x0590=0x0000 +0x058E=0x0000 +0x058C=0x0000 +0x059D=0x0000 +0x058A=0x0000 +0x0589=0x0000 +0x0587=0x0000 +0x0585=0x0000 +0x0595=0x0000 +0x0584=0x0000 +0x059F=0x0000 +0x0583=0x0000 +0x0582=0x0000 +0x0567=0x0000 +0x0566=0x0000 +0x0565=0x0000 +0x0564=0x0000 +0x0563=0x0000 +0x0562=0x0000 +0x055F=0x0000 +0x055D=0x0000 +0x055A=0x0000 +0x058F=0x0000 +0x0557=0x0000 +0x0593=0x0000 +0x0554=0x0000 +0x0552=0x0000 +0x0551=0x0000 +0x0550=0x0000 +0x054D=0x0000 +0x054C=0x0000 +0x0549=0x0000 +0x0547=0x0000 +0x0546=0x0000 +0x0545=0x0000 +0x0544=0x0000 +0x0543=0x0000 +0x0553=0x0000 +0x0542=0x0000 +0x0541=0x0000 +0x0527=0x0000 +0x0526=0x0000 +0x0524=0x0000 +0x0525=0x0000 +0x0523=0x0000 +0x0521=0x0000 +0x055C=0x0000 +0x051A=0x0000 +0x0519=0x0000 +0x0518=0x0000 +0x0514=0x0000 +0x0513=0x0000 +0x0511=0x0000 +0x05A6=0x0000 +0x051E=0x0000 +0x050F=0x0000 +0x0516=0x0000 +0x050E=0x0000 +0x050C=0x0000 +0x050B=0x0000 +0x050A=0x0000 +0x0509=0x0000 +0x0507=0x0000 +0x0506=0x0000 +0x0503=0x0000 +0x04E7=0x0000 +0x04E6=0x0000 +0x0512=0x0000 +0x04E5=0x0000 +0x04E4=0x0000 +0x0321=0x0000 +0x0320=0x0000 +0x0323=0x0000 +0x031B=0x0000 +0x0319=0x0000 +0x0260=0x0000 +0x031F=0x0000 +0x0360=0x0000 +0x0312=0x0000 +0x0310=0x0000 +0x0245=0x0000 +0x0581=0x0000 +0x045D=0x0000 +0x030E=0x0000 +0x0203=0x0000 +0x0482=0x0000 +0x0588=0x0000 +0x0308=0x0000 +0x048A=0x0000 +0x0307=0x0000 +0x0282=0x0000 +0x038C=0x0000 +0x0510=0x0000 +0x0302=0x0000 +0x0301=0x0000 +0x0309=0x0000 +0x0300=0x0000 +0x044E=0x0000 +0x034F=0x0000 +0x055B=0x0000 +0x0114=0x008D +0x02E5=0x0000 +0x02E4=0x0000 +0x02E1=0x0000 +0x02D5=0x0000 +0x0259=0x0000 +0x0517=0x0000 +0x0481=0x0000 +0x030B=0x0000 +0x0392=0x0000 +0x02DE=0x0000 +0x02DD=0x0000 +0x0297=0x0000 +0x0209=0x0000 +0x0400=0x0081 +0x02D8=0x0000 +0x0104=0x0088 +0x0103=0x0A12 +0x0347=0x0000 +0x0457=0x0000 +0x058D=0x0000 +0x02D7=0x0000 +0x02D1=0x0000 +0x04C8=0x0000 +0x02D3=0x0000 +0x02CB=0x0000 +0x0250=0x0000 +0x0306=0x0000 +0x04A4=0x0000 +0x044A=0x0000 +0x054B=0x0000 +0x02C7=0x0000 +0x02C1=0x0000 +0x031D=0x0000 +0x0440=0x0020 +0x045E=0x0000 +0x02C4=0x0000 +0x02C2=0x0000 +0x02DB=0x0000 +0x0357=0x0000 +0x0201=0x07FF +0x0483=0x0000 +0x05A4=0x0000 +0x02A3=0x0000 +0x02A1=0x0000 +0x028D=0x0000 +0x02D2=0x0000 +0x039C=0x0000 +0x02A0=0x0000 +0x010E=0x2040 +0x030A=0x0000 +0x029F=0x0000 +0x029C=0x0000 +0x029E=0x0000 +0x011D=0x699D +0x039E=0x0000 +0x0296=0x0000 +0x0555=0x0000 +0x0349=0x0000 +0x0295=0x0000 +0x010D=0x009E +0x04C4=0x0000 +0x0292=0x0000 +0x02CF=0x0000 +0x04D1=0x0000 +0x0291=0x0000 +0x02DF=0x0000 +0x0290=0x0000 +0x020A=0x0080 +0x0102=0x3180 +0x0388=0x0000 +0x0120=0xB9FF +0x0317=0x0000 +0x0244=0x0000 +0x059B=0x0000 +0x0322=0x0000 +0x010F=0x3042 +0x0119=0x18CB +0x02A6=0x0000 +0x051F=0x0000 +0x029A=0x0000 +0x049A=0x0000 +0x059E=0x0000 +0x04D7=0x0000 +0x0318=0x0000 +0x02A7=0x0000 +0x0200=0x0081 +0x02C5=0x0000 +0x0122=0x033F +0x0110=0x0BF4 +0x0204=0x0000 +0x0252=0x0000 +0x011E=0x06B9 +0x049B=0x0000 +0x0294=0x0000 +0x011C=0xAD41 +0x02D6=0x0000 +0x0311=0x0000 +0x0117=0x280C +0x0540=0x0000 +0x02A4=0x0000 +0x0485=0x0000 +0x02E0=0x0000 +0x0118=0x018C +0x0489=0x0000 +0x04A7=0x0000 +0x0101=0x7800 +0x0558=0x0000 +0x02C6=0x0000 +0x05A1=0x0000 +0x02C9=0x0000 +0x0500=0x0000 +0x039D=0x0000 +0x011F=0x3680 +0x030C=0x0000 +0x04DF=0x0000 +0x0281=0x0000 +0x0106=0x3182 +0x028E=0x0000 +0x0326=0x0000 +0x0113=0x03C3 +0x04CB=0x0000 +0x0391=0x0000 +0x0105=0x0007 +0x02D9=0x0000 +0x02CE=0x0000 +0x044F=0x0000 +0x038B=0x0000 +0x02D4=0x0000 +0x0107=0x318C +0x0495=0x0000 +0x0246=0x0000 +0x0303=0x0000 +0x02E6=0x0000 +0x045B=0x0000 +0x0100=0x3409 +0x0340=0x0000 +0x0208=0x0070 +0x0111=0x0083 +0x0247=0x0000 +0x024B=0x0000 +0x045C=0x0000 +0x024D=0x0000 +0x0202=0x07FF +0x0383=0x0000 +0x054A=0x0000 +0x0401=0x07FF +0x0206=0x0000 +0x0124=0x0000 +0x0341=0x0000 +0x0287=0x0000 +0x0501=0x0000 +0x034C=0x0000 +0x030F=0x0000 +0x025D=0x0000 +0x0406=0x0000 +0x051B=0x0000 +0x0313=0x0000 +0x010A=0x104C +0x0461=0x0000 +0x0121=0x333C +0x0115=0x0009 +0x0112=0xC0E6 +0x039A=0x0000 +0x02CC=0x0000 +0x0116=0x8180 +0x04A0=0x0000 +0x0108=0x9442 +0x020B=0x4000 +0x0251=0x0000 +0x0488=0x0000 +0x0241=0x0000 +0x038F=0x0000 +0x02DC=0x0000 +0x024C=0x0000 +0x0494=0x0000 +0x051D=0x0000 +0x0243=0x0000 +0x0556=0x0000 +0x040A=0x0000 +0x04CD=0x0000 +0x0249=0x0000 +0x0261=0x0000 +0x024A=0x0000 +0x0285=0x0000 +0x0280=0x0000 +0x0346=0x0000 +0x024E=0x0000 +0x024F=0x0000 +0x0253=0x0000 +0x0255=0x0000 +0x0502=0x0000 +0x0258=0x0000 +0x0298=0x0000 +0x05A3=0x0000 +0x0367=0x0000 +0x0240=0x0020 +0x0256=0x0000 +0x0242=0x0000 +0x025A=0x0000 +0x04E2=0x0000 +0x04C5=0x0000 +0x025B=0x0000 +0x020C=0x7FFF +0x0205=0x0000 +0x0361=0x0000 +0x0515=0x0000 +0x025C=0x0000 +0x0355=0x0000 +0x044C=0x0000 +0x010C=0x88FD +0x0284=0x0000 +0x0396=0x0000 +0x0286=0x0000 +0x028F=0x0000 +0x031C=0x0000 +0x031A=0x0000 +0x0363=0x0000 +0x0289=0x0000 +0x059C=0x0000 +0x04DD=0x0000 +0x028A=0x0000 +0x040C=0x0000 +0x028B=0x0000 +0x0450=0x0000 +0x0352=0x0000 +0x028C=0x0000 +0x04C2=0x0000 +0x025E=0x0000 +0x04DA=0x0000 +0x0327=0x0000 +0x0380=0x0000 +0x0342=0x0000 +0x0343=0x0000 +0x0561=0x0000 +0x0344=0x0000 +0x0586=0x0000 +0x0484=0x0000 +0x0345=0x0000 +0x0505=0x0000 +0x035B=0x0000 +0x034A=0x0000 +0x0455=0x0000 +0x011A=0x2E02 +0x034B=0x0000 +0x034D=0x0000 +0x035C=0x0000 +0x034E=0x0000 +0x0293=0x0000 +0x03A6=0x0000 +0x0350=0x0000 +0x0445=0x0000 +0x048F=0x0000 +0x0351=0x0000 +0x0353=0x0000 +0x050D=0x0000 +0x02CD=0x0000 +0x0490=0x0000 +0x0354=0x0000 +0x0348=0x0000 +0x0498=0x0000 +0x0356=0x0000 +0x0316=0x0000 +0x030D=0x0000 +0x040E=0x0000 +0x0522=0x0000 +0x049F=0x0000 +0x029D=0x0000 +0x04A3=0x0000 +0x0359=0x0000 +0x0299=0x0000 +0x0452=0x0000 +0x02C8=0x0000 +0x035A=0x0000 +0x0449=0x0000 +0x0442=0x0000 +0x035D=0x0000 +0x035E=0x0000 +0x0597=0x0000 +0x035F=0x0000 +0x0325=0x0000 +0x0364=0x0000 +0x0365=0x0000 +0x0366=0x0000 +0x0381=0x0000 +0x0288=0x0000 +0x0382=0x0000 +0x0384=0x0000 +0x0315=0x0000 +0x0385=0x0000 +0x054F=0x0000 +0x0389=0x0000 +0x04E3=0x0000 +0x040F=0x0000 +0x0386=0x0000 +0x054E=0x0000 +0x02D0=0x0000 +0x03A0=0x0000 +0x0387=0x0000 +0x0362=0x0000 +0x038A=0x0000 +0x0395=0x0000 +0x038D=0x0000 +0x02E7=0x0000 +0x0324=0x0000 +0x038E=0x0000 +0x0305=0x0000 +0x0393=0x0000 +0x0459=0x0000 +0x0394=0x0000 +0x0123=0x267B +0x0497=0x0000 +0x0398=0x0000 +0x0408=0x0000 +0x0399=0x0000 +0x039B=0x0000 +0x0248=0x0000 +0x039F=0x0000 +0x049E=0x0000 +0x059A=0x0000 +0x048D=0x0000 +0x051C=0x0000 +0x03A2=0x0000 +0x03A3=0x0000 +0x03A4=0x0000 +0x03A5=0x0000 +0x0520=0x0000 +0x03A7=0x0000 +0x055E=0x0000 +0x0402=0x07FF +0x0403=0x0000 +0x04D8=0x0000 +0x0560=0x0000 +0x0404=0x0000 +0x0254=0x0000 +0x0405=0x0000 +0x0407=0x0000 +0x0580=0x0000 +0x0409=0x0000 +0x040B=0x7FFF +0x040D=0x0000 +0x0441=0x0000 +0x0508=0x0000 +0x0443=0x0000 +0x0444=0x0000 +0x04CA=0x0000 +0x0446=0x0000 +0x0454=0x0000 +0x0448=0x0000 +0x044B=0x0000 +0x02E2=0x0000 +0x044D=0x0000 +0x0390=0x0000 +0x0451=0x0000 +0x0453=0x0000 +0x0559=0x0000 +0x0456=0x0000 +0x0314=0x0000 +0x0458=0x0000 +0x02DA=0x0000 +0x045A=0x0000 +0x0447=0x0000 +0x0460=0x0000 +0x0480=0x0000 +0x045F=0x0000 +0x0486=0x0000 +0x0487=0x0000 +0x0358=0x0000 +0x048B=0x0000 +0x048C=0x0000 +0x0283=0x0000 +0x048E=0x0000 +0x029B=0x0000 +0x0491=0x0000 +0x0492=0x0000 +0x04A1=0x0000 +0x0493=0x0000 +0x04C3=0x0000 +0x0496=0x0000 +0x02C0=0x0000 +0x0499=0x0000 +0x02E3=0x0000 +0x0397=0x0000 +0x049C=0x0000 +0x04C7=0x0000 +0x049D=0x0000 +0x0109=0x61C1 +0x04A2=0x0000 +0x04A5=0x0000 +0x04A6=0x0000 +0x0257=0x0000 +0x04D6=0x0000 +0x031E=0x0000 +0x04C0=0x0000 +0x02CA=0x0000 +0x04C9=0x0000 +0x02C3=0x0000 +0x04C1=0x0000 +0x0207=0x0000 +0x04C6=0x0000 +0x02A5=0x0000 +0x04CC=0x0000 +0x04CE=0x0000 +0x025F=0x0000 +0x04CF=0x0000 +0x04D0=0x0000 +0x0548=0x0000 +0x04D2=0x0000 +0x04D3=0x0000 +0x0504=0x0000 +0x04D4=0x0000 +0x0304=0x0000 +0x04D5=0x0000 +0x04D9=0x0000 +0x04DB=0x0000 +0x04DC=0x0000 +0x058B=0x0000 +0x04DE=0x0000 +0x04E0=0x0000 +0x02A2=0x0000 +0x03A1=0x0000 +0x04E1=0x0000 +[lms7002_registers_a] +0x05A7=0x0000 +0x05A5=0x0000 +0x05A2=0x0000 +0x0599=0x0000 +0x0598=0xF61D +0x0596=0x0A94 +0x0594=0xF40D +0x0592=0x0DF1 +0x0591=0xFCFE +0x0590=0xEF99 +0x058E=0x1316 +0x058C=0xEA50 +0x059D=0x0000 +0x058A=0x17DC +0x0585=0xDAA2 +0x0595=0x00BC +0x0584=0xE7E2 +0x059F=0x0000 +0x0583=0x2E45 +0x0582=0x150F +0x0567=0x4049 +0x0566=0x0906 +0x0565=0xB77F +0x0563=0x4F91 +0x055F=0x5852 +0x055D=0xA6B5 +0x055A=0xBE2A +0x058F=0x0605 +0x0557=0x4C24 +0x0593=0x00D8 +0x0554=0x6901 +0x0552=0x8D44 +0x0551=0xD7B7 +0x0550=0x79FA +0x054C=0x7FFF +0x0549=0x18C9 +0x0547=0xD7B7 +0x0546=0x8D44 +0x0545=0x364E +0x0544=0x6901 +0x0543=0xBD96 +0x0553=0x364E +0x0542=0xA2B5 +0x0541=0x4C24 +0x0527=0xACB9 +0x0526=0xBE2A +0x0525=0x57AC +0x0523=0xA6B5 +0x0521=0x5852 +0x055C=0x3347 +0x051A=0x0906 +0x0518=0xEFF2 +0x0514=0xE7E2 +0x0513=0xDAA2 +0x0511=0x1D10 +0x05A6=0x0000 +0x051E=0xF524 +0x050F=0xEA5F +0x0516=0x150F +0x050E=0x17DC +0x050C=0xEA50 +0x050B=0xF5EF +0x050A=0x1316 +0x0509=0x0605 +0x0507=0xFCFE +0x0506=0x0DF1 +0x0503=0x00BC +0x04E7=0x0000 +0x04E6=0x0000 +0x04E4=0x0000 +0x04E0=0x0000 +0x058B=0x0F45 +0x04DE=0x0000 +0x04DC=0x0000 +0x04DB=0x0000 +0x04D9=0x0000 +0x04D8=0x0000 +0x059E=0x0000 +0x04D7=0x0000 +0x0504=0xF40D +0x04D4=0x0000 +0x04D3=0x0000 +0x0548=0x79FA +0x04D2=0x0000 +0x04D1=0x0000 +0x04D0=0x0000 +0x04CE=0x0000 +0x04C8=0x0000 +0x04E2=0x0000 +0x04C5=0x0000 +0x04C4=0x0000 +0x04C2=0x0000 +0x04A7=0x0000 +0x04A6=0x0000 +0x04A5=0x0000 +0x04A1=0x0000 +0x04A0=0x0000 +0x0522=0xDB10 +0x049F=0x0000 +0x049E=0x0000 +0x04C7=0x0000 +0x049D=0x0000 +0x049B=0x0000 +0x049A=0x0000 +0x04C3=0x0000 +0x0496=0x0000 +0x0494=0x0000 +0x02D3=0x0000 +0x02D1=0x0000 +0x02CB=0x0000 +0x0250=0x0000 +0x0096=0x0000 +0x04C1=0x0000 +0x02C3=0x0000 +0x02C4=0x0000 +0x02C2=0x0000 +0x0499=0x0000 +0x02C0=0x0000 +0x0201=0x07FF +0x0483=0x0000 +0x05A4=0x0000 +0x02A3=0x0000 +0x008B=0x278A +0x02A1=0x0000 +0x028D=0x0000 +0x029C=0x0000 +0x029E=0x0000 +0x0297=0x0000 +0x0296=0x0000 +0x0555=0xBD96 +0x0349=0x0000 +0x010D=0x015C +0x02CF=0x0000 +0x0291=0x0000 +0x02DF=0x0000 +0x0290=0x0000 +0x0021=0x0E9F +0x0450=0x0000 +0x0558=0x5009 +0x02C6=0x0000 +0x0101=0x7800 +0x059C=0x0000 +0x04DD=0x0000 +0x028A=0x0000 +0x0121=0x313C +0x0285=0x0000 +0x0280=0x0000 +0x0319=0x0000 +0x04CF=0x0000 +0x025F=0x0000 +0x025D=0x0000 +0x030F=0x0000 +0x0406=0x0000 +0x02C5=0x0000 +0x0200=0x0301 +0x0281=0x0000 +0x04A2=0x0000 +0x0109=0x03C1 +0x0355=0x0000 +0x044C=0x0000 +0x025B=0x0000 +0x0298=0x0000 +0x0502=0x0A94 +0x0258=0x0000 +0x0255=0x0000 +0x04D6=0x0000 +0x0257=0x0000 +0x0252=0x0000 +0x0204=0xFFAD +0x024F=0x0000 +0x04CC=0x0000 +0x02A5=0x0000 +0x0497=0x0000 +0x0123=0x267B +0x0495=0x0000 +0x0246=0x0000 +0x051D=0x4F91 +0x0243=0x0000 +0x0556=0xA2B5 +0x040A=0x1000 +0x025A=0x0000 +0x0242=0x0000 +0x020C=0x8000 +0x0251=0x0000 +0x02DD=0x0000 +0x0020=0xFFFD +0x0488=0x0000 +0x020A=0x0000 +0x0102=0x3180 +0x04C6=0x0000 +0x0207=0x0000 +0x04DA=0x0000 +0x025E=0x0000 +0x0206=0x0000 +0x00A3=0x6565 +0x02E2=0x0000 +0x044D=0x0000 +0x0292=0x0000 +0x002A=0x0086 +0x0245=0x0000 +0x0581=0xC89D +0x045D=0x0000 +0x024D=0x0000 +0x002B=0x4032 +0x02A0=0x0000 +0x010E=0x070C +0x0286=0x0000 +0x009E=0x658C +0x0088=0x0530 +0x0085=0x0001 +0x0295=0x0000 +0x0089=0x00A0 +0x0256=0x0000 +0x0093=0x0000 +0x0092=0x0001 +0x031B=0x0000 +0x0111=0x0099 +0x0095=0x0000 +0x02A7=0x0000 +0x0203=0x2F6C +0x030E=0x0000 +0x0482=0x0000 +0x05A0=0x0000 +0x009C=0x658C +0x0381=0x0000 +0x0122=0x033F +0x0110=0x0BFF +0x0100=0xB409 +0x0028=0x0101 +0x0026=0x0101 +0x0524=0x3347 +0x009D=0x6565 +0x0294=0x0000 +0x0106=0x3182 +0x028E=0x0000 +0x0326=0x0000 +0x0113=0x03C3 +0x04CB=0x0000 +0x0391=0x0000 +0x05A1=0x0000 +0x02C9=0x0000 +0x0500=0xF61D +0x039D=0x0000 +0x011F=0x3680 +0x0395=0x0000 +0x024B=0x0000 +0x045C=0x0000 +0x0247=0x0000 +0x0512=0x196B +0x04E5=0x0000 +0x0024=0x50D8 +0x0353=0x0000 +0x050D=0x0F45 +0x02CD=0x0000 +0x0490=0x0000 +0x0501=0xFDFB +0x034C=0x0000 +0x00AA=0x0000 +0x0350=0x0000 +0x0445=0x0000 +0x048F=0x0000 +0x008A=0x0491 +0x0453=0x0000 +0x0124=0x0000 +0x0260=0x0000 +0x00A1=0x6565 +0x0356=0x0000 +0x0241=0x0000 +0x04CD=0x0000 +0x0249=0x0000 +0x002C=0x0100 +0x038F=0x0000 +0x008C=0x267B +0x0459=0x0000 +0x0394=0x0000 +0x054D=0xF7A3 +0x00A6=0x0001 +0x002D=0xFFFF +0x00AC=0x2000 +0x0253=0x0000 +0x028B=0x0000 +0x040C=0x40F8 +0x0099=0x6565 +0x0310=0x0000 +0x00A2=0x6565 +0x0589=0xEA5F +0x002F=0x3840 +0x0597=0xFDFB +0x035F=0x0000 +0x0562=0xF524 +0x0025=0x0101 +0x011C=0xAD41 +0x011D=0xFEEE +0x039E=0x0000 +0x0289=0x0000 +0x0282=0x0000 +0x0307=0x0000 +0x038C=0x0000 +0x0087=0x0000 +0x0399=0x0000 +0x054B=0xF7A3 +0x02C7=0x0000 +0x0519=0x4049 +0x009F=0x658C +0x0515=0x2E45 +0x025C=0x0000 +0x00A5=0x6565 +0x0301=0x0000 +0x02C1=0x0000 +0x0259=0x0000 +0x02D5=0x0000 +0x02E1=0x0000 +0x0517=0xC89D +0x0481=0x0000 +0x00A8=0x0000 +0x02D2=0x0000 +0x039C=0x0000 +0x0564=0x0000 +0x00AB=0x0040 +0x0261=0x0000 +0x002E=0x0000 +0x02DE=0x0000 +0x0540=0x5009 +0x02A4=0x0000 +0x0485=0x0000 +0x0489=0x0000 +0x00AD=0x03FF +0x024A=0x0000 +0x0029=0x0101 +0x0097=0x0000 +0x011E=0x0663 +0x00AE=0x0000 +0x00A7=0x6565 +0x020B=0x0000 +0x0098=0x0000 +0x0108=0xFC26 +0x0027=0x05E4 +0x0117=0x1939 +0x0383=0x0000 +0x0202=0x07F9 +0x054A=0x8184 +0x00A4=0x6565 +0x0401=0x07ED +0x0086=0x4101 +0x010C=0x8865 +0x02D8=0x0000 +0x0347=0x0000 +0x0457=0x0000 +0x0103=0x0A12 +0x0104=0x0088 +0x0357=0x0000 +0x02DB=0x0000 +0x0400=0x0101 +0x009B=0x6565 +0x0105=0x0007 +0x05A3=0x0000 +0x0240=0x0028 +0x0367=0x0000 +0x044F=0x0000 +0x038B=0x0000 +0x0284=0x0000 +0x0396=0x0000 +0x051F=0xAB08 +0x029A=0x0000 +0x0361=0x0000 +0x0205=0x0000 +0x0119=0x529F +0x02A6=0x0000 +0x010F=0x3042 +0x04C0=0x0000 +0x031E=0x0000 +0x02CC=0x0000 +0x0116=0x8180 +0x0587=0x1D10 +0x0023=0x5550 +0x048C=0x0000 +0x0112=0x20E5 +0x039A=0x0000 +0x0320=0x0000 +0x0323=0x0000 +0x0115=0x0009 +0x00A9=0x8000 +0x0244=0x0000 +0x0094=0x0000 +0x0317=0x0000 +0x0208=0x0170 +0x0340=0x0000 +0x058D=0xF5EF +0x02D7=0x0000 +0x04A3=0x0000 +0x029D=0x0000 +0x0388=0x0000 +0x0120=0xB9FF +0x04C9=0x0000 +0x02CA=0x0000 +0x0209=0x0000 +0x0082=0x8001 +0x0107=0x318C +0x02D4=0x0000 +0x02CE=0x0000 +0x02D9=0x0000 +0x02E4=0x0000 +0x024C=0x0000 +0x02DC=0x0000 +0x0118=0x218C +0x02E0=0x0000 +0x055B=0x57AC +0x0114=0x0170 +0x02E5=0x0000 +0x02E6=0x0000 +0x045B=0x0000 +0x034F=0x0000 +0x0300=0x0000 +0x044E=0x0000 +0x0510=0xE6C7 +0x0302=0x0000 +0x0303=0x0000 +0x04D5=0x0000 +0x0304=0x0000 +0x0306=0x0000 +0x04A4=0x0000 +0x044A=0x0000 +0x049C=0x0000 +0x02E3=0x0000 +0x0397=0x0000 +0x0588=0xE6C7 +0x0308=0x0000 +0x048A=0x0000 +0x0309=0x0000 +0x029F=0x0000 +0x030A=0x0000 +0x0392=0x0000 +0x030B=0x0000 +0x04DF=0x0000 +0x030C=0x0000 +0x02D6=0x0000 +0x0311=0x0000 +0x024E=0x0000 +0x0346=0x0000 +0x0312=0x0000 +0x051B=0xB77F +0x010A=0x184C +0x0461=0x0000 +0x0313=0x0000 +0x0360=0x0000 +0x028C=0x0000 +0x0352=0x0000 +0x040E=0x0000 +0x030D=0x0000 +0x0316=0x0000 +0x031F=0x0000 +0x0318=0x0000 +0x0287=0x0000 +0x0341=0x0000 +0x028F=0x0000 +0x031C=0x0000 +0x031A=0x0000 +0x0363=0x0000 +0x031D=0x0000 +0x0440=0x0024 +0x045E=0x0000 +0x0321=0x0000 +0x059B=0x0000 +0x0322=0x0000 +0x0327=0x0000 +0x0380=0x0000 +0x0342=0x0000 +0x0343=0x0000 +0x0561=0xAB08 +0x0344=0x0000 +0x0586=0x196B +0x0484=0x0000 +0x0345=0x0000 +0x0505=0x00D8 +0x035B=0x0000 +0x0498=0x0000 +0x0084=0x0400 +0x0348=0x0000 +0x034A=0x0000 +0x0455=0x0000 +0x011A=0x2E03 +0x034B=0x0000 +0x034D=0x0000 +0x035C=0x0000 +0x034E=0x0000 +0x0293=0x0000 +0x03A6=0x0000 +0x0351=0x0000 +0x0354=0x0000 +0x048B=0x0000 +0x0358=0x0000 +0x0359=0x0000 +0x0299=0x0000 +0x0452=0x0000 +0x02C8=0x0000 +0x035A=0x0000 +0x0449=0x0000 +0x0442=0x0000 +0x035D=0x0000 +0x035E=0x0000 +0x038A=0x0000 +0x0362=0x0000 +0x0081=0x0000 +0x0325=0x0000 +0x0364=0x0000 +0x0365=0x0000 +0x0366=0x0000 +0x0288=0x0000 +0x0382=0x0000 +0x0384=0x0000 +0x0315=0x0000 +0x0385=0x0000 +0x054F=0x18C9 +0x0389=0x0000 +0x04E3=0x0000 +0x040F=0x0000 +0x0386=0x0000 +0x054E=0x8184 +0x009A=0x658C +0x02D0=0x0000 +0x03A0=0x0000 +0x0387=0x0000 +0x038D=0x0000 +0x02E7=0x0000 +0x0324=0x0000 +0x038E=0x0000 +0x0305=0x0000 +0x0393=0x0000 +0x0398=0x0000 +0x0408=0x0000 +0x039B=0x0000 +0x0248=0x0000 +0x039F=0x0000 +0x04E1=0x0000 +0x02A2=0x0000 +0x03A1=0x0000 +0x059A=0x0000 +0x048D=0x0000 +0x051C=0x0000 +0x03A2=0x0000 +0x03A3=0x0000 +0x03A4=0x0000 +0x03A5=0x0000 +0x0520=0x174B +0x03A7=0x0000 +0x055E=0xDB10 +0x0402=0x07FF +0x0403=0x009C +0x0560=0x174B +0x00A0=0x6565 +0x0404=0x0000 +0x0254=0x0000 +0x0405=0x0000 +0x0407=0x0000 +0x0580=0xEFF2 +0x0409=0x0000 +0x040B=0x000F +0x040D=0x0000 +0x0441=0x0000 +0x0508=0xEF99 +0x0443=0x0000 +0x0444=0x0000 +0x04CA=0x0000 +0x0446=0x0000 +0x0454=0x0000 +0x0448=0x0000 +0x044B=0x0000 +0x0390=0x0000 +0x0451=0x0000 +0x0559=0xACB9 +0x0456=0x0000 +0x0314=0x0000 +0x0458=0x0000 +0x02DA=0x0000 +0x045A=0x0000 +0x0447=0x0000 +0x0460=0x0000 +0x0480=0x0000 +0x045F=0x0000 +0x0486=0x0000 +0x0487=0x0000 +0x0283=0x0000 +0x0022=0x07FF +0x048E=0x0000 +0x029B=0x0000 +0x0491=0x0000 +0x0492=0x0000 +0x0493=0x0000 +[file_info] +version=1 +type=lms7002m_minimal_config diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band13.tm1.50PRB.lmssdr.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band13.tm1.50PRB.lmssdr.conf index 6b93021426a3345c2b382ac582c7288310ae471b..420949014150671cfc5a95a6aa4ba1e9c9ea0b20 100644 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band13.tm1.50PRB.lmssdr.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band13.tm1.50PRB.lmssdr.conf @@ -17,7 +17,7 @@ eNBs = mobile_country_code = "208"; - mobile_network_code = "95"; + mobile_network_code = "93"; ////////// Physical parameters: @@ -133,7 +133,7 @@ eNBs = ////////// MME parameters: - mme_ip_address = ( { ipv4 = "192.168.12.62"; + mme_ip_address = ( { ipv4 = "192.168.12.11"; ipv6 = "192:168:30::17"; active = "yes"; preference = "ipv4"; @@ -142,11 +142,11 @@ eNBs = NETWORK_INTERFACES : { - ENB_INTERFACE_NAME_FOR_S1_MME = "eth4"; - ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.242/24"; + ENB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.212/24"; - ENB_INTERFACE_NAME_FOR_S1U = "eth4"; - ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.242/24"; + ENB_INTERFACE_NAME_FOR_S1U = "eth0"; + ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.212/24"; ENB_PORT_FOR_S1U = 2152; # Spec 2152 }; diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band13.tm1.lmssdr.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band13.tm1.lmssdr.conf index dacc3e8664801ae030d54555984e83536ec1af8a..266e5aae25bb3281f27ef9d074d7ede2a31bc98a 100644 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band13.tm1.lmssdr.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band13.tm1.lmssdr.conf @@ -17,7 +17,7 @@ eNBs = mobile_country_code = "208"; - mobile_network_code = "95"; + mobile_network_code = "93"; ////////// Physical parameters: @@ -36,7 +36,7 @@ eNBs = nb_antennas_tx = 1; nb_antennas_rx = 1; tx_gain = 90; - rx_gain = 125; + rx_gain = 107; prach_root = 0; prach_config_index = 0; prach_high_speed = "DISABLE"; @@ -133,7 +133,7 @@ eNBs = ////////// MME parameters: - mme_ip_address = ( { ipv4 = "192.168.12.62"; + mme_ip_address = ( { ipv4 = "192.168.12.11"; ipv6 = "192:168:30::17"; active = "yes"; preference = "ipv4"; @@ -142,11 +142,11 @@ eNBs = NETWORK_INTERFACES : { - ENB_INTERFACE_NAME_FOR_S1_MME = "eth4"; - ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.242/24"; + ENB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.212/24"; - ENB_INTERFACE_NAME_FOR_S1U = "eth4"; - ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.242/24"; + ENB_INTERFACE_NAME_FOR_S1U = "eth0"; + ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.212/24"; ENB_PORT_FOR_S1U = 2152; # Spec 2152 }; diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.generic.oaisim.local_no_mme.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.generic.oaisim.local_no_mme.conf new file mode 100644 index 0000000000000000000000000000000000000000..ae989b5c8d8f5d00c0fe006a2659ac35e3feea9c --- /dev/null +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.generic.oaisim.local_no_mme.conf @@ -0,0 +1,146 @@ +Active_eNBs = ( "eNB_Eurecom_LTEBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "eNB_Eurecom_LTEBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = "1"; + + mobile_country_code = "208"; + + mobile_network_code = "10"; + + ////////// Physical parameters: + + component_carriers = ( + { + frame_type = "TDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 38; + downlink_frequency = 2580000000L; + uplink_frequency_offset = 0; + Nid_cell = 0; + N_RB_DL = 25; + Nid_cell_mbsfn = 0; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 25; + rx_gain = 20; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 1; + pucch_nCS_AN = 0; + pucch_n1_AN = 32; + pdsch_referenceSignalPower = 0; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 0; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -108; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -108; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 2; + rach_preambleInitialReceivedTargetPower = -100; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + } + ); + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "0.0.0.0"; + ipv6 = "0::0"; + active = "yes"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "none"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "0.0.0.0/24"; + + ENB_INTERFACE_NAME_FOR_S1U = "none"; + ENB_IPV4_ADDRESS_FOR_S1U = "0.0.0.0/24"; + ENB_PORT_FOR_S1U = 2153; # Spec 2152 + }; + + log_config : + { + global_log_level ="trace"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="trace"; + phy_log_verbosity ="medium"; + mac_log_level ="trace"; + mac_log_verbosity ="medium"; + rlc_log_level ="trace"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="trace"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="trace"; + rrc_log_verbosity ="medium"; + gtpu_log_level ="debug"; + gtpu_log_verbosity ="medium"; + udp_log_level ="debug"; + udp_log_verbosity ="medium"; + osa_log_level ="debug"; + osa_log_verbosity ="low"; + }; + + } +); diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c index 1409e031fe5a6beccacd1a4d9a872a67646d450a..7df20f05c81212c64aa8159d032978f472aad98e 100644 --- a/targets/RT/USER/lte-softmodem.c +++ b/targets/RT/USER/lte-softmodem.c @@ -293,6 +293,7 @@ static int tx_max_power[MAX_NUM_CCs]; /* = {0,0}*/; char rf_config_file[1024]; int chain_offset=0; +int phy_test = 0; #ifndef EXMIMO char ref[128] = "internal"; @@ -472,7 +473,7 @@ void help (void) { printf(" -d Enable soft scope and L1 and L2 stats (Xforms)\n"); printf(" -F Calibrate the EXMIMO borad, available files: exmimo2_2arxg.lime exmimo2_2brxg.lime \n"); printf(" -g Set the global log level, valide options: (9:trace, 8/7:debug, 6:info, 4:warn, 3:error)\n"); - printf(" -G Set the global log level \n"); + printf(" -G Set the global log verbosity \n"); printf(" -h provides this help message!\n"); printf(" -K Generate ITTI analyzser logs (similar to wireshark logs but with more details)\n"); printf(" -m Set the maximum downlink MCS\n"); @@ -577,12 +578,12 @@ static void *scope_thread(void *arg) 0,7); } else { -#ifdef OPENAIR2 - len = dump_eNB_l2_stats (stats_buffer, 0); - //fl_set_object_label(form_stats_l2->stats_text, stats_buffer); - fl_clear_browser(form_stats_l2->stats_text); - fl_add_browser_line(form_stats_l2->stats_text, stats_buffer); -#endif + if (PHY_vars_eNB_g[0][0]->mac_enabled==1) { + len = dump_eNB_l2_stats (stats_buffer, 0); + //fl_set_object_label(form_stats_l2->stats_text, stats_buffer); + fl_clear_browser(form_stats_l2->stats_text); + fl_add_browser_line(form_stats_l2->stats_text, stats_buffer); + } len = dump_eNB_stats (PHY_vars_eNB_g[0][0], stats_buffer, 0); if (MAX_NUM_CCs>1) @@ -2117,7 +2118,8 @@ static void get_options (int argc, char **argv) LONG_OPTION_SCANCARRIER, LONG_OPTION_MAXPOWER, LONG_OPTION_DUMP_FRAME, - LONG_OPTION_LOOPMEMORY + LONG_OPTION_LOOPMEMORY, + LONG_OPTION_PHYTEST }; static const struct option long_options[] = { @@ -2135,15 +2137,19 @@ static void get_options (int argc, char **argv) {"ue-max-power", required_argument, NULL, LONG_OPTION_MAXPOWER}, {"ue-dump-frame", no_argument, NULL, LONG_OPTION_DUMP_FRAME}, {"loop-memory", required_argument, NULL, LONG_OPTION_LOOPMEMORY}, + {"phy-test", no_argument, NULL, LONG_OPTION_PHYTEST}, {NULL, 0, NULL, 0} }; while ((c = getopt_long (argc, argv, "A:a:C:dEK:g:F:G:hqO:m:SUVRM:r:P:Ws:t:Tx:",long_options,NULL)) != -1) { switch (c) { case LONG_OPTION_RF_CONFIG_FILE: - if (strlen(optarg)<=1024) - strcpy(rf_config_file,optarg); - else { + if ((strcmp("null", optarg) == 0) || (strcmp("NULL", optarg) == 0)) { + printf("no configuration filename is provided\n"); + } + else if (strlen(optarg)<=1024){ + strcpy(rf_config_file,optarg); + }else { printf("Configuration filename is too long\n"); exit(-1); } @@ -2211,9 +2217,14 @@ static void get_options (int argc, char **argv) AssertFatal(input_fd != NULL,"Please provide an input file\n"); break; - case LONG_OPTION_DUMP_FRAME: - mode = rx_dump_frame; - break; + case LONG_OPTION_DUMP_FRAME: + mode = rx_dump_frame; + break; + + case LONG_OPTION_PHYTEST: + phy_test = 1; + break; + case 'A': timing_advance = atoi (optarg); break; @@ -2269,7 +2280,6 @@ static void get_options (int argc, char **argv) case 't': target_ul_mcs = atoi (optarg); break; -#ifdef OPENAIR2 case 'W': opt_enabled=1; @@ -2304,7 +2314,6 @@ static void get_options (int argc, char **argv) } break; -#endif case 'V': ouput_vcd = 1; @@ -2412,8 +2421,8 @@ static void get_options (int argc, char **argv) case 'x': transmission_mode = atoi(optarg); - if (transmission_mode > 2) { - printf("Transmission mode > 2 (%d) not supported for the moment\n",transmission_mode); + if (transmission_mode > 7) { + printf("Transmission mode %d not supported for the moment\n",transmission_mode); exit(-1); } break; @@ -2508,8 +2517,6 @@ static void get_options (int argc, char **argv) } -#ifdef OPENAIR2 - init_all_otg(0); g_otg->seed = 0; init_seeds(g_otg->seed); @@ -2527,7 +2534,6 @@ static void get_options (int argc, char **argv) init_predef_traffic(enb_properties->properties[i]->num_otg_elements, 1); -#endif glog_level = enb_properties->properties[i]->glog_level; glog_verbosity = enb_properties->properties[i]->glog_verbosity; @@ -2589,9 +2595,7 @@ int main( int argc, char **argv ) int CC_id; uint16_t Nid_cell = 0; uint8_t cooperation_flag=0, abstraction_flag=0; -#ifndef OPENAIR2 uint8_t beta_ACK=0,beta_RI=0,beta_CQI=2; -#endif #ifdef ENABLE_TCXO unsigned int tcxo = 114; @@ -2659,8 +2663,8 @@ int main( int argc, char **argv ) if (UE_flag==1) { printf("configuring for UE\n"); - set_comp_log(HW, LOG_INFO, LOG_HIGH, 1); - set_comp_log(PHY, LOG_INFO, LOG_HIGH, 1); + set_comp_log(HW, LOG_DEBUG, LOG_HIGH, 1); + set_comp_log(PHY, LOG_DEBUG, LOG_HIGH, 1); set_comp_log(MAC, LOG_INFO, LOG_HIGH, 1); set_comp_log(RLC, LOG_INFO, LOG_HIGH, 1); set_comp_log(PDCP, LOG_INFO, LOG_HIGH, 1); @@ -2676,15 +2680,9 @@ int main( int argc, char **argv ) printf("configuring for eNB\n"); set_comp_log(HW, hw_log_level, hw_log_verbosity, 1); -#ifdef OPENAIR2 set_comp_log(PHY, phy_log_level, phy_log_verbosity, 1); - if (opt_enabled == 1 ) set_comp_log(OPT, opt_log_level, opt_log_verbosity, 1); - -#else - set_comp_log(PHY, LOG_INFO, LOG_HIGH, 1); -#endif set_comp_log(MAC, mac_log_level, mac_log_verbosity, 1); set_comp_log(RLC, rlc_log_level, rlc_log_verbosity, 1); set_comp_log(PDCP, pdcp_log_level, pdcp_log_verbosity, 1); @@ -2740,8 +2738,6 @@ int main( int argc, char **argv ) MSC_INIT(MSC_E_UTRAN, THREAD_MAX+TASK_MAX); #endif -#ifdef OPENAIR2 - if (opt_type != OPT_NONE) { radio_type_t radio_type; @@ -2754,7 +2750,6 @@ int main( int argc, char **argv ) LOG_E(OPT,"failed to run OPT \n"); } -#endif #ifdef PDCP_USE_NETLINK netlink_init(); #if defined(PDCP_USE_NETLINK_QUEUES) @@ -2824,21 +2819,24 @@ int main( int argc, char **argv ) PHY_vars_UE_g[0][CC_id] = init_lte_UE(frame_parms[CC_id], 0,abstraction_flag,transmission_mode); UE[CC_id] = PHY_vars_UE_g[0][CC_id]; printf("PHY_vars_UE_g[0][%d] = %p\n",CC_id,UE[CC_id]); -#ifndef OPENAIR2 - for (i=0; i<NUMBER_OF_CONNECTED_eNB_MAX; i++) { - UE[CC_id]->pusch_config_dedicated[i].betaOffset_ACK_Index = beta_ACK; - UE[CC_id]->pusch_config_dedicated[i].betaOffset_RI_Index = beta_RI; - UE[CC_id]->pusch_config_dedicated[i].betaOffset_CQI_Index = beta_CQI; + if (phy_test==1) + UE[CC_id]->mac_enabled = 0; + else + UE[CC_id]->mac_enabled = 1; - UE[CC_id]->scheduling_request_config[i].sr_PUCCH_ResourceIndex = 0; - UE[CC_id]->scheduling_request_config[i].sr_ConfigIndex = 7+(0%3); - UE[CC_id]->scheduling_request_config[i].dsr_TransMax = sr_n4; + if (UE[CC_id]->mac_enabled == 0) { + for (i=0; i<NUMBER_OF_CONNECTED_eNB_MAX; i++) { + UE[CC_id]->pusch_config_dedicated[i].betaOffset_ACK_Index = beta_ACK; + UE[CC_id]->pusch_config_dedicated[i].betaOffset_RI_Index = beta_RI; + UE[CC_id]->pusch_config_dedicated[i].betaOffset_CQI_Index = beta_CQI; + + UE[CC_id]->scheduling_request_config[i].sr_PUCCH_ResourceIndex = 0; + UE[CC_id]->scheduling_request_config[i].sr_ConfigIndex = 7+(0%3); + UE[CC_id]->scheduling_request_config[i].dsr_TransMax = sr_n4; + } } -#endif - - UE[CC_id]->UE_scan = UE_scan; UE[CC_id]->UE_scan_carrier = UE_scan_carrier; UE[CC_id]->mode = mode; @@ -2847,13 +2845,12 @@ int main( int argc, char **argv ) UE[CC_id]->lte_frame_parms.frame_type, UE[CC_id]->X_u); - UE[CC_id]->lte_ue_pdcch_vars[0]->crnti = 0x1234; -#ifndef OPENAIR2 - UE[CC_id]->lte_ue_pdcch_vars[0]->crnti = 0x1235; -#endif + if (UE[CC_id]->mac_enabled == 1) + UE[CC_id]->lte_ue_pdcch_vars[0]->crnti = 0x1234; + else + UE[CC_id]->lte_ue_pdcch_vars[0]->crnti = 0x1235; #ifdef EXMIMO - for (i=0; i<4; i++) { UE[CC_id]->rx_gain_max[i] = rxg_max[i]; UE[CC_id]->rx_gain_med[i] = rxg_med[i]; @@ -2887,9 +2884,7 @@ int main( int argc, char **argv ) UE[CC_id]->tx_power_max_dBm = tx_max_power[CC_id]; - #ifdef EXMIMO - //N_TA_offset if (UE[CC_id]->lte_frame_parms.frame_type == TDD) { if (UE[CC_id]->lte_frame_parms.N_RB_DL == 100) @@ -2901,7 +2896,6 @@ int main( int argc, char **argv ) } else { UE[CC_id]->N_TA_offset = 0; } - #else //already taken care of in lte-softmodem UE[CC_id]->N_TA_offset = 0; @@ -2925,20 +2919,23 @@ int main( int argc, char **argv ) PHY_vars_eNB_g[0][CC_id] = init_lte_eNB(frame_parms[CC_id],0,frame_parms[CC_id]->Nid_cell,cooperation_flag,transmission_mode,abstraction_flag); PHY_vars_eNB_g[0][CC_id]->CC_id = CC_id; -#ifndef OPENAIR2 - - for (i=0; i<NUMBER_OF_UE_MAX; i++) { - PHY_vars_eNB_g[0][CC_id]->pusch_config_dedicated[i].betaOffset_ACK_Index = beta_ACK; - PHY_vars_eNB_g[0][CC_id]->pusch_config_dedicated[i].betaOffset_RI_Index = beta_RI; - PHY_vars_eNB_g[0][CC_id]->pusch_config_dedicated[i].betaOffset_CQI_Index = beta_CQI; + if (phy_test==1) + PHY_vars_eNB_g[0][CC_id]->mac_enabled = 0; + else + PHY_vars_eNB_g[0][CC_id]->mac_enabled = 1; - PHY_vars_eNB_g[0][CC_id]->scheduling_request_config[i].sr_PUCCH_ResourceIndex = i; - PHY_vars_eNB_g[0][CC_id]->scheduling_request_config[i].sr_ConfigIndex = 7+(i%3); - PHY_vars_eNB_g[0][CC_id]->scheduling_request_config[i].dsr_TransMax = sr_n4; + if (PHY_vars_eNB_g[0][CC_id]->mac_enabled == 0) { + for (i=0; i<NUMBER_OF_UE_MAX; i++) { + PHY_vars_eNB_g[0][CC_id]->pusch_config_dedicated[i].betaOffset_ACK_Index = beta_ACK; + PHY_vars_eNB_g[0][CC_id]->pusch_config_dedicated[i].betaOffset_RI_Index = beta_RI; + PHY_vars_eNB_g[0][CC_id]->pusch_config_dedicated[i].betaOffset_CQI_Index = beta_CQI; + + PHY_vars_eNB_g[0][CC_id]->scheduling_request_config[i].sr_PUCCH_ResourceIndex = i; + PHY_vars_eNB_g[0][CC_id]->scheduling_request_config[i].sr_ConfigIndex = 7+(i%3); + PHY_vars_eNB_g[0][CC_id]->scheduling_request_config[i].dsr_TransMax = sr_n4; + } } -#endif - compute_prach_seq(&PHY_vars_eNB_g[0][CC_id]->lte_frame_parms.prach_config_common, PHY_vars_eNB_g[0][CC_id]->lte_frame_parms.frame_type, PHY_vars_eNB_g[0][CC_id]->X_u); @@ -3147,16 +3144,12 @@ int main( int argc, char **argv ) mac_xface = malloc(sizeof(MAC_xface)); -#ifdef OPENAIR2 int eMBMS_active=0; - + l2_init(frame_parms[0],eMBMS_active,(uecap_xer_in==1)?uecap_xer:NULL, - 0,// cba_group_active - 0); // HO flag - - -#endif - + 0,// cba_group_active + 0); // HO flag + mac_xface->macphy_exit = &exit_fun; #if defined(ENABLE_ITTI) @@ -3169,15 +3162,14 @@ int main( int argc, char **argv ) printf("ITTI tasks created\n"); #endif -#ifdef OPENAIR2 - if (UE_flag==1) { - printf("Filling UE band info\n"); - fill_ue_band_info(); - mac_xface->dl_phy_sync_success (0, 0, 0, 1); - } else - mac_xface->mrbch_phy_sync_failure (0, 0, 0); - -#endif + if (phy_test==0) { + if (UE_flag==1) { + printf("Filling UE band info\n"); + fill_ue_band_info(); + mac_xface->dl_phy_sync_success (0, 0, 0, 1); + } else + mac_xface->mrbch_phy_sync_failure (0, 0, 0); + } /* #ifdef OPENAIR2 //if (otg_enabled) { @@ -3568,9 +3560,6 @@ int main( int argc, char **argv ) } } -#ifdef OPENAIR2 - //cleanup_pdcp_thread(); -#endif #ifdef RTAI stop_rt_timer(); @@ -3605,13 +3594,9 @@ int main( int argc, char **argv ) if (ouput_vcd) VCD_SIGNAL_DUMPER_CLOSE(); -#ifdef OPENAIR2 - if (opt_enabled == 1) terminate_opt(); -#endif - logClean(); return 0; diff --git a/targets/RT/USER/lte-ue.c b/targets/RT/USER/lte-ue.c index c31ad32009636b99f281bf28c71aa1b993bef82c..e72b4ec80a39f1434a65e36a97ea96b19138f413 100644 --- a/targets/RT/USER/lte-ue.c +++ b/targets/RT/USER/lte-ue.c @@ -925,9 +925,7 @@ static void *UE_thread_rx(void *arg) phy_procedures_UE_RX( UE, 0, 0, UE->mode, no_relay, NULL ); } -#ifdef OPENAIR2 - - if (i==0) { + if ((UE->mac_enabled==1) && (i==0)) { ret = mac_xface->ue_scheduler(UE->Mod_id, UE->frame_tx, UE->slot_rx>>1, @@ -950,7 +948,6 @@ static void *UE_thread_rx(void *arg) } } -#endif UE->slot_rx++; if (UE->slot_rx == 20) { diff --git a/targets/SIMU/USER/channel_sim.c b/targets/SIMU/USER/channel_sim.c index bba32a5a29b0d7bdf0f48c7bf50edcd546125696..e26129bca656b5bc14fd31fa9e4c36c6bc5c4298 100644 --- a/targets/SIMU/USER/channel_sim.c +++ b/targets/SIMU/USER/channel_sim.c @@ -169,8 +169,6 @@ void do_DL_sig(double **r_re0,double **r_im0, int32_t **dl_channel_est = PHY_vars_UE_g[UE_id][CC_id]->lte_ue_common_vars.dl_ch_estimates[0]; // double scale = pow(10.0,(enb_data[att_eNB_id]->tx_power_dBm + eNB2UE[att_eNB_id][UE_id]->path_loss_dB + (double) PHY_vars_UE_g[UE_id]->rx_total_gain_dB)/20.0); double scale = pow(10.0,(frame_parms->pdsch_config_common.referenceSignalPower+eNB2UE[att_eNB_id][UE_id][CC_id]->path_loss_dB + (double) PHY_vars_UE_g[UE_id][CC_id]->rx_total_gain_dB)/20.0); - //this factor is not really needed (it was actually wrong in the non abstraction mode) - //scale = scale * sqrt(512.0/300.0); //TODO: make this variable for all BWs LOG_D(OCM,"scale =%lf (%d dB)\n",scale,(int) (20*log10(scale))); // freq_channel(desc1,frame_parms->N_RB_DL,nb_samples); //write_output("channel.m","ch",desc1->ch[0],desc1->channel_length,1,8); @@ -204,12 +202,13 @@ void do_DL_sig(double **r_re0,double **r_im0, // calculate the SNR for the attached eNB (this assumes eNB always uses PMI stored in eNB_UE_stats; to be improved) init_snr(eNB2UE[att_eNB_id][UE_id][CC_id], enb_data[att_eNB_id], ue_data[UE_id], PHY_vars_UE_g[UE_id][CC_id]->sinr_dB, &PHY_vars_UE_g[UE_id][CC_id]->N0, - PHY_vars_UE_g[UE_id][CC_id]->transmission_mode[att_eNB_id], PHY_vars_eNB_g[att_eNB_id][CC_id]->eNB_UE_stats[UE_id].DL_pmi_single,PHY_vars_eNB_g[att_eNB_id][CC_id]->mu_mimo_mode[UE_id].dl_pow_off); + PHY_vars_UE_g[UE_id][CC_id]->transmission_mode[att_eNB_id], PHY_vars_eNB_g[att_eNB_id][CC_id]->eNB_UE_stats[UE_id].DL_pmi_single, + PHY_vars_eNB_g[att_eNB_id][CC_id]->mu_mimo_mode[UE_id].dl_pow_off,PHY_vars_eNB_g[att_eNB_id][CC_id]->lte_frame_parms.N_RB_DL); // calculate sinr here for (eNB_id = 0; eNB_id < NB_eNB_INST; eNB_id++) { if (att_eNB_id != eNB_id) { - calculate_sinr(eNB2UE[eNB_id][UE_id][CC_id], enb_data[eNB_id], ue_data[UE_id], PHY_vars_UE_g[UE_id][CC_id]->sinr_dB); + calculate_sinr(eNB2UE[eNB_id][UE_id][CC_id], enb_data[eNB_id], ue_data[UE_id], PHY_vars_UE_g[UE_id][CC_id]->sinr_dB,PHY_vars_eNB_g[att_eNB_id][CC_id]->lte_frame_parms.N_RB_DL); } } } // hold channel @@ -220,18 +219,6 @@ void do_DL_sig(double **r_re0,double **r_im0, Call do_OFDM_mod from phy_procedures_eNB_TX function */ - - - //for (UE_id=0;UE_id<NB_UE_INST;UE_id++) { - // Compute RX signal for UE = UE_id - /* - for (i=0;i<(frame_parms->samples_per_tti>>1);i++) { - for (aa=0;aa<nb_antennas_rx;aa++) { - r_re[aa][i]=0.0; - r_im[aa][i]=0.0; - } - } - */ // printf("r_re[0] %p\n",r_re[0]); for (aa=0; aa<nb_antennas_rx; aa++) { memset((void*)r_re[aa],0,(frame_parms->samples_per_tti>>1)*sizeof(double)); diff --git a/targets/SIMU/USER/oaisim.c b/targets/SIMU/USER/oaisim.c index c1d4d64ef69b5414b336f0fc363918545575cee9..9e4880906d35b2a9d41162999d09afce48874b7a 100644 --- a/targets/SIMU/USER/oaisim.c +++ b/targets/SIMU/USER/oaisim.c @@ -75,9 +75,9 @@ #include "SCHED/defs.h" #include "SCHED/vars.h" -#ifdef XFORMS +//#ifdef XFORMS #include "PHY/TOOLS/lte_phy_scope.h" -#endif +//#endif #ifdef SMBV // Rohde&Schwarz SMBV100A vector signal generator @@ -163,9 +163,10 @@ extern uint16_t Nid_cell; extern LTE_DL_FRAME_PARMS *frame_parms[MAX_NUM_CCs]; -#ifdef XFORMS +//#ifdef XFORMS int otg_enabled; -#endif +int xforms=0; +//#endif time_stats_t oaisim_stats; time_stats_t oaisim_stats_f; @@ -446,17 +447,18 @@ l2l1_task (void *args_p) char fname[64], vname[64]; int sf; protocol_ctxt_t ctxt; -#ifdef XFORMS + //#ifdef XFORMS // current status is that every UE has a DL scope for a SINGLE eNB (eNB_id=0) // at eNB 0, an UL scope for every UE - FD_lte_phy_scope_ue *form_ue[NUMBER_OF_UE_MAX]; + FD_lte_phy_scope_ue *form_ue[MAX_NUM_CCs][NUMBER_OF_UE_MAX]; FD_lte_phy_scope_enb *form_enb[NUMBER_OF_UE_MAX]; char title[255]; char xname[32] = "oaisim"; int xargc = 1; char *xargv[1]; -#endif + //#endif +#define PRINT_STATS #ifdef PRINT_STATS int len; FILE *UE_stats[NUMBER_OF_UE_MAX]; @@ -485,31 +487,34 @@ l2l1_task (void *args_p) PHY_vars_eNB_g[eNB_inst][CC_id]->proc[9].frame_tx = 1; } -#ifdef XFORMS - xargv[0] = xname; - fl_initialize (&xargc, xargv, NULL, 0, 0); - eNB_inst = 0; - - for (UE_inst = 0; UE_inst < NB_UE_INST; UE_inst++) { - // DL scope at UEs - form_ue[UE_inst] = create_lte_phy_scope_ue(); - sprintf (title, "LTE DL SCOPE eNB %d to UE %d", eNB_inst, UE_inst); - fl_show_form (form_ue[UE_inst]->lte_phy_scope_ue, FL_PLACE_HOTSPOT, FL_FULLBORDER, title); - - // UL scope at eNB 0 - form_enb[UE_inst] = create_lte_phy_scope_enb(); - sprintf (title, "LTE UL SCOPE UE %d to eNB %d", UE_inst, eNB_inst); - fl_show_form (form_enb[UE_inst]->lte_phy_scope_enb, FL_PLACE_HOTSPOT, FL_FULLBORDER, title); - - if (openair_daq_vars.use_ia_receiver == 1) { - fl_set_button(form_ue[UE_inst]->button_0,1); - fl_set_object_label(form_ue[UE_inst]->button_0, "IA Receiver ON"); - fl_set_object_color(form_ue[UE_inst]->button_0, FL_GREEN, FL_GREEN); + //#ifdef XFORMS + if (xforms==1) { + xargv[0] = xname; + fl_initialize (&xargc, xargv, NULL, 0, 0); + eNB_inst = 0; + + for (UE_inst = 0; UE_inst < NB_UE_INST; UE_inst++) { + for (CC_id=0;CC_id<MAX_NUM_CCs;CC_id++) { + // DL scope at UEs + form_ue[CC_id][UE_inst] = create_lte_phy_scope_ue(); + sprintf (title, "LTE DL SCOPE eNB %d to UE %d CC_id %d", eNB_inst, UE_inst, CC_id); + fl_show_form (form_ue[CC_id][UE_inst]->lte_phy_scope_ue, FL_PLACE_HOTSPOT, FL_FULLBORDER, title); + + if (openair_daq_vars.use_ia_receiver == 1) { + fl_set_button(form_ue[CC_id][UE_inst]->button_0,1); + fl_set_object_label(form_ue[CC_id][UE_inst]->button_0, "IA Receiver ON"); + fl_set_object_color(form_ue[CC_id][UE_inst]->button_0, FL_GREEN, FL_GREEN); + } + + } + // UL scope at eNB 0 + form_enb[UE_inst] = create_lte_phy_scope_enb(); + sprintf (title, "LTE UL SCOPE UE %d to eNB %d", UE_inst, eNB_inst); + fl_show_form (form_enb[UE_inst]->lte_phy_scope_enb, FL_PLACE_HOTSPOT, FL_FULLBORDER, title); + } - } - -#endif + //#endif #ifdef PRINT_STATS @@ -1176,23 +1181,26 @@ l2l1_task (void *args_p) 1, 1); } -#ifdef XFORMS + //#ifdef XFORMS + if (xforms==1) { eNB_inst = 0; for (UE_inst = 0; UE_inst < NB_UE_INST; UE_inst++) { - phy_scope_UE(form_ue[UE_inst], - PHY_vars_UE_g[UE_inst][0], - eNB_inst, - UE_inst, - 7); + for (CC_id=0;CC_id<MAX_NUM_CCs;CC_id++) { + phy_scope_UE(form_ue[CC_id][UE_inst], + PHY_vars_UE_g[UE_inst][CC_id], + eNB_inst, + UE_inst, + 7); + } phy_scope_eNB(form_enb[UE_inst], PHY_vars_eNB_g[eNB_inst][0], UE_inst); } - -#endif + } + //#endif #ifdef SMBV diff --git a/targets/SIMU/USER/oaisim.h b/targets/SIMU/USER/oaisim.h index 216acaa653aec2654c2b427e03add4c3dc99f4cb..8d3edbe9eb15797c01965e75b603b171d07b75d8 100644 --- a/targets/SIMU/USER/oaisim.h +++ b/targets/SIMU/USER/oaisim.h @@ -62,9 +62,9 @@ void extract_position(node_list* input_node_list, node_desc_t**, int nb_nodes);/ void get_beta_map(void);//Abstraction changes void get_MIESM_param(void); -void init_snr(channel_desc_t *, node_desc_t *, node_desc_t *, double*, double*, uint8_t, uint16_t, uint8_t);//Abstraction changes +void init_snr(channel_desc_t *, node_desc_t *, node_desc_t *, double*, double*, uint8_t, uint16_t, uint8_t, uint16_t);//Abstraction changes void init_snr_up(channel_desc_t *, node_desc_t *, node_desc_t *, double*, double*, uint16_t, uint16_t);//Abstraction changes -void calculate_sinr(channel_desc_t *, node_desc_t *, node_desc_t *, double *sinr_dB);//Abstraction changes +void calculate_sinr(channel_desc_t *, node_desc_t *, node_desc_t *, double *sinr_dB, uint16_t);//Abstraction changes void get_beta_map(void); int dlsch_abstraction_EESM(double* sinr_dB, uint32_t rb_alloc[4], uint8_t mcs, uint8_t); //temporary testing for PHY abstraction int dlsch_abstraction_MIESM(double* sinr_dB,uint8_t TM, uint32_t rb_alloc[4], uint8_t mcs,uint8_t); diff --git a/targets/SIMU/USER/oaisim_functions.c b/targets/SIMU/USER/oaisim_functions.c index ca1ec9fccb9a839317a59733367ed9e764d8bd0a..014a9e39d02aa2d3192095c00ae1efd80a9cd1a7 100644 --- a/targets/SIMU/USER/oaisim_functions.c +++ b/targets/SIMU/USER/oaisim_functions.c @@ -136,6 +136,8 @@ int td = 0; int td_avg = 0; int sleep_time_us = 0; +int phy_test = 0; + #ifdef OPENAIR2 // omv related info //pid_t omv_pid; @@ -170,6 +172,8 @@ extern pdcp_mbms_t pdcp_mbms_array_eNB[NUMBER_OF_eNB_MAX][maxServiceCount][maxSe extern time_stats_t dl_chan_stats; extern time_stats_t ul_chan_stats; +extern int xforms; + void get_simulation_options(int argc, char *argv[]) { int option; @@ -206,6 +210,9 @@ void get_simulation_options(int argc, char *argv[]) LONG_OPTION_MALLOC_TRACE_ENABLED, LONG_OPTION_CBA_BACKOFF_TIMER, + + LONG_OPTION_PHYTEST, + LONG_OPTION_XFORMS, }; static struct option long_options[] = { @@ -237,11 +244,18 @@ void get_simulation_options(int argc, char *argv[]) {"cba-backoff", required_argument, 0, LONG_OPTION_CBA_BACKOFF_TIMER}, + {"phy-test", no_argument, NULL, LONG_OPTION_PHYTEST}, + {"xforms", no_argument, 0, LONG_OPTION_XFORMS}, + {NULL, 0, NULL, 0} }; while ((option = getopt_long (argc, argv, "aA:b:B:c:C:D:d:eE:f:FGg:hHi:IJ:j:k:K:l:L:m:M:n:N:oO:p:P:qQ:rR:s:S:t:T:u:U:vV:w:W:x:X:y:Y:z:Z:", long_options, NULL)) != -1) { switch (option) { + case LONG_OPTION_PHYTEST: + phy_test = 1; + break; + case LONG_OPTION_ENB_CONF: if (optarg) { free(conf_config_file_name); // prevent memory leak if option is used multiple times @@ -396,6 +410,10 @@ void get_simulation_options(int argc, char *argv[]) break; #endif + case LONG_OPTION_XFORMS: + xforms=1; + break; + case 'a': abstraction_flag = 1; break; @@ -976,13 +994,21 @@ void init_openair1(void) } } + for (eNB_id=0; eNB_id<NB_eNB_INST; eNB_id++) + for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) { + if (phy_test==1) + PHY_vars_eNB_g[eNB_id][CC_id]->mac_enabled=0; + else + PHY_vars_eNB_g[eNB_id][CC_id]->mac_enabled=1; + } + // init_ue_status(); for (UE_id=0; UE_id<NB_UE_INST; UE_id++) for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) { PHY_vars_UE_g[UE_id][CC_id]->tx_power_max_dBm=23; - PHY_vars_UE_g[UE_id][CC_id]->rx_total_gain_dB=160; + PHY_vars_UE_g[UE_id][CC_id]->rx_total_gain_dB=100; // update UE_mode for each eNB_id not just 0 if (abstraction_flag == 0) @@ -992,6 +1018,11 @@ void init_openair1(void) PHY_vars_UE_g[UE_id][CC_id]->UE_mode[0] = PRACH; } + if (phy_test==1) + PHY_vars_UE_g[UE_id][CC_id]->mac_enabled=0; + else + PHY_vars_UE_g[UE_id][CC_id]->mac_enabled=1; + PHY_vars_UE_g[UE_id][CC_id]->lte_ue_pdcch_vars[0]->crnti = 0x1235 + UE_id; PHY_vars_UE_g[UE_id][CC_id]->current_dlsch_cqi[0] = 10; @@ -1260,8 +1291,7 @@ void update_ocm() //pathloss: -132.24 dBm/15kHz RE + target SNR - eNB TX power per RE if (eNB_id == (UE_id % NB_eNB_INST)) { eNB2UE[eNB_id][UE_id][CC_id]->path_loss_dB = -132.24 + snr_dB - PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms.pdsch_config_common.referenceSignalPower; - UE2eNB[UE_id][eNB_id][CC_id]->path_loss_dB = -132.24 + snr_dB - - PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms.pdsch_config_common.referenceSignalPower; //+20 to offset the difference in tx power of the UE wrt eNB + UE2eNB[UE_id][eNB_id][CC_id]->path_loss_dB = -132.24 + snr_dB - PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms.pdsch_config_common.referenceSignalPower; } else { eNB2UE[eNB_id][UE_id][CC_id]->path_loss_dB = -132.24 + sinr_dB - PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms.pdsch_config_common.referenceSignalPower; UE2eNB[UE_id][eNB_id][CC_id]->path_loss_dB = -132.24 + sinr_dB - PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms.pdsch_config_common.referenceSignalPower; @@ -1280,6 +1310,7 @@ void update_ocm() #ifdef OPENAIR2 void update_otg_eNB(module_id_t enb_module_idP, unsigned int ctime) { + #if defined(USER_MODE) && defined(OAI_EMU) int rrc_state=0; diff --git a/targets/SIMU/USER/sinr_sim.c b/targets/SIMU/USER/sinr_sim.c index 317fe53c6093228bbb7ad413259628df95e14afe..9ac1371d1193ae848fdbeb217b4ece04d9faaebc 100644 --- a/targets/SIMU/USER/sinr_sim.c +++ b/targets/SIMU/USER/sinr_sim.c @@ -244,20 +244,19 @@ void calc_path_loss(node_desc_t* enb_data, node_desc_t* ue_data, channel_desc_t -void init_snr(channel_desc_t* eNB2UE, node_desc_t *enb_data, node_desc_t *ue_data, double* sinr_dB, double* N0, uint8_t transmission_mode, uint16_t q, uint8_t dl_power_off) +void init_snr(channel_desc_t* eNB2UE, node_desc_t *enb_data, node_desc_t *ue_data, double* sinr_dB, double* N0, uint8_t transmission_mode, uint16_t q, uint8_t dl_power_off, uint16_t nb_rb) { - uint16_t nb_rb = 25; //No. of resource blocks double thermal_noise,abs_channel,channelx, channely,channelx_i, channely_i ; int count; int aarx,aatx; uint8_t qq; - /* Thermal noise is calculated using 10log10(K*T*B) K = Boltzmann's constant T = room temperature B = bandwidth */ - thermal_noise = -174 + 10*log10(eNB2UE->sampling_rate*1e6); //value in dBm + /* Thermal noise is calculated using 10log10(K*T*B) K = Boltzmann's constant T = room temperature B = bandwidth*/ + thermal_noise = -174 + 10*log10(15000); //per RE; value in dBm //for (aarx=0; aarx<eNB2UE->nb_rx; aarx++) - *N0 = thermal_noise + ue_data->rx_noise_level;//? all the element have the same noise level????? + *N0 = thermal_noise + ue_data->rx_noise_level; LOG_D(OCM,"Path loss %lf, noise (N0) %lf, signal %lf, snr %lf\n", eNB2UE->path_loss_dB, @@ -549,15 +548,14 @@ void init_snr_up(channel_desc_t* UE2eNB, node_desc_t *enb_data, node_desc_t *ue_ #endif -void calculate_sinr(channel_desc_t* eNB2UE, node_desc_t *enb_data, node_desc_t *ue_data, double *sinr_dB) +void calculate_sinr(channel_desc_t* eNB2UE, node_desc_t *enb_data, node_desc_t *ue_data, double *sinr_dB, uint16_t nb_rb) { double sir, thermal_noise; - short nb_rb = 25; //No. of resource blocks short count; /* Thermal noise is calculated using 10log10(K*T*B) K = Boltzmann's constant T = room temperature B = bandwidth */ - thermal_noise = -174 + 10*log10(eNB2UE->sampling_rate*1e6); //value in dBm + thermal_noise = -174 + 10*log10(15000); //per RE, value in dBm for (count = 0; count < 12 * nb_rb; count++) { sir = enb_data->tx_power_dBm