Merge remote-tracking branch 'origin/NR_reworking_timers' into integration_2024_w04
This commit is contained in:
@@ -865,3 +865,44 @@ void nr_est_delay(int ofdm_symbol_size, const c16_t *ls_est, c16_t *ch_estimates
|
||||
delay->delay_max_val = max_val;
|
||||
delay->est_delay = max_pos - sync_pos;
|
||||
}
|
||||
|
||||
void nr_timer_start(NR_timer_t *timer)
|
||||
{
|
||||
timer->active = true;
|
||||
timer->counter = 0;
|
||||
}
|
||||
|
||||
void nr_timer_stop(NR_timer_t *timer)
|
||||
{
|
||||
timer->active = false;
|
||||
timer->counter = 0;
|
||||
}
|
||||
|
||||
bool is_nr_timer_active(NR_timer_t timer)
|
||||
{
|
||||
return timer.active;
|
||||
}
|
||||
|
||||
bool nr_timer_tick(NR_timer_t *timer)
|
||||
{
|
||||
bool expired = false;
|
||||
if (timer->active) {
|
||||
timer->counter += timer->step;
|
||||
expired = nr_timer_expired(*timer);
|
||||
if (expired)
|
||||
timer->active = false;
|
||||
}
|
||||
return expired;
|
||||
}
|
||||
|
||||
bool nr_timer_expired(NR_timer_t timer)
|
||||
{
|
||||
return (timer.counter >= timer.target);
|
||||
}
|
||||
|
||||
void nr_timer_setup(NR_timer_t *timer, const uint32_t target, const uint32_t step)
|
||||
{
|
||||
timer->target = target;
|
||||
timer->step = step;
|
||||
nr_timer_stop(timer);
|
||||
}
|
||||
|
||||
@@ -116,6 +116,49 @@ typedef struct {
|
||||
int delay_max_val;
|
||||
} delay_t;
|
||||
|
||||
typedef struct {
|
||||
bool active;
|
||||
uint32_t counter;
|
||||
uint32_t target;
|
||||
uint32_t step;
|
||||
} NR_timer_t;
|
||||
|
||||
/**
|
||||
* @brief To start a timer
|
||||
* @param timer Timer to be started
|
||||
*/
|
||||
void nr_timer_start(NR_timer_t *timer);
|
||||
/**
|
||||
* @brief To stop a timer
|
||||
* @param timer Timer to stopped
|
||||
*/
|
||||
void nr_timer_stop(NR_timer_t *timer);
|
||||
/**
|
||||
* @brief If active, it increases timer counter by an amout of units equal to step. It stops timer if expired
|
||||
* @param timer Timer to be handled
|
||||
* @return Indication if the timer is expired or not
|
||||
*/
|
||||
bool nr_timer_tick(NR_timer_t *timer);
|
||||
/**
|
||||
* @brief To setup a timer
|
||||
* @param timer Timer to setup
|
||||
* @param target Target value for timer (when reached, timer is considered expired)
|
||||
* @param step Amount of units to add to timer counter every tick
|
||||
*/
|
||||
void nr_timer_setup(NR_timer_t *timer, const uint32_t target, const uint32_t step);
|
||||
/**
|
||||
* @brief To check if a timer is expired
|
||||
* @param timer Timer to be checked
|
||||
* @return Indication if the timer is expired or not
|
||||
*/
|
||||
bool nr_timer_expired(NR_timer_t timer);
|
||||
/**
|
||||
* @brief To check if a timer is active
|
||||
* @param timer Timer to be checked
|
||||
* @return Indication if the timer is active or not
|
||||
*/
|
||||
bool is_nr_timer_active(NR_timer_t timer);
|
||||
|
||||
extern const nr_bandentry_t nr_bandtable[];
|
||||
|
||||
static inline int get_num_dmrs(uint16_t dmrs_mask ) {
|
||||
|
||||
Reference in New Issue
Block a user