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
3a5f22d9
Commit
3a5f22d9
authored
Jul 19, 2018
by
hongzhi wang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
UE: add MAC and RRC instance initialization
parent
0138886b
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
31 additions
and
138 deletions
+31
-138
openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
+9
-7
openair2/LAYER2/NR_MAC_UE/mac.h
openair2/LAYER2/NR_MAC_UE/mac.h
+0
-21
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+10
-1
openair2/RRC/NR_UE/main_ue.c
openair2/RRC/NR_UE/main_ue.c
+1
-1
openair2/RRC/NR_UE/rrc_UE.c
openair2/RRC/NR_UE/rrc_UE.c
+8
-2
openair2/RRC/NR_UE/rrc_proto.h
openair2/RRC/NR_UE/rrc_proto.h
+0
-106
targets/RT/USER/nr-ue.c
targets/RT/USER/nr-ue.c
+3
-0
No files found.
openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
View file @
3a5f22d9
...
@@ -641,10 +641,10 @@ uint16_t nr_rx_pbch( PHY_VARS_NR_UE *ue,
...
@@ -641,10 +641,10 @@ uint16_t nr_rx_pbch( PHY_VARS_NR_UE *ue,
nushift
=
(
Lmax
==
4
)
?
ssb_index
&
3
:
ssb_index
&
7
;
nushift
=
(
Lmax
==
4
)
?
ssb_index
&
3
:
ssb_index
&
7
;
nr_pbch_unscrambling
(
nr_ue_pbch_vars
,
frame_parms
->
Nid_cell
,
nushift
,
M
,
NR_POLAR_PBCH_E
,
0
);
nr_pbch_unscrambling
(
nr_ue_pbch_vars
,
frame_parms
->
Nid_cell
,
nushift
,
M
,
NR_POLAR_PBCH_E
,
0
);
#ifdef DEBUG_PBCH
//
#ifdef DEBUG_PBCH
if
(
i
<
16
){
if
(
i
<
16
){
printf
(
"unscrambling demod_pbch_e[%d] r = %2.3f i = %2.3f
\n
"
,
i
<<
1
,
demod_pbch_e
[
i
<<
1
],
demod_pbch_e
[(
i
<<
1
)
+
1
]);}
printf
(
"unscrambling demod_pbch_e[%d] r = %2.3f i = %2.3f
\n
"
,
i
<<
1
,
demod_pbch_e
[
i
<<
1
],
demod_pbch_e
[(
i
<<
1
)
+
1
]);}
#endif
//
#endif
//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
);
...
@@ -656,10 +656,10 @@ uint16_t nr_rx_pbch( PHY_VARS_NR_UE *ue,
...
@@ -656,10 +656,10 @@ uint16_t nr_rx_pbch( PHY_VARS_NR_UE *ue,
//printf("pbch_a_b[%d] = %u pbch_a_prime[i/8] 0x%02x \n", i,pbch_a_b[i],pbch_a_prime[i/8]);
//printf("pbch_a_b[%d] = %u pbch_a_prime[i/8] 0x%02x \n", i,pbch_a_b[i],pbch_a_prime[i/8]);
}
}
#ifdef DEBUG_PBCH
//
#ifdef DEBUG_PBCH
for
(
i
=
0
;
i
<
NR_POLAR_PBCH_PAYLOAD_BITS
>>
3
;
i
++
)
for
(
i
=
0
;
i
<
NR_POLAR_PBCH_PAYLOAD_BITS
>>
3
;
i
++
)
printf
(
"pbch_a_prime[%d] = 0x%02x
\n
"
,
i
,
pbch_a_prime
[
i
]);
printf
(
"pbch_a_prime[%d] = 0x%02x
\n
"
,
i
,
pbch_a_prime
[
i
]);
#endif
//
#endif
//payload un-scrambling
//payload un-scrambling
memset
(
nr_ue_pbch_vars
->
pbch_a_interleaved
,
0
,
sizeof
(
uint8_t
)
*
NR_POLAR_PBCH_PAYLOAD_BITS
>>
3
);
memset
(
nr_ue_pbch_vars
->
pbch_a_interleaved
,
0
,
sizeof
(
uint8_t
)
*
NR_POLAR_PBCH_PAYLOAD_BITS
>>
3
);
...
@@ -675,9 +675,9 @@ uint16_t nr_rx_pbch( PHY_VARS_NR_UE *ue,
...
@@ -675,9 +675,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
++
)
...
@@ -697,7 +697,9 @@ uint16_t nr_rx_pbch( PHY_VARS_NR_UE *ue,
...
@@ -697,7 +697,9 @@ uint16_t nr_rx_pbch( PHY_VARS_NR_UE *ue,
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 = &pbch_a[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
);
}
}
openair2/LAYER2/NR_MAC_UE/mac.h
View file @
3a5f22d9
...
@@ -33,28 +33,13 @@
...
@@ -33,28 +33,13 @@
#ifndef __LAYER2_NR_UE_MAC_DEFS_H__
#ifndef __LAYER2_NR_UE_MAC_DEFS_H__
#define __LAYER2_NR_UE_MAC_DEFS_H__
#define __LAYER2_NR_UE_MAC_DEFS_H__
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
#include <string.h>
#include <string.h>
/** @defgroup _mac MAC
* @ingroup _oai2
* @{
*/
/*!\brief Values of BCCH logical channel (fake)*/
#define NR_BCCH_DL_SCH 3 // SI
#define NR_BCCH_DL_SCH 3 // SI
/*!\brief Values of PCCH logical channel (fake) */
#define NR_BCCH_BCH 5 // MIB
#define NR_BCCH_BCH 5 // MIB
/*@}*/
/*!\brief UE layer 2 status */
/*!\brief UE layer 2 status */
typedef
enum
{
typedef
enum
{
...
@@ -65,10 +50,4 @@ typedef enum {
...
@@ -65,10 +50,4 @@ typedef enum {
}
UE_L2_STATE_t
;
}
UE_L2_STATE_t
;
#endif
/*__LAYER2_MAC_DEFS_H__ */
#endif
/*__LAYER2_MAC_DEFS_H__ */
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
View file @
3a5f22d9
...
@@ -53,7 +53,6 @@ int8_t nr_ue_decode_mib(
...
@@ -53,7 +53,6 @@ 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
];
uint32_t
frame
=
mac
->
mib
->
systemFrameNumber
.
buf
[
0
];
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]
...
@@ -76,6 +75,16 @@ int8_t nr_ue_decode_mib(
...
@@ -76,6 +75,16 @@ int8_t nr_ue_decode_mib(
}
}
printf
(
"subcarrier spacing: %d
\n
"
,
mac
->
mib
->
subCarrierSpacingCommon
);
printf
(
"ssb carrier offset: %d
\n
"
,
ssb_subcarrier_offset
);
printf
(
"dmrs type A position: %d
\n
"
,
mac
->
mib
->
dmrs_TypeA_Position
);
printf
(
"pdcch config sib1: %d
\n
"
,
mac
->
mib
->
pdcch_ConfigSIB1
);
printf
(
"cell barred: %d
\n
"
,
mac
->
mib
->
cellBarred
);
printf
(
"intra frequcney reselection: %d
\n
"
,
mac
->
mib
->
intraFreqReselection
);
printf
(
"system frame number: %d
\n
"
,
frame
);
printf
(
"half frame bit: %d
\n
"
,
half_frame_bit
);
// 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
mac
->
phy_config
.
config_req
.
pbch_config
.
subcarrier_spacing_common
=
mac
->
mib
->
subCarrierSpacingCommon
;
mac
->
phy_config
.
config_req
.
pbch_config
.
subcarrier_spacing_common
=
mac
->
mib
->
subCarrierSpacingCommon
;
...
...
openair2/RRC/NR_UE/main_ue.c
View file @
3a5f22d9
...
@@ -38,6 +38,6 @@ int nr_l3_init_ue(void){
...
@@ -38,6 +38,6 @@ int nr_l3_init_ue(void){
openair_rrc_top_init_ue_nr
();
openair_rrc_top_init_ue_nr
();
return
1
;
return
0
;
}
}
openair2/RRC/NR_UE/rrc_UE.c
View file @
3a5f22d9
...
@@ -299,11 +299,17 @@ int8_t nr_rrc_ue_decode_NR_BCCH_BCH_Message(
...
@@ -299,11 +299,17 @@ int8_t nr_rrc_ue_decode_NR_BCCH_BCH_Message(
SEQUENCE_free
(
&
asn_DEF_NR_BCCH_BCH_Message
,
(
void
*
)
mib
,
1
);
SEQUENCE_free
(
&
asn_DEF_NR_BCCH_BCH_Message
,
(
void
*
)
mib
,
1
);
}
}
for
(
i
=
0
;
i
<
4
;
++
i
){
printf
(
"[RRC] bcch undecod : %d
\n
"
,
bufferP
[
i
]);
}
asn_dec_rval_t
dec_rval
=
uper_decode_complete
(
NULL
,
asn_dec_rval_t
dec_rval
=
uper_decode_complete
(
NULL
,
&
asn_DEF_NR_BCCH_BCH_Message
,
&
asn_DEF_NR_BCCH_BCH_Message
,
(
void
**
)
&
bcch_message
,
(
void
**
)
&
bcch_message
,
(
const
void
*
)
bufferP
,
(
const
void
*
)
bufferP
[
1
],
buffer_len
);
3
//buffer_len
);
if
((
dec_rval
.
code
!=
RC_OK
)
&&
(
dec_rval
.
consumed
==
0
))
{
if
((
dec_rval
.
code
!=
RC_OK
)
&&
(
dec_rval
.
consumed
==
0
))
{
...
...
openair2/RRC/NR_UE/rrc_proto.h
View file @
3a5f22d9
...
@@ -104,110 +104,4 @@ int8_t nr_mac_rrc_data_ind_ue(const module_id_t module_id, const int CC_id, cons
...
@@ -104,110 +104,4 @@ int8_t nr_mac_rrc_data_ind_ue(const module_id_t module_id, const int CC_id, cons
/** @}*/
/** @}*/
#endif
#endif
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file proto.h
* \brief RRC functions prototypes for eNB and UE
* \author Navid Nikaein and Raymond Knopp
* \date 2010 - 2014
* \email navid.nikaein@eurecom.fr
* \version 1.0
*/
/** \addtogroup _rrc
* @{
*/
#ifndef _RRC_PROTO_H_
#define _RRC_PROTO_H_
#include "rrc_defs.h"
#include "NR_RRCReconfiguration.h"
#include "NR_MeasConfig.h"
#include "NR_CellGroupConfig.h"
#include "NR_RadioBearerConfig.h"
//
// main_rrc.c
//
/**\brief Layer 3 initialization*/
int
nr_l3_init_ue
(
void
);
//
// UE_rrc.c
//
/**\brief Initial the top level RRC structure instance*/
int8_t
openair_rrc_top_init_ue_nr
(
void
);
/**\brief Decode RRC Connection Reconfiguration, sent from E-UTRA RRC Connection Reconfiguration v1510 carring EN-DC config
\param buffer encoded NR-RRC-Connection-Reconfiguration/Secondary-Cell-Group-Config message.
\param size length of buffer*/
//TODO check to use which one
int8_t
nr_rrc_ue_decode_rrcReconfiguration
(
const
uint8_t
*
buffer
,
const
uint32_t
size
);
int8_t
nr_rrc_ue_decode_secondary_cellgroup_config
(
const
uint8_t
*
buffer
,
const
uint32_t
size
);
/**\brief Process NR RRC connection reconfiguration via SRB3
\param rrcReconfiguration decoded rrc connection reconfiguration*/
int8_t
nr_rrc_ue_process_rrcReconfiguration
(
NR_RRCReconfiguration_t
*
rrcReconfiguration
);
/**\prief Process measurement config from NR RRC connection reconfiguration message
\param meas_config measurement configuration*/
int8_t
nr_rrc_ue_process_meas_config
(
NR_MeasConfig_t
*
meas_config
);
/**\prief Process secondary cell group config from NR RRC connection reconfiguration message or EN-DC primitives
\param cell_group_config secondary cell group configuration*/
//TODO check EN-DC function call flow.
int8_t
nr_rrc_ue_process_scg_config
(
NR_CellGroupConfig_t
*
cell_group_config
);
/**\prief Process radio bearer config from NR RRC connection reconfiguration message
\param radio_bearer_config radio bearer configuration*/
int8_t
nr_rrc_ue_process_radio_bearer_config
(
NR_RadioBearerConfig_t
*
radio_bearer_config
);
/**\brief decode NR BCCH-BCH (MIB) message
\param module_idP module id
\param gNB_index gNB index
\param sduP pointer to buffer of ASN message BCCH-BCH
\param sdu_len length of buffer*/
int8_t
nr_rrc_ue_decode_NR_BCCH_BCH_Message
(
const
module_id_t
module_id
,
const
uint8_t
gNB_index
,
uint8_t
*
const
bufferP
,
const
uint8_t
buffer_len
);
/**\brief Decode NR DCCH from gNB, sent from lower layer through SRB3
\param module_id module id
\param gNB_index gNB index
\param buffer encoded DCCH bytes stream message
\param size length of buffer*/
int8_t
nr_rrc_ue_decode_NR_DL_DCCH_Message
(
const
module_id_t
module_id
,
const
uint8_t
gNB_index
,
const
uint8_t
*
buffer
,
const
uint32_t
size
);
/**\brief interface between MAC and RRC thru SRB0 (RLC TM/no PDCP)
\param module_id module id
\param CC_id component carrier id
\param gNB_index gNB index
\param frameP pointer to frame for calculation
\param channel indicator for channel of the pdu
\param pduP pointer to pdu
\param pdu_len data length of pdu*/
int8_t
nr_mac_rrc_data_ind_ue
(
const
module_id_t
module_id
,
const
int
CC_id
,
const
uint8_t
gNB_index
,
const
uint32_t
*
frameP
,
const
channel_t
channel
,
const
uint8_t
*
pduP
,
const
sdu_size_t
pdu_len
);
/** @}*/
#endif
targets/RT/USER/nr-ue.c
View file @
3a5f22d9
...
@@ -43,6 +43,7 @@
...
@@ -43,6 +43,7 @@
#include "fapi_nr_ue_l1.h"
#include "fapi_nr_ue_l1.h"
#include "PHY/phy_extern_nr_ue.h"
#include "PHY/phy_extern_nr_ue.h"
#include "LAYER2/NR_MAC_UE/proto.h"
#include "LAYER2/NR_MAC_UE/proto.h"
#include "RRC/NR_UE/rrc_proto.h"
#include "SCHED_NR/extern.h"
#include "SCHED_NR/extern.h"
//#ifndef NO_RAT_NR
//#ifndef NO_RAT_NR
...
@@ -221,6 +222,8 @@ void init_UE(int nb_inst)
...
@@ -221,6 +222,8 @@ void init_UE(int nb_inst)
PHY_vars_UE_g
[
inst
][
0
]
=
init_nr_ue_vars
(
NULL
,
inst
,
0
);
PHY_vars_UE_g
[
inst
][
0
]
=
init_nr_ue_vars
(
NULL
,
inst
,
0
);
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_l2_init_ue
();
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