From b1cbcec74289cbb5d6be3b3b6df1ed60629fbe47 Mon Sep 17 00:00:00 2001 From: yagoda Date: Tue, 3 Oct 2017 14:49:19 +0100 Subject: [PATCH 1/7] adding pmch tests and fixing pdsch_enb --- CMakeLists.txt | 2 +- lib/examples/pdsch_enodeb.c | 4 ++-- lib/src/phy/ch_estimation/chest_dl.c | 2 ++ lib/src/phy/ch_estimation/refsignal_dl.c | 3 ++- lib/src/phy/phch/pmch.c | 4 +++- lib/src/phy/phch/ra.c | 1 + lib/src/phy/phch/test/CMakeLists.txt | 19 ++++++++++++++++++- lib/src/phy/ue/ue_dl.c | 3 +-- 8 files changed, 30 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d72bb5fef..a63a77016 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -50,7 +50,7 @@ configure_file( IMMEDIATE @ONLY) if(NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE Release) + set(CMAKE_BUILD_TYPE Debug) message(STATUS "Build type not specified: defaulting to Release.") endif(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "") diff --git a/lib/examples/pdsch_enodeb.c b/lib/examples/pdsch_enodeb.c index 844e769a7..98ad78507 100644 --- a/lib/examples/pdsch_enodeb.c +++ b/lib/examples/pdsch_enodeb.c @@ -320,9 +320,9 @@ void base_init() { exit(-1); } srslte_ofdm_set_non_mbsfn_region(&ifft_mbsfn, 2); - - srslte_ofdm_set_normalize(&ifft, true); srslte_ofdm_set_normalize(&ifft_mbsfn, true); + srslte_ofdm_set_normalize(&ifft, true); + if (srslte_pbch_init(&pbch)) { fprintf(stderr, "Error creating PBCH object\n"); diff --git a/lib/src/phy/ch_estimation/chest_dl.c b/lib/src/phy/ch_estimation/chest_dl.c index b5107f9ab..0f8ae8074 100644 --- a/lib/src/phy/ch_estimation/chest_dl.c +++ b/lib/src/phy/ch_estimation/chest_dl.c @@ -467,6 +467,8 @@ int srslte_chest_dl_estimate_port_mbsfn(srslte_chest_dl_t *q, cf_t *input, cf_t srslte_vec_prod_conj_ccc(q->pilot_recv_signal+(2*q->cell.nof_prb), q->mbsfn_refs[mbsfn_area_id]->pilots[port_id/2][sf_idx], q->pilot_estimates+(2*q->cell.nof_prb), SRSLTE_REFSIGNAL_NUM_SF_MBSFN(q->cell.nof_prb, port_id)-(2*q->cell.nof_prb)); + + chest_interpolate_noise_est(q, input, ce, sf_idx, port_id, rxant_id, SRSLTE_SF_MBSFN); return 0; diff --git a/lib/src/phy/ch_estimation/refsignal_dl.c b/lib/src/phy/ch_estimation/refsignal_dl.c index 4de00039e..9adbc6c18 100644 --- a/lib/src/phy/ch_estimation/refsignal_dl.c +++ b/lib/src/phy/ch_estimation/refsignal_dl.c @@ -228,7 +228,8 @@ int srslte_refsignal_cs_init(srslte_refsignal_t * q, uint32_t max_prb) if (q != NULL) { - ret = SRSLTE_ERROR; + ret = SRSLTE_ERROR; + bzero(q, sizeof(srslte_refsignal_t)); for (int p=0;p<2;p++) { for (int i=0;ipilots[p][i] = srslte_vec_malloc(sizeof(cf_t) * SRSLTE_REFSIGNAL_NUM_SF(max_prb, 2*p)); diff --git a/lib/src/phy/phch/pmch.c b/lib/src/phy/phch/pmch.c index 4ce869b1c..99e40d50f 100644 --- a/lib/src/phy/phch/pmch.c +++ b/lib/src/phy/phch/pmch.c @@ -394,8 +394,10 @@ int srslte_pmch_decode_multi(srslte_pmch_t *q, * thus we don't need tot set it in thde LLRs normalization */ + + srslte_demod_soft_demodulate_s(cfg->grant.mcs[0].mod, q->d, q->e, cfg->nbits[0].nof_re); - + /* descramble */ srslte_scrambling_s_offset(&q->seqs[area_id]->seq[cfg->sf_idx], q->e, 0, cfg->nbits[0].nof_bits); diff --git a/lib/src/phy/phch/ra.c b/lib/src/phy/phch/ra.c index 418aa1260..be10c304c 100644 --- a/lib/src/phy/phch/ra.c +++ b/lib/src/phy/phch/ra.c @@ -466,6 +466,7 @@ int srslte_dl_fill_ra_mcs(srslte_ra_mcs_t *mcs, uint32_t nprb) { tbs = 0; i_tbs = 0; } + if (tbs == -1) { tbs = srslte_ra_tbs_from_idx(i_tbs, nprb); if (tbs >= 0) { diff --git a/lib/src/phy/phch/test/CMakeLists.txt b/lib/src/phy/phch/test/CMakeLists.txt index 832f18d1f..6e6b8c024 100644 --- a/lib/src/phy/phch/test/CMakeLists.txt +++ b/lib/src/phy/phch/test/CMakeLists.txt @@ -159,6 +159,19 @@ add_test(pdsch_test_multiplex2cw_p1_50 pdsch_test -x multiplex -a 2 -t 0 -p 1 - add_test(pdsch_test_multiplex2cw_p1_75 pdsch_test -x multiplex -a 2 -t 0 -p 1 -n 75) add_test(pdsch_test_multiplex2cw_p1_100 pdsch_test -x multiplex -a 2 -t 0 -p 1 -n 100) +######################################################################## +# PMCH TEST +######################################################################## + + +add_executable(pmch_test pmch_test.c) +target_link_libraries(pmch_test srslte_phy) + +add_test(pmch_test_qpsk pmch_test -m 6 -n 50) +add_test(pmch_test_qam16 pmch_test -m 15 -n 100) +add_test(pmch_test_qam64 pmch_test -m 25 -n 100) + + ######################################################################## # FILE TEST ######################################################################## @@ -178,11 +191,15 @@ target_link_libraries(pdcch_file_test srslte_phy) add_executable(pdsch_pdcch_file_test pdsch_pdcch_file_test.c) target_link_libraries(pdsch_pdcch_file_test srslte_phy) +add_executable(pmch_file_test pmch_file_test.c) +target_link_libraries(pmch_file_test srslte_phy) + add_test(pbch_file_test pbch_file_test -i ${CMAKE_CURRENT_SOURCE_DIR}/signal.1.92M.dat) add_test(pcfich_file_test pcfich_file_test -c 150 -n 50 -p 2 -i ${CMAKE_CURRENT_SOURCE_DIR}/signal.10M.dat) add_test(phich_file_test phich_file_test -c 150 -n 50 -p 2 -i ${CMAKE_CURRENT_SOURCE_DIR}/signal.10M.dat) add_test(pdcch_file_test pdcch_file_test -c 1 -f 3 -n 6 -p 1 -i ${CMAKE_CURRENT_SOURCE_DIR}/signal.1.92M.amar.dat) -add_test(pdsch_pdcch_file_test pdsch_pdcch_file_test -c 1 -f 3 -n 6 -p 1 -i ${CMAKE_CURRENT_SOURCE_DIR}/signal.1.92M.amar.dat) +add_test(pdsch_pdcch_file_test pdsch_pdcch_file_test -c 1 -f 3 -n 6 -p 1 -i ${CMAKE_CURRENT_SOURCE_DIR}/signal.1.92M.amar.dat) +add_test(pmch_file_test pmch_file_test -i ${CMAKE_CURRENT_SOURCE_DIR}/pmch_100prbs_MCS2_SR0.bin) ######################################################################## # PUSCH TEST diff --git a/lib/src/phy/ue/ue_dl.c b/lib/src/phy/ue/ue_dl.c index 583368b53..c4e2d3f6c 100644 --- a/lib/src/phy/ue/ue_dl.c +++ b/lib/src/phy/ue/ue_dl.c @@ -631,8 +631,7 @@ int srslte_ue_dl_decode_mbsfn(srslte_ue_dl_t * q, fprintf(stderr, "Error calling srslte_pmch_decode()\n"); } } -printf("q->pmch_pkts_total %d \n", q->pmch_pkts_total); -printf("qq->pmch_pkt_errors %d \n", q->pmch_pkt_errors); + q->pmch_pkts_total++; if (ret == SRSLTE_SUCCESS) { From c1ef157afd2fa9fe34cb4968d2b0ea6ad8dcc94c Mon Sep 17 00:00:00 2001 From: yagoda Date: Tue, 3 Oct 2017 14:50:58 +0100 Subject: [PATCH 2/7] adding test files for pmch --- .../phy/phch/test/pmch_100prbs_MCS2_SR0.bin | Bin 0 -> 184320 bytes lib/src/phy/phch/test/pmch_file_test.c | 204 ++++++++ lib/src/phy/phch/test/pmch_test.c | 475 ++++++++++++++++++ 3 files changed, 679 insertions(+) create mode 100644 lib/src/phy/phch/test/pmch_100prbs_MCS2_SR0.bin create mode 100644 lib/src/phy/phch/test/pmch_file_test.c create mode 100644 lib/src/phy/phch/test/pmch_test.c diff --git a/lib/src/phy/phch/test/pmch_100prbs_MCS2_SR0.bin b/lib/src/phy/phch/test/pmch_100prbs_MCS2_SR0.bin new file mode 100644 index 0000000000000000000000000000000000000000..276c6ae01592534b437a2f2dc59a83485aca6a20 GIT binary patch literal 184320 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�iVQ%Hm9f_#jb_wP@`$DtNt*6bF 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 V|MLI;<^TW7|Noc&|G$&}|9>SCF8Kfe literal 0 HcmV?d00001 diff --git a/lib/src/phy/phch/test/pmch_file_test.c b/lib/src/phy/phch/test/pmch_file_test.c new file mode 100644 index 000000000..4ab99b560 --- /dev/null +++ b/lib/src/phy/phch/test/pmch_file_test.c @@ -0,0 +1,204 @@ +/** + * + * \section COPYRIGHT + * + * Copyright 2013-2015 Software Radio Systems Limited + * + * \section LICENSE + * + * This file is part of the srsLTE library. + * + * srsLTE is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of + * the License, or (at your option) any later version. + * + * srsLTE 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 Affero General Public License for more details. + * + * A copy of the GNU Affero General Public License can be found in + * the LICENSE file in the top-level directory of this distribution + * and at http://www.gnu.org/licenses/. + * + */ + +#include +#include +#include +#include +#include + +#include "srslte/srslte.h" + +char *input_file_name = NULL; + +srslte_cell_t cell = { + 100, // nof_prb + 1, // nof_ports + 1, // cell_id + SRSLTE_CP_EXT, // cyclic prefix + SRSLTE_PHICH_R_1, // PHICH resources + SRSLTE_PHICH_NORM // PHICH length +}; + +int flen; + +uint32_t cfi = 2; +uint16_t rnti = SRSLTE_SIRNTI; + +int max_frames = 150; +uint32_t sf_idx = 1; + +uint8_t non_mbsfn_region = 2; +int mbsfn_area_id = 1; + +srslte_dci_format_t dci_format = SRSLTE_DCI_FORMAT1A; +srslte_filesource_t fsrc; +srslte_ue_dl_t ue_dl; +cf_t *input_buffer[SRSLTE_MAX_PORTS]; + +void usage(char *prog) { + printf("Usage: %s [rovfcenmps] -i input_file\n", prog); + printf("\t-o DCI format [Default %s]\n", srslte_dci_format_string(dci_format)); + printf("\t-c cell.id [Default %d]\n", cell.id); + printf("\t-s Start subframe_idx [Default %d]\n", sf_idx); + printf("\t-f cfi [Default %d]\n", cfi); + printf("\t-r rnti [Default 0x%x]\n",rnti); + printf("\t-p cell.nof_ports [Default %d]\n", cell.nof_ports); + printf("\t-n cell.nof_prb [Default %d]\n", cell.nof_prb); + printf("\t-M mbsfn_area_id [Default %d]\n", mbsfn_area_id); + printf("\t-e Set extended prefix [Default Normal]\n"); + printf("\t-v [set srslte_verbose to debug, default none]\n"); +} + +void parse_args(int argc, char **argv) { + int opt; + while ((opt = getopt(argc, argv, "irovfcenmps")) != -1) { + switch(opt) { + case 'i': + input_file_name = argv[optind]; + break; + case 'c': + cell.id = atoi(argv[optind]); + break; + case 's': + sf_idx = atoi(argv[optind]); + break; + case 'r': + rnti = strtoul(argv[optind], NULL, 0); + break; + case 'f': + cfi = atoi(argv[optind]); + break; + case 'n': + cell.nof_prb = atoi(argv[optind]); + break; + case 'p': + cell.nof_ports = atoi(argv[optind]); + break; + case 'M': + mbsfn_area_id = atoi(argv[optind]); + break; + case 'o': + dci_format = srslte_dci_format_from_string(argv[optind]); + if (dci_format == SRSLTE_DCI_NOF_FORMATS) { + fprintf(stderr, "Error unsupported format %s\n", argv[optind]); + exit(-1); + } + break; + case 'v': + srslte_verbose++; + break; + case 'e': + cell.cp = SRSLTE_CP_EXT; + break; + default: + usage(argv[0]); + exit(-1); + } + } + if (!input_file_name) { + usage(argv[0]); + exit(-1); + } +} + +int base_init() { + + if (srslte_filesource_init(&fsrc, input_file_name, SRSLTE_COMPLEX_FLOAT_BIN)) { + fprintf(stderr, "Error opening file %s\n", input_file_name); + exit(-1); + } + + flen = 2 * (SRSLTE_SLOT_LEN(srslte_symbol_sz(cell.nof_prb))); + + input_buffer[0] = malloc(flen * sizeof(cf_t)); + if (!input_buffer[0]) { + perror("malloc"); + exit(-1); + } + + if (srslte_ue_dl_init(&ue_dl, cell.nof_prb, 1)) { + fprintf(stderr, "Error initializing UE DL\n"); + return -1; + } + + + if (srslte_ue_dl_set_cell(&ue_dl, cell)) { + fprintf(stderr, "Error initializing UE DL\n"); + return -1; + } + + srslte_ue_dl_set_rnti(&ue_dl, rnti); + + srslte_ue_dl_set_mbsfn_area_id(&ue_dl, mbsfn_area_id); + srslte_ue_dl_set_non_mbsfn_region(&ue_dl, non_mbsfn_region); + + + DEBUG("Memory init OK\n",0); + return 0; +} + +void base_free() { + srslte_filesource_free(&fsrc); + srslte_ue_dl_free(&ue_dl); + free(input_buffer[0]); +} + +int main(int argc, char **argv) { + int ret; + + if (argc < 3) { + usage(argv[0]); + exit(-1); + } + parse_args(argc,argv); + + if (base_init()) { + fprintf(stderr, "Error initializing memory\n"); + exit(-1); + } + + uint8_t *data[] = {malloc(100000)}; + + ret = -1; + + srslte_filesource_read(&fsrc, input_buffer[0], flen); + INFO("Reading %d samples sub-frame %d\n", flen, sf_idx); + ret = srslte_ue_dl_decode_mbsfn(&ue_dl, input_buffer, data[0], sf_idx); + if(ret > 0) { + printf("PMCH Decoded OK!\n"); + } else if (ret < 0) { + printf("Error decoding PMCH\n"); + } + + base_free(); + free(data[0]); + if (ret > 0) { + exit(0); + } else { + exit(-1); + } +} diff --git a/lib/src/phy/phch/test/pmch_test.c b/lib/src/phy/phch/test/pmch_test.c new file mode 100644 index 000000000..de7948852 --- /dev/null +++ b/lib/src/phy/phch/test/pmch_test.c @@ -0,0 +1,475 @@ +/** + * + * \section COPYRIGHT + * + * Copyright 2013-2015 Software Radio Systems Limited + * + * \section LICENSE + * + * This file is part of the srsLTE library. + * + * srsLTE is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of + * the License, or (at your option) any later version. + * + * srsLTE 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 Affero General Public License for more details. + * + * A copy of the GNU Affero General Public License can be found in + * the LICENSE file in the top-level directory of this distribution + * and at http://www.gnu.org/licenses/. + * + */ + +#include +#include +#include +#include +#include +#include + +#include "srslte/srslte.h" + +// Enable to measure execution time +#define DO_OFDM + +#ifdef DO_OFDM +#define NOF_CE_SYMBOLS SRSLTE_SF_LEN_PRB(cell.nof_prb) +#else +#define NOF_CE_SYMBOLS SRSLTE_SF_LEN_RE(cell.nof_prb, cell.cp) +#endif + +srslte_cell_t cell = { + 100, // nof_prb + 1, // nof_ports + 1, // cell_id + SRSLTE_CP_EXT, // cyclic prefix + SRSLTE_PHICH_NORM, // PHICH length + SRSLTE_PHICH_R_1_6 // PHICH resources +}; + +char mimo_type_str [32] = "single"; +srslte_mimo_type_t mimo_type = SRSLTE_MIMO_TYPE_SINGLE_ANTENNA; +uint32_t cfi = 2; +uint32_t mcs_idx = 2; +uint32_t subframe = 1; +int rv_idx[SRSLTE_MAX_CODEWORDS] = {0, 1}; +uint16_t rnti = 1234; +uint32_t nof_rx_antennas = 1; +uint32_t pmi = 0; +char *input_file = NULL; +uint32_t mbsfn_area_id = 1; +uint32_t non_mbsfn_region = 2; +void usage(char *prog) { + printf("Usage: %s [fmMcsrtRFpnwav] \n", prog); + printf("\t-f read signal from file [Default generate it with pdsch_encode()]\n"); + printf("\t-m MCS [Default %d]\n", mcs_idx); + printf("\t-M mbsfn area id [Default %d]\n", mbsfn_area_id); + printf("\t-N non mbsfn region [Default %d]\n", non_mbsfn_region); + printf("\t-c cell id [Default %d]\n", cell.id); + printf("\t-s subframe [Default %d]\n", subframe); + printf("\t-r rv_idx [Default %d]\n", rv_idx[0]); + printf("\t-R rnti [Default %d]\n", rnti); + printf("\t-F cfi [Default %d]\n", cfi); + printf("\t-n cell.nof_prb [Default %d]\n", cell.nof_prb); + printf("\t-a nof_rx_antennas [Default %d]\n", nof_rx_antennas); + printf("\t-v [set srslte_verbose to debug, default none]\n"); +} + +void parse_args(int argc, char **argv) { + int opt; + while ((opt = getopt(argc, argv, "fmMcsrtRFpnavx")) != -1) { + switch(opt) { + case 'f': + input_file = argv[optind]; + break; + case 'm': + mcs_idx = (uint32_t) atoi(argv[optind]); + break; + case 's': + subframe = atoi(argv[optind]); + break; + case 'r': + rv_idx[0] = (uint32_t) atoi(argv[optind]); + break; + case 'R': + rnti = atoi(argv[optind]); + break; + case 'F': + cfi = atoi(argv[optind]); + break; + case 'x': + strncpy(mimo_type_str, argv[optind], 32); + break; + case 'p': + pmi = (uint32_t) atoi(argv[optind]); + break; + case 'n': + cell.nof_prb = atoi(argv[optind]); + break; + case 'c': + cell.id = atoi(argv[optind]); + break; + case 'a': + nof_rx_antennas = (uint32_t) atoi(argv[optind]); + break; + case 'v': + srslte_verbose++; + break; + default: + usage(argv[0]); + exit(-1); + } + } +} + +static uint8_t *data_tx[SRSLTE_MAX_CODEWORDS] = {NULL}; +static uint8_t *data_rx[SRSLTE_MAX_CODEWORDS] = {NULL}; +cf_t *ce[SRSLTE_MAX_PORTS][SRSLTE_MAX_PORTS]; +srslte_softbuffer_rx_t *softbuffers_rx[SRSLTE_MAX_CODEWORDS]; +srslte_ra_dl_grant_t grant; +#ifdef DO_OFDM +cf_t *tx_sf_symbols[SRSLTE_MAX_PORTS]; +cf_t *rx_sf_symbols[SRSLTE_MAX_PORTS]; +#endif /* DO_OFDM */ +cf_t *tx_slot_symbols[SRSLTE_MAX_PORTS]; +cf_t *rx_slot_symbols[SRSLTE_MAX_PORTS]; +srslte_pmch_t pmch_tx, pmch_rx; +srslte_pdsch_cfg_t pmch_cfg; +srslte_ofdm_t ifft_mbsfn, fft_mbsfn; + +int main(int argc, char **argv) { + uint32_t i, j, k; + int ret = -1; + struct timeval t[3]; + srslte_softbuffer_tx_t *softbuffers_tx[SRSLTE_MAX_CODEWORDS]; + int M=1; + + parse_args(argc,argv); + + /* Initialise to zeros */ + bzero(&pmch_tx, sizeof(srslte_pdsch_t)); + bzero(&pmch_rx, sizeof(srslte_pdsch_t)); + bzero(&pmch_cfg, sizeof(srslte_pdsch_cfg_t)); + bzero(ce, sizeof(cf_t*)*SRSLTE_MAX_PORTS); + bzero(tx_slot_symbols, sizeof(cf_t*)*SRSLTE_MAX_PORTS); + bzero(rx_slot_symbols, sizeof(cf_t*)*SRSLTE_MAX_PORTS); + + + cell.nof_ports = 1; + + srslte_ra_dl_dci_t dci; + bzero(&dci, sizeof(srslte_ra_dl_dci_t)); + dci.type0_alloc.rbg_bitmask = 0xffffffff; + + + /* If transport block 0 is enabled */ + grant.tb_en[0] = true; + grant.tb_en[1] = false; + grant.nof_tb = 1; + grant.mcs[0].idx = mcs_idx; + + grant.nof_prb = cell.nof_prb; + grant.sf_type = SRSLTE_SF_MBSFN; + + srslte_dl_fill_ra_mcs(&grant.mcs[0], cell.nof_prb); + grant.Qm[0] = srslte_mod_bits_x_symbol(grant.mcs[0].mod); + + for(int i = 0; i < 2; i++){ + for(int j = 0; j < grant.nof_prb; j++){ + grant.prb_idx[i][j] = true; + } + } + + + +#ifdef DO_OFDM + + if (srslte_ofdm_tx_init_mbsfn(&ifft_mbsfn, SRSLTE_CP_EXT, cell.nof_prb)) { + fprintf(stderr, "Error creating iFFT object\n"); + exit(-1); + } + if (srslte_ofdm_rx_init_mbsfn(&fft_mbsfn, SRSLTE_CP_EXT, cell.nof_prb)) { + fprintf(stderr, "Error creating iFFT object\n"); + exit(-1); + } + + + srslte_ofdm_set_non_mbsfn_region(&ifft_mbsfn, non_mbsfn_region); + srslte_ofdm_set_non_mbsfn_region(&fft_mbsfn, non_mbsfn_region); + srslte_ofdm_set_normalize(&ifft_mbsfn, true); + srslte_ofdm_set_normalize(&fft_mbsfn, true); + + + for (i = 0; i < cell.nof_ports; i++) { + tx_sf_symbols[i] = srslte_vec_malloc(sizeof(cf_t) * SRSLTE_SF_LEN_PRB(cell.nof_prb)); + } + + for (i = 0; i < nof_rx_antennas; i++) { + rx_sf_symbols[i] = srslte_vec_malloc(sizeof(cf_t) * SRSLTE_SF_LEN_PRB(cell.nof_prb)); + } +#endif /* DO_OFDM */ + + /* Configure PDSCH */ + + if (srslte_pmch_cfg(&pmch_cfg, cell, &grant, cfi, subframe)) { + fprintf(stderr, "Error configuring PMCH\n"); + exit(-1); + } + + + /* init memory */ + for (i=0;i Date: Wed, 4 Oct 2017 10:15:10 +0200 Subject: [PATCH 3/7] buffer overflow in pmch_test bzero --- lib/src/phy/phch/test/pmch_test.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/src/phy/phch/test/pmch_test.c b/lib/src/phy/phch/test/pmch_test.c index de7948852..88e9fd296 100644 --- a/lib/src/phy/phch/test/pmch_test.c +++ b/lib/src/phy/phch/test/pmch_test.c @@ -151,8 +151,8 @@ int main(int argc, char **argv) { parse_args(argc,argv); /* Initialise to zeros */ - bzero(&pmch_tx, sizeof(srslte_pdsch_t)); - bzero(&pmch_rx, sizeof(srslte_pdsch_t)); + bzero(&pmch_tx, sizeof(srslte_pmch_t)); + bzero(&pmch_rx, sizeof(srslte_pmch_t)); bzero(&pmch_cfg, sizeof(srslte_pdsch_cfg_t)); bzero(ce, sizeof(cf_t*)*SRSLTE_MAX_PORTS); bzero(tx_slot_symbols, sizeof(cf_t*)*SRSLTE_MAX_PORTS); From 983bd0060c863972f68ce1486de09d446d8e108c Mon Sep 17 00:00:00 2001 From: yagoda Date: Wed, 4 Oct 2017 09:53:35 +0100 Subject: [PATCH 4/7] fixing incorrect type in bzero in pmch test --- CMakeLists.txt | 2 +- lib/src/phy/phch/test/pmch_test.c | 10 ++-------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a63a77016..d72bb5fef 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -50,7 +50,7 @@ configure_file( IMMEDIATE @ONLY) if(NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE Debug) + set(CMAKE_BUILD_TYPE Release) message(STATUS "Build type not specified: defaulting to Release.") endif(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "") diff --git a/lib/src/phy/phch/test/pmch_test.c b/lib/src/phy/phch/test/pmch_test.c index de7948852..aea1b50c0 100644 --- a/lib/src/phy/phch/test/pmch_test.c +++ b/lib/src/phy/phch/test/pmch_test.c @@ -149,16 +149,14 @@ int main(int argc, char **argv) { int M=1; parse_args(argc,argv); - /* Initialise to zeros */ - bzero(&pmch_tx, sizeof(srslte_pdsch_t)); - bzero(&pmch_rx, sizeof(srslte_pdsch_t)); + bzero(&pmch_tx, sizeof(srslte_pmch_t)); + bzero(&pmch_rx, sizeof(srslte_pmch_t)); bzero(&pmch_cfg, sizeof(srslte_pdsch_cfg_t)); bzero(ce, sizeof(cf_t*)*SRSLTE_MAX_PORTS); bzero(tx_slot_symbols, sizeof(cf_t*)*SRSLTE_MAX_PORTS); bzero(rx_slot_symbols, sizeof(cf_t*)*SRSLTE_MAX_PORTS); - cell.nof_ports = 1; srslte_ra_dl_dci_t dci; @@ -177,7 +175,6 @@ int main(int argc, char **argv) { srslte_dl_fill_ra_mcs(&grant.mcs[0], cell.nof_prb); grant.Qm[0] = srslte_mod_bits_x_symbol(grant.mcs[0].mod); - for(int i = 0; i < 2; i++){ for(int j = 0; j < grant.nof_prb; j++){ grant.prb_idx[i][j] = true; @@ -197,7 +194,6 @@ int main(int argc, char **argv) { exit(-1); } - srslte_ofdm_set_non_mbsfn_region(&ifft_mbsfn, non_mbsfn_region); srslte_ofdm_set_non_mbsfn_region(&fft_mbsfn, non_mbsfn_region); srslte_ofdm_set_normalize(&ifft_mbsfn, true); @@ -220,7 +216,6 @@ int main(int argc, char **argv) { exit(-1); } - /* init memory */ for (i=0;i Date: Wed, 4 Oct 2017 11:50:15 +0200 Subject: [PATCH 5/7] Fixed incorrect scheduling with PUCCH --- srsenb/hdr/mac/mac.h | 5 +---- srsenb/hdr/mac/scheduler.h | 2 +- srsenb/hdr/mac/scheduler_metric.h | 2 +- srsenb/hdr/mac/scheduler_ue.h | 3 +-- srsenb/src/mac/mac.cc | 24 +++--------------------- srsenb/src/mac/scheduler.cc | 22 +++++++++------------- srsenb/src/mac/scheduler_metric.cc | 8 +++----- srsenb/src/mac/scheduler_ue.cc | 25 +++++++++---------------- srsenb/src/upper/rrc.cc | 10 ++++++---- 9 files changed, 34 insertions(+), 67 deletions(-) diff --git a/srsenb/hdr/mac/mac.h b/srsenb/hdr/mac/mac.h index 4620c9629..d71245e89 100644 --- a/srsenb/hdr/mac/mac.h +++ b/srsenb/hdr/mac/mac.h @@ -113,10 +113,7 @@ public: private: - void log_step_ul(uint32_t tti); - void log_step_dl(uint32_t tti); - - static const int MAX_LOCATIONS = 20; + static const int MAX_LOCATIONS = 20; static const uint32_t cfi = 3; srslte_dci_location_t locations[MAX_LOCATIONS]; diff --git a/srsenb/hdr/mac/scheduler.h b/srsenb/hdr/mac/scheduler.h index c70ee4247..231239285 100644 --- a/srsenb/hdr/mac/scheduler.h +++ b/srsenb/hdr/mac/scheduler.h @@ -68,7 +68,7 @@ public: /* Virtual methods for user metric calculation */ virtual void new_tti(std::map &ue_db, uint32_t nof_rb, uint32_t tti) = 0; virtual ul_harq_proc* get_user_allocation(sched_ue *user) = 0; - virtual void update_allocation(ul_harq_proc::ul_alloc_t alloc) = 0; + virtual void update_allocation(ul_harq_proc::ul_alloc_t alloc) = 0; }; diff --git a/srsenb/hdr/mac/scheduler_metric.h b/srsenb/hdr/mac/scheduler_metric.h index b9d515ade..eda0b31ed 100644 --- a/srsenb/hdr/mac/scheduler_metric.h +++ b/srsenb/hdr/mac/scheduler_metric.h @@ -65,7 +65,7 @@ class ul_metric_rr : public sched::metric_ul public: void new_tti(std::map &ue_db, uint32_t nof_rb, uint32_t tti); ul_harq_proc* get_user_allocation(sched_ue *user); - void update_allocation(ul_harq_proc::ul_alloc_t alloc); + void update_allocation(ul_harq_proc::ul_alloc_t alloc); private: const static int MAX_PRB = 100; diff --git a/srsenb/hdr/mac/scheduler_ue.h b/srsenb/hdr/mac/scheduler_ue.h index b59461140..3653ff65c 100644 --- a/srsenb/hdr/mac/scheduler_ue.h +++ b/srsenb/hdr/mac/scheduler_ue.h @@ -42,7 +42,6 @@ public: // used by sched_metric uint32_t ue_idx; - bool has_pusch; bool has_pucch; typedef struct { @@ -116,7 +115,7 @@ public: bool needs_cqi(uint32_t tti, bool will_send = false); uint32_t get_max_retx(); - bool get_pucch_sched(uint32_t current_tti, uint32_t prb_idx[2], uint32_t *L); + bool get_pucch_sched(uint32_t current_tti, uint32_t prb_idx[2]); bool pucch_sr_collision(uint32_t current_tti, uint32_t n_cce); uint32_t get_pending_ul_old_data(); diff --git a/srsenb/src/mac/mac.cc b/srsenb/src/mac/mac.cc index 7cb30cc65..6c8458540 100644 --- a/srsenb/src/mac/mac.cc +++ b/srsenb/src/mac/mac.cc @@ -403,7 +403,7 @@ int mac::rach_detected(uint32_t tti, uint32_t preamble_idx, uint32_t time_adv) int mac::get_dl_sched(uint32_t tti, dl_sched_t *dl_sched_res) { - log_step_dl(tti); + log_h->step(tti); if (!started) { return 0; @@ -544,8 +544,8 @@ uint8_t* mac::assemble_si(uint32_t index) int mac::get_ul_sched(uint32_t tti, ul_sched_t *ul_sched_res) { - - log_step_ul(tti); + + log_h->step(tti); if (!started) { return 0; @@ -602,24 +602,6 @@ int mac::get_ul_sched(uint32_t tti, ul_sched_t *ul_sched_res) return SRSLTE_SUCCESS; } -void mac::log_step_ul(uint32_t tti) -{ - int tti_ul = tti-8; - if (tti_ul < 0) { - tti_ul += 10240; - } - log_h->step(tti_ul); -} - -void mac::log_step_dl(uint32_t tti) -{ - int tti_dl = tti-4; - if (tti_dl < 0) { - tti_dl += 10240; - } - log_h->step(tti_dl); -} - void mac::tti_clock() { timers_thread.tti_clock(); diff --git a/srsenb/src/mac/scheduler.cc b/srsenb/src/mac/scheduler.cc index 79cf3f476..539b7725f 100644 --- a/srsenb/src/mac/scheduler.cc +++ b/srsenb/src/mac/scheduler.cc @@ -700,7 +700,6 @@ int sched::ul_sched(uint32_t tti, srsenb::sched_interface::ul_sched_res_t* sched sched_ue *user = (sched_ue*) &iter->second; uint16_t rnti = (uint16_t) iter->first; - user->has_pusch = false; user->has_pucch = false; ul_harq_proc *h = user->get_ul_harq(current_tti); @@ -726,15 +725,12 @@ int sched::ul_sched(uint32_t tti, srsenb::sched_interface::ul_sched_res_t* sched sched_ue *user = (sched_ue*) &iter->second; uint16_t rnti = (uint16_t) iter->first; uint32_t prb_idx[2] = {0, 0}; - uint32_t L = 0; - if (user->get_pucch_sched(current_tti, prb_idx, &L)) { + if (user->get_pucch_sched(current_tti, prb_idx)) { user->has_pucch = true; - // allocate PUCCH if no PUSCH for user - if (!user->has_pusch) { - for (int i=0;i<2;i++) { - ul_harq_proc::ul_alloc_t pucch = {prb_idx[i], L}; - ul_metric->update_allocation(pucch); - } + // allocate PUCCH + for (int i=0;i<2;i++) { + ul_harq_proc::ul_alloc_t pucch = {prb_idx[i], 1}; + ul_metric->update_allocation(pucch); } } } @@ -807,22 +803,22 @@ int sched::ul_sched(uint32_t tti, srsenb::sched_interface::ul_sched_res_t* sched user->unset_sr(); } - log_h->info("SCHED: %s %s rnti=0x%x, pid=%d, dci=%d,%d, grant=%d,%d, n_rtx=%d, tbs=%d, bsr=%d (%d-%d)\n", + log_h->info("SCHED: %s %s rnti=0x%x, pid=%d, dci=%d,%d, grant=(%d,%d), n_rtx=%d, tbs=%d, bsr=%d (%d-%d)\n", is_rar?"RAR":"UL", is_newtx?"tx":"retx", rnti, h->get_id(), sched_result->pusch[nof_dci_elems].dci_location.L, sched_result->pusch[nof_dci_elems].dci_location.ncce, - alloc.RB_start, alloc.L, h->nof_retx(), sched_result->pusch[nof_dci_elems].tbs, + alloc.RB_start, alloc.RB_start+alloc.L, h->nof_retx(), sched_result->pusch[nof_dci_elems].tbs, user->get_pending_ul_new_data(current_tti),pending_data_before, user->get_pending_ul_old_data()); nof_dci_elems++; } else { - log_h->warning("SCHED: Error %s %s rnti=0x%x, pid=%d, dci=%d,%d, grant=%d,%d, tbs=%d, bsr=%d\n", + log_h->warning("SCHED: Error %s %s rnti=0x%x, pid=%d, dci=%d,%d, grant=(%d,%d), tbs=%d, bsr=%d\n", is_rar?"RAR":"UL", is_newtx?"tx":"retx", rnti, h->get_id(), sched_result->pusch[nof_dci_elems].dci_location.L, sched_result->pusch[nof_dci_elems].dci_location.ncce, - alloc.RB_start, alloc.L, sched_result->pusch[nof_dci_elems].tbs, + alloc.RB_start, alloc.RB_start+alloc.L, sched_result->pusch[nof_dci_elems].tbs, user->get_pending_ul_new_data(current_tti)); } } diff --git a/srsenb/src/mac/scheduler_metric.cc b/srsenb/src/mac/scheduler_metric.cc index 309eed45a..708ab2dd8 100644 --- a/srsenb/src/mac/scheduler_metric.cc +++ b/srsenb/src/mac/scheduler_metric.cc @@ -25,8 +25,7 @@ */ #include - -#include "srslte/srslte.h" +#include "mac/scheduler_harq.h" #include "mac/scheduler_metric.h" #define Error(fmt, ...) log_h->error_line(__FILE__, __LINE__, fmt, ##__VA_ARGS__) @@ -215,8 +214,7 @@ void ul_metric_rr::new_tti(std::map &ue_db, uint32_t nof_rb_, sched_ue *user = (sched_ue*) &iter->second; if (user->get_pending_ul_new_data(current_tti) || !user->get_ul_harq(current_tti)->is_empty()) { user->ue_idx = nof_users_with_data; - user->has_pusch = true; - nof_users_with_data++; + nof_users_with_data++; } } @@ -275,7 +273,7 @@ void ul_metric_rr::update_allocation(ul_harq_proc::ul_alloc_t alloc) return; } for (uint32_t n=alloc.RB_start;n #include #include +#include #include "srslte/srslte.h" #include "srslte/common/pdu.h" @@ -232,7 +233,7 @@ bool sched_ue::pucch_sr_collision(uint32_t current_tti, uint32_t n_cce) } } -bool sched_ue::get_pucch_sched(uint32_t current_tti, uint32_t prb_idx[2], uint32_t *L) +bool sched_ue::get_pucch_sched(uint32_t current_tti, uint32_t prb_idx[2]) { if (!phy_config_dedicated_enabled) { return false; @@ -241,7 +242,7 @@ bool sched_ue::get_pucch_sched(uint32_t current_tti, uint32_t prb_idx[2], uint32 pucch_sched.sps_enabled = false; pucch_sched.n_pucch_sr = cfg.sr_N_pucch; pucch_sched.n_pucch_2 = cfg.n_pucch_cqi; - pucch_sched.N_pucch_1 = cfg.pucch_cfg.n1_pucch_an; + pucch_sched.N_pucch_1 = cfg.pucch_cfg.n1_pucch_an; bool has_sr = cfg.sr_enabled && srslte_ue_ul_sr_send_tti(cfg.sr_I, current_tti); @@ -251,13 +252,11 @@ bool sched_ue::get_pucch_sched(uint32_t current_tti, uint32_t prb_idx[2], uint32 uint32_t n_pucch = srslte_pucch_get_npucch(dl_harq[i].get_n_cce(), SRSLTE_PUCCH_FORMAT_1A, has_sr, &pucch_sched); if (prb_idx) { for (int i=0;i<2;i++) { - prb_idx[i] = srslte_pucch_n_prb(&cfg.pucch_cfg, SRSLTE_PUCCH_FORMAT_1A, n_pucch, cell.nof_prb, cell.cp, i); - } + prb_idx[i] = srslte_pucch_n_prb(&cfg.pucch_cfg, SRSLTE_PUCCH_FORMAT_1A, n_pucch, cell.nof_prb, cell.cp, i); + } } - if (L) { - *L = 1; - } - Debug("SCHED: Reserved Format1A PUCCH for rnti=0x%x, n_prb=%d,%d, n_pucch=%d\n", rnti, prb_idx[0], prb_idx[1], n_pucch); + Info("SCHED: Reserved Format1A PUCCH for rnti=0x%x, n_prb=%d,%d, n_pucch=%d, ncce=%d, has_sr=%d, n_pucch_1=%d\n", + rnti, prb_idx[0], prb_idx[1], n_pucch, dl_harq[i].get_n_cce(), has_sr, pucch_sched.N_pucch_1); return true; } } @@ -268,10 +267,7 @@ bool sched_ue::get_pucch_sched(uint32_t current_tti, uint32_t prb_idx[2], uint32 prb_idx[i] = srslte_pucch_n_prb(&cfg.pucch_cfg, SRSLTE_PUCCH_FORMAT_1, cfg.sr_N_pucch, cell.nof_prb, cell.cp, i); } } - if (L) { - *L = 1; - } - Debug("SCHED: Reserved Format1 PUCCH for rnti=0x%x, n_prb=%d,%d, n_pucch=%d\n", rnti, prb_idx[0], prb_idx[1], cfg.sr_N_pucch); + Info("SCHED: Reserved Format1 PUCCH for rnti=0x%x, n_prb=%d,%d, n_pucch=%d\n", rnti, prb_idx[0], prb_idx[1], cfg.sr_N_pucch); return true; } // Finally check Format2 (periodic CQI) @@ -281,10 +277,7 @@ bool sched_ue::get_pucch_sched(uint32_t current_tti, uint32_t prb_idx[2], uint32 prb_idx[i] = srslte_pucch_n_prb(&cfg.pucch_cfg, SRSLTE_PUCCH_FORMAT_2, cfg.cqi_pucch, cell.nof_prb, cell.cp, i); } } - if(L) { - *L = 2; - } - Debug("SCHED: Reserved Format2 PUCCH for rnti=0x%x, n_prb=%d,%d, n_pucch=%d, pmi_idx=%d\n", + Info("SCHED: Reserved Format2 PUCCH for rnti=0x%x, n_prb=%d,%d, n_pucch=%d, pmi_idx=%d\n", rnti, prb_idx[0], prb_idx[1], cfg.cqi_pucch, cfg.cqi_idx); return true; } diff --git a/srsenb/src/upper/rrc.cc b/srsenb/src/upper/rrc.cc index b1280cf55..4a432b394 100644 --- a/srsenb/src/upper/rrc.cc +++ b/srsenb/src/upper/rrc.cc @@ -24,9 +24,10 @@ * */ -#include -#include -#include +#include "srslte/interfaces/sched_interface.h" +#include "srslte/asn1/liblte_rrc.h" +#include "upper/rrc.h" +#include "srslte/srslte.h" #include "srslte/asn1/liblte_mme.h" #include "upper/rrc.h" @@ -1177,7 +1178,8 @@ void rrc::ue::send_connection_setup(bool is_setup) sched_cfg.pucch_cfg.delta_pucch_shift = liblte_rrc_delta_pucch_shift_num[parent->sib2.rr_config_common_sib.pucch_cnfg.delta_pucch_shift%LIBLTE_RRC_DELTA_PUCCH_SHIFT_N_ITEMS]; sched_cfg.pucch_cfg.N_cs = parent->sib2.rr_config_common_sib.pucch_cnfg.n_cs_an; sched_cfg.pucch_cfg.n_rb_2 = parent->sib2.rr_config_common_sib.pucch_cnfg.n_rb_cqi; - + sched_cfg.pucch_cfg.n1_pucch_an = parent->sib2.rr_config_common_sib.pucch_cnfg.n1_pucch_an; + // Configure MAC parent->mac->ue_cfg(rnti, &sched_cfg); From b155ba4c2865e1f8d0aa4dceef41e352e7c0e2fc Mon Sep 17 00:00:00 2001 From: Ismael Gomez Date: Wed, 4 Oct 2017 12:00:31 +0200 Subject: [PATCH 6/7] Fixed segfault in pdsch_ue --help command --- lib/examples/pdsch_ue.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/examples/pdsch_ue.c b/lib/examples/pdsch_ue.c index 38113dbcf..97fd71f50 100644 --- a/lib/examples/pdsch_ue.c +++ b/lib/examples/pdsch_ue.c @@ -171,8 +171,8 @@ void usage(prog_args_t *args, char *prog) { printf("\t-S remote UDP address to send input signal [Default %s]\n", args->net_address_signal); printf("\t-u remote TCP port to send data (-1 does nothing with it) [Default %d]\n", args->net_port); printf("\t-U remote TCP address to send data [Default %s]\n", args->net_address); - printf("\t-M MBSFN area id [Default %s]\n", args->mbsfn_area_id); - printf("\t-N Non-MBSFN region [Default %s]\n", args->non_mbsfn_region); + printf("\t-M MBSFN area id [Default %d]\n", args->mbsfn_area_id); + printf("\t-N Non-MBSFN region [Default %d]\n", args->non_mbsfn_region); printf("\t-v [set srslte_verbose to debug, default none]\n"); } From 189dcfa1d23f0bac69b3ff301ecc6be63d7e2516 Mon Sep 17 00:00:00 2001 From: Ismael Gomez Date: Wed, 4 Oct 2017 13:35:18 +0200 Subject: [PATCH 7/7] Updated TX/RX calibrated values for x300 --- lib/src/radio/radio.cc | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/lib/src/radio/radio.cc b/lib/src/radio/radio.cc index c0e828f71..b393a3ff4 100644 --- a/lib/src/radio/radio.cc +++ b/lib/src/radio/radio.cc @@ -357,25 +357,9 @@ void radio::set_tx_srate(double srate) nsamples = cur_tx_srate*(uhd_default_tx_adv_samples * (1/cur_tx_srate) + uhd_default_tx_adv_offset_sec); } } else if (!strcmp(srslte_rf_name(&rf_device), "uhd_x300")) { - - double srate_khz = round(cur_tx_srate/1e3); - if (srate_khz == 1.92e3) { - nsamples = 50; - } else if (srate_khz == 3.84e3) { - nsamples = 65; - } else if (srate_khz == 5.76e3) { - nsamples = 75; - } else if (srate_khz == 11.52e3) { - nsamples = 89; - } else if (srate_khz == 15.36e3) { - nsamples = 86; - } else if (srate_khz == 23.04e3) { - nsamples = 110; - } else { - /* Interpolate from known values */ - printf("\nWarning TX/RX time offset for sampling rate %.0f KHz not calibrated. Using interpolated value\n\n", cur_tx_srate); - nsamples = cur_tx_srate*(uhd_default_tx_adv_samples * (1/cur_tx_srate) + uhd_default_tx_adv_offset_sec); - } + + // In X300 TX/RX offset is independent of sampling rate + nsamples = 45; } else if (!strcmp(srslte_rf_name(&rf_device), "bladerf")) { double srate_khz = round(cur_tx_srate/1e3);