mirror of https://github.com/PentHertz/srsLTE.git
use double precission for frequency in srsue and srsenb
This commit is contained in:
parent
834a081c09
commit
5af89513eb
|
@ -402,9 +402,9 @@ struct cell_cfg_t {
|
||||||
uint32_t pci;
|
uint32_t pci;
|
||||||
uint16_t root_seq_idx;
|
uint16_t root_seq_idx;
|
||||||
uint32_t dl_earfcn;
|
uint32_t dl_earfcn;
|
||||||
float dl_freq_hz;
|
double dl_freq_hz;
|
||||||
uint32_t ul_earfcn;
|
uint32_t ul_earfcn;
|
||||||
float ul_freq_hz;
|
double ul_freq_hz;
|
||||||
uint32_t initial_dl_cqi;
|
uint32_t initial_dl_cqi;
|
||||||
std::vector<scell_cfg_t> scell_list;
|
std::vector<scell_cfg_t> scell_list;
|
||||||
};
|
};
|
||||||
|
|
|
@ -406,9 +406,9 @@ SRSLTE_API uint8_t srslte_band_get_band(uint32_t dl_earfcn);
|
||||||
|
|
||||||
SRSLTE_API bool srslte_band_is_tdd(uint32_t band);
|
SRSLTE_API bool srslte_band_is_tdd(uint32_t band);
|
||||||
|
|
||||||
SRSLTE_API float srslte_band_fd(uint32_t dl_earfcn);
|
SRSLTE_API double srslte_band_fd(uint32_t dl_earfcn);
|
||||||
|
|
||||||
SRSLTE_API float srslte_band_fu(uint32_t ul_earfcn);
|
SRSLTE_API double srslte_band_fu(uint32_t ul_earfcn);
|
||||||
|
|
||||||
SRSLTE_API uint32_t srslte_band_ul_earfcn(uint32_t dl_earfcn);
|
SRSLTE_API uint32_t srslte_band_ul_earfcn(uint32_t dl_earfcn);
|
||||||
|
|
||||||
|
|
|
@ -484,10 +484,10 @@ uint32_t srslte_re_x_prb(uint32_t ns, uint32_t symbol, uint32_t nof_ports, uint3
|
||||||
|
|
||||||
struct lte_band {
|
struct lte_band {
|
||||||
uint8_t band;
|
uint8_t band;
|
||||||
float fd_low_mhz;
|
double fd_low_mhz;
|
||||||
uint32_t dl_earfcn_offset;
|
uint32_t dl_earfcn_offset;
|
||||||
uint32_t ul_earfcn_offset;
|
uint32_t ul_earfcn_offset;
|
||||||
float duplex_mhz;
|
double duplex_mhz;
|
||||||
enum band_geographical_area area;
|
enum band_geographical_area area;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -588,7 +588,7 @@ char* srslte_mimotype2str(srslte_tx_scheme_t mimo_type)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float get_fd(struct lte_band* band, uint32_t dl_earfcn)
|
static double get_fd(struct lte_band* band, uint32_t dl_earfcn)
|
||||||
{
|
{
|
||||||
if (dl_earfcn >= band->dl_earfcn_offset) {
|
if (dl_earfcn >= band->dl_earfcn_offset) {
|
||||||
return band->fd_low_mhz + 0.1 * (dl_earfcn - band->dl_earfcn_offset);
|
return band->fd_low_mhz + 0.1 * (dl_earfcn - band->dl_earfcn_offset);
|
||||||
|
@ -597,7 +597,7 @@ float get_fd(struct lte_band* band, uint32_t dl_earfcn)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float get_fu(struct lte_band* band, uint32_t ul_earfcn)
|
static double get_fu(struct lte_band* band, uint32_t ul_earfcn)
|
||||||
{
|
{
|
||||||
if (ul_earfcn >= band->ul_earfcn_offset) {
|
if (ul_earfcn >= band->ul_earfcn_offset) {
|
||||||
return band->fd_low_mhz - band->duplex_mhz + 0.1 * (ul_earfcn - band->ul_earfcn_offset);
|
return band->fd_low_mhz - band->duplex_mhz + 0.1 * (ul_earfcn - band->ul_earfcn_offset);
|
||||||
|
@ -632,7 +632,7 @@ uint8_t srslte_band_get_band(uint32_t dl_earfcn)
|
||||||
return lte_bands[i].band;
|
return lte_bands[i].band;
|
||||||
}
|
}
|
||||||
|
|
||||||
float srslte_band_fd(uint32_t dl_earfcn)
|
double srslte_band_fd(uint32_t dl_earfcn)
|
||||||
{
|
{
|
||||||
uint32_t i = SRSLTE_NOF_LTE_BANDS - 1;
|
uint32_t i = SRSLTE_NOF_LTE_BANDS - 1;
|
||||||
if (dl_earfcn > lte_bands[i].dl_earfcn_offset) {
|
if (dl_earfcn > lte_bands[i].dl_earfcn_offset) {
|
||||||
|
@ -645,7 +645,7 @@ float srslte_band_fd(uint32_t dl_earfcn)
|
||||||
return get_fd(<e_bands[i], dl_earfcn);
|
return get_fd(<e_bands[i], dl_earfcn);
|
||||||
}
|
}
|
||||||
|
|
||||||
float srslte_band_fu(uint32_t ul_earfcn)
|
double srslte_band_fu(uint32_t ul_earfcn)
|
||||||
{
|
{
|
||||||
uint32_t i = SRSLTE_NOF_LTE_BANDS - 1;
|
uint32_t i = SRSLTE_NOF_LTE_BANDS - 1;
|
||||||
if (ul_earfcn > lte_bands[i].ul_earfcn_offset) {
|
if (ul_earfcn > lte_bands[i].ul_earfcn_offset) {
|
||||||
|
|
|
@ -89,9 +89,9 @@ public:
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
};
|
};
|
||||||
float get_ul_freq_hz(uint32_t cc_idx)
|
double get_ul_freq_hz(uint32_t cc_idx)
|
||||||
{
|
{
|
||||||
float ret = 0.0f;
|
double ret = 0.0f;
|
||||||
|
|
||||||
if (cc_idx < cell_list.size()) {
|
if (cc_idx < cell_list.size()) {
|
||||||
ret = cell_list[cc_idx].ul_freq_hz;
|
ret = cell_list[cc_idx].ul_freq_hz;
|
||||||
|
@ -99,9 +99,9 @@ public:
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
};
|
};
|
||||||
float get_dl_freq_hz(uint32_t cc_idx)
|
double get_dl_freq_hz(uint32_t cc_idx)
|
||||||
{
|
{
|
||||||
float ret = 0.0f;
|
double ret = 0.0;
|
||||||
|
|
||||||
if (cc_idx < cell_list.size()) {
|
if (cc_idx < cell_list.size()) {
|
||||||
ret = cell_list[cc_idx].dl_freq_hz;
|
ret = cell_list[cc_idx].dl_freq_hz;
|
||||||
|
|
|
@ -34,8 +34,8 @@ struct phy_cell_cfg_t {
|
||||||
srslte_cell_t cell;
|
srslte_cell_t cell;
|
||||||
uint32_t rf_port;
|
uint32_t rf_port;
|
||||||
uint32_t cell_id;
|
uint32_t cell_id;
|
||||||
float dl_freq_hz;
|
double dl_freq_hz;
|
||||||
float ul_freq_hz;
|
double ul_freq_hz;
|
||||||
uint32_t root_seq_idx;
|
uint32_t root_seq_idx;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -911,7 +911,7 @@ int set_derived_args(all_args_t* args_, rrc_cfg_t* rrc_cfg_, phy_cfg_t* phy_cfg_
|
||||||
if (cfg.dl_freq_hz > 0) {
|
if (cfg.dl_freq_hz > 0) {
|
||||||
phy_cell_cfg.dl_freq_hz = cfg.dl_freq_hz;
|
phy_cell_cfg.dl_freq_hz = cfg.dl_freq_hz;
|
||||||
} else {
|
} else {
|
||||||
phy_cell_cfg.dl_freq_hz = 1e6f * srslte_band_fd(cfg.dl_earfcn);
|
phy_cell_cfg.dl_freq_hz = 1e6 * srslte_band_fd(cfg.dl_earfcn);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cfg.ul_freq_hz > 0) {
|
if (cfg.ul_freq_hz > 0) {
|
||||||
|
@ -920,7 +920,7 @@ int set_derived_args(all_args_t* args_, rrc_cfg_t* rrc_cfg_, phy_cfg_t* phy_cfg_
|
||||||
if (cfg.ul_earfcn == 0) {
|
if (cfg.ul_earfcn == 0) {
|
||||||
cfg.ul_earfcn = srslte_band_ul_earfcn(cfg.dl_earfcn);
|
cfg.ul_earfcn = srslte_band_ul_earfcn(cfg.dl_earfcn);
|
||||||
}
|
}
|
||||||
phy_cell_cfg.ul_freq_hz = 1e6f * srslte_band_fu(cfg.ul_earfcn);
|
phy_cell_cfg.ul_freq_hz = 1e6 * srslte_band_fu(cfg.ul_earfcn);
|
||||||
}
|
}
|
||||||
phy_cfg_->phy_cell_cfg.push_back(phy_cell_cfg);
|
phy_cfg_->phy_cell_cfg.push_back(phy_cell_cfg);
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,8 +98,8 @@ void txrx::run_thread()
|
||||||
|
|
||||||
// Set Tx/Rx frequencies
|
// Set Tx/Rx frequencies
|
||||||
for (uint32_t cc_idx = 0; cc_idx < worker_com->get_nof_carriers(); cc_idx++) {
|
for (uint32_t cc_idx = 0; cc_idx < worker_com->get_nof_carriers(); cc_idx++) {
|
||||||
float tx_freq_hz = worker_com->get_dl_freq_hz(cc_idx);
|
double tx_freq_hz = worker_com->get_dl_freq_hz(cc_idx);
|
||||||
float rx_freq_hz = worker_com->get_ul_freq_hz(cc_idx);
|
double rx_freq_hz = worker_com->get_ul_freq_hz(cc_idx);
|
||||||
uint32_t rf_port = worker_com->get_rf_port(cc_idx);
|
uint32_t rf_port = worker_com->get_rf_port(cc_idx);
|
||||||
log_h->console(
|
log_h->console(
|
||||||
"Setting frequency: DL=%.1f Mhz, UL=%.1f MHz for cc_idx=%d\n", tx_freq_hz / 1e6f, rx_freq_hz / 1e6f, cc_idx);
|
"Setting frequency: DL=%.1f Mhz, UL=%.1f MHz for cc_idx=%d\n", tx_freq_hz / 1e6f, rx_freq_hz / 1e6f, cc_idx);
|
||||||
|
|
|
@ -454,8 +454,8 @@ void phy::set_config(srslte::phy_cfg_t& config_, uint32_t cc_idx, uint32_t earfc
|
||||||
} else if (cell_info) {
|
} else if (cell_info) {
|
||||||
// Change frequency only if the earfcn was modified
|
// Change frequency only if the earfcn was modified
|
||||||
if (common.scell_cfg[cc_idx].earfcn != earfcn) {
|
if (common.scell_cfg[cc_idx].earfcn != earfcn) {
|
||||||
float dl_freq = srslte_band_fd(earfcn) * 1e6f;
|
double dl_freq = srslte_band_fd(earfcn) * 1e6;
|
||||||
float ul_freq = srslte_band_fu(srslte_band_ul_earfcn(earfcn)) * 1e6f;
|
double ul_freq = srslte_band_fu(srslte_band_ul_earfcn(earfcn)) * 1e6;
|
||||||
radio->set_rx_freq(cc_idx, dl_freq);
|
radio->set_rx_freq(cc_idx, dl_freq);
|
||||||
radio->set_tx_freq(cc_idx, ul_freq);
|
radio->set_tx_freq(cc_idx, ul_freq);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue