Merge branch 'next' into raa

master
Ismael Gomez 7 years ago
commit 60fd083206

@ -78,6 +78,7 @@ public:
void set_earfcn(std::vector<uint32_t> earfcns); void set_earfcn(std::vector<uint32_t> earfcns);
void force_freq(float dl_freq, float ul_freq); void force_freq(float dl_freq, float ul_freq);
void radio_overflow();
/********** RRC INTERFACE ********************/ /********** RRC INTERFACE ********************/
void reset(); void reset();

@ -73,13 +73,14 @@ public:
void start_plot(); void start_plot();
static void rf_msg(srslte_rf_error_t error); static void rf_msg(srslte_rf_error_t error);
void handle_rf_msg(srslte_rf_error_t error);
// UE metrics interface // UE metrics interface
bool get_metrics(ue_metrics_t &m); bool get_metrics(ue_metrics_t &m);
void pregenerate_signals(bool enable); void pregenerate_signals(bool enable);
void radio_overflow();
private: private:
virtual ~ue(); virtual ~ue();

@ -157,6 +157,8 @@ public:
virtual bool is_attached() = 0; virtual bool is_attached() = 0;
virtual void start_plot() = 0; virtual void start_plot() = 0;
virtual void radio_overflow() = 0;
void handle_rf_msg(srslte_rf_error_t error); void handle_rf_msg(srslte_rf_error_t error);
// UE metrics interface // UE metrics interface

@ -296,15 +296,17 @@ bool phch_recv::stop_sync() {
usleep(10000); usleep(10000);
cnt++; cnt++;
} }
if (!is_in_idle) {
Warning("SYNC: Could not go to IDLE\n");
}
return is_in_idle; return is_in_idle;
} }
} }
void phch_recv::reset_sync() { void phch_recv::reset_sync() {
wait_radio_reset();
Warning("SYNC: Resetting sync, cell_search_in_progress=%s\n", cell_search_in_progress?"yes":"no"); Warning("SYNC: Resetting sync, cell_search_in_progress=%s\n", cell_search_in_progress?"yes":"no");
search_p.reset(); search_p.reset();
srslte_ue_sync_reset(&ue_sync); srslte_ue_sync_reset(&ue_sync);
resync_sfn(true, true); resync_sfn(true, true);

@ -352,6 +352,11 @@ int phy::prach_tx_tti()
return prach_buffer.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() void phy::reset()
{ {
Info("Resetting PHY\n"); Info("Resetting PHY\n");

@ -297,10 +297,17 @@ bool ue::get_metrics(ue_metrics_t &m)
return false; return false;
} }
void ue::radio_overflow() {
phy.radio_overflow();
}
void ue::rf_msg(srslte_rf_error_t error) void ue::rf_msg(srslte_rf_error_t error)
{ {
ue_base *ue = ue_base::get_instance(LTE); ue_base *ue = ue_base::get_instance(LTE);
ue->handle_rf_msg(error); ue->handle_rf_msg(error);
if(error.type == srslte_rf_error_t::SRSLTE_RF_ERROR_OVERFLOW) {
ue->radio_overflow();
}
} }
} // namespace srsue } // namespace srsue

Loading…
Cancel
Save