mirror of https://github.com/PentHertz/srsLTE.git
Recover on radio overflow
This commit is contained in:
parent
45ea443377
commit
348117df3c
|
@ -78,6 +78,7 @@ public:
|
|||
void set_earfcn(std::vector<uint32_t> earfcns);
|
||||
void force_freq(float dl_freq, float ul_freq);
|
||||
|
||||
void radio_overflow();
|
||||
|
||||
/********** RRC INTERFACE ********************/
|
||||
void reset();
|
||||
|
|
|
@ -73,13 +73,14 @@ public:
|
|||
void start_plot();
|
||||
|
||||
static void rf_msg(srslte_rf_error_t error);
|
||||
void handle_rf_msg(srslte_rf_error_t error);
|
||||
|
||||
// UE metrics interface
|
||||
bool get_metrics(ue_metrics_t &m);
|
||||
|
||||
void pregenerate_signals(bool enable);
|
||||
|
||||
void radio_overflow();
|
||||
|
||||
private:
|
||||
virtual ~ue();
|
||||
|
||||
|
|
|
@ -157,6 +157,8 @@ public:
|
|||
virtual bool is_attached() = 0;
|
||||
virtual void start_plot() = 0;
|
||||
|
||||
virtual void radio_overflow() = 0;
|
||||
|
||||
void handle_rf_msg(srslte_rf_error_t error);
|
||||
|
||||
// UE metrics interface
|
||||
|
|
|
@ -296,15 +296,17 @@ bool phch_recv::stop_sync() {
|
|||
usleep(10000);
|
||||
cnt++;
|
||||
}
|
||||
if (!is_in_idle) {
|
||||
Warning("SYNC: Could not go to IDLE\n");
|
||||
}
|
||||
return is_in_idle;
|
||||
}
|
||||
}
|
||||
|
||||
void phch_recv::reset_sync() {
|
||||
|
||||
wait_radio_reset();
|
||||
|
||||
Warning("SYNC: Resetting sync, cell_search_in_progress=%s\n", cell_search_in_progress?"yes":"no");
|
||||
|
||||
search_p.reset();
|
||||
srslte_ue_sync_reset(&ue_sync);
|
||||
resync_sfn(true, true);
|
||||
|
|
|
@ -352,6 +352,11 @@ int phy::prach_tx_tti()
|
|||
return prach_buffer.tx_tti();
|
||||
}
|
||||
|
||||
// Handle the case of a radio overflow. Resynchronise inmediatly
|
||||
void phy::radio_overflow() {
|
||||
sf_recv.reset_sync();
|
||||
}
|
||||
|
||||
void phy::reset()
|
||||
{
|
||||
Info("Resetting PHY\n");
|
||||
|
|
|
@ -297,10 +297,17 @@ bool ue::get_metrics(ue_metrics_t &m)
|
|||
return false;
|
||||
}
|
||||
|
||||
void ue::radio_overflow() {
|
||||
phy.radio_overflow();
|
||||
}
|
||||
|
||||
void ue::rf_msg(srslte_rf_error_t error)
|
||||
{
|
||||
ue_base *ue = ue_base::get_instance(LTE);
|
||||
ue->handle_rf_msg(error);
|
||||
if(error.type == srslte_rf_error_t::SRSLTE_RF_ERROR_OVERFLOW) {
|
||||
ue->radio_overflow();
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace srsue
|
||||
|
|
Loading…
Reference in New Issue