Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
常顺宇
OpenXG-RAN
Commits
ae5f30ec
Commit
ae5f30ec
authored
5 years ago
by
cig
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Set flag to generate PRACH only on PRACH slot
parent
3bb82a02
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
88 additions
and
29 deletions
+88
-29
openair1/PHY/defs_nr_UE.h
openair1/PHY/defs_nr_UE.h
+0
-2
openair1/PHY/defs_nr_common.h
openair1/PHY/defs_nr_common.h
+2
-0
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+8
-9
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
+53
-18
openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c
+25
-0
No files found.
openair1/PHY/defs_nr_UE.h
View file @
ae5f30ec
...
...
@@ -1009,8 +1009,6 @@ typedef struct {
int
dlsch_mtch_trials
[
MAX_MBSFN_AREA
][
NUMBER_OF_CONNECTED_eNB_MAX
];
int
current_dlsch_cqi
[
NUMBER_OF_CONNECTED_eNB_MAX
];
unsigned
char
first_run_timing_advance
[
NUMBER_OF_CONNECTED_eNB_MAX
];
uint8_t
generate_prach
;
uint8_t
generate_nr_prach
;
uint8_t
prach_cnt
;
uint8_t
prach_PreambleIndex
;
// uint8_t prach_timer;
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/defs_nr_common.h
View file @
ae5f30ec
...
...
@@ -246,6 +246,8 @@ typedef struct {
uint16_t
ra_RNTI
;
/// Pointer to Msg3 payload for UL-grant
uint8_t
*
Msg3
;
/// Flag for the Msg1 generation
uint8_t
generate_nr_prach
;
}
NR_PRACH_RESOURCES_t
;
typedef
struct
NR_DL_FRAME_PARMS
NR_DL_FRAME_PARMS
;
...
...
This diff is collapsed.
Click to expand it.
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
View file @
ae5f30ec
...
...
@@ -2270,7 +2270,7 @@ void phy_procedures_nrUE_TX(PHY_VARS_NR_UE *ue,
nr_ue_prach_procedures
(
ue
,
proc
,
gNB_id
,
mode
);
}
else
{
ue->generate_nr_prach = 0;
ue
->
prach_resources
[
gNB_id
]
->
generate_nr_prach
=
0
;
}
LOG_I
(
PHY
,
"****** end TX-Chain for AbsSubframe %d.%d ******
\n
"
,
frame_tx
,
slot_tx
);
...
...
@@ -4503,12 +4503,12 @@ void nr_ue_prach_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, uint8_t
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_PRACH
,
VCD_FUNCTION_IN
);
ue->generate_nr_prach = 0;
if
(
ue
->
mac_enabled
==
0
){
// prach_resources->ra_PreambleIndex = preamble_tx;
prach_resources
->
ra_TDD_map_index
=
0
;
prach_resources
->
ra_PREAMBLE_RECEIVED_TARGET_POWER
=
10
;
prach_resources
->
ra_RNTI
=
0x1234
;
prach_resources
->
generate_nr_prach
=
1
;
}
else
{
// ask L2 for RACH transport
if
((
runmode
!=
rx_calib_ue
)
&&
(
runmode
!=
rx_calib_ue_med
)
&&
(
runmode
!=
rx_calib_ue_byp
)
&&
(
runmode
!=
no_L2_connect
)
)
{
...
...
@@ -4523,9 +4523,8 @@ void nr_ue_prach_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, uint8_t
}
}
if (ue->prach_resources[gNB_id] != NULL) {
if
(
ue
->
prach_resources
[
gNB_id
]
!=
NULL
&&
prach_resources
->
generate_nr_prach
==
1
)
{
ue->generate_nr_prach = 1;
ue
->
prach_cnt
=
0
;
pathloss
=
get_nr_PL
(
mod_id
,
ue
->
CC_id
,
gNB_id
);
LOG_D
(
PHY
,
"runmode %d
\n
"
,
runmode
);
...
...
@@ -4534,7 +4533,7 @@ void nr_ue_prach_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, uint8_t
ue
->
tx_power_dBm
[
nr_tti_tx
]
=
prach_resources
->
ra_PREAMBLE_RECEIVED_TARGET_POWER
+
pathloss
;
}
LOG_I(PHY,"[UE %d][RAPROC] Frame %d, nr_tti_
r
x %d : Generating PRACH, preamble %d, PL %d, P0_PRACH %d, TARGET_RECEIVED_POWER %d dBm, RA-RNTI %d\n",
LOG_I
(
PHY
,
"[UE %d][RAPROC] Frame %d, nr_tti_
t
x %d : Generating PRACH, preamble %d, PL %d, P0_PRACH %d, TARGET_RECEIVED_POWER %d dBm, RA-RNTI %d
\n
"
,
ue
->
Mod_id
,
frame_tx
,
nr_tti_tx
,
...
...
@@ -4555,7 +4554,7 @@ void nr_ue_prach_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, uint8_t
#endif
if
((
runmode
==
calib_prach_tx
)
&&
(((
proc
->
frame_tx
&
0xfffe
)
%
100
)
==
0
))
LOG_D(PHY,"[UE %d][RAPROC] Frame %d, nr_tti_
rx %d : PRACH TX power %d dBm, amp %d
\n", ue->Mod_id,
LOG_D
(
PHY
,
"[UE %d][RAPROC] Frame %d, nr_tti_
tx %d : PRACH TX power %d dBm, amp %d (%d)
\n
"
,
ue
->
Mod_id
,
proc
->
frame_rx
,
proc
->
nr_tti_tx
,
ue
->
tx_power_dBm
[
nr_tti_tx
],
...
...
@@ -4577,7 +4576,7 @@ void nr_ue_prach_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, uint8_t
if
(
ue
->
mac_enabled
==
1
)
nr_Msg1_transmitted
(
ue
->
Mod_id
,
ue
->
CC_id
,
frame_tx
,
gNB_id
);
LOG_I(PHY,"[UE %d][RAPROC] Frame %d, nr_tti_
r
x %d: Generating PRACH (gNB %d) preamble index %d for UL, TX power %d dBm (PL %d dB) \n",
LOG_I
(
PHY
,
"[UE %d][RAPROC] Frame %d, nr_tti_
t
x %d: Generating PRACH (gNB %d) preamble index %d for UL, TX power %d dBm (PL %d dB)
\n
"
,
ue
->
Mod_id
,
frame_tx
,
nr_tti_tx
,
...
...
@@ -4591,12 +4590,12 @@ void nr_ue_prach_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, uint8_t
if
(
runmode
==
calib_prach_tx
)
ue
->
prach_resources
[
gNB_id
]
=
NULL
;
LOG_D(PHY,"[UE %d] frame %d nr_tti_
rx %d : generate_nr_prach %d, prach_cnt %d\n", ue->Mod_id,frame_tx,nr_tti_tx, ue
->generate_nr_prach, ue->prach_cnt);
LOG_D
(
PHY
,
"[UE %d] frame %d nr_tti_
tx %d : generate_nr_prach %d, prach_cnt %d
\n
"
,
ue
->
Mod_id
,
frame_tx
,
nr_tti_tx
,
ue
->
prach_resources
[
gNB_id
]
->
generate_nr_prach
,
ue
->
prach_cnt
);
ue
->
prach_cnt
++
;
if
(
ue
->
prach_cnt
==
3
)
ue
->generate_nr_prach = 0;
prach_resources
->
generate_nr_prach
=
0
;
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_PRACH
,
VCD_FUNCTION_OUT
);
}
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
View file @
ae5f30ec
...
...
@@ -906,12 +906,23 @@ int get_nr_prach_info_from_index(uint8_t index,
if ( (table_6_3_3_2_4_prachConfig_Index[index][7] == 1) && (slot%2 == 0) )
return 0; // no prach in even slots @ 120kHz for 1 prach per 60khz slot
}
if (start_symbol != NULL && N_t_slot != NULL && N_dur != NULL && format != NULL){
*start_symbol = table_6_3_3_2_4_prachConfig_Index[index][6];
*N_t_slot = table_6_3_3_2_4_prachConfig_Index[index][8];
*N_dur = table_6_3_3_2_4_prachConfig_Index[index][9];
if (table_6_3_3_2_4_prachConfig_Index[index][1] != -1)
format2 = (uint8_t) table_6_3_3_2_4_prachConfig_Index[index][1];
*format = ((uint8_t) table_6_3_3_2_4_prachConfig_Index[index][0]) | (format2<<8);
LOG_D(MAC,"Frame %d slot %d: Getting PRACH info from index %d absoluteFrequencyPointA %u mu %u frame_type %u start_symbol %u N_t_slot %u N_dur %u \n", frame,
slot,
index,
pointa,
mu,
unpaired,
*start_symbol,
*N_t_slot,
*N_dur);
}
return 1;
}
else
...
...
@@ -933,12 +944,23 @@ int get_nr_prach_info_from_index(uint8_t index,
if ( (table_6_3_3_2_3_prachConfig_Index[index][6] == 1) && (slot%2 == 0) )
return 0; // no prach in even slots @ 30kHz for 1 prach per subframe
}
if (start_symbol != NULL && N_t_slot != NULL && N_dur != NULL && format != NULL){
*start_symbol = table_6_3_3_2_3_prachConfig_Index[index][5];
*N_t_slot = table_6_3_3_2_3_prachConfig_Index[index][7];
*N_dur = table_6_3_3_2_3_prachConfig_Index[index][8];
if (table_6_3_3_2_3_prachConfig_Index[index][1] != -1)
format2 = (uint8_t) table_6_3_3_2_3_prachConfig_Index[index][1];
*format = ((uint8_t) table_6_3_3_2_3_prachConfig_Index[index][0]) | (format2<<8);
LOG_D(MAC,"Frame %d slot %d: Getting PRACH info from index %d absoluteFrequencyPointA %u mu %u frame_type %u start_symbol %u N_t_slot %u N_dur %u \n", frame,
slot,
index,
pointa,
mu,
unpaired,
*start_symbol,
*N_t_slot,
*N_dur);
}
return 1;
}
else
...
...
@@ -958,12 +980,23 @@ int get_nr_prach_info_from_index(uint8_t index,
if ( (table_6_3_3_2_2_prachConfig_Index[index][6] == 1) && (slot%2 == 0) )
return 0; // no prach in even slots @ 30kHz for 1 prach per subframe
}
if (start_symbol != NULL && N_t_slot != NULL && N_dur != NULL && format != NULL){
*start_symbol = table_6_3_3_2_2_prachConfig_Index[index][5];
*N_t_slot = table_6_3_3_2_2_prachConfig_Index[index][7];
*N_dur = table_6_3_3_2_2_prachConfig_Index[index][8];
if (table_6_3_3_2_2_prachConfig_Index[index][1] != -1)
format2 = (uint8_t) table_6_3_3_2_2_prachConfig_Index[index][1];
*format = ((uint8_t) table_6_3_3_2_2_prachConfig_Index[index][0]) | (format2<<8);
LOG_D(MAC,"Frame %d slot %d: Getting PRACH info from index %d absoluteFrequencyPointA %u mu %u frame_type %u start_symbol %u N_t_slot %u N_dur %u \n", frame,
slot,
index,
pointa,
mu,
unpaired,
*start_symbol,
*N_t_slot,
*N_dur);
}
return 1;
}
else
...
...
@@ -1039,6 +1072,7 @@ uint8_t compute_nr_root_seq(NR_RACH_ConfigCommon_t *rach_config,
if (NCS == 0) return nb_preambles;
else {
r = L_ra/NCS;
printf(" found_sequences %u\n", (nb_preambles/r));
return (nb_preambles/r);
}
}
...
...
@@ -1076,6 +1110,7 @@ uint8_t compute_nr_root_seq(NR_RACH_ConfigCommon_t *rach_config,
AssertFatal(1==0,"Procedure to find nb of sequences for restricted type B not implemented yet");
}
}
printf(" found_sequences %u\n", found_sequences);
return found_sequences;
}
}
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c
View file @
ae5f30ec
...
...
@@ -333,11 +333,15 @@ void nr_ue_get_rach(NR_PRACH_RESOURCES_t *prach_resources,
NR_UE_MAC_INST_t
*
mac
=
get_mac_inst
(
mod_id
);
uint8_t
lcid
=
UL_SCH_LCID_CCCH_MSG3
,
*
mac_sdus
,
*
payload
,
ra_ResponseWindow
;
uint8_t
config_index
,
mu
;
int
is_nr_prach_slot
;
uint16_t
size_sdu
=
0
;
unsigned
short
post_padding
;
fapi_nr_config_request_t
*
cfg
=
&
mac
->
phy_config
.
config_req
;
NR_ServingCellConfigCommon_t
*
scc
=
mac
->
scc
;
NR_RACH_ConfigCommon_t
*
setup
=
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
;
NR_RACH_ConfigGeneric_t
*
rach_ConfigGeneric
=
&
setup
->
rach_ConfigGeneric
;
NR_FrequencyInfoDL_t
*
frequencyInfoDL
=
scc
->
downlinkConfigCommon
->
frequencyInfoDL
;
// int32_t frame_diff = 0;
uint8_t
sdu_lcids
[
NB_RB_MAX
]
=
{
0
};
...
...
@@ -350,6 +354,27 @@ void nr_ue_get_rach(NR_PRACH_RESOURCES_t *prach_resources,
LOG_D
(
MAC
,
"nr_ue_get_rach, RA_active value: %d"
,
mac
->
RA_active
);
config_index
=
rach_ConfigGeneric
->
prach_ConfigurationIndex
;
if
(
setup
->
msg1_SubcarrierSpacing
)
mu
=
*
setup
->
msg1_SubcarrierSpacing
;
else
mu
=
frequencyInfoDL
->
scs_SpecificCarrierList
.
list
.
array
[
0
]
->
subcarrierSpacing
;
is_nr_prach_slot
=
get_nr_prach_info_from_index
(
config_index
,
(
int
)
frame
,
(
int
)
nr_tti_tx
,
frequencyInfoDL
->
absoluteFrequencyPointA
,
mu
,
cfg
->
cell_config
.
frame_duplex_type
,
NULL
,
NULL
,
NULL
,
NULL
);
if
(
is_nr_prach_slot
)
prach_resources
->
generate_nr_prach
=
1
;
else
prach_resources
->
generate_nr_prach
=
0
;
AssertFatal
(
setup
!=
NULL
,
"[UE %d] FATAL nr_rach_ConfigCommon is NULL !!!
\n
"
,
mod_id
);
if
(
mac
->
RA_active
==
0
)
{
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment