mirror of https://github.com/PentHertz/srsLTE.git
parent
c1e6703054
commit
81748c7b1c
|
@ -66,7 +66,11 @@ private:
|
||||||
srslte::block_queue<std::function<void(void)> > cmd_queue;
|
srslte::block_queue<std::function<void(void)> > cmd_queue;
|
||||||
};
|
};
|
||||||
|
|
||||||
class phy final : public ue_lte_phy_base, public ue_nr_phy_base, public srslte::thread
|
class phy final : public ue_lte_phy_base,
|
||||||
|
#if HAVE_5GNR
|
||||||
|
public ue_nr_phy_base,
|
||||||
|
#endif // HAVE_5GNR
|
||||||
|
public srslte::thread
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit phy(srslog::sink& log_sink) :
|
explicit phy(srslog::sink& log_sink) :
|
||||||
|
@ -80,7 +84,6 @@ public:
|
||||||
prach_buffer(logger_phy),
|
prach_buffer(logger_phy),
|
||||||
thread("PHY")
|
thread("PHY")
|
||||||
{}
|
{}
|
||||||
bool set_config(const srslte::phy_cfg_nr_t& cfg) final;
|
|
||||||
|
|
||||||
~phy() final { stop(); }
|
~phy() final { stop(); }
|
||||||
|
|
||||||
|
@ -90,8 +93,6 @@ public:
|
||||||
// Init for LTE PHYs
|
// Init for LTE PHYs
|
||||||
int init(const phy_args_t& args_, stack_interface_phy_lte* stack_, srslte::radio_interface_phy* radio_) final;
|
int init(const phy_args_t& args_, stack_interface_phy_lte* stack_, srslte::radio_interface_phy* radio_) final;
|
||||||
|
|
||||||
int init(const phy_args_nr_t& args_, stack_interface_phy_nr* stack_, srslte::radio_interface_phy* radio_) final;
|
|
||||||
|
|
||||||
void stop() final;
|
void stop() final;
|
||||||
|
|
||||||
void wait_initialize() final;
|
void wait_initialize() final;
|
||||||
|
@ -173,10 +174,18 @@ public:
|
||||||
const static int DEFAULT_WORKERS = 4;
|
const static int DEFAULT_WORKERS = 4;
|
||||||
|
|
||||||
std::string get_type() final { return "lte_soft"; }
|
std::string get_type() final { return "lte_soft"; }
|
||||||
|
|
||||||
|
#ifdef HAVE_5GNR
|
||||||
|
int init(const phy_args_nr_t& args_, stack_interface_phy_nr* stack_, srslte::radio_interface_phy* radio_) final;
|
||||||
|
bool set_config(const srslte::phy_cfg_nr_t& cfg) final;
|
||||||
int set_ul_grant(std::array<uint8_t, SRSLTE_RAR_UL_GRANT_NBITS> packed_ul_grant) final;
|
int set_ul_grant(std::array<uint8_t, SRSLTE_RAR_UL_GRANT_NBITS> packed_ul_grant) final;
|
||||||
void send_prach(uint32_t prach_occasion, uint32_t preamble_index, int preamble_received_target_power) final;
|
void send_prach(const uint32_t prach_occasion,
|
||||||
|
const int preamble_index,
|
||||||
|
const float preamble_received_target_power,
|
||||||
|
const float ta_base_sec = 0.0f) final;
|
||||||
int tx_request(const tx_request_t& request) final;
|
int tx_request(const tx_request_t& request) final;
|
||||||
void set_earfcn(std::vector<uint32_t> earfcns) final;
|
void set_earfcn(std::vector<uint32_t> earfcns) final;
|
||||||
|
#endif // HAVE_5GNR
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void run_thread() final;
|
void run_thread() final;
|
||||||
|
|
|
@ -106,15 +106,6 @@ int phy::init(const phy_args_t& args_, stack_interface_phy_lte* stack_, srslte::
|
||||||
return SRSLTE_SUCCESS;
|
return SRSLTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int phy::init(const phy_args_nr_t& args_, stack_interface_phy_nr* stack_, srslte::radio_interface_phy* radio_)
|
|
||||||
{
|
|
||||||
if (!nr_workers.init(args_, &common, stack_, log_sink, WORKERS_THREAD_PRIO)) {
|
|
||||||
return SRSLTE_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
return SRSLTE_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
int phy::init(const phy_args_t& args_)
|
int phy::init(const phy_args_t& args_)
|
||||||
{
|
{
|
||||||
std::unique_lock<std::mutex> lock(config_mutex);
|
std::unique_lock<std::mutex> lock(config_mutex);
|
||||||
|
@ -614,12 +605,25 @@ void phy::set_mch_period_stop(uint32_t stop)
|
||||||
common.set_mch_period_stop(stop);
|
common.set_mch_period_stop(stop);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_5GNR
|
||||||
|
int phy::init(const phy_args_nr_t& args_, stack_interface_phy_nr* stack_, srslte::radio_interface_phy* radio_)
|
||||||
|
{
|
||||||
|
if (!nr_workers.init(args_, &common, stack_, log_sink, WORKERS_THREAD_PRIO)) {
|
||||||
|
return SRSLTE_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
return SRSLTE_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
int phy::set_ul_grant(std::array<uint8_t, SRSLTE_RAR_UL_GRANT_NBITS> packed_ul_grant)
|
int phy::set_ul_grant(std::array<uint8_t, SRSLTE_RAR_UL_GRANT_NBITS> packed_ul_grant)
|
||||||
{
|
{
|
||||||
return nr_workers.set_ul_grant(packed_ul_grant);
|
return nr_workers.set_ul_grant(packed_ul_grant);
|
||||||
}
|
}
|
||||||
|
|
||||||
void phy::send_prach(uint32_t prach_occasion, uint32_t preamble_index, int preamble_received_target_power)
|
void phy::send_prach(const uint32_t prach_occasion,
|
||||||
|
const int preamble_index,
|
||||||
|
const float preamble_received_target_power,
|
||||||
|
const float ta_base_sec)
|
||||||
{
|
{
|
||||||
nr_workers.send_prach(prach_occasion, preamble_index, preamble_received_target_power);
|
nr_workers.send_prach(prach_occasion, preamble_index, preamble_received_target_power);
|
||||||
}
|
}
|
||||||
|
@ -638,5 +642,6 @@ bool phy::set_config(const srslte::phy_cfg_nr_t& cfg)
|
||||||
{
|
{
|
||||||
return nr_workers.set_config(cfg);
|
return nr_workers.set_config(cfg);
|
||||||
}
|
}
|
||||||
|
#endif // HAVE_5GNR
|
||||||
|
|
||||||
} // namespace srsue
|
} // namespace srsue
|
||||||
|
|
Loading…
Reference in New Issue