Add scheduling utility functions to check UL, DL, and mixed slot types in TDD config
* is_ul_slot: returns `true` for UL or mixed slots * is_dl_slot: returns `true` for DL or mixed slots * is_mixed_slot: returns `true` for mixed slots These functions use the TDD slot bitmap for slot type checks Co-authored-by: Guido Casati <guido.casati@firecell.io>
This commit is contained in:
committed by
Guido Casati
co-authored by
Guido Casati
parent
eccd3e840e
commit
0b7bee96cb
@@ -126,6 +126,51 @@ bool is_xlsch_in_slot(uint64_t bitmap, sub_frame_t slot) {
|
||||
return (bitmap >> (slot % 64)) & 0x01;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns true for:
|
||||
* (1) FDD
|
||||
* (2) Mixed slot with UL symbols
|
||||
* (3) Full UL slot
|
||||
*/
|
||||
bool is_ul_slot(const slot_t slot, const frame_structure_t *fs)
|
||||
{
|
||||
if (!fs->is_tdd)
|
||||
return true;
|
||||
const tdd_period_config_t *pc = &fs->period_cfg;
|
||||
slot_t s = get_slot_idx_in_period(slot, fs);
|
||||
return ((is_mixed_slot(s, fs) && pc->tdd_slot_bitmap[s].num_ul_symbols)
|
||||
|| (pc->tdd_slot_bitmap[s].slot_type == TDD_NR_UPLINK_SLOT));
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns true for:
|
||||
* (1) FDD
|
||||
* (2) Mixed slot with DL symbols
|
||||
* (3) Full DL slot
|
||||
*/
|
||||
bool is_dl_slot(const slot_t slot, const frame_structure_t *fs)
|
||||
{
|
||||
if (!fs->is_tdd)
|
||||
return true;
|
||||
const tdd_period_config_t *pc = &fs->period_cfg;
|
||||
slot_t s = get_slot_idx_in_period(slot, fs);
|
||||
return ((is_mixed_slot(s, fs) && pc->tdd_slot_bitmap[s].num_dl_symbols)
|
||||
|| (pc->tdd_slot_bitmap[s].slot_type == TDD_NR_DOWNLINK_SLOT));
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns true for:
|
||||
* (1) Mixed slot with DL and/or UL symbols
|
||||
*/
|
||||
bool is_mixed_slot(const slot_t slot, const frame_structure_t *fs)
|
||||
{
|
||||
if (!fs->is_tdd)
|
||||
return false;
|
||||
slot_t s = get_slot_idx_in_period(slot, fs);
|
||||
const tdd_period_config_t *pc = &fs->period_cfg;
|
||||
return pc->tdd_slot_bitmap[s].slot_type == TDD_NR_MIXED_SLOT;
|
||||
}
|
||||
|
||||
/* the structure nfapi_nr_ul_tti_request_t is very big, let's copy only what is necessary */
|
||||
static void copy_ul_tti_req(nfapi_nr_ul_tti_request_t *to, nfapi_nr_ul_tti_request_t *from)
|
||||
{
|
||||
|
||||
@@ -353,6 +353,9 @@ int nr_write_ce_dlsch_pdu(module_id_t module_idP,
|
||||
int binomial(int n, int k);
|
||||
|
||||
bool is_xlsch_in_slot(uint64_t bitmap, sub_frame_t slot);
|
||||
bool is_ul_slot(const slot_t slot, const frame_structure_t *fs);
|
||||
bool is_dl_slot(const slot_t slot, const frame_structure_t *fs);
|
||||
bool is_mixed_slot(const slot_t slot, const frame_structure_t *fs);
|
||||
|
||||
/* \brief Function to indicate a received SDU on ULSCH.
|
||||
@param Mod_id Instance ID of gNB
|
||||
|
||||
Reference in New Issue
Block a user