Commit b9a49238 authored by cig's avatar cig

Configuration of msg3_deltaPreamble @ UE

- according to clause 7.1.1. of TS 38.213
parent 9788aff8
...@@ -205,9 +205,6 @@ void nr_get_prach_resources(module_id_t mod_id, ...@@ -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 { ...@@ -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]; ...@@ -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 ...@@ -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 ...@@ -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, ...@@ -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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment