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
wangwenhui
OpenXG-RAN
Commits
e1554c6f
Commit
e1554c6f
authored
Jul 20, 2018
by
hongzhi wang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
UE: Add P5 phy_config_request with MIB information.
MIB PDU decode complete.
parent
33bd476c
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
87 additions
and
69 deletions
+87
-69
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
+8
-1
openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
+7
-8
openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
+7
-1
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+42
-39
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
+2
-2
openair2/RRC/NR_UE/rrc_UE.c
openair2/RRC/NR_UE/rrc_UE.c
+19
-18
targets/RT/USER/nr-ue.c
targets/RT/USER/nr-ue.c
+2
-0
No files found.
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
View file @
e1554c6f
...
@@ -223,7 +223,14 @@ int nr_initial_sync(PHY_VARS_NR_UE *ue, runmode_t mode)
...
@@ -223,7 +223,14 @@ int nr_initial_sync(PHY_VARS_NR_UE *ue, runmode_t mode)
nr_gold_pbch
(
ue
);
nr_gold_pbch
(
ue
);
ret
=
nr_pbch_detection
(
ue
,
mode
);
ret
=
nr_pbch_detection
(
ue
,
mode
);
ret
=
-
1
;
//to be deleted
LOG_I
(
PHY
,
"[UE %d] AUTOTEST Cell Sync : frame = %d, rx_offset %d, freq_offset %d
\n
"
,
ue
->
Mod_id
,
ue
->
proc
.
proc_rxtx
[
0
].
frame_rx
,
ue
->
rx_offset
,
ue
->
common_vars
.
freq_offset
);
//ret = -1; //to be deleted
// write_output("rxdata2.m","rxd2",ue->common_vars.rxdata[0],10*frame_parms->samples_per_tti,1,1);
// write_output("rxdata2.m","rxd2",ue->common_vars.rxdata[0],10*frame_parms->samples_per_tti,1,1);
#ifdef DEBUG_INITIAL_SYNCH
#ifdef DEBUG_INITIAL_SYNCH
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
View file @
e1554c6f
...
@@ -616,13 +616,13 @@ uint16_t nr_rx_pbch( PHY_VARS_NR_UE *ue,
...
@@ -616,13 +616,13 @@ uint16_t nr_rx_pbch( PHY_VARS_NR_UE *ue,
pbch_a
=
nr_ue_pbch_vars
->
pbch_a
;
pbch_a
=
nr_ue_pbch_vars
->
pbch_a
;
pbch_a_prime
=
nr_ue_pbch_vars
->
pbch_a_prime
;
pbch_a_prime
=
nr_ue_pbch_vars
->
pbch_a_prime
;
#ifdef DEBUG_PBCH
//
#ifdef DEBUG_PBCH
//pbch_e_rx = &nr_ue_pbch_vars->llr[0];
//pbch_e_rx = &nr_ue_pbch_vars->llr[0];
short
*
p
=
(
short
*
)
&
(
nr_ue_pbch_vars
->
rxdataF_comp
[
0
][
1
*
20
*
12
]);
short
*
p
=
(
short
*
)
&
(
nr_ue_pbch_vars
->
rxdataF_comp
[
0
][
1
*
20
*
12
]);
for
(
int
cnt
=
0
;
cnt
<
8
;
cnt
++
)
for
(
int
cnt
=
0
;
cnt
<
8
;
cnt
++
)
printf
(
"pbch rx llr %d rxdata_comp %d addr %p
\n
"
,
*
(
pbch_e_rx
+
cnt
),
p
[
cnt
],
&
p
[
0
]);
printf
(
"pbch rx llr %d rxdata_comp %d addr %p
\n
"
,
*
(
pbch_e_rx
+
cnt
),
p
[
cnt
],
&
p
[
0
]);
#endif
//
#endif
for
(
i
=
0
;
i
<
NR_POLAR_PBCH_E
/
2
;
i
++
){
for
(
i
=
0
;
i
<
NR_POLAR_PBCH_E
/
2
;
i
++
){
idx_demod
=
(
sign
(
pbch_e_rx
[
i
<<
1
])
&
1
)
^
((
sign
(
pbch_e_rx
[(
i
<<
1
)
+
1
])
&
1
)
<<
1
);
idx_demod
=
(
sign
(
pbch_e_rx
[
i
<<
1
])
&
1
)
^
((
sign
(
pbch_e_rx
[(
i
<<
1
)
+
1
])
&
1
)
<<
1
);
...
@@ -648,6 +648,8 @@ uint16_t nr_rx_pbch( PHY_VARS_NR_UE *ue,
...
@@ -648,6 +648,8 @@ uint16_t nr_rx_pbch( PHY_VARS_NR_UE *ue,
//polar decoding de-rate matching
//polar decoding de-rate matching
decoderState
=
polar_decoder
(
demod_pbch_e
,
pbch_a_b
,
&
frame_parms
->
pbch_polar_params
,
decoderListSize
,
aPrioriArray
,
pathMetricAppr
);
decoderState
=
polar_decoder
(
demod_pbch_e
,
pbch_a_b
,
&
frame_parms
->
pbch_polar_params
,
decoderListSize
,
aPrioriArray
,
pathMetricAppr
);
if
(
decoderState
==
-
1
)
return
(
decoderState
);
memset
(
&
pbch_a_prime
[
0
],
0
,
sizeof
(
uint8_t
)
*
NR_POLAR_PBCH_PAYLOAD_BITS
>>
3
);
memset
(
&
pbch_a_prime
[
0
],
0
,
sizeof
(
uint8_t
)
*
NR_POLAR_PBCH_PAYLOAD_BITS
>>
3
);
for
(
i
=
0
;
i
<
NR_POLAR_PBCH_PAYLOAD_BITS
;
i
++
)
for
(
i
=
0
;
i
<
NR_POLAR_PBCH_PAYLOAD_BITS
;
i
++
)
...
@@ -675,9 +677,9 @@ uint16_t nr_rx_pbch( PHY_VARS_NR_UE *ue,
...
@@ -675,9 +677,9 @@ uint16_t nr_rx_pbch( PHY_VARS_NR_UE *ue,
for
(
int
i
=
0
;
i
<
32
;
i
++
)
{
for
(
int
i
=
0
;
i
<
32
;
i
++
)
{
out
|=
((
in
>>
i
)
&
1
)
<<
(
pbch_deinterleaving_pattern
[
i
]);
out
|=
((
in
>>
i
)
&
1
)
<<
(
pbch_deinterleaving_pattern
[
i
]);
//
#ifdef DEBUG_PBCH
#ifdef DEBUG_PBCH
printf
(
"i %d in 0x%08x out 0x%08x ilv %d (in>>i)&1) 0x%08x
\n
"
,
i
,
in
,
out
,
pbch_deinterleaving_pattern
[
i
],
(
in
>>
i
)
&
1
);
printf
(
"i %d in 0x%08x out 0x%08x ilv %d (in>>i)&1) 0x%08x
\n
"
,
i
,
in
,
out
,
pbch_deinterleaving_pattern
[
i
],
(
in
>>
i
)
&
1
);
//
#endif
#endif
}
}
for
(
int
i
=
0
;
i
<
NR_POLAR_PBCH_PAYLOAD_BITS
>>
3
;
i
++
)
for
(
int
i
=
0
;
i
<
NR_POLAR_PBCH_PAYLOAD_BITS
>>
3
;
i
++
)
...
@@ -694,11 +696,8 @@ uint16_t nr_rx_pbch( PHY_VARS_NR_UE *ue,
...
@@ -694,11 +696,8 @@ uint16_t nr_rx_pbch( PHY_VARS_NR_UE *ue,
}
}
//#endif
//#endif
ue
->
dl_indication
.
rx_ind
.
rx_request_body
.
pdu_index
=
FAPI_NR_RX_PDU_BCCH_BCH_TYPE
;
ue
->
dl_indication
.
rx_ind
.
rx_request_body
.
pdu_index
=
FAPI_NR_RX_PDU_BCCH_BCH_TYPE
;
ue
->
dl_indication
.
rx_ind
.
rx_request_body
.
pdu_length
=
3
;
ue
->
dl_indication
.
rx_ind
.
rx_request_body
.
pdu_length
=
3
;
// ue->dl_indication.rx_ind.rx_request_body.pdu = &pbch_a[0];
ue
->
dl_indication
.
rx_ind
.
rx_request_body
.
pdu
=
&
decoded_output
[
0
];
ue
->
dl_indication
.
rx_ind
.
rx_request_body
.
pdu
=
&
decoded_output
[
0
];
ue
->
if_inst
->
dl_indication
(
&
ue
->
dl_indication
);
ue
->
if_inst
->
dl_indication
(
&
ue
->
dl_indication
);
...
...
openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
View file @
e1554c6f
...
@@ -34,6 +34,10 @@
...
@@ -34,6 +34,10 @@
#include "fapi_nr_ue_interface.h"
#include "fapi_nr_ue_interface.h"
#include "fapi_nr_ue_l1.h"
#include "fapi_nr_ue_l1.h"
//#include "PHY/phy_vars_nr_ue.h"
#include "PHY/defs_nr_UE.h"
extern
PHY_VARS_NR_UE
***
PHY_vars_UE_g
;
int8_t
nr_ue_scheduled_response
(
nr_scheduled_response_t
*
scheduled_response
){
int8_t
nr_ue_scheduled_response
(
nr_scheduled_response_t
*
scheduled_response
){
...
@@ -70,6 +74,8 @@ int8_t nr_ue_phy_config_request(nr_phy_config_t *phy_config){
...
@@ -70,6 +74,8 @@ int8_t nr_ue_phy_config_request(nr_phy_config_t *phy_config){
printf
(
"ssb index: %d
\n
"
,
phy_config
->
config_req
.
pbch_config
.
ssb_index
);
printf
(
"ssb index: %d
\n
"
,
phy_config
->
config_req
.
pbch_config
.
ssb_index
);
printf
(
"half frame bit: %d
\n
"
,
phy_config
->
config_req
.
pbch_config
.
half_frame_bit
);
printf
(
"half frame bit: %d
\n
"
,
phy_config
->
config_req
.
pbch_config
.
half_frame_bit
);
printf
(
"-------------------------------
\n
"
);
printf
(
"-------------------------------
\n
"
);
PHY_vars_UE_g
[
0
][
0
]
->
proc
.
proc_rxtx
[
0
].
frame_rx
=
phy_config
->
config_req
.
pbch_config
.
system_frame_number
;
}
}
if
(
phy_config
->
config_req
.
config_mask
&
FAPI_NR_CONFIG_REQUEST_MASK_DL_BWP_COMMON
){
if
(
phy_config
->
config_req
.
config_mask
&
FAPI_NR_CONFIG_REQUEST_MASK_DL_BWP_COMMON
){
...
...
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
View file @
e1554c6f
...
@@ -53,7 +53,9 @@ int8_t nr_ue_decode_mib(
...
@@ -53,7 +53,9 @@ int8_t nr_ue_decode_mib(
nr_mac_rrc_data_ind_ue
(
module_id
,
CC_id
,
gNB_index
,
nr_mac_rrc_data_ind_ue
(
module_id
,
CC_id
,
gNB_index
,
NR_BCCH_BCH
,
(
uint8_t
*
)
pduP
,
pdu_len
);
NR_BCCH_BCH
,
(
uint8_t
*
)
pduP
,
pdu_len
);
uint32_t
frame
=
mac
->
mib
->
systemFrameNumber
.
buf
[
0
];
if
(
mac
->
mib
!=
NULL
){
uint32_t
frame
=
(
mac
->
mib
->
systemFrameNumber
.
buf
[
0
]
>>
mac
->
mib
->
systemFrameNumber
.
bits_unused
);
uint32_t
frame_number_4lsb
=
(
uint32_t
)(
extra_bits
&
0xf
);
// extra bits[0:3]
uint32_t
frame_number_4lsb
=
(
uint32_t
)(
extra_bits
&
0xf
);
// extra bits[0:3]
uint32_t
half_frame_bit
=
(
uint32_t
)((
extra_bits
>>
4
)
&
0x1
);
// extra bits[4]
uint32_t
half_frame_bit
=
(
uint32_t
)((
extra_bits
>>
4
)
&
0x1
);
// extra bits[4]
uint32_t
ssb_subcarrier_offset_msb
=
(
uint32_t
)((
extra_bits
>>
5
)
&
0x1
);
// extra bits[5]
uint32_t
ssb_subcarrier_offset_msb
=
(
uint32_t
)((
extra_bits
>>
5
)
&
0x1
);
// extra bits[5]
...
@@ -73,15 +75,16 @@ int8_t nr_ue_decode_mib(
...
@@ -73,15 +75,16 @@ int8_t nr_ue_decode_mib(
}
}
}
}
printf
(
"system frame number(with LSB): %d
\n
"
,
(
int
)
frame
);
printf
(
"system frame number(6 MSB bits): %d
\n
"
,
mac
->
mib
->
systemFrameNumber
.
buf
[
0
]);
printf
(
"subcarrier spacing: %d
\n
"
,
(
int
)
mac
->
mib
->
subCarrierSpacingCommon
);
printf
(
"system frame number(with LSB): %d
\n
"
,
(
int
)
frame
);
printf
(
"ssb carrier offset(with MSB): %d
\n
"
,
(
int
)
ssb_subcarrier_offset
);
printf
(
"subcarrier spacing: %d
\n
"
,
(
int
)
mac
->
mib
->
subCarrierSpacingCommon
);
printf
(
"dmrs type A position: %d
\n
"
,
(
int
)
mac
->
mib
->
dmrs_TypeA_Position
);
printf
(
"ssb carrier offset(with MSB): %d
\n
"
,
(
int
)
ssb_subcarrier_offset
);
printf
(
"pdcch config sib1: %d
\n
"
,
(
int
)
mac
->
mib
->
pdcch_ConfigSIB1
);
printf
(
"dmrs type A position: %d
\n
"
,
(
int
)
mac
->
mib
->
dmrs_TypeA_Position
);
printf
(
"cell barred: %d
\n
"
,
(
int
)
mac
->
mib
->
cellBarred
);
printf
(
"pdcch config sib1: %d
\n
"
,
(
int
)
mac
->
mib
->
pdcch_ConfigSIB1
);
printf
(
"intra frequcney reselection: %d
\n
"
,
(
int
)
mac
->
mib
->
intraFreqReselection
);
printf
(
"cell barred: %d
\n
"
,
(
int
)
mac
->
mib
->
cellBarred
);
printf
(
"half frame bit(extra bits): %d
\n
"
,
(
int
)
half_frame_bit
);
printf
(
"intra frequcney reselection: %d
\n
"
,
(
int
)
mac
->
mib
->
intraFreqReselection
);
printf
(
"ssb index(extra bits): %d
\n
"
,
(
int
)
ssb_index
);
printf
(
"half frame bit(extra bits): %d
\n
"
,
(
int
)
half_frame_bit
);
printf
(
"ssb index(extra bits): %d
\n
"
,
(
int
)
ssb_index
);
// fill in the elements in config request inside P5 message
// fill in the elements in config request inside P5 message
mac
->
phy_config
.
config_req
.
pbch_config
.
system_frame_number
=
frame
;
// after calculation
mac
->
phy_config
.
config_req
.
pbch_config
.
system_frame_number
=
frame
;
// after calculation
...
@@ -98,7 +101,7 @@ printf("ssb index(extra bits): %d\n", (int)ssb_index);
...
@@ -98,7 +101,7 @@ printf("ssb index(extra bits): %d\n", (int)ssb_index);
if
(
mac
->
if_module
!=
NULL
&&
mac
->
if_module
->
phy_config_request
!=
NULL
){
if
(
mac
->
if_module
!=
NULL
&&
mac
->
if_module
->
phy_config_request
!=
NULL
){
mac
->
if_module
->
phy_config_request
(
&
mac
->
phy_config
);
mac
->
if_module
->
phy_config_request
(
&
mac
->
phy_config
);
}
}
}
return
0
;
return
0
;
}
}
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
View file @
e1554c6f
...
@@ -43,13 +43,13 @@ static nr_ue_if_module_t *nr_ue_if_module_inst[MAX_IF_MODULES];
...
@@ -43,13 +43,13 @@ static nr_ue_if_module_t *nr_ue_if_module_inst[MAX_IF_MODULES];
int8_t
handle_bcch_bch
(
uint32_t
pdu_len
,
uint8_t
*
pduP
){
int8_t
handle_bcch_bch
(
uint32_t
pdu_len
,
uint8_t
*
pduP
){
// pdu_len = 4, 32bits
// pdu_len = 4, 32bits
uint8_t
extra_bits
=
pduP
[
3
];
uint8_t
extra_bits
=
pduP
[
0
];
nr_ue_decode_mib
(
(
module_id_t
)
0
,
nr_ue_decode_mib
(
(
module_id_t
)
0
,
0
,
0
,
0
,
0
,
extra_bits
,
extra_bits
,
0
,
// Lssb = 64 is not support
0
,
// Lssb = 64 is not support
pduP
,
&
pduP
[
1
]
,
pdu_len
);
pdu_len
);
...
...
openair2/RRC/NR_UE/rrc_UE.c
View file @
e1554c6f
...
@@ -311,6 +311,7 @@ int8_t nr_rrc_ue_decode_NR_BCCH_BCH_Message(
...
@@ -311,6 +311,7 @@ int8_t nr_rrc_ue_decode_NR_BCCH_BCH_Message(
buffer_len
buffer_len
);
);
if
(
bcch_message
->
message
.
choice
.
mib
->
systemFrameNumber
.
buf
!=
0
){
if
((
dec_rval
.
code
!=
RC_OK
)
&&
(
dec_rval
.
consumed
==
0
))
{
if
((
dec_rval
.
code
!=
RC_OK
)
&&
(
dec_rval
.
consumed
==
0
))
{
for
(
i
=
0
;
i
<
buffer_len
;
i
++
)
for
(
i
=
0
;
i
<
buffer_len
;
i
++
)
...
@@ -329,7 +330,7 @@ int8_t nr_rrc_ue_decode_NR_BCCH_BCH_Message(
...
@@ -329,7 +330,7 @@ int8_t nr_rrc_ue_decode_NR_BCCH_BCH_Message(
// sizeof(NR_MIB_t) );
// sizeof(NR_MIB_t) );
nr_rrc_mac_config_req_ue
(
0
,
0
,
0
,
mib
,
NULL
,
NULL
,
NULL
);
nr_rrc_mac_config_req_ue
(
0
,
0
,
0
,
mib
,
NULL
,
NULL
,
NULL
);
}
return
0
;
return
0
;
}
}
...
...
targets/RT/USER/nr-ue.c
View file @
e1554c6f
...
@@ -224,6 +224,8 @@ void init_UE(int nb_inst)
...
@@ -224,6 +224,8 @@ void init_UE(int nb_inst)
AssertFatal
((
UE
->
if_inst
=
nr_ue_if_module_init
(
inst
))
!=
NULL
,
"Can't register interface module
\n
"
);
AssertFatal
((
UE
->
if_inst
=
nr_ue_if_module_init
(
inst
))
!=
NULL
,
"Can't register interface module
\n
"
);
nr_l3_init_ue
();
nr_l3_init_ue
();
nr_l2_init_ue
();
nr_l2_init_ue
();
NR_UE_MAC_INST_t
*
UE_MAC_INST
=
get_mac_inst
(
0
);
UE_MAC_INST
->
if_module
=
UE
->
if_inst
;
UE
->
if_inst
->
scheduled_response
=
nr_ue_scheduled_response
;
UE
->
if_inst
->
scheduled_response
=
nr_ue_scheduled_response
;
UE
->
if_inst
->
phy_config_request
=
nr_ue_phy_config_request
;
UE
->
if_inst
->
phy_config_request
=
nr_ue_phy_config_request
;
...
...
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