Configuration of msg3_deltaPreamble @ UE
- according to clause 7.1.1. of TS 38.213
This commit is contained in:
@@ -205,9 +205,6 @@ void nr_get_prach_resources(module_id_t mod_id,
|
|||||||
AssertFatal(1 == 0,"Unknown messagePowerOffsetGroupB %lu\n", nr_rach_ConfigCommon->groupBconfigured->messagePowerOffsetGroupB);
|
AssertFatal(1 == 0,"Unknown messagePowerOffsetGroupB %lu\n", nr_rach_ConfigCommon->groupBconfigured->messagePowerOffsetGroupB);
|
||||||
}
|
}
|
||||||
|
|
||||||
// todo Msg3-DeltaPreamble should be provided from higher layers, otherwise is 0
|
|
||||||
mac->deltaPreamble_Msg3 = 0;
|
|
||||||
deltaPreamble_Msg3 = mac->deltaPreamble_Msg3;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PLThreshold = prach_resources->RA_PCMAX - nr_rach_ConfigCommon->rach_ConfigGeneric.preambleReceivedTargetPower - deltaPreamble_Msg3 - messagePowerOffsetGroupB;
|
PLThreshold = prach_resources->RA_PCMAX - nr_rach_ConfigCommon->rach_ConfigGeneric.preambleReceivedTargetPower - deltaPreamble_Msg3 - messagePowerOffsetGroupB;
|
||||||
|
|||||||
@@ -244,8 +244,6 @@ typedef struct {
|
|||||||
uint8_t RA_contention_resolution_timer_active;
|
uint8_t RA_contention_resolution_timer_active;
|
||||||
/// Random-access Contention Resolution Timer count value
|
/// Random-access Contention Resolution Timer count value
|
||||||
uint8_t RA_contention_resolution_cnt;
|
uint8_t RA_contention_resolution_cnt;
|
||||||
/// Msg3 Delta Preamble
|
|
||||||
int8_t deltaPreamble_Msg3;
|
|
||||||
/// Received TPC command (in dB) from RAR
|
/// Received TPC command (in dB) from RAR
|
||||||
int8_t Msg3_TPC;
|
int8_t Msg3_TPC;
|
||||||
/// Flag to monitor if matching RAPID was received in RAR
|
/// Flag to monitor if matching RAPID was received in RAR
|
||||||
|
|||||||
@@ -55,7 +55,6 @@ extern int64_t table_6_3_3_2_3_prachConfig_Index [256][9];
|
|||||||
static uint8_t first_Msg3 = 0;
|
static uint8_t first_Msg3 = 0;
|
||||||
static int starting_preamble_nb = 0;
|
static int starting_preamble_nb = 0;
|
||||||
static long cb_preambles_per_ssb; // Nb of preambles per SSB
|
static long cb_preambles_per_ssb; // Nb of preambles per SSB
|
||||||
static int deltaPreamble_Msg3 = 0;
|
|
||||||
static uint8_t RA_usedGroupA;
|
static uint8_t RA_usedGroupA;
|
||||||
|
|
||||||
void nr_get_RA_window(NR_UE_MAC_INST_t *mac);
|
void nr_get_RA_window(NR_UE_MAC_INST_t *mac);
|
||||||
@@ -146,6 +145,7 @@ void ra_preambles_config(NR_PRACH_RESOURCES_t *prach_resources, NR_UE_MAC_INST_t
|
|||||||
int sizeOfRA_PreamblesGroupA = 0;
|
int sizeOfRA_PreamblesGroupA = 0;
|
||||||
int messagePowerOffsetGroupB = 0;
|
int messagePowerOffsetGroupB = 0;
|
||||||
int PLThreshold;
|
int PLThreshold;
|
||||||
|
long deltaPreamble_Msg3 = 0;
|
||||||
uint8_t noGroupB = 0;
|
uint8_t noGroupB = 0;
|
||||||
NR_ServingCellConfigCommon_t *scc = mac->scc;
|
NR_ServingCellConfigCommon_t *scc = mac->scc;
|
||||||
NR_RACH_ConfigCommon_t *nr_rach_ConfigCommon = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup;
|
NR_RACH_ConfigCommon_t *nr_rach_ConfigCommon = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup;
|
||||||
@@ -153,6 +153,12 @@ void ra_preambles_config(NR_PRACH_RESOURCES_t *prach_resources, NR_UE_MAC_INST_t
|
|||||||
uint8_t Msg3_size = mac->RA_Msg3_size;
|
uint8_t Msg3_size = mac->RA_Msg3_size;
|
||||||
|
|
||||||
if (prach_resources->RA_TYPE == RA_4STEP){
|
if (prach_resources->RA_TYPE == RA_4STEP){
|
||||||
|
|
||||||
|
if (scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->msg3_DeltaPreamble){
|
||||||
|
deltaPreamble_Msg3 = *scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->msg3_DeltaPreamble;
|
||||||
|
LOG_D(MAC, "In %s: deltaPreamble_Msg3 set to %ld\n", __FUNCTION__, deltaPreamble_Msg3);
|
||||||
|
}
|
||||||
|
|
||||||
if (!nr_rach_ConfigCommon->groupBconfigured) {
|
if (!nr_rach_ConfigCommon->groupBconfigured) {
|
||||||
noGroupB = 1;
|
noGroupB = 1;
|
||||||
LOG_D(MAC, "In %s:%d: preambles group B is not configured...\n", __FUNCTION__, __LINE__);
|
LOG_D(MAC, "In %s:%d: preambles group B is not configured...\n", __FUNCTION__, __LINE__);
|
||||||
@@ -324,12 +330,10 @@ void nr_get_prach_resources(module_id_t mod_id,
|
|||||||
// todo:
|
// todo:
|
||||||
// - selection of SSB with SS-RSRP above rsrp-ThresholdSSB else select any SSB
|
// - selection of SSB with SS-RSRP above rsrp-ThresholdSSB else select any SSB
|
||||||
// - determine next available PRACH occasion
|
// - determine next available PRACH occasion
|
||||||
// - Msg3-DeltaPreamble should be provided from higher layers, otherwise is 0
|
|
||||||
|
|
||||||
// rsrp_ThresholdSSB = *nr_rach_ConfigCommon->rsrp_ThresholdSSB;
|
// rsrp_ThresholdSSB = *nr_rach_ConfigCommon->rsrp_ThresholdSSB;
|
||||||
int16_t dl_pathloss = get_nr_PL(mod_id, CC_id, gNB_id);
|
int16_t dl_pathloss = get_nr_PL(mod_id, CC_id, gNB_id);
|
||||||
ssb_rach_config(prach_resources, nr_rach_ConfigCommon, prach_pdu);
|
ssb_rach_config(prach_resources, nr_rach_ConfigCommon, prach_pdu);
|
||||||
mac->deltaPreamble_Msg3 = deltaPreamble_Msg3;
|
|
||||||
ra_preambles_config(prach_resources, mac, dl_pathloss);
|
ra_preambles_config(prach_resources, mac, dl_pathloss);
|
||||||
LOG_D(MAC, "[RAPROC] - Selected RA preamble index %d for contention-based random access procedure... \n", prach_resources->ra_PreambleIndex);
|
LOG_D(MAC, "[RAPROC] - Selected RA preamble index %d for contention-based random access procedure... \n", prach_resources->ra_PreambleIndex);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user