mirror of https://github.com/PentHertz/srsLTE.git
use srslte_cell_sl_t in PSCCH
This commit is contained in:
parent
14000f7ae7
commit
09f7355870
|
@ -47,10 +47,8 @@ typedef enum SRSLTE_API {
|
||||||
} srslte_sl_channels_t;
|
} srslte_sl_channels_t;
|
||||||
|
|
||||||
typedef struct SRSLTE_API {
|
typedef struct SRSLTE_API {
|
||||||
srslte_sl_tm_t mode;
|
srslte_sl_tm_t tm;
|
||||||
uint32_t nof_prb;
|
uint32_t nof_prb;
|
||||||
uint32_t nof_ports;
|
|
||||||
uint32_t id;
|
|
||||||
srslte_cp_t cp;
|
srslte_cp_t cp;
|
||||||
} srslte_cell_sl_t;
|
} srslte_cell_sl_t;
|
||||||
|
|
||||||
|
|
|
@ -40,8 +40,7 @@
|
||||||
|
|
||||||
typedef struct SRSLTE_API {
|
typedef struct SRSLTE_API {
|
||||||
|
|
||||||
srslte_sl_tm_t tm;
|
srslte_cell_sl_t cell;
|
||||||
srslte_cp_t cp;
|
|
||||||
|
|
||||||
uint32_t sci_len;
|
uint32_t sci_len;
|
||||||
uint32_t nof_tx_re;
|
uint32_t nof_tx_re;
|
||||||
|
@ -72,8 +71,6 @@ typedef struct SRSLTE_API {
|
||||||
uint8_t* codeword;
|
uint8_t* codeword;
|
||||||
uint8_t* codeword_bytes;
|
uint8_t* codeword_bytes;
|
||||||
|
|
||||||
uint32_t nof_prb;
|
|
||||||
|
|
||||||
// scrambling
|
// scrambling
|
||||||
srslte_sequence_t seq;
|
srslte_sequence_t seq;
|
||||||
|
|
||||||
|
@ -90,7 +87,7 @@ typedef struct SRSLTE_API {
|
||||||
|
|
||||||
} srslte_pscch_t;
|
} srslte_pscch_t;
|
||||||
|
|
||||||
SRSLTE_API int srslte_pscch_init(srslte_pscch_t* q, uint32_t nof_prb, srslte_sl_tm_t tm, srslte_cp_t cp);
|
SRSLTE_API int srslte_pscch_init(srslte_pscch_t* q, srslte_cell_sl_t cell);
|
||||||
SRSLTE_API int srslte_pscch_encode(srslte_pscch_t* q, uint8_t* sci, cf_t* sf_buffer, uint32_t prb_idx);
|
SRSLTE_API int srslte_pscch_encode(srslte_pscch_t* q, uint8_t* sci, cf_t* sf_buffer, uint32_t prb_idx);
|
||||||
SRSLTE_API int srslte_pscch_decode(srslte_pscch_t* q, cf_t* equalized_sf_syms, uint8_t* sci, uint32_t prb_idx);
|
SRSLTE_API int srslte_pscch_decode(srslte_pscch_t* q, cf_t* equalized_sf_syms, uint8_t* sci, uint32_t prb_idx);
|
||||||
SRSLTE_API int srslte_pscch_put(srslte_pscch_t* q, cf_t* sf_buffer, uint32_t prb_idx);
|
SRSLTE_API int srslte_pscch_put(srslte_pscch_t* q, cf_t* sf_buffer, uint32_t prb_idx);
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
@ -34,33 +35,31 @@
|
||||||
#include "srslte/phy/utils/debug.h"
|
#include "srslte/phy/utils/debug.h"
|
||||||
#include "srslte/phy/utils/vector.h"
|
#include "srslte/phy/utils/vector.h"
|
||||||
|
|
||||||
int srslte_pscch_init(srslte_pscch_t* q, uint32_t nof_prb, srslte_sl_tm_t tm, srslte_cp_t cp)
|
int srslte_pscch_init(srslte_pscch_t* q, srslte_cell_sl_t cell)
|
||||||
{
|
{
|
||||||
int ret = SRSLTE_ERROR_INVALID_INPUTS;
|
int ret = SRSLTE_ERROR_INVALID_INPUTS;
|
||||||
|
|
||||||
if (q != NULL) {
|
if (q != NULL) {
|
||||||
ret = SRSLTE_ERROR;
|
ret = SRSLTE_ERROR;
|
||||||
|
|
||||||
q->cp = cp;
|
if (cell.tm == SRSLTE_SIDELINK_TM1 || cell.tm == SRSLTE_SIDELINK_TM2) {
|
||||||
q->tm = tm;
|
q->sci_len = srslte_sci_format0_sizeof(cell.nof_prb);
|
||||||
q->nof_prb = nof_prb;
|
|
||||||
|
|
||||||
if (tm == SRSLTE_SIDELINK_TM1 || tm == SRSLTE_SIDELINK_TM2) {
|
|
||||||
q->sci_len = srslte_sci_format0_sizeof(nof_prb);
|
|
||||||
q->nof_symbols = SRSLTE_PSCCH_TM12_NUM_DATA_SYMBOLS;
|
q->nof_symbols = SRSLTE_PSCCH_TM12_NUM_DATA_SYMBOLS;
|
||||||
q->pscch_nof_prb = SRSLTE_PSCCH_TM12_NOF_PRB;
|
q->pscch_nof_prb = SRSLTE_PSCCH_TM12_NOF_PRB;
|
||||||
|
|
||||||
if (cp == SRSLTE_CP_EXT) {
|
if (cell.cp == SRSLTE_CP_EXT) {
|
||||||
q->nof_symbols = SRSLTE_PSCCH_TM12_NUM_DATA_SYMBOLS_EXT;
|
q->nof_symbols = SRSLTE_PSCCH_TM12_NUM_DATA_SYMBOLS_EXT;
|
||||||
}
|
}
|
||||||
} else if (tm == SRSLTE_SIDELINK_TM3 || tm == SRSLTE_SIDELINK_TM4) {
|
} else if (cell.tm == SRSLTE_SIDELINK_TM3 || cell.tm == SRSLTE_SIDELINK_TM4) {
|
||||||
q->sci_len = SRSLTE_SCI_TM34_LEN;
|
q->sci_len = SRSLTE_SCI_TM34_LEN;
|
||||||
q->nof_symbols = SRSLTE_PSCCH_TM34_NUM_DATA_SYMBOLS;
|
q->nof_symbols = SRSLTE_PSCCH_TM34_NUM_DATA_SYMBOLS;
|
||||||
q->pscch_nof_prb = SRSLTE_PSCCH_TM34_NOF_PRB;
|
q->pscch_nof_prb = SRSLTE_PSCCH_TM34_NOF_PRB;
|
||||||
} else {
|
} else {
|
||||||
return SRSLTE_ERROR;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
q->cell = cell;
|
||||||
|
|
||||||
// CRC
|
// CRC
|
||||||
uint32_t crc_poly = 0x11021;
|
uint32_t crc_poly = 0x11021;
|
||||||
if (srslte_crc_init(&q->crc, crc_poly, SRSLTE_SCI_CRC_LEN)) {
|
if (srslte_crc_init(&q->crc, crc_poly, SRSLTE_SCI_CRC_LEN)) {
|
||||||
|
@ -155,7 +154,7 @@ int srslte_pscch_init(srslte_pscch_t* q, uint32_t nof_prb, srslte_sl_tm_t tm, sr
|
||||||
}
|
}
|
||||||
|
|
||||||
// DFT Precoding
|
// DFT Precoding
|
||||||
if (srslte_dft_precoding_init(&q->dft_precoder, q->nof_prb, true)) {
|
if (srslte_dft_precoding_init(&q->dft_precoder, q->cell.nof_prb, true)) {
|
||||||
return SRSLTE_ERROR;
|
return SRSLTE_ERROR;
|
||||||
}
|
}
|
||||||
q->scfdma_symbols = srslte_vec_malloc(sizeof(cf_t) * q->E / SRSLTE_PSCCH_QM);
|
q->scfdma_symbols = srslte_vec_malloc(sizeof(cf_t) * q->E / SRSLTE_PSCCH_QM);
|
||||||
|
@ -169,7 +168,8 @@ int srslte_pscch_init(srslte_pscch_t* q, uint32_t nof_prb, srslte_sl_tm_t tm, sr
|
||||||
return SRSLTE_ERROR;
|
return SRSLTE_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
q->nof_tx_re = (q->nof_symbols - 1) * SRSLTE_NRE * q->pscch_nof_prb; // Last OFDM symbol is used channel processing but not transmitted
|
///< Last OFDM symbol is processed but not transmitted
|
||||||
|
q->nof_tx_re = (q->nof_symbols - 1) * SRSLTE_NRE * q->pscch_nof_prb;
|
||||||
|
|
||||||
ret = SRSLTE_SUCCESS;
|
ret = SRSLTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -282,9 +282,9 @@ int srslte_pscch_put(srslte_pscch_t* q, cf_t* sf_buffer, uint32_t prb_idx)
|
||||||
{
|
{
|
||||||
int sample_pos = 0;
|
int sample_pos = 0;
|
||||||
int k = prb_idx * SRSLTE_NRE;
|
int k = prb_idx * SRSLTE_NRE;
|
||||||
for (int i = 0; i < srslte_sl_get_num_symbols(q->tm, q->cp); ++i) {
|
for (int i = 0; i < srslte_sl_get_num_symbols(q->cell.tm, q->cell.cp); ++i) {
|
||||||
if (srslte_pscch_is_symbol(SRSLTE_SIDELINK_DATA_SYMBOL, q->tm, i, q->cp)) {
|
if (srslte_pscch_is_symbol(SRSLTE_SIDELINK_DATA_SYMBOL, q->cell.tm, i, q->cell.cp)) {
|
||||||
memcpy(&sf_buffer[k + i * q->nof_prb * SRSLTE_NRE],
|
memcpy(&sf_buffer[k + i * q->cell.nof_prb * SRSLTE_NRE],
|
||||||
&q->scfdma_symbols[sample_pos],
|
&q->scfdma_symbols[sample_pos],
|
||||||
sizeof(cf_t) * (SRSLTE_NRE * q->pscch_nof_prb));
|
sizeof(cf_t) * (SRSLTE_NRE * q->pscch_nof_prb));
|
||||||
sample_pos += (SRSLTE_NRE * q->pscch_nof_prb);
|
sample_pos += (SRSLTE_NRE * q->pscch_nof_prb);
|
||||||
|
@ -297,10 +297,10 @@ int srslte_pscch_get(srslte_pscch_t* q, cf_t* sf_buffer, uint32_t prb_idx)
|
||||||
{
|
{
|
||||||
int sample_pos = 0;
|
int sample_pos = 0;
|
||||||
int k = prb_idx * SRSLTE_NRE;
|
int k = prb_idx * SRSLTE_NRE;
|
||||||
for (int i = 0; i < srslte_sl_get_num_symbols(q->tm, q->cp); ++i) {
|
for (int i = 0; i < srslte_sl_get_num_symbols(q->cell.tm, q->cell.cp); ++i) {
|
||||||
if (srslte_pscch_is_symbol(SRSLTE_SIDELINK_DATA_SYMBOL, q->tm, i, q->cp)) {
|
if (srslte_pscch_is_symbol(SRSLTE_SIDELINK_DATA_SYMBOL, q->cell.tm, i, q->cell.cp)) {
|
||||||
memcpy(&q->scfdma_symbols[sample_pos],
|
memcpy(&q->scfdma_symbols[sample_pos],
|
||||||
&sf_buffer[k + i * q->nof_prb * SRSLTE_NRE],
|
&sf_buffer[k + i * q->cell.nof_prb * SRSLTE_NRE],
|
||||||
sizeof(cf_t) * (SRSLTE_NRE * q->pscch_nof_prb));
|
sizeof(cf_t) * (SRSLTE_NRE * q->pscch_nof_prb));
|
||||||
sample_pos += (SRSLTE_NRE * q->pscch_nof_prb);
|
sample_pos += (SRSLTE_NRE * q->pscch_nof_prb);
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,10 +37,8 @@
|
||||||
#include "srslte/phy/utils/vector.h"
|
#include "srslte/phy/utils/vector.h"
|
||||||
|
|
||||||
char* input_file_name;
|
char* input_file_name;
|
||||||
srslte_cp_t cp = SRSLTE_CP_NORM;
|
srslte_cell_sl_t cell = {.nof_prb = 6, .tm = SRSLTE_SIDELINK_TM2, .cp = SRSLTE_CP_NORM};
|
||||||
uint32_t nof_prb = 6;
|
|
||||||
bool use_standard_lte_rates = false;
|
bool use_standard_lte_rates = false;
|
||||||
srslte_sl_tm_t tm = SRSLTE_SIDELINK_TM2;
|
|
||||||
uint32_t size_sub_channel = 10;
|
uint32_t size_sub_channel = 10;
|
||||||
uint32_t num_sub_channel = 5;
|
uint32_t num_sub_channel = 5;
|
||||||
uint32_t file_offset = 0;
|
uint32_t file_offset = 0;
|
||||||
|
@ -62,10 +60,10 @@ void usage(char* prog)
|
||||||
printf("Usage: %s [deioptxzn]\n", prog);
|
printf("Usage: %s [deioptxzn]\n", prog);
|
||||||
printf("\t-i input_file_name\n");
|
printf("\t-i input_file_name\n");
|
||||||
printf("\t-o File offset samples [Default %d]\n", file_offset);
|
printf("\t-o File offset samples [Default %d]\n", file_offset);
|
||||||
printf("\t-p nof_prb [Default %d]\n", nof_prb);
|
printf("\t-p nof_prb [Default %d]\n", cell.nof_prb);
|
||||||
printf("\t-e Extended CP [Default normal]\n");
|
printf("\t-e Extended CP [Default normal]\n");
|
||||||
printf("\t-d use_standard_lte_rates [Default %i]\n", use_standard_lte_rates);
|
printf("\t-d use_standard_lte_rates [Default %i]\n", use_standard_lte_rates);
|
||||||
printf("\t-t Sidelink transmission mode {1,2,3,4} [Default %d]\n", (tm + 1));
|
printf("\t-t Sidelink transmission mode {1,2,3,4} [Default %d]\n", (cell.tm + 1));
|
||||||
printf("\t-z Size of sub-channels [Default %i]\n", size_sub_channel);
|
printf("\t-z Size of sub-channels [Default %i]\n", size_sub_channel);
|
||||||
printf("\t-n Number of sub-channels [Default %i]\n", num_sub_channel);
|
printf("\t-n Number of sub-channels [Default %i]\n", num_sub_channel);
|
||||||
printf("\t-v [set srslte_verbose to debug, default none]\n");
|
printf("\t-v [set srslte_verbose to debug, default none]\n");
|
||||||
|
@ -83,27 +81,27 @@ void parse_args(int argc, char** argv)
|
||||||
file_offset = (uint32_t)strtol(argv[optind], NULL, 10);
|
file_offset = (uint32_t)strtol(argv[optind], NULL, 10);
|
||||||
break;
|
break;
|
||||||
case 'e':
|
case 'e':
|
||||||
cp = SRSLTE_CP_EXT;
|
cell.cp = SRSLTE_CP_EXT;
|
||||||
break;
|
break;
|
||||||
case 'i':
|
case 'i':
|
||||||
input_file_name = argv[optind];
|
input_file_name = argv[optind];
|
||||||
break;
|
break;
|
||||||
case 'p':
|
case 'p':
|
||||||
nof_prb = (int32_t)strtol(argv[optind], NULL, 10);
|
cell.nof_prb = (int32_t)strtol(argv[optind], NULL, 10);
|
||||||
break;
|
break;
|
||||||
case 't':
|
case 't':
|
||||||
switch ((int32_t)strtol(argv[optind], NULL, 10)) {
|
switch ((int32_t)strtol(argv[optind], NULL, 10)) {
|
||||||
case 1:
|
case 1:
|
||||||
tm = SRSLTE_SIDELINK_TM1;
|
cell.tm = SRSLTE_SIDELINK_TM1;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
tm = SRSLTE_SIDELINK_TM2;
|
cell.tm = SRSLTE_SIDELINK_TM2;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
tm = SRSLTE_SIDELINK_TM3;
|
cell.tm = SRSLTE_SIDELINK_TM3;
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
tm = SRSLTE_SIDELINK_TM4;
|
cell.tm = SRSLTE_SIDELINK_TM4;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
usage(argv[0]);
|
usage(argv[0]);
|
||||||
|
@ -128,9 +126,9 @@ void parse_args(int argc, char** argv)
|
||||||
|
|
||||||
int base_init()
|
int base_init()
|
||||||
{
|
{
|
||||||
sf_n_samples = srslte_symbol_sz(nof_prb) * 15;
|
sf_n_samples = srslte_symbol_sz(cell.nof_prb) * 15;
|
||||||
|
|
||||||
sf_n_re = SRSLTE_CP_NSYMB(cp) * SRSLTE_NRE * 2 * nof_prb;
|
sf_n_re = SRSLTE_CP_NSYMB(cell.cp) * SRSLTE_NRE * 2 * cell.nof_prb;
|
||||||
|
|
||||||
sf_buffer = srslte_vec_malloc(sizeof(cf_t) * sf_n_re);
|
sf_buffer = srslte_vec_malloc(sizeof(cf_t) * sf_n_re);
|
||||||
if (!sf_buffer) {
|
if (!sf_buffer) {
|
||||||
|
@ -150,9 +148,9 @@ int base_init()
|
||||||
return SRSLTE_ERROR;
|
return SRSLTE_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
srslte_sci_init(&sci, nof_prb, tm, size_sub_channel, num_sub_channel);
|
srslte_sci_init(&sci, cell.nof_prb, cell.tm, size_sub_channel, num_sub_channel);
|
||||||
|
|
||||||
if (srslte_pscch_init(&pscch, nof_prb, tm, cp) != SRSLTE_SUCCESS) {
|
if (srslte_pscch_init(&pscch, cell) != SRSLTE_SUCCESS) {
|
||||||
ERROR("Error in PSCCH init\n");
|
ERROR("Error in PSCCH init\n");
|
||||||
return SRSLTE_ERROR;
|
return SRSLTE_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -172,7 +170,7 @@ int base_init()
|
||||||
return SRSLTE_ERROR;
|
return SRSLTE_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (srslte_ofdm_rx_init(&fft, cp, input_buffer, sf_buffer, nof_prb)) {
|
if (srslte_ofdm_rx_init(&fft, cell.cp, input_buffer, sf_buffer, cell.nof_prb)) {
|
||||||
fprintf(stderr, "Error creating FFT object\n");
|
fprintf(stderr, "Error creating FFT object\n");
|
||||||
return SRSLTE_ERROR;
|
return SRSLTE_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -241,16 +239,16 @@ int main(int argc, char** argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
// CFO estimation and correction
|
// CFO estimation and correction
|
||||||
srslte_sl_cfo_est_corr_cp(input_buffer, nof_prb, cp);
|
srslte_sl_cfo_est_corr_cp(input_buffer, cell.nof_prb, cell.cp);
|
||||||
srslte_ofdm_rx_sf(&fft);
|
srslte_ofdm_rx_sf(&fft);
|
||||||
|
|
||||||
if (tm == SRSLTE_SIDELINK_TM1 || tm == SRSLTE_SIDELINK_TM2) {
|
if (cell.tm == SRSLTE_SIDELINK_TM1 || cell.tm == SRSLTE_SIDELINK_TM2) {
|
||||||
uint32_t prb_num = (uint32_t)ceil(nof_prb / 2);
|
uint32_t prb_num = (uint32_t)ceil(cell.nof_prb / 2);
|
||||||
uint32_t prb_start = 0;
|
uint32_t prb_start = 0;
|
||||||
uint32_t prb_end = nof_prb - 1;
|
uint32_t prb_end = cell.nof_prb - 1;
|
||||||
uint32_t cyclic_shift = 0;
|
uint32_t cyclic_shift = 0;
|
||||||
|
|
||||||
srslte_chest_sl_gen_pscch_dmrs(&pscch_chest, cyclic_shift, tm);
|
srslte_chest_sl_gen_pscch_dmrs(&pscch_chest, cyclic_shift, cell.tm);
|
||||||
|
|
||||||
for (uint32_t pscch_prb_idx = prb_start; pscch_prb_idx <= prb_end; pscch_prb_idx++) {
|
for (uint32_t pscch_prb_idx = prb_start; pscch_prb_idx <= prb_end; pscch_prb_idx++) {
|
||||||
if (pscch_prb_idx == (prb_start + prb_num)) {
|
if (pscch_prb_idx == (prb_start + prb_num)) {
|
||||||
|
@ -259,7 +257,7 @@ int main(int argc, char** argv)
|
||||||
|
|
||||||
// PSCCH Channel estimation
|
// PSCCH Channel estimation
|
||||||
srslte_chest_sl_pscch_ls_estimate_equalize(
|
srslte_chest_sl_pscch_ls_estimate_equalize(
|
||||||
&pscch_chest, sf_buffer, pscch_prb_idx, equalized_sf_buffer, nof_prb, tm, cp);
|
&pscch_chest, sf_buffer, pscch_prb_idx, equalized_sf_buffer, cell.nof_prb, cell.tm, cell.cp);
|
||||||
|
|
||||||
if (srslte_pscch_decode(&pscch, equalized_sf_buffer, sci_rx, pscch_prb_idx) == SRSLTE_SUCCESS) {
|
if (srslte_pscch_decode(&pscch, equalized_sf_buffer, sci_rx, pscch_prb_idx) == SRSLTE_SUCCESS) {
|
||||||
if (srslte_sci_format0_unpack(&sci, sci_rx) != SRSLTE_SUCCESS) {
|
if (srslte_sci_format0_unpack(&sci, sci_rx) != SRSLTE_SUCCESS) {
|
||||||
|
@ -273,15 +271,15 @@ int main(int argc, char** argv)
|
||||||
num_decoded_sci++;
|
num_decoded_sci++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (tm == SRSLTE_SIDELINK_TM3 || tm == SRSLTE_SIDELINK_TM4) {
|
} else if (cell.tm == SRSLTE_SIDELINK_TM3 || cell.tm == SRSLTE_SIDELINK_TM4) {
|
||||||
for (int i = 0; i < num_sub_channel; i++) {
|
for (int i = 0; i < num_sub_channel; i++) {
|
||||||
uint32_t pscch_prb_idx = size_sub_channel * i;
|
uint32_t pscch_prb_idx = size_sub_channel * i;
|
||||||
|
|
||||||
for (uint32_t cyclic_shift = 0; cyclic_shift <= 9; cyclic_shift += 3) {
|
for (uint32_t cyclic_shift = 0; cyclic_shift <= 9; cyclic_shift += 3) {
|
||||||
// PSCCH Channel estimation
|
// PSCCH Channel estimation
|
||||||
srslte_chest_sl_gen_pscch_dmrs(&pscch_chest, cyclic_shift, tm);
|
srslte_chest_sl_gen_pscch_dmrs(&pscch_chest, cyclic_shift, cell.tm);
|
||||||
srslte_chest_sl_pscch_ls_estimate_equalize(
|
srslte_chest_sl_pscch_ls_estimate_equalize(
|
||||||
&pscch_chest, sf_buffer, pscch_prb_idx, equalized_sf_buffer, nof_prb, tm, cp);
|
&pscch_chest, sf_buffer, pscch_prb_idx, equalized_sf_buffer, cell.nof_prb, cell.tm, cell.cp);
|
||||||
|
|
||||||
if (srslte_pscch_decode(&pscch, equalized_sf_buffer, sci_rx, pscch_prb_idx) == SRSLTE_SUCCESS) {
|
if (srslte_pscch_decode(&pscch, equalized_sf_buffer, sci_rx, pscch_prb_idx) == SRSLTE_SUCCESS) {
|
||||||
if (srslte_sci_format1_unpack(&sci, sci_rx) != SRSLTE_SUCCESS) {
|
if (srslte_sci_format1_unpack(&sci, sci_rx) != SRSLTE_SUCCESS) {
|
||||||
|
|
Loading…
Reference in New Issue