mirror of https://github.com/PentHertz/srsLTE.git
phy,mbms: updating mutex and cvar in embms
This commit is contained in:
parent
736a536d32
commit
acae2d88c6
|
@ -300,8 +300,8 @@ private:
|
||||||
std::mutex cell_gain_mutex;
|
std::mutex cell_gain_mutex;
|
||||||
|
|
||||||
bool have_mtch_stop = false;
|
bool have_mtch_stop = false;
|
||||||
pthread_mutex_t mtch_mutex = {};
|
std::mutex mtch_mutex;
|
||||||
pthread_cond_t mtch_cvar = {};
|
std::condition_variable mtch_cvar;
|
||||||
srsran::phy_cfg_mbsfn_t mbsfn = {};
|
srsran::phy_cfg_mbsfn_t mbsfn = {};
|
||||||
bool sib13_configured = false;
|
bool sib13_configured = false;
|
||||||
bool mcch_configured = false;
|
bool mcch_configured = false;
|
||||||
|
|
|
@ -41,8 +41,6 @@ bool phy_common::init(const phy_cell_cfg_list_t& cell_list_,
|
||||||
cell_list_lte = cell_list_;
|
cell_list_lte = cell_list_;
|
||||||
cell_list_nr = cell_list_nr_;
|
cell_list_nr = cell_list_nr_;
|
||||||
|
|
||||||
pthread_mutex_init(&mtch_mutex, nullptr);
|
|
||||||
pthread_cond_init(&mtch_cvar, nullptr);
|
|
||||||
|
|
||||||
// Instantiate DL channel emulator
|
// Instantiate DL channel emulator
|
||||||
if (params.dl_channel_args.enable) {
|
if (params.dl_channel_args.enable) {
|
||||||
|
@ -162,11 +160,10 @@ void phy_common::worker_end(const worker_context_t& w_ctx, const bool& tx_enable
|
||||||
|
|
||||||
void phy_common::set_mch_period_stop(uint32_t stop)
|
void phy_common::set_mch_period_stop(uint32_t stop)
|
||||||
{
|
{
|
||||||
pthread_mutex_lock(&mtch_mutex);
|
std::lock_guard<std::mutex> lock(mtch_mutex);
|
||||||
have_mtch_stop = true;
|
have_mtch_stop = true;
|
||||||
mch_period_stop = stop;
|
mch_period_stop = stop;
|
||||||
pthread_cond_signal(&mtch_cvar);
|
mtch_cvar.notify_one();
|
||||||
pthread_mutex_unlock(&mtch_mutex);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void phy_common::configure_mbsfn(srsran::phy_cfg_mbsfn_t* cfg)
|
void phy_common::configure_mbsfn(srsran::phy_cfg_mbsfn_t* cfg)
|
||||||
|
@ -286,9 +283,11 @@ bool phy_common::is_mch_subframe(srsran_mbsfn_cfg_t* cfg, uint32_t phy_tti)
|
||||||
uint32_t mbsfn_per_frame = mbsfn.mcch.pmch_info_list[0].sf_alloc_end /
|
uint32_t mbsfn_per_frame = mbsfn.mcch.pmch_info_list[0].sf_alloc_end /
|
||||||
+enum_to_number(mbsfn.mcch.pmch_info_list[0].mch_sched_period);
|
+enum_to_number(mbsfn.mcch.pmch_info_list[0].mch_sched_period);
|
||||||
uint32_t sf_alloc_idx = frame_alloc_idx * mbsfn_per_frame + ((sf < 4) ? sf - 1 : sf - 3);
|
uint32_t sf_alloc_idx = frame_alloc_idx * mbsfn_per_frame + ((sf < 4) ? sf - 1 : sf - 3);
|
||||||
|
std::unique_lock<std::mutex> lock(mtch_mutex);
|
||||||
while (!have_mtch_stop) {
|
while (!have_mtch_stop) {
|
||||||
pthread_cond_wait(&mtch_cvar, &mtch_mutex);
|
mtch_cvar.wait(lock);
|
||||||
}
|
}
|
||||||
|
lock.unlock();
|
||||||
for (uint32_t i = 0; i < mbsfn.mcch.nof_pmch_info; i++) {
|
for (uint32_t i = 0; i < mbsfn.mcch.nof_pmch_info; i++) {
|
||||||
if (sf_alloc_idx <= mch_period_stop) {
|
if (sf_alloc_idx <= mch_period_stop) {
|
||||||
cfg->mbsfn_mcs = mbsfn.mcch.pmch_info_list[i].data_mcs;
|
cfg->mbsfn_mcs = mbsfn.mcch.pmch_info_list[i].data_mcs;
|
||||||
|
|
Loading…
Reference in New Issue