mirror of https://github.com/PentHertz/srsLTE.git
Removed unused sample offset correction
This commit is contained in:
parent
6ca6919694
commit
c2098ad626
|
@ -487,7 +487,6 @@ typedef struct {
|
||||||
uint32_t cfo_ref_mask;
|
uint32_t cfo_ref_mask;
|
||||||
bool average_subframe_enabled;
|
bool average_subframe_enabled;
|
||||||
int time_correct_period;
|
int time_correct_period;
|
||||||
bool sfo_correct_disable;
|
|
||||||
std::string sss_algorithm;
|
std::string sss_algorithm;
|
||||||
float estimator_fil_w;
|
float estimator_fil_w;
|
||||||
bool rssi_sensor_enabled;
|
bool rssi_sensor_enabled;
|
||||||
|
|
|
@ -84,8 +84,6 @@ typedef struct SRSLTE_API {
|
||||||
srslte_ofdm_t fft_mbsfn;
|
srslte_ofdm_t fft_mbsfn;
|
||||||
srslte_chest_dl_t chest;
|
srslte_chest_dl_t chest;
|
||||||
|
|
||||||
srslte_cfo_t sfo_correct;
|
|
||||||
|
|
||||||
srslte_pdsch_cfg_t pdsch_cfg;
|
srslte_pdsch_cfg_t pdsch_cfg;
|
||||||
srslte_pdsch_cfg_t pmch_cfg;
|
srslte_pdsch_cfg_t pmch_cfg;
|
||||||
srslte_softbuffer_rx_t *softbuffers[SRSLTE_MAX_CODEWORDS];
|
srslte_softbuffer_rx_t *softbuffers[SRSLTE_MAX_CODEWORDS];
|
||||||
|
@ -126,8 +124,6 @@ typedef struct SRSLTE_API {
|
||||||
srslte_dci_msg_t pending_ul_dci_msg;
|
srslte_dci_msg_t pending_ul_dci_msg;
|
||||||
uint16_t pending_ul_dci_rnti;
|
uint16_t pending_ul_dci_rnti;
|
||||||
|
|
||||||
float sample_offset;
|
|
||||||
|
|
||||||
float last_phich_corr;
|
float last_phich_corr;
|
||||||
}srslte_ue_dl_t;
|
}srslte_ue_dl_t;
|
||||||
|
|
||||||
|
@ -195,9 +191,6 @@ SRSLTE_API int srslte_ue_dl_find_dl_dci_type(srslte_ue_dl_t *q,
|
||||||
|
|
||||||
SRSLTE_API uint32_t srslte_ue_dl_get_ncce(srslte_ue_dl_t *q);
|
SRSLTE_API uint32_t srslte_ue_dl_get_ncce(srslte_ue_dl_t *q);
|
||||||
|
|
||||||
SRSLTE_API void srslte_ue_dl_set_sample_offset(srslte_ue_dl_t * q,
|
|
||||||
float sample_offset);
|
|
||||||
|
|
||||||
SRSLTE_API int srslte_ue_dl_decode(srslte_ue_dl_t *q,
|
SRSLTE_API int srslte_ue_dl_decode(srslte_ue_dl_t *q,
|
||||||
uint8_t *data[SRSLTE_MAX_CODEWORDS],
|
uint8_t *data[SRSLTE_MAX_CODEWORDS],
|
||||||
uint32_t tm,
|
uint32_t tm,
|
||||||
|
|
|
@ -71,7 +71,6 @@ int srslte_ue_dl_init(srslte_ue_dl_t *q,
|
||||||
q->pmch_pkt_errors = 0;
|
q->pmch_pkt_errors = 0;
|
||||||
q->pmch_pkts_total = 0;
|
q->pmch_pkts_total = 0;
|
||||||
q->pending_ul_dci_rnti = 0;
|
q->pending_ul_dci_rnti = 0;
|
||||||
q->sample_offset = 0;
|
|
||||||
q->nof_rx_antennas = nof_rx_antennas;
|
q->nof_rx_antennas = nof_rx_antennas;
|
||||||
|
|
||||||
for (int j = 0; j < SRSLTE_MAX_PORTS; j++) {
|
for (int j = 0; j < SRSLTE_MAX_PORTS; j++) {
|
||||||
|
@ -147,11 +146,6 @@ int srslte_ue_dl_init(srslte_ue_dl_t *q,
|
||||||
goto clean_exit;
|
goto clean_exit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (srslte_cfo_init(&q->sfo_correct, max_prb*SRSLTE_NRE)) {
|
|
||||||
fprintf(stderr, "Error initiating SFO correct\n");
|
|
||||||
goto clean_exit;
|
|
||||||
}
|
|
||||||
srslte_cfo_set_tol(&q->sfo_correct, 1e-5f/q->fft[0].symbol_sz);
|
|
||||||
|
|
||||||
ret = SRSLTE_SUCCESS;
|
ret = SRSLTE_SUCCESS;
|
||||||
} else {
|
} else {
|
||||||
|
@ -178,7 +172,6 @@ void srslte_ue_dl_free(srslte_ue_dl_t *q) {
|
||||||
srslte_pdcch_free(&q->pdcch);
|
srslte_pdcch_free(&q->pdcch);
|
||||||
srslte_pdsch_free(&q->pdsch);
|
srslte_pdsch_free(&q->pdsch);
|
||||||
srslte_pmch_free(&q->pmch);
|
srslte_pmch_free(&q->pmch);
|
||||||
srslte_cfo_free(&q->sfo_correct);
|
|
||||||
for (int i = 0; i < SRSLTE_MAX_TB; i++) {
|
for (int i = 0; i < SRSLTE_MAX_TB; i++) {
|
||||||
srslte_softbuffer_rx_free(q->softbuffers[i]);
|
srslte_softbuffer_rx_free(q->softbuffers[i]);
|
||||||
if (q->softbuffers[i]) {
|
if (q->softbuffers[i]) {
|
||||||
|
@ -209,7 +202,6 @@ int srslte_ue_dl_set_cell(srslte_ue_dl_t *q, srslte_cell_t cell)
|
||||||
q->pkt_errors = 0;
|
q->pkt_errors = 0;
|
||||||
q->pkts_total = 0;
|
q->pkts_total = 0;
|
||||||
q->pending_ul_dci_rnti = 0;
|
q->pending_ul_dci_rnti = 0;
|
||||||
q->sample_offset = 0;
|
|
||||||
|
|
||||||
if (q->cell.id != cell.id || q->cell.nof_prb == 0) {
|
if (q->cell.id != cell.id || q->cell.nof_prb == 0) {
|
||||||
if (q->cell.nof_prb != 0) {
|
if (q->cell.nof_prb != 0) {
|
||||||
|
@ -220,11 +212,6 @@ int srslte_ue_dl_set_cell(srslte_ue_dl_t *q, srslte_cell_t cell)
|
||||||
fprintf(stderr, "Error resizing REGs\n");
|
fprintf(stderr, "Error resizing REGs\n");
|
||||||
return SRSLTE_ERROR;
|
return SRSLTE_ERROR;
|
||||||
}
|
}
|
||||||
if (srslte_cfo_resize(&q->sfo_correct, q->cell.nof_prb*SRSLTE_NRE)) {
|
|
||||||
fprintf(stderr, "Error resizing SFO correct\n");
|
|
||||||
return SRSLTE_ERROR;
|
|
||||||
}
|
|
||||||
srslte_cfo_set_tol(&q->sfo_correct, 1e-5f/q->fft[0].symbol_sz);
|
|
||||||
for (int port = 0; port < q->nof_rx_antennas; port++) {
|
for (int port = 0; port < q->nof_rx_antennas; port++) {
|
||||||
if (srslte_ofdm_rx_set_prb(&q->fft[port], q->cell.cp, q->cell.nof_prb)) {
|
if (srslte_ofdm_rx_set_prb(&q->fft[port], q->cell.cp, q->cell.nof_prb)) {
|
||||||
fprintf(stderr, "Error resizing FFT\n");
|
fprintf(stderr, "Error resizing FFT\n");
|
||||||
|
@ -348,10 +335,6 @@ void srslte_ue_dl_reset(srslte_ue_dl_t *q) {
|
||||||
bzero(&q->pdsch_cfg, sizeof(srslte_pdsch_cfg_t));
|
bzero(&q->pdsch_cfg, sizeof(srslte_pdsch_cfg_t));
|
||||||
}
|
}
|
||||||
|
|
||||||
void srslte_ue_dl_set_sample_offset(srslte_ue_dl_t * q, float sample_offset) {
|
|
||||||
q->sample_offset = sample_offset;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Applies the following operations to a subframe of synchronized samples:
|
/** Applies the following operations to a subframe of synchronized samples:
|
||||||
* - OFDM demodulation
|
* - OFDM demodulation
|
||||||
* - Channel estimation
|
* - Channel estimation
|
||||||
|
@ -395,17 +378,6 @@ int srslte_ue_dl_decode_fft_estimate_noguru(srslte_ue_dl_t *q, cf_t *input[SRSLT
|
||||||
/* Run FFT for all subframe data */
|
/* Run FFT for all subframe data */
|
||||||
for (int j=0;j<q->nof_rx_antennas;j++) {
|
for (int j=0;j<q->nof_rx_antennas;j++) {
|
||||||
srslte_ofdm_rx_sf_ng(&q->fft[j], input[j], q->sf_symbols_m[j]);
|
srslte_ofdm_rx_sf_ng(&q->fft[j], input[j], q->sf_symbols_m[j]);
|
||||||
|
|
||||||
/* Correct SFO multiplying by complex exponential in the time domain */
|
|
||||||
if (q->sample_offset) {
|
|
||||||
int nsym = SRSLTE_CP_NSYMB(q->cell.cp);
|
|
||||||
for (int i=0;i<2*nsym;i++) {
|
|
||||||
srslte_cfo_correct(&q->sfo_correct,
|
|
||||||
&q->sf_symbols_m[j][i*q->cell.nof_prb*SRSLTE_NRE],
|
|
||||||
&q->sf_symbols_m[j][i*q->cell.nof_prb*SRSLTE_NRE],
|
|
||||||
q->sample_offset / q->fft[j].symbol_sz);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return srslte_ue_dl_decode_estimate_mbsfn(q, sf_idx, cfi, SRSLTE_SF_NORM);
|
return srslte_ue_dl_decode_estimate_mbsfn(q, sf_idx, cfi, SRSLTE_SF_NORM);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -54,7 +54,6 @@ public:
|
||||||
void set_tti(uint32_t tti, uint32_t tx_tti);
|
void set_tti(uint32_t tti, uint32_t tx_tti);
|
||||||
void set_tx_time(srslte_timestamp_t tx_time, uint32_t next_offset);
|
void set_tx_time(srslte_timestamp_t tx_time, uint32_t next_offset);
|
||||||
void set_cfo(float cfo);
|
void set_cfo(float cfo);
|
||||||
void set_sample_offset(float sample_offset);
|
|
||||||
|
|
||||||
void set_ul_params(bool pregen_disabled = false);
|
void set_ul_params(bool pregen_disabled = false);
|
||||||
void set_crnti(uint16_t rnti);
|
void set_crnti(uint16_t rnti);
|
||||||
|
|
|
@ -258,10 +258,6 @@ void parse_args(all_args_t *args, int argc, char *argv[]) {
|
||||||
bpo::value<int>(&args->expert.phy.time_correct_period)->default_value(5),
|
bpo::value<int>(&args->expert.phy.time_correct_period)->default_value(5),
|
||||||
"Period for sampling time offset correction.")
|
"Period for sampling time offset correction.")
|
||||||
|
|
||||||
("expert.sfo_correct_disable",
|
|
||||||
bpo::value<bool>(&args->expert.phy.sfo_correct_disable)->default_value(false),
|
|
||||||
"Disables phase correction before channel estimation.")
|
|
||||||
|
|
||||||
("expert.sss_algorithm",
|
("expert.sss_algorithm",
|
||||||
bpo::value<string>(&args->expert.phy.sss_algorithm)->default_value("full"),
|
bpo::value<string>(&args->expert.phy.sss_algorithm)->default_value("full"),
|
||||||
"Selects the SSS estimation algorithm.")
|
"Selects the SSS estimation algorithm.")
|
||||||
|
|
|
@ -636,8 +636,6 @@ void phch_recv::run_thread()
|
||||||
worker->set_cfo(ul_dl_factor * metrics.cfo / 15000);
|
worker->set_cfo(ul_dl_factor * metrics.cfo / 15000);
|
||||||
worker_com->set_sync_metrics(metrics);
|
worker_com->set_sync_metrics(metrics);
|
||||||
|
|
||||||
worker->set_sample_offset(srslte_ue_sync_get_sfo(&ue_sync)/1000);
|
|
||||||
|
|
||||||
/* Compute TX time: Any transmission happens in TTI+4 thus advance 4 ms the reception time */
|
/* Compute TX time: Any transmission happens in TTI+4 thus advance 4 ms the reception time */
|
||||||
srslte_timestamp_t rx_time, tx_time, tx_time_prach;
|
srslte_timestamp_t rx_time, tx_time, tx_time_prach;
|
||||||
srslte_ue_sync_get_last_timestamp(&ue_sync, &rx_time);
|
srslte_ue_sync_get_last_timestamp(&ue_sync, &rx_time);
|
||||||
|
|
|
@ -190,14 +190,6 @@ void phch_worker::set_cfo(float cfo_)
|
||||||
cfo = cfo_;
|
cfo = cfo_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void phch_worker::set_sample_offset(float sample_offset)
|
|
||||||
{
|
|
||||||
if (phy->args->sfo_correct_disable) {
|
|
||||||
sample_offset = 0;
|
|
||||||
}
|
|
||||||
srslte_ue_dl_set_sample_offset(&ue_dl, sample_offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
void phch_worker::set_crnti(uint16_t rnti)
|
void phch_worker::set_crnti(uint16_t rnti)
|
||||||
{
|
{
|
||||||
srslte_ue_dl_set_rnti(&ue_dl, rnti);
|
srslte_ue_dl_set_rnti(&ue_dl, rnti);
|
||||||
|
|
|
@ -97,7 +97,6 @@ void phy::set_default_args(phy_args_t *args)
|
||||||
args->cfo_integer_enabled = false;
|
args->cfo_integer_enabled = false;
|
||||||
args->cfo_correct_tol_hz = 50;
|
args->cfo_correct_tol_hz = 50;
|
||||||
args->time_correct_period = 5;
|
args->time_correct_period = 5;
|
||||||
args->sfo_correct_disable = false;
|
|
||||||
args->sss_algorithm = "full";
|
args->sss_algorithm = "full";
|
||||||
args->estimator_fil_w = 0.1;
|
args->estimator_fil_w = 0.1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue