|
|
|
@ -33,8 +33,10 @@ extern "C" {
|
|
|
|
|
/**
|
|
|
|
|
* @brief Puts in the resource grid the DeModulation Reference Signals for decoding PDCCH.
|
|
|
|
|
*
|
|
|
|
|
* \remark: Implemented as specified by TS 38.211 V15.8.0 Section 7.1.4.3
|
|
|
|
|
|
|
|
|
|
* @remark: Implemented as specified by TS 38.211 V15.8.0 Section 7.1.4.3
|
|
|
|
|
*
|
|
|
|
|
* @attention it expects sf_symbols to be size SRSLTE_NR_SLOT_LEN_RE(cfg->carrier.nof_prb)
|
|
|
|
|
*
|
|
|
|
|
* @param cfg Configuration that includes Carrier, CORESET, Search Space and PDCCH candidate
|
|
|
|
|
* @param slot_idx Slot index in the frame
|
|
|
|
|
* @param sf_symbols is the resource grid where the DMRS resource elements will be written
|
|
|
|
@ -48,6 +50,7 @@ SRSLTE_API int srslte_dmrs_pdcch_put(const srslte_nr_pdcch_cfg_t* cfg, uint32_t
|
|
|
|
|
* @see srslte_dmrs_pdcch_estimator_init
|
|
|
|
|
* @see srslte_dmrs_pdcch_estimator_free
|
|
|
|
|
* @see srslte_dmrs_pdcch_estimator_estimate
|
|
|
|
|
* @see srslte_dmrs_pdcch_estimator_measure
|
|
|
|
|
*/
|
|
|
|
|
typedef struct SRSLTE_API {
|
|
|
|
|
/// Current estimator carrier configuration
|
|
|
|
@ -79,7 +82,7 @@ typedef struct SRSLTE_API {
|
|
|
|
|
/**
|
|
|
|
|
* @brief Initialises the PDCCH DMRS channel estimator from a given carrier and CORESET configuration
|
|
|
|
|
*
|
|
|
|
|
* \attention The initialization function expects the object being previously zeroed
|
|
|
|
|
* \attention The initialization function expects the object being previously zeroed on its first call
|
|
|
|
|
* \attention Initialization is required every time the carrier and/or CORESET changes. No free is required between
|
|
|
|
|
* initializations.
|
|
|
|
|
*
|
|
|
|
@ -99,14 +102,13 @@ SRSLTE_API int srslte_dmrs_pdcch_estimator_init(srslte_dmrs_pdcch_estimator_t* q
|
|
|
|
|
SRSLTE_API void srslte_dmrs_pdcch_estimator_free(srslte_dmrs_pdcch_estimator_t* q);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Estimates the PDCCH channel from the received PDCCH's DMRS. The DMRS are only transmitted in the REG where the
|
|
|
|
|
* PDCCH is allocated.
|
|
|
|
|
*
|
|
|
|
|
* The most efficient way is estimating the overall CORESET independently whether there is data or not. Said so, the
|
|
|
|
|
* output grid `estimates` shall be at least as big as the CORESET.
|
|
|
|
|
* @brief Estimates the configured CORESET channel from the received PDCCH's DMRS.
|
|
|
|
|
*
|
|
|
|
|
* This function is designed to be called prior to the PDCCH blind decoding and shall be called only once for every
|
|
|
|
|
* CORESET.
|
|
|
|
|
* CORESET in every slot.
|
|
|
|
|
*
|
|
|
|
|
* The channel estimate measurements are performed at PDCCH candidate level through the function
|
|
|
|
|
* srslte_dmrs_pdcch_estimator_measure.
|
|
|
|
|
*
|
|
|
|
|
* @param cfg Configuration that includes Carrier, CORESET and the Search Space
|
|
|
|
|
* @param slot_idx Slot index in the frame
|
|
|
|
@ -118,6 +120,8 @@ SRSLTE_API int srslte_dmrs_pdcch_estimate(srslte_dmrs_pdcch_estimator_t* q, uint
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief PDSCH DMRS measurement results
|
|
|
|
|
*
|
|
|
|
|
* @see srslte_dmrs_pdcch_estimator_measure
|
|
|
|
|
*/
|
|
|
|
|
typedef struct SRSLTE_API {
|
|
|
|
|
/// Linear reference signal received power (RSRP). Measure correlation
|
|
|
|
@ -126,7 +130,7 @@ typedef struct SRSLTE_API {
|
|
|
|
|
/// Energy per resource element (EPRE)
|
|
|
|
|
float epre;
|
|
|
|
|
|
|
|
|
|
/// CFO Measure in Hz (only available for durations 2 and 3)
|
|
|
|
|
/// CFO Measure in Hz (only available for CORESET durations 2 and 3)
|
|
|
|
|
float cfo_hz;
|
|
|
|
|
|
|
|
|
|
/// Measure synchronization error in micro-seconds
|
|
|
|
|