From 6b71250a9c1dba77b73a76412a8d611dfa3e4e53 Mon Sep 17 00:00:00 2001 From: Ismael Gomez Date: Tue, 28 Jun 2016 18:28:57 +0200 Subject: [PATCH] development of enb processing --- matlab/tests/ce | Bin 6912 -> 0 bytes matlab/tests/d | Bin 6912 -> 0 bytes matlab/tests/sf_symbols | Bin 8064 -> 0 bytes matlab/tests/z | Bin 6912 -> 0 bytes srslte/include/srslte/enb/enb_dl.h | 29 ++++++++++++++++++++--------- srslte/include/srslte/enb/enb_ul.h | 27 ++++++++++++++++++++------- srslte/include/srslte/phch/phich.h | 6 ++++++ srslte/lib/enb/enb_dl.c | 22 ++++++++++++++++++---- srslte/lib/enb/enb_ul.c | 28 ++++++++++++++-------------- srslte/lib/phch/phich.c | 10 ++++++++++ srslte/lib/rf/rf_dev.h | 8 ++++++-- srslte/lib/ue/ue_dl.c | 7 +++---- 12 files changed, 97 insertions(+), 40 deletions(-) delete mode 100644 matlab/tests/ce delete mode 100644 matlab/tests/d delete mode 100644 matlab/tests/sf_symbols delete mode 100644 matlab/tests/z diff --git a/matlab/tests/ce b/matlab/tests/ce deleted file mode 100644 index cefc6508efb16163af5a44fcd9594b9cb60e5f12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6912 zcmeIyF%19!2m`P=!y3{FxF9JH|FSjd%AGHVO+XLyKo9JI103K02ROh14sd`29N+*4 RIKTl8aDW3G-~b1HJ21W6gueg) diff --git a/matlab/tests/d b/matlab/tests/d deleted file mode 100644 index 3ad03af0688ef97e64cf388024f1bbe11e50afc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6912 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 M;hj5BvHxoRe??m;KL7v# diff --git a/matlab/tests/z b/matlab/tests/z deleted file mode 100644 index 3ad03af0688ef97e64cf388024f1bbe11e50afc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6912 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, q->cfi, q->sf_symbols, sf_idx); - + srslte_pcfich_encode(&q->pcfich, q->cfi, q->sf_symbols, sf_idx); +} + +void srslte_enb_dl_put_phich(srslte_enb_dl_t *q, uint8_t ack, uint32_t n_prb_lowest, + uint32_t n_dmrs, uint32_t sf_idx) +{ + uint32_t ngroup, nseq; + srslte_phich_calc(&q->phich, n_prb_lowest, n_dmrs, &ngroup, &nseq); + srslte_phich_encode(&q->phich, ack, ngroup, nseq, sf_idx, q->sf_symbols); +} + +void srslte_enb_dl_put_phich_multi(srslte_enb_dl_t *q, srslte_enb_dl_phich_t *acks, uint32_t nof_acks, uint32_t sf_idx) +{ + for (int i=0;iphich, acks[i].ack, acks[i].n_prb_lowest, acks[i].n_dmrs, sf_idx, q->sf_symbols); + } } void srslte_enb_dl_put_base(srslte_enb_dl_t *q, uint32_t tti) @@ -278,7 +292,7 @@ int srslte_enb_dl_put_pdsch(srslte_enb_dl_t *q, srslte_ra_dl_grant_t *grant, srs return SRSLTE_SUCCESS; } -int srslte_enb_dl_put_grant_pusch(srslte_enb_dl_t *q, srslte_enb_dl_grant_pusch_t *grants, uint32_t nof_grants, uint32_t sf_idx) +int srslte_enb_dl_put_grant_pusch(srslte_enb_dl_t *q, srslte_enb_ul_pusch_t *grants, uint32_t nof_grants, uint32_t sf_idx) { for (int i=0;isoftbuffer, q->cell.nof_prb)) { - fprintf(stderr, "Error initiating soft buffer\n"); - goto clean_exit; - } - if (srslte_chest_ul_init(&q->chest, cell)) { fprintf(stderr, "Error initiating channel estimator\n"); goto clean_exit; @@ -123,7 +118,6 @@ void srslte_enb_ul_free(srslte_enb_ul_t *q) srslte_ofdm_rx_free(&q->fft); srslte_pucch_free(&q->pucch); srslte_pusch_free(&q->pusch); - srslte_softbuffer_rx_free(&q->softbuffer); srslte_chest_ul_free(&q->chest); if (q->sf_symbols) { free(q->sf_symbols); @@ -151,7 +145,7 @@ void srslte_enb_ul_fft(srslte_enb_ul_t *q, cf_t *signal_buffer) } -int srslte_enb_ul_get_pusch(srslte_enb_ul_t *q, srslte_ra_ul_grant_t *grant, +int srslte_enb_ul_get_pusch(srslte_enb_ul_t *q, srslte_ra_ul_grant_t *grant, srslte_softbuffer_rx_t *softbuffer, uint32_t rnti_idx, uint32_t rv_idx, uint32_t current_tx_nb, uint8_t *data, uint32_t sf_idx) { @@ -170,29 +164,35 @@ int srslte_enb_ul_get_pusch(srslte_enb_ul_t *q, srslte_ra_ul_grant_t *grant, srslte_uci_data_t uci_data; bzero(&uci_data, sizeof(srslte_uci_data_t)); return srslte_pusch_uci_decode_rnti_idx(&q->pusch, &q->pusch_cfg, - &q->softbuffer, q->sf_symbols, + softbuffer, q->sf_symbols, q->ce, noise_power, rnti_idx, data, &uci_data); } int srslte_enb_ul_get_pusch_multi(srslte_enb_ul_t *q, srslte_enb_ul_pusch_t *grants, + bool *pusch_crc_res, uint32_t nof_pusch, uint32_t tti) { uint32_t n_rb_ho = 0; for (int i=0;icell.nof_prb, n_rb_ho, &phy_grant, tti%8); - if (srslte_enb_ul_get_pusch(q, &phy_grant, grants[i].rnti_idx, grants[i].rv_idx, - grants[i].current_tx_nb, grants[i].data, tti%10) < 0) - { - fprintf(stderr, "Error getting PUSCH\n"); - return SRSLTE_ERROR; - } + pusch_crc_res[i] = srslte_enb_ul_get_pusch(q, &phy_grant, grants[i].softbuffer, + grants[i].rnti_idx, grants[i].rv_idx, + grants[i].current_tx_nb, + grants[i].data, tti%10) == 0; + + q->phich_info[grants[i].rnti_idx].n_prb_lowest = q->pusch_cfg.grant.n_prb_tilde[0]; + q->phich_info[grants[i].rnti_idx].n_dmrs = phy_grant.ncs_dmrs; } return SRSLTE_SUCCESS; } +void srslte_enb_ul_get_phich_info(srslte_enb_ul_t *q, + uint32_t rnti_idx, + srslte_enb_ul_phich_info_t *phich_info) + int srslte_enb_ul_detect_prach(srslte_enb_ul_t *q, uint32_t tti, uint32_t freq_offset, cf_t *signal, uint32_t *indices, uint32_t *offsets) diff --git a/srslte/lib/phch/phich.c b/srslte/lib/phch/phich.c index 5768106be..ae5b6aa67 100644 --- a/srslte/lib/phch/phich.c +++ b/srslte/lib/phch/phich.c @@ -110,6 +110,16 @@ void srslte_phich_free(srslte_phich_t *q) { } +/* Computes n_group and n_seq according to Section 9.1.2 in 36.213 */ +void srslte_phich_calc(srslte_phich_t *q, uint32_t n_prb_lowest, uint32_t n_dmrs, + uint32_t *ngroup, uint32_t *nseq) +{ + uint32_t Ngroups = srslte_phich_ngroups(q); + *ngroup = (n_prb_lowest+n_dmrs)%Ngroups; + *nseq = ((n_prb_lowest/Ngroups)+n_dmrs)%(2*srslte_phich_nsf(q)); +} + + /* Decodes ACK * */ diff --git a/srslte/lib/rf/rf_dev.h b/srslte/lib/rf/rf_dev.h index 739c39650..3cc784944 100644 --- a/srslte/lib/rf/rf_dev.h +++ b/srslte/lib/rf/rf_dev.h @@ -130,9 +130,13 @@ static rf_dev_t dev_blade = { }; #endif -//#define ENABLE_DUMMY_DEV +#define ENABLE_DUMMY_DEV #ifdef ENABLE_DUMMY_DEV +int dummy_rcv() { + usleep(100000); + return 1; +} void dummy_fnc() { } @@ -160,7 +164,7 @@ static rf_dev_t dev_dummy = { dummy_fnc, dummy_fnc, dummy_fnc, - dummy_fnc, + dummy_rcv, dummy_fnc, dummy_fnc, dummy_fnc diff --git a/srslte/lib/ue/ue_dl.c b/srslte/lib/ue/ue_dl.c index 2400c6a81..d421c6796 100644 --- a/srslte/lib/ue/ue_dl.c +++ b/srslte/lib/ue/ue_dl.c @@ -425,14 +425,13 @@ int srslte_ue_dl_decode_rnti_rv(srslte_ue_dl_t *q, cf_t *input, uint8_t *data, u } } -/* Computes n_group and n_seq according to Section 9.1.2 in 36.213 and calls phich processing function */ + bool srslte_ue_dl_decode_phich(srslte_ue_dl_t *q, uint32_t sf_idx, uint32_t n_prb_lowest, uint32_t n_dmrs) { uint8_t ack_bit; float distance; - uint32_t Ngroups = srslte_phich_ngroups(&q->phich); - uint32_t ngroup = (n_prb_lowest+n_dmrs)%Ngroups; - uint32_t nseq = ((n_prb_lowest/Ngroups)+n_dmrs)%(2*srslte_phich_nsf(&q->phich)); + uint32_t ngroup, nseq; + srslte_phich_calc(&q->phich, n_prb_lowest, n_dmrs, &ngroup, &nseq); DEBUG("Decoding PHICH sf_idx=%d, n_prb_lowest=%d, n_dmrs=%d, n_group=%d, n_seq=%d\n", sf_idx, n_prb_lowest, n_dmrs, ngroup, nseq); if (!srslte_phich_decode(&q->phich, q->sf_symbols, q->ce, 0, ngroup, nseq, sf_idx, &ack_bit, &distance)) {