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
wangjie
OpenXG-RAN
Commits
ae5f30ec
Commit
ae5f30ec
authored
Mar 26, 2020
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
Hide 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;
...
...
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
;
...
...
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
);
}
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
}
*
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
);
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
}
*
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
);
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
}
*
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
);
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
;
}
}
...
...
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
)
{
...
...
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