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
932b4e0d
Commit
932b4e0d
authored
Jan 23, 2020
by
Florian Kaltenberger
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/NR_RRCConfiguration' into NR_RRC_PUSCH
Conflicts: executables/nr-ue.c
parents
00f0e0cc
5930acac
Changes
31
Hide whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
341 additions
and
337 deletions
+341
-337
executables/nr-ue.c
executables/nr-ue.c
+11
-3
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
+8
-4
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_defs.h
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_defs.h
+1
-1
openair1/PHY/CODING/nr_rate_matching.c
openair1/PHY/CODING/nr_rate_matching.c
+1
-1
openair1/PHY/INIT/nr_parms.c
openair1/PHY/INIT/nr_parms.c
+3
-1
openair1/PHY/NR_TRANSPORT/nr_pbch.c
openair1/PHY/NR_TRANSPORT/nr_pbch.c
+1
-1
openair1/PHY/NR_TRANSPORT/nr_prach.c
openair1/PHY/NR_TRANSPORT/nr_prach.c
+4
-2
openair1/PHY/NR_TRANSPORT/nr_prach_common.c
openair1/PHY/NR_TRANSPORT/nr_prach_common.c
+2
-0
openair1/PHY/NR_TRANSPORT/nr_transport.h
openair1/PHY/NR_TRANSPORT/nr_transport.h
+1
-0
openair1/PHY/NR_TRANSPORT/nr_transport_proto.h
openair1/PHY/NR_TRANSPORT/nr_transport_proto.h
+8
-0
openair1/PHY/NR_TRANSPORT/nr_transport_proto_common.h
openair1/PHY/NR_TRANSPORT/nr_transport_proto_common.h
+2
-0
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
+11
-11
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
+0
-1
openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
+7
-1
openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h
openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h
+2
-0
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c
+1
-1
openair1/PHY/defs_gNB.h
openair1/PHY/defs_gNB.h
+2
-0
openair1/PHY/defs_nr_UE.h
openair1/PHY/defs_nr_UE.h
+2
-0
openair1/SCHED_NR/fapi_nr_l1.c
openair1/SCHED_NR/fapi_nr_l1.c
+4
-10
openair1/SCHED_NR/nr_prach_procedures.c
openair1/SCHED_NR/nr_prach_procedures.c
+5
-4
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+35
-62
openair1/SCHED_NR_UE/defs.h
openair1/SCHED_NR_UE/defs.h
+1
-1
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+5
-5
openair1/SIMULATION/NR_PHY/dlsim.c
openair1/SIMULATION/NR_PHY/dlsim.c
+2
-2
openair2/LAYER2/NR_MAC_UE/mac_proto.h
openair2/LAYER2/NR_MAC_UE/mac_proto.h
+0
-1
openair2/LAYER2/NR_MAC_UE/main_ue_nr.c
openair2/LAYER2/NR_MAC_UE/main_ue_nr.c
+7
-6
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+4
-4
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
+16
-20
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h
+1
-1
openair2/RRC/NR/rrc_gNB_reconfig.c
openair2/RRC/NR/rrc_gNB_reconfig.c
+193
-193
targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.217PRB.usrpn300.conf
.../GENERIC-LTE-EPC/CONF/gnb.band78.tm1.217PRB.usrpn300.conf
+1
-1
No files found.
executables/nr-ue.c
View file @
932b4e0d
...
...
@@ -410,6 +410,7 @@ void processSlotRX( PHY_VARS_NR_UE *UE, UE_nr_rxtx_proc_t *proc) {
nr_dcireq_t
dcireq
;
nr_scheduled_response_t
scheduled_response
;
uint8_t
ssb_period
=
UE
->
nrUE_config
.
ssb_table
.
ssb_period
;
//program DCI for slot 1
//TODO: all of this has to be moved to the MAC!!!
...
...
@@ -427,6 +428,13 @@ void processSlotRX( PHY_VARS_NR_UE *UE, UE_nr_rxtx_proc_t *proc) {
scheduled_response
.
tx_request
=
NULL
;
scheduled_response
.
module_id
=
UE
->
Mod_id
;
scheduled_response
.
CC_id
=
0
;
if
(
!
((
proc
->
frame_rx
)
%
(
1
<<
(
ssb_period
-
1
))))
{
if
(
proc
->
frame_rx
>
dcireq
.
dl_config_req
.
sfn
)
UE
->
frame_gap
=
proc
->
frame_rx
-
dcireq
.
dl_config_req
.
sfn
;
if
(
proc
->
frame_rx
<
dcireq
.
dl_config_req
.
sfn
)
UE
->
frame_gap
=
dcireq
.
dl_config_req
.
sfn
-
proc
->
frame_rx
;
proc
->
frame_rx
=
dcireq
.
dl_config_req
.
sfn
;
}
scheduled_response
.
frame
=
proc
->
frame_rx
;
scheduled_response
.
slot
=
proc
->
nr_tti_rx
;
...
...
@@ -618,7 +626,7 @@ void *UE_thread(void *arg) {
newNotifiedFIFO_elt
(
sizeof
(
processingData_t
),
0
,
&
nf
,
UE_processing
));
bool
syncRunning
=
false
;
const
int
nb_slot_frame
=
10
*
UE
->
frame_parms
.
slots_per_sub
frame
;
const
int
nb_slot_frame
=
UE
->
frame_parms
.
slots_per_
frame
;
int
absolute_slot
=
0
,
decoded_frame_rx
=
INT_MAX
,
trashed_frames
=
0
;
while
(
!
oai_exit
)
{
...
...
@@ -691,8 +699,8 @@ void *UE_thread(void *arg) {
curMsg
->
proc
.
subframe_rx
=
table_sf_slot
[
slot_nr
];
curMsg
->
proc
.
nr_tti_tx
=
(
absolute_slot
+
DURATION_RX_TO_TX
)
%
nb_slot_frame
;
curMsg
->
proc
.
subframe_tx
=
curMsg
->
proc
.
nr_tti_rx
;
curMsg
->
proc
.
frame_rx
=
(
absolute_slot
/
nb_slot_frame
)
%
MAX_FRAME_NUMBER
;
curMsg
->
proc
.
frame_tx
=
(
(
absolute_slot
+
DURATION_RX_TO_TX
)
/
nb_slot_frame
)
%
MAX_FRAME_NUMBER
;
curMsg
->
proc
.
frame_rx
=
(
(
absolute_slot
/
nb_slot_frame
)
+
UE
->
frame_gap
)
%
MAX_FRAME_NUMBER
;
curMsg
->
proc
.
frame_tx
=
(
((
absolute_slot
+
DURATION_RX_TO_TX
)
/
nb_slot_frame
)
+
UE
->
frame_gap
)
%
MAX_FRAME_NUMBER
;
curMsg
->
proc
.
decoded_frame_rx
=-
1
;
//LOG_I(PHY,"Process slot %d thread Idx %d total gain %d\n", slot_nr, thread_idx, UE->rx_total_gain_dB);
...
...
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
View file @
932b4e0d
...
...
@@ -129,7 +129,8 @@ typedef struct {
///
#define NFAPI_RX_IND_MAX_PDU 100
typedef
struct
{
uint32_t
sfn_slot
;
uint16_t
sfn
;
uint16_t
slot
;
uint16_t
number_pdus
;
fapi_nr_rx_indication_body_t
rx_indication_body
[
NFAPI_RX_IND_MAX_PDU
];
}
fapi_nr_rx_indication_t
;
...
...
@@ -148,7 +149,8 @@ typedef struct {
///
typedef
struct
{
uint32_t
sfn_slot
;
uint16_t
sfn
;
uint16_t
slot
;
fapi_nr_tx_config_t
tx_config
;
uint16_t
number_of_pdus
;
fapi_nr_tx_request_body_t
*
tx_request_body
;
...
...
@@ -304,7 +306,8 @@ typedef struct {
}
fapi_nr_ul_config_request_pdu_t
;
typedef
struct
{
uint32_t
sfn_slot
;
uint16_t
sfn
;
uint16_t
slot
;
uint8_t
number_pdus
;
fapi_nr_ul_config_request_pdu_t
ul_config_list
[
FAPI_NR_UL_CONFIG_LIST_NUM
];
}
fapi_nr_ul_config_request_t
;
...
...
@@ -383,7 +386,8 @@ typedef struct {
}
fapi_nr_dl_config_request_pdu_t
;
typedef
struct
{
uint32_t
sfn_slot
;
uint16_t
sfn
;
uint16_t
slot
;
uint8_t
number_pdus
;
fapi_nr_dl_config_request_pdu_t
dl_config_list
[
FAPI_NR_DL_CONFIG_LIST_NUM
];
}
fapi_nr_dl_config_request_t
;
...
...
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_defs.h
View file @
932b4e0d
...
...
@@ -97,7 +97,7 @@
#define NR_LDPC_SIZE_BN_PROC_BUF NR_LDPC_NUM_EDGE_BG1*NR_LDPC_ZMAX
/** Maximum number of possible input LLR = NR_LDPC_NCOL_BG1*NR_LDPC_ZMAX */
#define NR_LDPC_MAX_NUM_LLR 2
6112
#define NR_LDPC_MAX_NUM_LLR 2
7000
// ==============================================================================
// GLOBAL CONSTANT VARIABLES
...
...
openair1/PHY/CODING/nr_rate_matching.c
View file @
932b4e0d
...
...
@@ -334,7 +334,7 @@ int nr_rate_matching_ldpc(uint8_t Ilbrm,
uint8_t
rvidx
,
uint32_t
E
)
{
uint32_t
Ncb
,
ind
,
k
,
Nref
,
N
;
uint32_t
Ncb
,
ind
,
k
=
0
,
Nref
,
N
;
if
(
C
==
0
)
{
printf
(
"nr_rate_matching: invalid parameters (C %d
\n
"
,
C
);
...
...
openair1/PHY/INIT/nr_parms.c
View file @
932b4e0d
...
...
@@ -25,7 +25,9 @@
/// Subcarrier spacings in Hz indexed by numerology index
uint32_t
nr_subcarrier_spacing
[
MAX_NUM_SUBCARRIER_SPACING
]
=
{
15e3
,
30e3
,
60e3
,
120e3
,
240e3
};
uint16_t
nr_slots_per_subframe
[
MAX_NUM_SUBCARRIER_SPACING
]
=
{
1
,
2
,
4
,
16
,
32
};
uint16_t
nr_slots_per_subframe
[
MAX_NUM_SUBCARRIER_SPACING
]
=
{
1
,
2
,
4
,
8
,
16
};
int
nr_get_ssb_start_symbol
(
NR_DL_FRAME_PARMS
*
fp
)
{
...
...
openair1/PHY/NR_TRANSPORT/nr_pbch.c
View file @
932b4e0d
...
...
@@ -242,7 +242,7 @@ int nr_generate_pbch(NR_gNB_PBCH *pbch,
///Payload generation
memset
((
void
*
)
pbch
,
0
,
sizeof
(
NR_gNB_PBCH
));
pbch
->
pbch_a
=
0
;
uint8_t
ssb_index
=
ssb_pdu
->
ssb_pdu_rel15
.
SsbBlockI
ndex
;
uint8_t
ssb_index
=
frame_parms
->
ssb_i
ndex
;
uint8_t
*
pbch_pdu
=
(
uint8_t
*
)
&
ssb_pdu
->
ssb_pdu_rel15
.
bchPayload
;
for
(
int
i
=
0
;
i
<
NR_PBCH_PDU_BITS
;
i
++
)
pbch
->
pbch_a
|=
((
pbch_pdu
[
i
>>
3
]
>>
(
7
-
(
i
&
7
)))
&
1
)
<<
i
;
...
...
openair1/PHY/NR_TRANSPORT/nr_prach.c
View file @
932b4e0d
...
...
@@ -32,6 +32,7 @@
#include "PHY/defs_gNB.h"
#include "PHY/NR_TRANSPORT/nr_transport.h"
#include "PHY/NR_TRANSPORT/nr_transport_proto_common.h"
extern
uint16_t
NCS_unrestricted_delta_f_RA_125
[
16
];
extern
uint16_t
NCS_restricted_TypeA_delta_f_RA_125
[
15
];
...
...
@@ -381,7 +382,7 @@ void rx_nr_prach(PHY_VARS_gNB *gNB,
int16_t
**
rxsigF
=
gNB
->
prach_vars
.
rxsigF
;
uint8_t
preamble_index
;
uint16_t
NCS
,
NCS2
;
uint16_t
NCS
=
99
,
NCS2
;
uint16_t
preamble_offset
=
0
,
preamble_offset_old
;
int16_t
preamble_shift
=
0
;
uint32_t
preamble_shift2
;
...
...
@@ -393,7 +394,6 @@ void rx_nr_prach(PHY_VARS_gNB *gNB,
uint16_t
u
;
int16_t
*
Xu
=
0
;
uint16_t
offset
;
int16_t
Ncp
;
uint16_t
first_nonzero_root_idx
=
0
;
uint8_t
new_dft
=
0
;
uint8_t
aa
;
...
...
@@ -454,6 +454,8 @@ void rx_nr_prach(PHY_VARS_gNB *gNB,
NCS
=
NCS_unrestricted_delta_f_RA_15
[
Ncs_config
];
}
AssertFatal
(
NCS
!=
99
,
"NCS has not been set
\n
"
);
if
(
gNB
)
start_meas
(
&
gNB
->
rx_prach
);
...
...
openair1/PHY/NR_TRANSPORT/nr_prach_common.c
View file @
932b4e0d
...
...
@@ -40,6 +40,8 @@
#include "T.h"
void
init_nr_prach_tables
(
int
N_ZC
);
void
dump_nr_prach_config
(
NR_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
subframe
)
{
FILE
*
fd
;
...
...
openair1/PHY/NR_TRANSPORT/nr_transport.h
View file @
932b4e0d
...
...
@@ -23,6 +23,7 @@
#define __NR_TRANSPORT__H__
#include "PHY/defs_gNB.h"
#include "LAYER2/NR_MAC_gNB/mac_proto.h"
#define NR_PBCH_PDU_BITS 24
...
...
openair1/PHY/NR_TRANSPORT/nr_transport_proto.h
View file @
932b4e0d
...
...
@@ -206,3 +206,11 @@ uint8_t nr_get_Qm_dl(uint8_t Imcs, uint8_t table_idx);
uint32_t
nr_get_code_rate_ul
(
uint8_t
Imcs
,
uint8_t
table_idx
);
uint32_t
nr_get_code_rate_dl
(
uint8_t
Imcs
,
uint8_t
table_idx
);
void
rx_nr_prach
(
PHY_VARS_gNB
*
gNB
,
int
frame
,
int
subframe
,
uint16_t
*
max_preamble
,
uint16_t
*
max_preamble_energy
,
uint16_t
*
max_preamble_delay
);
openair1/PHY/NR_TRANSPORT/nr_transport_proto_common.h
View file @
932b4e0d
...
...
@@ -1648,6 +1648,8 @@ uint8_t get_num_prach_tdd(module_id_t Mod_id);
*/
uint8_t
get_prach_fmt
(
uint8_t
prach_ConfigIndex
,
lte_frame_type_t
frame_type
);
uint16_t
get_nr_prach_fmt
(
int
prach_ConfigIndex
,
lte_frame_type_t
frame_type
,
nr_frequency_range_e
fr
);
/*!
\brief Helper for MAC, returns frequency index of PRACH resource in TDD for a particular configuration index
@param frame_parms Pointer to NR_DL_FRAME_PARMS structure
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
View file @
932b4e0d
...
...
@@ -46,7 +46,7 @@
//#define DEBUG_DLSCH_DECODING 1
//#define ENABLE_PHY_PAYLOAD_DEBUG 1
#define OAI_LDPC_MAX_NUM_LLR 27000//26112 // NR_LDPC_NCOL_BG1*NR_LDPC_ZMAX
//
#define OAI_LDPC_MAX_NUM_LLR 27000//26112 // NR_LDPC_NCOL_BG1*NR_LDPC_ZMAX
static
uint64_t
nb_total_decod
=
0
;
static
uint64_t
nb_error_decod
=
0
;
...
...
@@ -85,13 +85,13 @@ void free_nr_ue_dlsch(NR_UE_DLSCH_t **dlschptr,uint8_t N_RB_DL)
for
(
r
=
0
;
r
<
a_segments
;
r
++
)
if
(
dlsch
->
harq_processes
[
i
]
->
d
[
r
])
{
free16
(
dlsch
->
harq_processes
[
i
]
->
d
[
r
],(
3
*
8448
)
*
sizeof
(
short
));
free16
(
dlsch
->
harq_processes
[
i
]
->
d
[
r
],(
5
*
8448
)
*
sizeof
(
short
));
dlsch
->
harq_processes
[
i
]
->
d
[
r
]
=
NULL
;
}
for
(
r
=
0
;
r
<
a_segments
;
r
++
)
if
(
dlsch
->
harq_processes
[
i
]
->
w
[
r
])
{
free16
(
dlsch
->
harq_processes
[
i
]
->
w
[
r
],(
3
*
8448
)
*
sizeof
(
short
));
free16
(
dlsch
->
harq_processes
[
i
]
->
w
[
r
],(
5
*
8448
)
*
sizeof
(
short
));
dlsch
->
harq_processes
[
i
]
->
w
[
r
]
=
NULL
;
}
...
...
@@ -122,7 +122,7 @@ NR_UE_DLSCH_t *new_nr_ue_dlsch(uint8_t Kmimo,uint8_t Mdlharq,uint32_t Nsoft,uint
if
(
N_RB_DL
!=
273
)
{
a_segments
=
a_segments
*
N_RB_DL
;
a_segments
=
a_segments
/
273
;
a_segments
=
(
a_segments
/
273
)
+
1
;
}
uint16_t
dlsch_bytes
=
a_segments
*
1056
;
// allocated bytes per segment
...
...
@@ -161,17 +161,17 @@ NR_UE_DLSCH_t *new_nr_ue_dlsch(uint8_t Kmimo,uint8_t Mdlharq,uint32_t Nsoft,uint
else
exit_flag
=
2
;
dlsch
->
harq_processes
[
i
]
->
d
[
r
]
=
(
short
*
)
malloc16
((
3
*
8448
)
*
sizeof
(
short
));
dlsch
->
harq_processes
[
i
]
->
d
[
r
]
=
(
short
*
)
malloc16
((
5
*
8448
)
*
sizeof
(
short
));
if
(
dlsch
->
harq_processes
[
i
]
->
d
[
r
])
memset
(
dlsch
->
harq_processes
[
i
]
->
d
[
r
],
0
,(
3
*
8448
)
*
sizeof
(
short
));
memset
(
dlsch
->
harq_processes
[
i
]
->
d
[
r
],
0
,(
5
*
8448
)
*
sizeof
(
short
));
else
exit_flag
=
2
;
dlsch
->
harq_processes
[
i
]
->
w
[
r
]
=
(
short
*
)
malloc16
((
3
*
8448
)
*
sizeof
(
short
));
dlsch
->
harq_processes
[
i
]
->
w
[
r
]
=
(
short
*
)
malloc16
((
5
*
8448
)
*
sizeof
(
short
));
if
(
dlsch
->
harq_processes
[
i
]
->
w
[
r
])
memset
(
dlsch
->
harq_processes
[
i
]
->
w
[
r
],
0
,(
3
*
8448
)
*
sizeof
(
short
));
memset
(
dlsch
->
harq_processes
[
i
]
->
w
[
r
],
0
,(
5
*
8448
)
*
sizeof
(
short
));
else
exit_flag
=
2
;
}
...
...
@@ -238,7 +238,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
int32_t
no_iteration_ldpc
,
length_dec
;
uint32_t
r
,
r_offset
=
0
,
Kr
=
8424
,
Kr_bytes
,
K_bytes_F
,
err_flag
=
0
;
uint8_t
crc_type
;
int8_t
llrProcBuf
[
OAI
_LDPC_MAX_NUM_LLR
]
__attribute__
((
aligned
(
32
)));
int8_t
llrProcBuf
[
NR
_LDPC_MAX_NUM_LLR
]
__attribute__
((
aligned
(
32
)));
t_nrLDPC_dec_params
decParams
;
t_nrLDPC_dec_params
*
p_decParams
=
&
decParams
;
t_nrLDPC_time_stats
procTime
;
...
...
@@ -782,7 +782,7 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
t_nrLDPC_dec_params
*
p_decParams
=
&
decParams
;
t_nrLDPC_time_stats
procTime
;
t_nrLDPC_time_stats
*
p_procTime
=&
procTime
;
int8_t
llrProcBuf
[
OAI
_LDPC_MAX_NUM_LLR
]
__attribute__
((
aligned
(
32
)));
int8_t
llrProcBuf
[
NR
_LDPC_MAX_NUM_LLR
]
__attribute__
((
aligned
(
32
)));
if
(
!
harq_process
)
{
printf
(
"dlsch_decoding.c: NULL harq_process pointer
\n
"
);
return
(
dlsch
->
max_ldpc_iterations
);
...
...
@@ -1349,7 +1349,7 @@ void *nr_dlsch_decoding_process(void *arg)
t_nrLDPC_dec_params
*
p_decParams
=
&
decParams
;
t_nrLDPC_time_stats
procTime
;
t_nrLDPC_time_stats
*
p_procTime
=&
procTime
;
int8_t
llrProcBuf
[
OAI
_LDPC_MAX_NUM_LLR
]
__attribute__
((
aligned
(
32
)));
int8_t
llrProcBuf
[
NR
_LDPC_MAX_NUM_LLR
]
__attribute__
((
aligned
(
32
)));
t_nrLDPC_procBuf
*
p_nrLDPC_procBuf
;
int16_t
z
[
68
*
384
];
int8_t
l
[
68
*
384
];
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
View file @
932b4e0d
...
...
@@ -234,7 +234,6 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
start_rb
=
dlsch0_harq
->
start_rb
;
nb_rb_pdsch
=
dlsch0_harq
->
nb_rb
;
int
lbar
;
DevAssert
(
dlsch0_harq
);
round
=
dlsch0_harq
->
round
;
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
View file @
932b4e0d
...
...
@@ -588,6 +588,12 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue,
ue
->
symbol_offset
=
nr_get_ssb_start_symbol
(
frame_parms
);
uint8_t
frame_number_4lsb
=
0
;
for
(
int
i
=
0
;
i
<
4
;
i
++
)
frame_number_4lsb
|=
((
nr_ue_pbch_vars
->
xtra_byte
>>
i
)
&
1
)
<<
(
3
-
i
);
proc
->
decoded_frame_rx
=
frame_number_4lsb
;
#ifdef DEBUG_PBCH
printf
(
"xtra_byte %x payload %x
\n
"
,
nr_ue_pbch_vars
->
xtra_byte
,
payload
);
...
...
@@ -602,7 +608,7 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue,
dl_indication
.
rx_ind
=
&
rx_ind
;
// hang on rx_ind instance
dl_indication
.
dci_ind
=
NULL
;
dl_indication
.
proc
=
proc
;
// needed to signal back the frame number -> FIXME
dl_indication
.
proc
=
proc
;
dl_indication
.
module_id
=
0
;
dl_indication
.
cc_id
=
proc
->
CC_id
;
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h
View file @
932b4e0d
...
...
@@ -42,6 +42,8 @@
#include "UTIL/LISTS/list.h"
#endif
#include "LAYER2/NR_MAC_gNB/mac_proto.h"
//#include "../LTE_TRANSPORT/transport_common.h"
// structures below implement 36-211 and 36-212
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c
View file @
932b4e0d
...
...
@@ -39,7 +39,7 @@
#include "PHY/CODING/nrLDPC_encoder/defs.h"
#include "PHY/NR_UE_TRANSPORT/nr_transport_ue.h"
#include "common/utils/LOG/vcd_signal_dumper.h"
#include "LAYER2/NR_MAC_gNB/mac_proto.h"
void
free_nr_ue_ulsch
(
NR_UE_ULSCH_t
**
ulschptr
,
unsigned
char
N_RB_UL
)
...
...
openair1/PHY/defs_gNB.h
View file @
932b4e0d
...
...
@@ -627,6 +627,8 @@ typedef struct PHY_VARS_gNB_s {
nfapi_nr_ul_dci_request_pdus_t
*
ul_dci_pdu
;
nfapi_nr_dl_tti_ssb_pdu
ssb_pdu
;
uint8_t
skipped_slots
;
// for 120kHz SSB transmission
int
num_pdsch_rnti
;
NR_gNB_PBCH
pbch
;
nr_cce_t
cce_list
[
MAX_DCI_CORESET
][
NR_MAX_PDCCH_AGG_LEVEL
];
...
...
openair1/PHY/defs_nr_UE.h
View file @
932b4e0d
...
...
@@ -872,6 +872,8 @@ typedef struct {
fapi_nr_config_request_t
nrUE_config
;
uint16_t
frame_gap
;
// the following structures are not part of PHY_vars_UE anymore as it is not thread safe. They are now on the stack of the functions that actually need them
//nr_downlink_indication_t dl_indication;
...
...
openair1/SCHED_NR/fapi_nr_l1.c
View file @
932b4e0d
...
...
@@ -132,7 +132,6 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){
PHY_VARS_gNB
*
gNB
;
// copy data from L2 interface into L1 structures
module_id_t
Mod_id
=
Sched_INFO
->
module_id
;
uint8_t
CC_id
=
Sched_INFO
->
CC_id
;
nfapi_nr_dl_tti_request_t
*
DL_req
=
Sched_INFO
->
DL_req
;
nfapi_nr_tx_data_request_t
*
TX_req
=
Sched_INFO
->
TX_req
;
nfapi_nr_ul_tti_request_t
*
UL_tti_req
=
Sched_INFO
->
UL_tti_req
;
...
...
@@ -146,18 +145,16 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){
gNB
=
RC
.
gNB
[
Mod_id
];
uint8_t
number_dl_pdu
=
DL_req
->
dl_tti_request_body
.
nPDUs
;
uint8_t
number_ul_pdu
=
0
;
//
uint8_t number_ul_pdu = 0;
uint8_t
number_ul_dci_pdu
=
(
UL_dci_req
==
NULL
)
?
0
:
UL_dci_req
->
numPdus
;
if
(
UL_tti_req
!=
NULL
)
number_ul_pdu
=
UL_tti_req
->
n_pdus
;
//
if (UL_tti_req != NULL) number_ul_pdu = UL_tti_req->n_pdus;
LOG_D
(
PHY
,
"NFAPI: Sched_INFO:SFN/SLOT:%04d%d DL_req:SFN/SLO:%04d%d:dl_pdu:%d tx_req:SFN/SLOT:%04d%d:pdus:%d;
\n
"
,
frame
,
slot
,
DL_req
->
SFN
,
DL_req
->
Slot
,
number_dl_pdu
,
TX_req
->
SFN
,
TX_req
->
Slot
,
TX_req
->
Number_of_PDUs
);
int
do_oai
=
0
;
int
dont_send
=
0
;
int
pdcch_received
=
0
;
gNB
->
num_pdsch_rnti
=
0
;
gNB
->
pdcch_pdu
=
NULL
;
...
...
@@ -169,7 +166,6 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){
switch
(
dl_tti_pdu
->
PDUType
)
{
case
NFAPI_NR_DL_TTI_SSB_PDU_TYPE
:
gNB
->
pbch_configured
=
1
;
do_oai
=
1
;
handle_nr_nfapi_ssb_pdu
(
gNB
,
frame
,
slot
,
dl_tti_pdu
);
...
...
@@ -183,19 +179,17 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){
&
dl_tti_pdu
->
pdcch_pdu
);
pdcch_received
=
1
;
do_oai
=
1
;
break
;
case
NFAPI_NR_DL_TTI_PDSCH_PDU_TYPE
:
{
nfapi_nr_dl_tti_pdsch_pdu_rel15_t
*
pdsch_pdu_rel15
=
&
dl_tti_pdu
->
pdsch_pdu
.
pdsch_pdu_rel15
;
uint16_t
pduIndex
=
pdsch_pdu_rel15
->
pduIndex
;
uint16_t
tx_pdus
=
TX_req
->
Number_of_PDUs
;
AssertFatal
(
TX_req
->
pdu_list
[
pduIndex
].
num_TLV
==
1
,
"TX_req->pdu_list[%d].num_TLV %d != 1
\n
"
,
pduIndex
,
TX_req
->
pdu_list
[
pduIndex
].
num_TLV
);
uint8_t
*
sdu
=
TX_req
->
pdu_list
[
pduIndex
].
TLVs
[
0
].
value
.
direct
;
uint8_t
*
sdu
=
(
uint8_t
*
)
TX_req
->
pdu_list
[
pduIndex
].
TLVs
[
0
].
value
.
direct
;
handle_nr_nfapi_pdsch_pdu
(
gNB
,
frame
,
slot
,
&
dl_tti_pdu
->
pdsch_pdu
,
sdu
);
do_oai
=
1
;
}
}
}
...
...
openair1/SCHED_NR/nr_prach_procedures.c
View file @
932b4e0d
...
...
@@ -30,9 +30,9 @@
* \warning
*/
#include "PHY/defs_
e
NB.h"
#include "PHY/defs_
g
NB.h"
#include "PHY/phy_extern.h"
#include "
SCHED/sched_eNB
.h"
#include "
PHY/NR_TRANSPORT/nr_transport_proto
.h"
#include "nfapi_nr_interface_scf.h"
#include "fapi_nr_l1.h"
#include "nfapi_pnf.h"
...
...
@@ -71,12 +71,13 @@ void L1_nr_prach_procedures(PHY_VARS_gNB *gNB,int frame,int subframe) {
for
(
i
=
0
;
i
<
gNB
->
num_RU
;
i
++
)
{
ru
=
gNB
->
RU_list
[
i
];
for
(
ru_aa
=
0
,
aa
=
0
;
ru_aa
<
ru
->
nb_rx
;
ru_aa
++
,
aa
++
)
{
gNB
->
prach_vars
.
rxsigF
[
0
][
aa
]
=
gNB
->
RU_list
[
i
]
->
prach_rxsigF
[
ru_aa
];
gNB
->
prach_vars
.
rxsigF
[
aa
]
=
gNB
->
RU_list
[
i
]
->
prach_rxsigF
[
ru_aa
];
}
}
rx_nr_prach
(
gNB
,
0
,
frame
,
subframe
,
&
max_preamble
[
0
],
&
max_preamble_energy
[
0
],
&
max_preamble_delay
[
0
]
...
...
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
932b4e0d
...
...
@@ -49,40 +49,6 @@
#endif
extern
uint8_t
nfapi_mode
;
/*
int return_ssb_type(nfapi_config_request_t *cfg)
{
int mu = cfg->subframe_config.numerology_index_mu.value;
nr_ssb_type_e ssb_type;
switch(mu) {
case NR_MU_0:
ssb_type = nr_ssb_type_A;
break;
case NR_MU_1:
ssb_type = nr_ssb_type_B;
break;
case NR_MU_3:
ssb_type = nr_ssb_type_D;
break;
case NR_MU_4:
ssb_type = nr_ssb_type_E;
break;
default:
AssertFatal(0==1, "Invalid numerology index %d for the synchronization block\n", mu);
}
LOG_D(PHY, "SSB type %d\n", ssb_type);
return ssb_type;
}*/
void
nr_set_ssb_first_subcarrier
(
nfapi_nr_config_request_scf_t
*
cfg
,
NR_DL_FRAME_PARMS
*
fp
)
{
fp
->
ssb_start_subcarrier
=
(
12
*
cfg
->
ssb_table
.
ssb_offset_point_a
.
value
+
cfg
->
ssb_table
.
ssb_subcarrier_offset
.
value
);
...
...
@@ -90,13 +56,17 @@ void nr_set_ssb_first_subcarrier(nfapi_nr_config_request_scf_t *cfg, NR_DL_FRAME
}
void
nr_common_signal_procedures
(
PHY_VARS_gNB
*
gNB
,
int
frame
,
int
slot
)
{
NR_DL_FRAME_PARMS
*
fp
=&
gNB
->
frame_parms
;
nfapi_nr_config_request_scf_t
*
cfg
=
&
gNB
->
gNB_config
;
int
**
txdataF
=
gNB
->
common_vars
.
txdataF
;
uint8_t
ssb_index
,
n_hf
;
in
t
ssb_start_symbol
,
rel_slot
;
uint16_
t
ssb_start_symbol
,
rel_slot
;
int
txdataF_offset
=
(
slot
%
2
)
*
fp
->
samples_per_slot_wCP
;
uint16_t
slots_per_hf
=
fp
->
slots_per_frame
/
2
;
uint16_t
slots_per_hf
=
(
fp
->
slots_per_frame
)
>>
1
;
if
(
slot
==
0
)
gNB
->
skipped_slots
=
0
;
n_hf
=
fp
->
half_frame_bit
;
...
...
@@ -108,41 +78,44 @@ void nr_common_signal_procedures (PHY_VARS_gNB *gNB,int frame, int slot) {
n_hf
=
1
;
}
// to set a effective slot number
between 0 to 9
in the half frame where the SSB is supposed to be
// to set a effective slot number in the half frame where the SSB is supposed to be
rel_slot
=
(
n_hf
)
?
(
slot
-
slots_per_hf
)
:
slot
;
LOG_D
(
PHY
,
"common_signal_procedures: frame %d, slot %d
\n
"
,
frame
,
slot
);
if
(
rel_slot
<
10
&&
rel_slot
>=
0
)
{
for
(
int
i
=
0
;
i
<
2
;
i
++
)
{
// max two SSB per frame
if
((
slot
==
8
)
||
(
slot
==
9
)
||
(
slot
==
18
)
||
(
slot
==
19
)
||
(
slot
==
28
)
||
(
slot
==
29
))
gNB
->
skipped_slots
=
gNB
->
skipped_slots
+
1
;
else
{
if
(
rel_slot
<
slots_per_hf
&&
rel_slot
>=
0
)
{
for
(
int
i
=
0
;
i
<
2
;
i
++
)
{
// max two SSB per frame
ssb_index
=
i
+
2
*
rel_slot
;
// computing the ssb_index
if
((
fp
->
L_ssb
>>
ssb_index
)
&
0x01
)
{
// generating the ssb only if the bit of L_ssb at current ssb index is 1
ssb_index
=
i
+
((
rel_slot
-
gNB
->
skipped_slots
)
<<
1
)
;
// computing the ssb_index
if
((
fp
->
L_ssb
>>
ssb_index
)
&
0x01
)
{
// generating the ssb only if the bit of L_ssb at current ssb index is 1
gNB
->
ssb_pdu
.
ssb_pdu_rel15
.
SsbBlockIndex
=
ssb_index
;
fp
->
ssb_index
=
ssb_index
;
int
ssb_start_symbol_abs
=
nr_get_ssb_start_symbol
(
fp
);
// computing the starting symbol for current ssb
ssb_start_symbol
=
ssb_start_symbol_abs
%
14
;
// start symbol wrt slot
fp
->
ssb_index
=
ssb_index
;
int
ssb_start_symbol_abs
=
nr_get_ssb_start_symbol
(
fp
);
// computing the starting symbol for current ssb
ssb_start_symbol
=
ssb_start_symbol_abs
%
fp
->
symbols_per_slot
;
// start symbol wrt slot
nr_set_ssb_first_subcarrier
(
cfg
,
fp
);
// setting the first subcarrier
nr_set_ssb_first_subcarrier
(
cfg
,
fp
);
// setting the first subcarrier
LOG_D
(
PHY
,
"SS TX: frame %d, slot %d, start_symbol %d
\n
"
,
frame
,
slot
,
ssb_start_symbol
);
nr_generate_pss
(
gNB
->
d_pss
,
&
txdataF
[
0
][
txdataF_offset
],
AMP
,
ssb_start_symbol
,
cfg
,
fp
);
nr_generate_sss
(
gNB
->
d_sss
,
&
txdataF
[
0
][
txdataF_offset
],
AMP
,
ssb_start_symbol
,
cfg
,
fp
);
LOG_D
(
PHY
,
"SS TX: frame %d, slot %d, start_symbol %d
\n
"
,
frame
,
slot
,
ssb_start_symbol
);
nr_generate_pss
(
gNB
->
d_pss
,
&
txdataF
[
0
][
txdataF_offset
],
AMP
,
ssb_start_symbol
,
cfg
,
fp
);
nr_generate_sss
(
gNB
->
d_sss
,
&
txdataF
[
0
][
txdataF_offset
],
AMP
,
ssb_start_symbol
,
cfg
,
fp
);
if
(
cfg
->
carrier_config
.
num_tx_ant
.
value
<=
4
)
nr_generate_pbch_dmrs
(
gNB
->
nr_gold_pbch_dmrs
[
n_hf
][
ssb_index
],
&
txdataF
[
0
][
txdataF_offset
],
AMP
,
ssb_start_symbol
,
cfg
,
fp
);
else
nr_generate_pbch_dmrs
(
gNB
->
nr_gold_pbch_dmrs
[
0
][
ssb_index
],
&
txdataF
[
0
][
txdataF_offset
],
AMP
,
ssb_start_symbol
,
cfg
,
fp
);
if
(
cfg
->
carrier_config
.
num_tx_ant
.
value
<=
4
)
nr_generate_pbch_dmrs
(
gNB
->
nr_gold_pbch_dmrs
[
n_hf
][
ssb_index
],
&
txdataF
[
0
][
txdataF_offset
],
AMP
,
ssb_start_symbol
,
cfg
,
fp
);
else
nr_generate_pbch_dmrs
(
gNB
->
nr_gold_pbch_dmrs
[
0
][
ssb_index
],
&
txdataF
[
0
][
txdataF_offset
],
AMP
,
ssb_start_symbol
,
cfg
,
fp
);
nr_generate_pbch
(
&
gNB
->
pbch
,
&
gNB
->
ssb_pdu
,
gNB
->
nr_pbch_interleaver
,
&
txdataF
[
0
][
txdataF_offset
],
AMP
,
ssb_start_symbol
,
n_hf
,
cfg
->
carrier_config
.
num_tx_ant
.
value
,
frame
,
cfg
,
fp
);
nr_generate_pbch
(
&
gNB
->
pbch
,
&
gNB
->
ssb_pdu
,
gNB
->
nr_pbch_interleaver
,
&
txdataF
[
0
][
txdataF_offset
],
AMP
,
ssb_start_symbol
,
n_hf
,
cfg
->
carrier_config
.
num_tx_ant
.
value
,
frame
,
cfg
,
fp
);
}
}
}
}
...
...
@@ -161,7 +134,7 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB,
if
(
cfg
->
ssb_table
.
ssb_period
.
value
>
1
)
ssb_frame_periodicity
=
1
<<
(
cfg
->
ssb_table
.
ssb_period
.
value
-
1
)
;
// 10ms is the frame length
ssb_frame_periodicity
=
1
<<
(
cfg
->
ssb_table
.
ssb_period
.
value
-
1
)
;
if
((
cfg
->
cell_config
.
frame_duplex_type
.
value
==
TDD
)
&&
(
nr_slot_select
(
cfg
,
frame
,
slot
)
==
NR_UPLINK_SLOT
))
return
;
...
...
openair1/SCHED_NR_UE/defs.h
View file @
932b4e0d
...
...
@@ -370,7 +370,7 @@ void nr_compute_srs_pos(lte_frame_type_t frameType,uint16_t isrs,uint16_t *psrsP
void
set_tx_harq_id
(
NR_UE_ULSCH_t
*
ulsch
,
int
harq_pid
,
int
slot_tx
);
int
get_tx_harq_id
(
NR_UE_ULSCH_t
*
ulsch
,
int
slot_tx
);
int
is_pbch_in_slot
(
fapi_nr_config_request_t
*
config
,
int
frame
,
int
slot
,
NR_DL_FRAME_PARMS
*
fp
,
int
mib_sfn
);
int
is_pbch_in_slot
(
fapi_nr_config_request_t
*
config
,
int
frame
,
int
slot
,
NR_DL_FRAME_PARMS
*
fp
);
/*@}*/
...
...
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
View file @
932b4e0d
...
...
@@ -3273,7 +3273,7 @@ void nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, int eNB
if
(
!
dlsch1
)
{
int
harq_pid
=
dlsch0
->
current_harq_pid
;
uint16_t
BWPStart
=
dlsch0
->
harq_processes
[
harq_pid
]
->
BWPStart
;
uint16_t
BWPSize
=
dlsch0
->
harq_processes
[
harq_pid
]
->
BWPSize
;
//
uint16_t BWPSize = dlsch0->harq_processes[harq_pid]->BWPSize;
uint16_t
pdsch_start_rb
=
dlsch0
->
harq_processes
[
harq_pid
]
->
start_rb
;
uint16_t
pdsch_nb_rb
=
dlsch0
->
harq_processes
[
harq_pid
]
->
nb_rb
;
uint16_t
s0
=
dlsch0
->
harq_processes
[
harq_pid
]
->
start_symbol
;
...
...
@@ -4027,9 +4027,9 @@ void *UE_thread_slot1_dl_processing(void *arg) {
#endif
int
is_pbch_in_slot
(
fapi_nr_config_request_t
*
config
,
int
frame
,
int
slot
,
NR_DL_FRAME_PARMS
*
fp
,
int
mib_sfn
)
{
int
is_pbch_in_slot
(
fapi_nr_config_request_t
*
config
,
int
frame
,
int
slot
,
NR_DL_FRAME_PARMS
*
fp
)
{
int
ssb_slot_decoded
=
(
fp
->
ssb_index
)
/
2
;
int
ssb_slot_decoded
=
(
fp
->
ssb_index
>>
1
)
+
((
fp
->
ssb_index
>>
4
)
<<
1
);
//slot in which the decoded SSB can be found
if
(
config
->
ssb_table
.
ssb_period
==
0
)
{
// check for pbch in corresponding slot each half frame
...
...
@@ -4040,7 +4040,7 @@ int is_pbch_in_slot(fapi_nr_config_request_t *config, int frame, int slot, NR_DL
}
else
{
// if the current frame is supposed to contain ssb
if
(
!
(
(
frame
-
(
mib_sfn
))
%
(
1
<<
config
->
ssb_table
.
ssb_period
)))
if
(
!
(
frame
%
(
1
<<
(
config
->
ssb_table
.
ssb_period
-
1
)
)))
return
(
slot
==
ssb_slot_decoded
);
else
return
0
;
...
...
@@ -4081,7 +4081,7 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
if
(
pdcch_vars
->
nb_search_space
>
0
)
get_coreset_rballoc
(
pdcch_vars
->
pdcch_config
[
0
].
coreset
.
frequency_domain_resource
,
&
coreset_nb_rb
,
&
coreset_start_rb
);
slot_pbch
=
is_pbch_in_slot
(
cfg
,
frame_rx
,
nr_tti_rx
,
fp
,
proc
->
decoded_frame_rx
);
slot_pbch
=
is_pbch_in_slot
(
cfg
,
frame_rx
,
nr_tti_rx
,
fp
);
// looking for pbch only in slot where it is supposed to be
if
((
ue
->
decode_MIB
==
1
)
&&
slot_pbch
)
...
...
openair1/SIMULATION/NR_PHY/dlsim.c
View file @
932b4e0d
...
...
@@ -621,7 +621,7 @@ int main(int argc, char **argv)
nr_l2_init_ue
();
nr_l2_init_ue
(
NULL
);
UE_mac
=
get_mac_inst
(
0
);
UE
->
if_inst
=
nr_ue_if_module_init
(
0
);
...
...
@@ -658,7 +658,7 @@ int main(int argc, char **argv)
rrc
.
carrier
.
MIB
=
(
uint8_t
*
)
malloc
(
4
);
rrc
.
carrier
.
sizeof_MIB
=
do_MIB_NR
(
&
rrc
,
0
);
nr_rrc_mac_config_req_ue
(
0
,
0
,
0
,
rrc
.
carrier
.
mib
.
message
.
choice
.
mib
,
s
cc
,
s
econdaryCellGroup
->
spCellConfig
);
nr_rrc_mac_config_req_ue
(
0
,
0
,
0
,
rrc
.
carrier
.
mib
.
message
.
choice
.
mib
,
secondaryCellGroup
->
spCellConfig
);
nr_dcireq_t
dcireq
;
...
...
openair2/LAYER2/NR_MAC_UE/mac_proto.h
View file @
932b4e0d
...
...
@@ -49,7 +49,6 @@
\param pdu_length length of pdu
\param cell_id cell id */
int8_t
nr_ue_decode_mib
(
UE_nr_rxtx_proc_t
*
proc
,
module_id_t
module_id
,
int
cc_id
,
uint8_t
gNB_index
,
...
...
openair2/LAYER2/NR_MAC_UE/main_ue_nr.c
View file @
932b4e0d
...
...
@@ -44,17 +44,18 @@ NR_UE_MAC_INST_t * nr_l2_init_ue(NR_UE_RRC_INST_t* rrc_inst)
//init mac here
nr_ue_mac_inst
=
(
NR_UE_MAC_INST_t
*
)
malloc
(
sizeof
(
NR_UE_MAC_INST_t
)
*
NB_NR_UE_MAC_INST
);
nr_rrc_mac_config_req_ue
(
0
,
0
,
0
,
NULL
,
rrc_inst
->
cell_group_config
->
spCellConfig
);
if
(
IS_SOFTMODEM_NOS1
){
if
(
rrc_inst
)
{
nr_rrc_mac_config_req_ue
(
0
,
0
,
0
,
NULL
,
rrc_inst
->
cell_group_config
->
spCellConfig
);
if
(
IS_SOFTMODEM_NOS1
){
if
(
rlc_module_init
(
0
)
!=
0
)
{
LOG_I
(
RLC
,
"Problem at RLC initiation
\n
"
);
LOG_I
(
RLC
,
"Problem at RLC initiation
\n
"
);
}
pdcp_layer_init
();
nr_ip_over_LTE_DRB_preconfiguration
();
}
}
else
LOG_I
(
MAC
,
"Running without RRC instance
\n
"
);
return
(
nr_ue_mac_inst
);
}
...
...
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
View file @
932b4e0d
...
...
@@ -223,8 +223,7 @@ int8_t nr_ue_process_dlsch(module_id_t module_id,
return
0
;
}
int8_t
nr_ue_decode_mib
(
UE_nr_rxtx_proc_t
*
proc
,
module_id_t
module_id
,
int8_t
nr_ue_decode_mib
(
module_id_t
module_id
,
int
cc_id
,
uint8_t
gNB_index
,
uint8_t
extra_bits
,
// 8bits 38.212 c7.1.1
...
...
@@ -247,7 +246,6 @@ int8_t nr_ue_decode_mib(UE_nr_rxtx_proc_t *proc,
frame_number_4lsb
|=
((
extra_bits
>>
i
)
&
1
)
<<
(
3
-
i
);
uint8_t
half_frame_bit
=
(
extra_bits
>>
4
)
&
0x1
;
// extra bits[4]
uint8_t
ssb_subcarrier_offset_msb
=
(
extra_bits
>>
5
)
&
0x1
;
// extra bits[5]
uint8_t
ssb_subcarrier_offset
=
(
uint8_t
)
mac
->
mib
->
ssb_SubcarrierOffset
;
//uint32_t ssb_index = 0; // TODO: ssb_index should obtain from L1 in case Lssb != 64
...
...
@@ -609,7 +607,9 @@ int8_t nr_ue_decode_mib(UE_nr_rxtx_proc_t *proc,
mac
->
phy_config
.
Mod_id
=
module_id
;
mac
->
phy_config
.
CC_id
=
cc_id
;
proc
->
decoded_frame_rx
=
frame
;
mac
->
dl_config_request
.
sfn
=
frame
;
mac
->
dl_config_request
.
slot
=
(
ssb_index
>>
1
)
+
((
ssb_index
>>
4
)
<<
1
);
// not valid for 240kHz SCS
//}
return
0
;
...
...
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
View file @
932b4e0d
...
...
@@ -44,17 +44,16 @@
static
nr_ue_if_module_t
*
nr_ue_if_module_inst
[
MAX_IF_MODULES
];
// L2 Abstraction Layer
int
handle_bcch_bch
(
UE_nr_rxtx_proc_t
*
proc
,
module_id_t
module_id
,
int
cc_id
,
unsigned
int
gNB_index
,
uint8_t
*
pduP
,
unsigned
int
additional_bits
,
uint32_t
ssb_index
,
uint32_t
ssb_length
,
uint16_t
cell_id
){
return
nr_ue_decode_mib
(
proc
,
module_id
,
cc_id
,
gNB_index
,
additional_bits
,
ssb_length
,
// Lssb = 64 is not support
ssb_index
,
pduP
,
cell_id
);
int
handle_bcch_bch
(
module_id_t
module_id
,
int
cc_id
,
unsigned
int
gNB_index
,
uint8_t
*
pduP
,
unsigned
int
additional_bits
,
uint32_t
ssb_index
,
uint32_t
ssb_length
,
uint16_t
cell_id
){
return
nr_ue_decode_mib
(
module_id
,
cc_id
,
gNB_index
,
additional_bits
,
ssb_length
,
// Lssb = 64 is not support
ssb_index
,
pduP
,
cell_id
);
}
...
...
@@ -218,16 +217,14 @@ int nr_ue_dl_indication(nr_downlink_indication_t *dl_info){
for
(
i
=
0
;
i
<
dl_info
->
rx_ind
->
number_pdus
;
++
i
){
switch
(
dl_info
->
rx_ind
->
rx_indication_body
[
i
].
pdu_type
){
case
FAPI_NR_RX_PDU_TYPE_MIB
:
ret_mask
|=
(
handle_bcch_bch
(
dl_info
->
proc
,
dl_info
->
module_id
,
dl_info
->
cc_id
,
dl_info
->
gNB_index
,
ret_mask
|=
(
handle_bcch_bch
(
dl_info
->
module_id
,
dl_info
->
cc_id
,
dl_info
->
gNB_index
,
(
dl_info
->
rx_ind
->
rx_indication_body
+
i
)
->
mib_pdu
.
pdu
,
(
dl_info
->
rx_ind
->
rx_indication_body
+
i
)
->
mib_pdu
.
additional_bits
,
(
dl_info
->
rx_ind
->
rx_indication_body
+
i
)
->
mib_pdu
.
ssb_index
,
(
dl_info
->
rx_ind
->
rx_indication_body
+
i
)
->
mib_pdu
.
ssb_length
,
(
dl_info
->
rx_ind
->
rx_indication_body
+
i
)
->
mib_pdu
.
cell_id
))
<<
FAPI_NR_RX_PDU_TYPE_MIB
;
LOG_D
(
MAC
,
"[L2][IF MODULE][DL INDICATION][RX_IND], MIB case Number of PDUs: %d
\n
"
,
dl_info
->
rx_ind
->
number_pdus
);
/*ret_mask |= (handle_bcch_bch( dl_info->proc,
dl_info->module_id, dl_info->cc_id, dl_info->gNB_index,
/*ret_mask |= (handle_bcch_bch( dl_info->module_id, dl_info->cc_id, dl_info->gNB_index,
dl_info->rx_ind->rx_indication_body[i].mib_pdu.pdu,
dl_info->rx_ind->rx_indication_body[i].mib_pdu.additional_bits,
dl_info->rx_ind->rx_indication_body[i].mib_pdu.ssb_index,
...
...
@@ -306,11 +303,10 @@ int nr_ue_dcireq(nr_dcireq_t *dcireq) {
fapi_nr_dl_config_request_t
*
dl_config
=&
dcireq
->
dl_config_req
;
NR_UE_MAC_INST_t
*
UE_mac
=
get_mac_inst
(
0
);
dl_config
->
sfn
=
UE_mac
->
dl_config_request
.
sfn
;
dl_config
->
slot
=
UE_mac
->
dl_config_request
.
slot
;
dl_config
->
number_pdus
=
0
;
ue_dci_configuration
(
UE_mac
,
dl_config
,
dcireq
->
frame
,
dcireq
->
slot
);
ue_dci_configuration
(
UE_mac
,
dl_config
,
dcireq
->
frame
,
dcireq
->
slot
);
return
0
;
}
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h
View file @
932b4e0d
...
...
@@ -215,7 +215,7 @@ int nr_ue_dcireq(nr_dcireq_t *dcireq);
\param ssb_index SSB index within 0 - (L_ssb-1) corresponding to 38.331 ch.13 parameter i
\param ssb_length corresponding to L1 parameter L_ssb
\param cell_id cell id */
int
handle_bcch_bch
(
UE_nr_rxtx_proc_t
*
proc
,
module_id_t
module_id
,
int
cc_id
,
unsigned
int
gNB_index
,
uint8_t
*
pduP
,
unsigned
int
additional_bits
,
uint32_t
ssb_index
,
uint32_t
ssb_length
,
uint16_t
cell_id
);
int
handle_bcch_bch
(
module_id_t
module_id
,
int
cc_id
,
unsigned
int
gNB_index
,
uint8_t
*
pduP
,
unsigned
int
additional_bits
,
uint32_t
ssb_index
,
uint32_t
ssb_length
,
uint16_t
cell_id
);
// TODO check
/**\brief handle BCCH-DL-SCH message from dl_indication
...
...
openair2/RRC/NR/rrc_gNB_reconfig.c
View file @
932b4e0d
...
...
@@ -58,31 +58,31 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
memset
(
secondaryCellGroup
,
0
,
sizeof
(
NR_CellGroupConfig_t
));
secondaryCellGroup
->
cellGroupId
=
scg_id
;
NR_RLC_BearerConfig_t
*
RLC_BearerConfig
=
calloc
(
1
,
sizeof
(
NR_RLC_BearerConfig_t
));
NR_RLC_BearerConfig_t
*
RLC_BearerConfig
=
calloc
(
1
,
sizeof
(
*
RLC_BearerConfig
));
RLC_BearerConfig
->
logicalChannelIdentity
=
4
;
RLC_BearerConfig
->
servedRadioBearer
=
calloc
(
1
,
sizeof
(
struct
NR_RLC_BearerConfig__
servedRadioBearer
));
RLC_BearerConfig
->
servedRadioBearer
=
calloc
(
1
,
sizeof
(
*
RLC_BearerConfig
->
servedRadioBearer
));
RLC_BearerConfig
->
servedRadioBearer
->
present
=
NR_RLC_BearerConfig__servedRadioBearer_PR_drb_Identity
;
RLC_BearerConfig
->
servedRadioBearer
->
choice
.
drb_Identity
=
5
;
RLC_BearerConfig
->
reestablishRLC
=
calloc
(
1
,
sizeof
(
long
));
RLC_BearerConfig
->
reestablishRLC
=
calloc
(
1
,
sizeof
(
*
RLC_BearerConfig
->
reestablishRLC
));
*
RLC_BearerConfig
->
reestablishRLC
=
NR_RLC_BearerConfig__reestablishRLC_true
;
RLC_BearerConfig
->
rlc_Config
=
calloc
(
1
,
sizeof
(
struct
NR_RLC
_Config
));
RLC_BearerConfig
->
rlc_Config
=
calloc
(
1
,
sizeof
(
*
RLC_BearerConfig
->
rlc
_Config
));
RLC_BearerConfig
->
rlc_Config
->
present
=
NR_RLC_Config_PR_am
;
RLC_BearerConfig
->
rlc_Config
->
choice
.
am
=
calloc
(
1
,
sizeof
(
struct
NR_RLC_Config__
am
));
RLC_BearerConfig
->
rlc_Config
->
choice
.
am
->
ul_AM_RLC
.
sn_FieldLength
=
calloc
(
1
,
sizeof
(
NR_SN_FieldLengthAM_t
));
RLC_BearerConfig
->
rlc_Config
->
choice
.
am
=
calloc
(
1
,
sizeof
(
*
RLC_BearerConfig
->
rlc_Config
->
choice
.
am
));
RLC_BearerConfig
->
rlc_Config
->
choice
.
am
->
ul_AM_RLC
.
sn_FieldLength
=
calloc
(
1
,
sizeof
(
*
RLC_BearerConfig
->
rlc_Config
->
choice
.
am
->
ul_AM_RLC
.
sn_FieldLength
));
*
RLC_BearerConfig
->
rlc_Config
->
choice
.
am
->
ul_AM_RLC
.
sn_FieldLength
=
NR_SN_FieldLengthAM_size18
;
RLC_BearerConfig
->
rlc_Config
->
choice
.
am
->
ul_AM_RLC
.
t_PollRetransmit
=
NR_T_PollRetransmit_ms45
;
RLC_BearerConfig
->
rlc_Config
->
choice
.
am
->
ul_AM_RLC
.
pollPDU
=
NR_PollPDU_p64
;
RLC_BearerConfig
->
rlc_Config
->
choice
.
am
->
ul_AM_RLC
.
pollByte
=
NR_PollByte_kB500
;
RLC_BearerConfig
->
rlc_Config
->
choice
.
am
->
ul_AM_RLC
.
maxRetxThreshold
=
NR_UL_AM_RLC__maxRetxThreshold_t32
;
RLC_BearerConfig
->
rlc_Config
->
choice
.
am
->
dl_AM_RLC
.
sn_FieldLength
=
calloc
(
1
,
sizeof
(
NR_SN_FieldLengthAM_t
));
RLC_BearerConfig
->
rlc_Config
->
choice
.
am
->
dl_AM_RLC
.
sn_FieldLength
=
calloc
(
1
,
sizeof
(
*
RLC_BearerConfig
->
rlc_Config
->
choice
.
am
->
dl_AM_RLC
.
sn_FieldLength
));
*
RLC_BearerConfig
->
rlc_Config
->
choice
.
am
->
dl_AM_RLC
.
sn_FieldLength
=
NR_SN_FieldLengthAM_size18
;
RLC_BearerConfig
->
rlc_Config
->
choice
.
am
->
dl_AM_RLC
.
t_Reassembly
=
NR_T_Reassembly_ms15
;
RLC_BearerConfig
->
rlc_Config
->
choice
.
am
->
dl_AM_RLC
.
t_StatusProhibit
=
NR_T_StatusProhibit_ms15
;
RLC_BearerConfig
->
mac_LogicalChannelConfig
=
calloc
(
1
,
sizeof
(
struct
NR
_LogicalChannelConfig
));
RLC_BearerConfig
->
mac_LogicalChannelConfig
=
calloc
(
1
,
sizeof
(
*
RLC_BearerConfig
->
mac
_LogicalChannelConfig
));
RLC_BearerConfig
->
mac_LogicalChannelConfig
->
ul_SpecificParameters
=
calloc
(
1
,
sizeof
(
*
RLC_BearerConfig
->
mac_LogicalChannelConfig
->
ul_SpecificParameters
));
RLC_BearerConfig
->
mac_LogicalChannelConfig
->
ul_SpecificParameters
->
priority
=
1
;
RLC_BearerConfig
->
mac_LogicalChannelConfig
->
ul_SpecificParameters
->
prioritisedBitRate
=
NR_LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity
;
...
...
@@ -91,32 +91,32 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
RLC_BearerConfig
->
mac_LogicalChannelConfig
->
ul_SpecificParameters
->
allowedSCS_List
=
NULL
;
RLC_BearerConfig
->
mac_LogicalChannelConfig
->
ul_SpecificParameters
->
maxPUSCH_Duration
=
NULL
;
RLC_BearerConfig
->
mac_LogicalChannelConfig
->
ul_SpecificParameters
->
configuredGrantType1Allowed
=
NULL
;
RLC_BearerConfig
->
mac_LogicalChannelConfig
->
ul_SpecificParameters
->
logicalChannelGroup
=
calloc
(
1
,
sizeof
(
long
));
RLC_BearerConfig
->
mac_LogicalChannelConfig
->
ul_SpecificParameters
->
logicalChannelGroup
=
calloc
(
1
,
sizeof
(
*
RLC_BearerConfig
->
mac_LogicalChannelConfig
->
ul_SpecificParameters
->
logicalChannelGroup
));
*
RLC_BearerConfig
->
mac_LogicalChannelConfig
->
ul_SpecificParameters
->
logicalChannelGroup
=
1
;
RLC_BearerConfig
->
mac_LogicalChannelConfig
->
ul_SpecificParameters
->
schedulingRequestID
=
NULL
;
RLC_BearerConfig
->
mac_LogicalChannelConfig
->
ul_SpecificParameters
->
logicalChannelSR_Mask
=
false
;
RLC_BearerConfig
->
mac_LogicalChannelConfig
->
ul_SpecificParameters
->
logicalChannelSR_DelayTimerApplied
=
false
;
RLC_BearerConfig
->
mac_LogicalChannelConfig
->
ul_SpecificParameters
->
bitRateQueryProhibitTimer
=
NULL
;
secondaryCellGroup
->
rlc_BearerToAddModList
=
calloc
(
1
,
sizeof
(
struct
NR_CellGroupConfig__
rlc_BearerToAddModList
));
secondaryCellGroup
->
rlc_BearerToAddModList
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
rlc_BearerToAddModList
));
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
rlc_BearerToAddModList
->
list
,
RLC_BearerConfig
);
secondaryCellGroup
->
mac_CellGroupConfig
=
calloc
(
1
,
sizeof
(
NR_MAC_CellGroupConfig_t
));
secondaryCellGroup
->
mac_CellGroupConfig
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
mac_CellGroupConfig
));
secondaryCellGroup
->
mac_CellGroupConfig
->
drx_Config
=
NULL
;
secondaryCellGroup
->
mac_CellGroupConfig
->
schedulingRequestConfig
=
NULL
;
secondaryCellGroup
->
mac_CellGroupConfig
->
bsr_Config
=
calloc
(
1
,
sizeof
(
NR_BSR_Config_t
));
secondaryCellGroup
->
mac_CellGroupConfig
->
bsr_Config
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
mac_CellGroupConfig
->
bsr_Config
));
secondaryCellGroup
->
mac_CellGroupConfig
->
bsr_Config
->
periodicBSR_Timer
=
NR_BSR_Config__periodicBSR_Timer_sf80
;
secondaryCellGroup
->
mac_CellGroupConfig
->
bsr_Config
->
retxBSR_Timer
=
NR_BSR_Config__periodicBSR_Timer_sf320
;
secondaryCellGroup
->
mac_CellGroupConfig
->
tag_Config
=
calloc
(
1
,
sizeof
(
NR_TAG_Config_t
));
secondaryCellGroup
->
mac_CellGroupConfig
->
tag_Config
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
mac_CellGroupConfig
->
tag_Config
));
secondaryCellGroup
->
mac_CellGroupConfig
->
tag_Config
->
tag_ToReleaseList
=
NULL
;
secondaryCellGroup
->
mac_CellGroupConfig
->
tag_Config
->
tag_ToAddModList
=
calloc
(
1
,
sizeof
(
struct
NR_TAG_Config__
tag_ToAddModList
));
struct
NR_TAG
*
tag
=
calloc
(
1
,
sizeof
(
struct
NR_TAG
));
secondaryCellGroup
->
mac_CellGroupConfig
->
tag_Config
->
tag_ToAddModList
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
mac_CellGroupConfig
->
tag_Config
->
tag_ToAddModList
));
struct
NR_TAG
*
tag
=
calloc
(
1
,
sizeof
(
*
tag
));
tag
->
tag_Id
=
0
;
tag
->
timeAlignmentTimer
=
NR_TimeAlignmentTimer_infinity
;
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
mac_CellGroupConfig
->
tag_Config
->
tag_ToAddModList
->
list
,
tag
);
secondaryCellGroup
->
mac_CellGroupConfig
->
phr_Config
=
calloc
(
1
,
sizeof
(
struct
NR_SetupRelease_PHR
_Config
));
secondaryCellGroup
->
mac_CellGroupConfig
->
phr_Config
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
mac_CellGroupConfig
->
phr
_Config
));
secondaryCellGroup
->
mac_CellGroupConfig
->
phr_Config
->
present
=
NR_SetupRelease_PHR_Config_PR_setup
;
secondaryCellGroup
->
mac_CellGroupConfig
->
phr_Config
->
choice
.
setup
=
calloc
(
1
,
sizeof
(
NR_PHR_Config_t
));
secondaryCellGroup
->
mac_CellGroupConfig
->
phr_Config
->
choice
.
setup
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
mac_CellGroupConfig
->
phr_Config
->
choice
.
setup
));
secondaryCellGroup
->
mac_CellGroupConfig
->
phr_Config
->
choice
.
setup
->
phr_PeriodicTimer
=
NR_PHR_Config__phr_PeriodicTimer_sf20
;
secondaryCellGroup
->
mac_CellGroupConfig
->
phr_Config
->
choice
.
setup
->
phr_ProhibitTimer
=
NR_PHR_Config__phr_ProhibitTimer_sf0
;
secondaryCellGroup
->
mac_CellGroupConfig
->
phr_Config
->
choice
.
setup
->
phr_Tx_PowerFactorChange
=
NR_PHR_Config__phr_Tx_PowerFactorChange_dB3
;
...
...
@@ -129,11 +129,11 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
secondaryCellGroup
->
mac_CellGroupConfig
->
ext1
=
NULL
;
secondaryCellGroup
->
physicalCellGroupConfig
=
calloc
(
1
,
sizeof
(
struct
NR_P
hysicalCellGroupConfig
));
secondaryCellGroup
->
physicalCellGroupConfig
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
p
hysicalCellGroupConfig
));
secondaryCellGroup
->
physicalCellGroupConfig
->
harq_ACK_SpatialBundlingPUCCH
=
NULL
;
secondaryCellGroup
->
physicalCellGroupConfig
->
harq_ACK_SpatialBundlingPUSCH
=
NULL
;
secondaryCellGroup
->
physicalCellGroupConfig
->
p_NR_FR1
=
calloc
(
1
,
sizeof
(
NR_P_Max_t
));
secondaryCellGroup
->
physicalCellGroupConfig
->
p_NR_FR1
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
physicalCellGroupConfig
->
p_NR_FR1
));
*
secondaryCellGroup
->
physicalCellGroupConfig
->
p_NR_FR1
=
20
;
secondaryCellGroup
->
physicalCellGroupConfig
->
pdsch_HARQ_ACK_Codebook
=
NR_PhysicalCellGroupConfig__pdsch_HARQ_ACK_Codebook_dynamic
;
secondaryCellGroup
->
physicalCellGroupConfig
->
tpc_SRS_RNTI
=
NULL
;
...
...
@@ -143,10 +143,10 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
secondaryCellGroup
->
physicalCellGroupConfig
->
cs_RNTI
=
NULL
;
secondaryCellGroup
->
physicalCellGroupConfig
->
ext1
=
NULL
;
secondaryCellGroup
->
spCellConfig
=
calloc
(
1
,
sizeof
(
struct
NR_S
pCellConfig
));
secondaryCellGroup
->
spCellConfig
->
servCellIndex
=
calloc
(
1
,
sizeof
(
NR_ServCellIndex_t
));
secondaryCellGroup
->
spCellConfig
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
s
pCellConfig
));
secondaryCellGroup
->
spCellConfig
->
servCellIndex
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
servCellIndex
));
*
secondaryCellGroup
->
spCellConfig
->
servCellIndex
=
servCellIndex
;
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
=
calloc
(
1
,
sizeof
(
struct
NR_R
econfigurationWithSync
));
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
r
econfigurationWithSync
));
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
spCellConfigCommon
=
servingcellconfigcommon
;
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
newUE_Identity
=
(
phy_test
==
1
)
?
0x1234
:
(
taus
()
&
0xffff
);
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
t304
=
NR_ReconfigurationWithSync__t304_ms2000
;
...
...
@@ -155,29 +155,29 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
secondaryCellGroup
->
spCellConfig
->
rlf_TimersAndConstants
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
rlf_TimersAndConstants
));
secondaryCellGroup
->
spCellConfig
->
rlf_TimersAndConstants
->
present
=
NR_SetupRelease_RLF_TimersAndConstants_PR_setup
;
secondaryCellGroup
->
spCellConfig
->
rlf_TimersAndConstants
->
choice
.
setup
=
calloc
(
1
,
sizeof
(
struct
NR_RLF_TimersAndConstants
));
secondaryCellGroup
->
spCellConfig
->
rlf_TimersAndConstants
->
choice
.
setup
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
rlf_TimersAndConstants
->
choice
.
setup
));
secondaryCellGroup
->
spCellConfig
->
rlf_TimersAndConstants
->
choice
.
setup
->
t310
=
NR_RLF_TimersAndConstants__t310_ms2000
;
secondaryCellGroup
->
spCellConfig
->
rlf_TimersAndConstants
->
choice
.
setup
->
n310
=
NR_RLF_TimersAndConstants__n310_n10
;
secondaryCellGroup
->
spCellConfig
->
rlf_TimersAndConstants
->
choice
.
setup
->
n311
=
NR_RLF_TimersAndConstants__n311_n1
;
secondaryCellGroup
->
spCellConfig
->
rlf_TimersAndConstants
->
choice
.
setup
->
ext1
=
calloc
(
1
,
sizeof
(
struct
NR_RLF_TimersAndConstants__
ext1
));
secondaryCellGroup
->
spCellConfig
->
rlf_TimersAndConstants
->
choice
.
setup
->
ext1
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
rlf_TimersAndConstants
->
choice
.
setup
->
ext1
));
secondaryCellGroup
->
spCellConfig
->
rlf_TimersAndConstants
->
choice
.
setup
->
ext1
->
t311_v1530
=
NR_RLF_TimersAndConstants__ext1__t311_v1530_ms30000
;
secondaryCellGroup
->
spCellConfig
->
rlmInSyncOutOfSyncThreshold
=
NULL
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
=
calloc
(
1
,
sizeof
(
NR_ServingCellConfig_t
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
tdd_UL_DL_ConfigurationDedicated
=
NULL
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
=
calloc
(
1
,
sizeof
(
struct
NR_BWP_DownlinkDedicated
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdcch_Config
=
NULL
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
=
calloc
(
1
,
sizeof
(
struct
NR_SetupRelease_PDSCH
_Config
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch
_Config
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
present
=
NR_SetupRelease_PDSCH_Config_PR_setup
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
=
calloc
(
1
,
sizeof
(
struct
NR_PDSCH_Config
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
dataScramblingIdentityPDSCH
=
NULL
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
=
calloc
(
1
,
sizeof
(
struct
NR_SetupRelease_DMRS_DownlinkConfig
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
present
=
NR_SetupRelease_DMRS_DownlinkConfig_PR_setup
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
=
calloc
(
1
,
sizeof
(
struct
NR_DMRS_DownlinkConfig
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
->
dmrs_Type
=
NULL
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
->
maxLength
=
NULL
;
...
...
@@ -185,165 +185,165 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
->
scramblingID1
=
NULL
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
->
phaseTrackingRS
=
NULL
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
->
dmrs_AdditionalPosition
=
calloc
(
1
,
sizeof
(
long
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
->
dmrs_AdditionalPosition
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
->
dmrs_AdditionalPosition
));
*
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
->
dmrs_AdditionalPosition
=
NR_DMRS_DownlinkConfig__dmrs_AdditionalPosition_pos0
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
));
NR_TCI_State_t
*
tci0
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tci0
=
calloc
(
1
,
sizeof
(
*
tci0
));
tci0
->
tci_StateId
=
0
;
tci0
->
qcl_Type1
.
cell
=
NULL
;
tci0
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tci0
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tci0
->
qcl_Type1
.
bwp_Id
));
*
tci0
->
qcl_Type1
.
bwp_Id
=
1
;
tci0
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_csi_rs
;
tci0
->
qcl_Type1
.
referenceSignal
.
choice
.
csi_rs
=
2
;
tci0
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeA
;
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tci0
);
NR_TCI_State_t
*
tci1
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tci1
=
calloc
(
1
,
sizeof
(
*
tci1
));
tci1
->
tci_StateId
=
1
;
tci1
->
qcl_Type1
.
cell
=
NULL
;
tci1
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tci1
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tci1
->
qcl_Type1
.
bwp_Id
));
*
tci1
->
qcl_Type1
.
bwp_Id
=
1
;
tci1
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_csi_rs
;
tci1
->
qcl_Type1
.
referenceSignal
.
choice
.
csi_rs
=
6
;
tci1
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeA
;
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tci1
);
NR_TCI_State_t
*
tci2
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tci2
=
calloc
(
1
,
sizeof
(
*
tci2
));
tci2
->
tci_StateId
=
2
;
tci2
->
qcl_Type1
.
cell
=
NULL
;
tci2
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tci2
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tci2
->
qcl_Type1
.
bwp_Id
));
*
tci2
->
qcl_Type1
.
bwp_Id
=
1
;
tci2
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_csi_rs
;
tci2
->
qcl_Type1
.
referenceSignal
.
choice
.
csi_rs
=
10
;
tci2
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeA
;
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tci2
);
NR_TCI_State_t
*
tci3
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tci3
=
calloc
(
1
,
sizeof
(
*
tci3
));
tci3
->
tci_StateId
=
3
;
tci3
->
qcl_Type1
.
cell
=
NULL
;
tci3
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tci3
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tci3
->
qcl_Type1
.
bwp_Id
));
*
tci3
->
qcl_Type1
.
bwp_Id
=
1
;
tci3
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_csi_rs
;
tci3
->
qcl_Type1
.
referenceSignal
.
choice
.
csi_rs
=
14
;
tci3
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeA
;
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tci3
);
NR_TCI_State_t
*
tci4
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tci4
=
calloc
(
1
,
sizeof
(
*
tci4
));
tci4
->
tci_StateId
=
4
;
tci4
->
qcl_Type1
.
cell
=
NULL
;
tci4
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tci4
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tci4
->
qcl_Type1
.
bwp_Id
));
*
tci4
->
qcl_Type1
.
bwp_Id
=
1
;
tci4
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_csi_rs
;
tci4
->
qcl_Type1
.
referenceSignal
.
choice
.
csi_rs
=
18
;
tci4
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeA
;
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tci4
);
NR_TCI_State_t
*
tci5
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tci5
=
calloc
(
1
,
sizeof
(
*
tci5
));
tci5
->
tci_StateId
=
5
;
tci5
->
qcl_Type1
.
cell
=
NULL
;
tci5
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tci5
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tci5
->
qcl_Type1
.
bwp_Id
));
*
tci5
->
qcl_Type1
.
bwp_Id
=
1
;
tci5
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_csi_rs
;
tci5
->
qcl_Type1
.
referenceSignal
.
choice
.
csi_rs
=
22
;
tci5
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeA
;
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tci5
);
NR_TCI_State_t
*
tci6
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tci6
=
calloc
(
1
,
sizeof
(
*
tci6
));
tci6
->
tci_StateId
=
6
;
tci6
->
qcl_Type1
.
cell
=
NULL
;
tci6
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tci6
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tci6
->
qcl_Type1
.
bwp_Id
));
*
tci6
->
qcl_Type1
.
bwp_Id
=
1
;
tci6
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_csi_rs
;
tci6
->
qcl_Type1
.
referenceSignal
.
choice
.
csi_rs
=
26
;
tci6
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeA
;
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tci6
);
NR_TCI_State_t
*
tci7
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tci7
=
calloc
(
1
,
sizeof
(
*
tci7
));
tci7
->
tci_StateId
=
7
;
tci7
->
qcl_Type1
.
cell
=
NULL
;
tci7
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tci7
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tci7
->
qcl_Type1
.
bwp_Id
));
*
tci7
->
qcl_Type1
.
bwp_Id
=
1
;
tci7
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_csi_rs
;
tci7
->
qcl_Type1
.
referenceSignal
.
choice
.
csi_rs
=
30
;
tci7
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeA
;
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tci7
);
NR_TCI_State_t
*
tci8
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tci8
=
calloc
(
1
,
sizeof
(
*
tci8
));
tci8
->
tci_StateId
=
8
;
tci8
->
qcl_Type1
.
cell
=
NULL
;
tci8
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tci8
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tci8
->
qcl_Type1
.
bwp_Id
));
*
tci8
->
qcl_Type1
.
bwp_Id
=
1
;
tci8
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_ssb
;
tci8
->
qcl_Type1
.
referenceSignal
.
choice
.
ssb
=
0
;
tci8
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeC
;
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tci8
);
NR_TCI_State_t
*
tci9
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tci9
=
calloc
(
1
,
sizeof
(
*
tci9
));
tci9
->
tci_StateId
=
9
;
tci9
->
qcl_Type1
.
cell
=
NULL
;
tci9
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tci9
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tci9
->
qcl_Type1
.
bwp_Id
));
*
tci9
->
qcl_Type1
.
bwp_Id
=
1
;
tci9
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_ssb
;
tci9
->
qcl_Type1
.
referenceSignal
.
choice
.
ssb
=
1
;
tci9
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeC
;
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tci9
);
NR_TCI_State_t
*
tci10
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tci10
=
calloc
(
1
,
sizeof
(
*
tci10
));
tci10
->
tci_StateId
=
10
;
tci10
->
qcl_Type1
.
cell
=
NULL
;
tci10
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tci10
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tci10
->
qcl_Type1
.
bwp_Id
));
*
tci10
->
qcl_Type1
.
bwp_Id
=
1
;
tci10
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_ssb
;
tci10
->
qcl_Type1
.
referenceSignal
.
choice
.
ssb
=
2
;
tci10
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeC
;
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tci10
);
NR_TCI_State_t
*
tci11
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tci11
=
calloc
(
1
,
sizeof
(
*
tci11
));
tci11
->
tci_StateId
=
11
;
tci11
->
qcl_Type1
.
cell
=
NULL
;
tci11
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tci11
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tci11
->
qcl_Type1
.
bwp_Id
));
*
tci11
->
qcl_Type1
.
bwp_Id
=
1
;
tci11
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_ssb
;
tci11
->
qcl_Type1
.
referenceSignal
.
choice
.
ssb
=
3
;
tci11
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeC
;
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tci11
);
NR_TCI_State_t
*
tci12
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tci12
=
calloc
(
1
,
sizeof
(
*
tci12
));
tci12
->
tci_StateId
=
12
;
tci12
->
qcl_Type1
.
cell
=
NULL
;
tci12
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tci12
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tci12
->
qcl_Type1
.
bwp_Id
));
*
tci12
->
qcl_Type1
.
bwp_Id
=
1
;
tci12
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_ssb
;
tci12
->
qcl_Type1
.
referenceSignal
.
choice
.
ssb
=
4
;
tci12
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeC
;
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tci12
);
NR_TCI_State_t
*
tci13
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tci13
=
calloc
(
1
,
sizeof
(
*
tci13
));
tci13
->
tci_StateId
=
13
;
tci13
->
qcl_Type1
.
cell
=
NULL
;
tci13
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tci13
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tci13
->
qcl_Type1
.
bwp_Id
));
*
tci13
->
qcl_Type1
.
bwp_Id
=
1
;
tci13
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_ssb
;
tci13
->
qcl_Type1
.
referenceSignal
.
choice
.
ssb
=
5
;
tci13
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeC
;
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tci13
);
NR_TCI_State_t
*
tci14
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tci14
=
calloc
(
1
,
sizeof
(
*
tci14
));
tci14
->
tci_StateId
=
14
;
tci14
->
qcl_Type1
.
cell
=
NULL
;
tci14
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tci14
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tci14
->
qcl_Type1
.
bwp_Id
));
*
tci14
->
qcl_Type1
.
bwp_Id
=
1
;
tci14
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_ssb
;
tci14
->
qcl_Type1
.
referenceSignal
.
choice
.
ssb
=
6
;
tci14
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeC
;
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tci14
);
NR_TCI_State_t
*
tci15
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tci15
=
calloc
(
1
,
sizeof
(
*
tci15
));
tci15
->
tci_StateId
=
15
;
tci15
->
qcl_Type1
.
cell
=
NULL
;
tci15
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tci15
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tci15
->
qcl_Type1
.
bwp_Id
));
*
tci15
->
qcl_Type1
.
bwp_Id
=
1
;
tci15
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_ssb
;
tci15
->
qcl_Type1
.
referenceSignal
.
choice
.
ssb
=
7
;
...
...
@@ -361,12 +361,12 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
rateMatchPatternGroup2
=
NULL
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
rbg_Size
=
NR_PDSCH_Config__rbg_Size_config1
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
mcs_Table
=
NULL
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
maxNrofCodeWordsScheduledByDCI
=
calloc
(
1
,
sizeof
(
long
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
maxNrofCodeWordsScheduledByDCI
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
maxNrofCodeWordsScheduledByDCI
));
*
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
maxNrofCodeWordsScheduledByDCI
=
NR_PDSCH_Config__maxNrofCodeWordsScheduledByDCI_n1
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
prb_BundlingType
.
present
=
NR_PDSCH_Config__prb_BundlingType_PR_staticBundling
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
prb_BundlingType
.
choice
.
staticBundling
=
calloc
(
1
,
sizeof
(
struct
NR_PDSCH_Config__prb_BundlingType__
staticBundling
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
prb_BundlingType
.
choice
.
staticBundling
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
prb_BundlingType
.
choice
.
staticBundling
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
prb_BundlingType
.
choice
.
staticBundling
->
bundleSize
=
calloc
(
1
,
sizeof
(
long
));
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
prb_BundlingType
.
choice
.
staticBundling
->
bundleSize
));
*
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
prb_BundlingType
.
choice
.
staticBundling
->
bundleSize
=
NR_PDSCH_Config__prb_BundlingType__staticBundling__bundleSize_wideband
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
zp_CSI_RS_ResourceToAddModList
=
NULL
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
zp_CSI_RS_ResourceToReleaseList
=
NULL
;
...
...
@@ -377,23 +377,23 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
pdsch_Config
->
choice
.
setup
->
p_ZP_CSI_RS_ResourceSet
=
NULL
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
sps_Config
=
NULL
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
radioLinkMonitoringConfig
=
calloc
(
1
,
sizeof
(
struct
NR_SetupRelease_R
adioLinkMonitoringConfig
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
radioLinkMonitoringConfig
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
r
adioLinkMonitoringConfig
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
radioLinkMonitoringConfig
->
present
=
NR_SetupRelease_RadioLinkMonitoringConfig_PR_setup
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
radioLinkMonitoringConfig
->
choice
.
setup
=
calloc
(
1
,
sizeof
(
struct
NR_RadioLinkMonitoringConfig
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
radioLinkMonitoringConfig
->
choice
.
setup
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
radioLinkMonitoringConfig
->
choice
.
setup
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
radioLinkMonitoringConfig
->
choice
.
setup
->
failureDetectionResourcesToAddModList
=
NULL
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
radioLinkMonitoringConfig
->
choice
.
setup
->
failureDetectionResourcesToReleaseList
=
NULL
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
radioLinkMonitoringConfig
->
choice
.
setup
->
beamFailureInstanceMaxCount
=
calloc
(
1
,
sizeof
(
long
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
radioLinkMonitoringConfig
->
choice
.
setup
->
beamFailureInstanceMaxCount
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
radioLinkMonitoringConfig
->
choice
.
setup
->
beamFailureInstanceMaxCount
));
*
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
radioLinkMonitoringConfig
->
choice
.
setup
->
beamFailureInstanceMaxCount
=
NR_RadioLinkMonitoringConfig__beamFailureInstanceMaxCount_n3
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
radioLinkMonitoringConfig
->
choice
.
setup
->
beamFailureDetectionTimer
=
calloc
(
1
,
sizeof
(
long
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
radioLinkMonitoringConfig
->
choice
.
setup
->
beamFailureDetectionTimer
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
radioLinkMonitoringConfig
->
choice
.
setup
->
beamFailureDetectionTimer
));
*
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
->
radioLinkMonitoringConfig
->
choice
.
setup
->
beamFailureDetectionTimer
=
NR_RadioLinkMonitoringConfig__beamFailureDetectionTimer_pbfd2
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
downlinkBWP_ToReleaseList
=
NULL
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
downlinkBWP_ToAddModList
=
calloc
(
1
,
sizeof
(
struct
NR_ServingCellConfig__
downlinkBWP_ToAddModList
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
downlinkBWP_ToAddModList
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
downlinkBWP_ToAddModList
));
NR_BWP_Downlink_t
*
bwp
=
calloc
(
1
,
sizeof
(
NR_BWP_Downlink_t
));
NR_BWP_Downlink_t
*
bwp
=
calloc
(
1
,
sizeof
(
*
bwp
));
bwp
->
bwp_Id
=
1
;
bwp
->
bwp_Common
=
calloc
(
1
,
sizeof
(
NR_BWP_DownlinkCommon_t
));
bwp
->
bwp_Common
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Common
));
// copy common BWP size from initial BWP except for bandwdith
memcpy
((
void
*
)
&
bwp
->
bwp_Common
->
genericParameters
,
&
servingcellconfigcommon
->
downlinkConfigCommon
->
initialDownlinkBWP
->
genericParameters
,
...
...
@@ -401,41 +401,41 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
bwp
->
bwp_Common
->
genericParameters
.
locationAndBandwidth
=
PRBalloc_to_locationandbandwidth
(
servingcellconfigcommon
->
downlinkConfigCommon
->
frequencyInfoDL
->
scs_SpecificCarrierList
.
list
.
array
[
0
]
->
carrierBandwidth
,
0
);
bwp
->
bwp_Common
->
pdcch_ConfigCommon
=
calloc
(
1
,
sizeof
(
NR_SetupRelease_PDCCH_ConfigCommon_t
));
bwp
->
bwp_Common
->
pdcch_ConfigCommon
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Common
->
pdcch_ConfigCommon
));
bwp
->
bwp_Common
->
pdcch_ConfigCommon
->
present
=
NR_SetupRelease_PDCCH_ConfigCommon_PR_setup
;
bwp
->
bwp_Common
->
pdcch_ConfigCommon
->
choice
.
setup
=
calloc
(
1
,
sizeof
(
NR_PDCCH_ConfigCommon_t
));
bwp
->
bwp_Common
->
pdcch_ConfigCommon
->
choice
.
setup
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Common
->
pdcch_ConfigCommon
->
choice
.
setup
));
bwp
->
bwp_Common
->
pdcch_ConfigCommon
->
choice
.
setup
->
controlResourceSetZero
=
NULL
;
bwp
->
bwp_Common
->
pdcch_ConfigCommon
->
choice
.
setup
->
commonControlResourceSet
=
NULL
;
bwp
->
bwp_Common
->
pdcch_ConfigCommon
->
choice
.
setup
->
searchSpaceZero
=
NULL
;
bwp
->
bwp_Common
->
pdcch_ConfigCommon
->
choice
.
setup
->
commonSearchSpaceList
=
NULL
;
bwp
->
bwp_Common
->
pdcch_ConfigCommon
->
choice
.
setup
->
commonSearchSpaceList
=
calloc
(
1
,
sizeof
(
struct
NR_PDCCH_ConfigCommon__
commonSearchSpaceList
));
bwp
->
bwp_Common
->
pdcch_ConfigCommon
->
choice
.
setup
->
commonSearchSpaceList
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Common
->
pdcch_ConfigCommon
->
choice
.
setup
->
commonSearchSpaceList
));
NR_SearchSpace_t
*
ss
=
calloc
(
1
,
sizeof
(
NR_SearchSpace_t
));
NR_SearchSpace_t
*
ss
=
calloc
(
1
,
sizeof
(
*
ss
));
ss
->
searchSpaceId
=
1
;
ss
->
controlResourceSetId
=
calloc
(
1
,
sizeof
(
NR_ControlResourceSetId_t
));
ss
->
controlResourceSetId
=
calloc
(
1
,
sizeof
(
*
ss
->
controlResourceSetId
));
*
ss
->
controlResourceSetId
=
0
;
ss
->
monitoringSlotPeriodicityAndOffset
=
calloc
(
1
,
sizeof
(
struct
NR_SearchSpace__
monitoringSlotPeriodicityAndOffset
));
ss
->
monitoringSlotPeriodicityAndOffset
=
calloc
(
1
,
sizeof
(
*
ss
->
monitoringSlotPeriodicityAndOffset
));
ss
->
monitoringSlotPeriodicityAndOffset
->
present
=
NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1
;
ss
->
duration
=
NULL
;
ss
->
monitoringSymbolsWithinSlot
=
calloc
(
1
,
sizeof
(
BIT_STRING_
t
));
ss
->
monitoringSymbolsWithinSlot
=
calloc
(
1
,
sizeof
(
*
ss
->
monitoringSymbolsWithinSlo
t
));
ss
->
monitoringSymbolsWithinSlot
->
buf
=
calloc
(
1
,
2
);
// should be '1100 0000 0000 00'B (LSB first!), first two symols in slot, adjust if needed
ss
->
monitoringSymbolsWithinSlot
->
buf
[
1
]
=
0
;
ss
->
monitoringSymbolsWithinSlot
->
buf
[
0
]
=
(
1
<<
7
)
|
(
1
<<
6
);
ss
->
monitoringSymbolsWithinSlot
->
size
=
2
;
ss
->
monitoringSymbolsWithinSlot
->
bits_unused
=
2
;
ss
->
nrofCandidates
=
calloc
(
1
,
sizeof
(
struct
NR_SearchSpace__
nrofCandidates
));
ss
->
nrofCandidates
=
calloc
(
1
,
sizeof
(
*
ss
->
nrofCandidates
));
ss
->
nrofCandidates
->
aggregationLevel1
=
NR_SearchSpace__nrofCandidates__aggregationLevel1_n0
;
ss
->
nrofCandidates
->
aggregationLevel2
=
NR_SearchSpace__nrofCandidates__aggregationLevel2_n0
;
ss
->
nrofCandidates
->
aggregationLevel4
=
NR_SearchSpace__nrofCandidates__aggregationLevel4_n1
;
ss
->
nrofCandidates
->
aggregationLevel8
=
NR_SearchSpace__nrofCandidates__aggregationLevel8_n0
;
ss
->
nrofCandidates
->
aggregationLevel16
=
NR_SearchSpace__nrofCandidates__aggregationLevel16_n0
;
ss
->
searchSpaceType
=
calloc
(
1
,
sizeof
(
struct
NR_SearchSpace__
searchSpaceType
));
ss
->
searchSpaceType
=
calloc
(
1
,
sizeof
(
*
ss
->
searchSpaceType
));
ss
->
searchSpaceType
->
present
=
NR_SearchSpace__searchSpaceType_PR_common
;
ss
->
searchSpaceType
->
choice
.
common
=
calloc
(
1
,
sizeof
(
struct
NR_SearchSpace__searchSpaceType__
common
));
ss
->
searchSpaceType
->
choice
.
common
->
dci_Format0_0_AndFormat1_0
=
calloc
(
1
,
sizeof
(
struct
NR_SearchSpace__searchSpaceType__common__
dci_Format0_0_AndFormat1_0
));
ss
->
searchSpaceType
->
choice
.
common
=
calloc
(
1
,
sizeof
(
*
ss
->
searchSpaceType
->
choice
.
common
));
ss
->
searchSpaceType
->
choice
.
common
->
dci_Format0_0_AndFormat1_0
=
calloc
(
1
,
sizeof
(
*
ss
->
searchSpaceType
->
choice
.
common
->
dci_Format0_0_AndFormat1_0
));
ASN_SEQUENCE_ADD
(
&
bwp
->
bwp_Common
->
pdcch_ConfigCommon
->
choice
.
setup
->
commonSearchSpaceList
->
list
,
ss
);
...
...
@@ -443,14 +443,14 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
bwp
->
bwp_Common
->
pdcch_ConfigCommon
->
choice
.
setup
->
searchSpaceSIB1
=
NULL
;
bwp
->
bwp_Common
->
pdcch_ConfigCommon
->
choice
.
setup
->
searchSpaceOtherSystemInformation
=
NULL
;
bwp
->
bwp_Common
->
pdcch_ConfigCommon
->
choice
.
setup
->
pagingSearchSpace
=
NULL
;
bwp
->
bwp_Common
->
pdcch_ConfigCommon
->
choice
.
setup
->
ra_SearchSpace
=
calloc
(
1
,
sizeof
(
NR_SearchSpaceId_t
));
bwp
->
bwp_Common
->
pdcch_ConfigCommon
->
choice
.
setup
->
ra_SearchSpace
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Common
->
pdcch_ConfigCommon
->
choice
.
setup
->
ra_SearchSpace
));
*
bwp
->
bwp_Common
->
pdcch_ConfigCommon
->
choice
.
setup
->
ra_SearchSpace
=
1
;
bwp
->
bwp_Common
->
pdcch_ConfigCommon
->
choice
.
setup
->
ext1
=
NULL
;
bwp
->
bwp_Common
->
pdsch_ConfigCommon
=
calloc
(
1
,
sizeof
(
NR_SetupRelease_PDSCH_ConfigCommon_t
));
bwp
->
bwp_Common
->
pdsch_ConfigCommon
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Common
->
pdsch_ConfigCommon
));
bwp
->
bwp_Common
->
pdsch_ConfigCommon
->
present
=
NR_SetupRelease_PDSCH_ConfigCommon_PR_setup
;
bwp
->
bwp_Common
->
pdsch_ConfigCommon
->
choice
.
setup
=
calloc
(
1
,
sizeof
(
NR_PDSCH_ConfigCommon_t
));
bwp
->
bwp_Common
->
pdsch_ConfigCommon
->
choice
.
setup
->
pdsch_TimeDomainAllocationList
=
calloc
(
1
,
sizeof
(
NR_PDSCH_TimeDomainResourceAllocationList_
t
));
bwp
->
bwp_Common
->
pdsch_ConfigCommon
->
choice
.
setup
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Common
->
pdsch_ConfigCommon
->
choice
.
setup
));
bwp
->
bwp_Common
->
pdsch_ConfigCommon
->
choice
.
setup
->
pdsch_TimeDomainAllocationList
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Common
->
pdsch_ConfigCommon
->
choice
.
setup
->
pdsch_TimeDomainAllocationLis
t
));
// copy PDSCH TimeDomainResourceAllocation from InitialBWP
...
...
@@ -466,12 +466,12 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
ASN_SEQUENCE_ADD
(
&
bwp
->
bwp_Common
->
pdsch_ConfigCommon
->
choice
.
setup
->
pdsch_TimeDomainAllocationList
->
list
,
pdschi
);
}
bwp
->
bwp_Dedicated
=
calloc
(
1
,
sizeof
(
NR_BWP_DownlinkDedicated_t
));
bwp
->
bwp_Dedicated
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Dedicated
));
bwp
->
bwp_Dedicated
->
pdcch_Config
=
calloc
(
1
,
sizeof
(
NR_SetupRelease_PDCCH_Config_t
));
bwp
->
bwp_Dedicated
->
pdcch_Config
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Dedicated
->
pdcch_Config
));
bwp
->
bwp_Dedicated
->
pdcch_Config
->
present
=
NR_SetupRelease_PDCCH_Config_PR_setup
;
bwp
->
bwp_Dedicated
->
pdcch_Config
->
choice
.
setup
=
calloc
(
1
,
sizeof
(
NR_PDCCH_Config_t
));
bwp
->
bwp_Dedicated
->
pdcch_Config
->
choice
.
setup
->
controlResourceSetToAddModList
=
calloc
(
1
,
sizeof
(
struct
NR_PDCCH_Config__
controlResourceSetToAddModList
));
bwp
->
bwp_Dedicated
->
pdcch_Config
->
choice
.
setup
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Dedicated
->
pdcch_Config
->
choice
.
setup
));
bwp
->
bwp_Dedicated
->
pdcch_Config
->
choice
.
setup
->
controlResourceSetToAddModList
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Dedicated
->
pdcch_Config
->
choice
.
setup
->
controlResourceSetToAddModList
));
NR_ControlResourceSet_t
*
coreset0
=
calloc
(
1
,
sizeof
(
*
coreset0
));
coreset0
->
controlResourceSetId
=
1
;
// frequencyDomainResources '11111111 11111111 00000000 00000000 00000000 00000'B,
...
...
@@ -488,10 +488,10 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
coreset0
->
cce_REG_MappingType
.
present
=
NR_ControlResourceSet__cce_REG_MappingType_PR_nonInterleaved
;
coreset0
->
precoderGranularity
=
NR_ControlResourceSet__precoderGranularity_sameAsREG_bundle
;
coreset0
->
tci_StatesPDCCH_ToAddList
=
calloc
(
1
,
sizeof
(
struct
NR_ControlResourceSet__
tci_StatesPDCCH_ToAddList
));
coreset0
->
tci_StatesPDCCH_ToAddList
=
calloc
(
1
,
sizeof
(
*
coreset0
->
tci_StatesPDCCH_ToAddList
));
NR_TCI_StateId_t
*
tci
[
8
];
for
(
int
i
=
0
;
i
<
8
;
i
++
)
{
tci
[
i
]
=
calloc
(
1
,
sizeof
(
NR_TCI_StateId_t
));
tci
[
i
]
=
calloc
(
1
,
sizeof
(
*
tci
[
i
]
));
*
tci
[
i
]
=
i
;
ASN_SEQUENCE_ADD
(
&
coreset0
->
tci_StatesPDCCH_ToAddList
->
list
,
tci
[
i
]);
}
...
...
@@ -501,17 +501,17 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
ASN_SEQUENCE_ADD
(
&
bwp
->
bwp_Dedicated
->
pdcch_Config
->
choice
.
setup
->
controlResourceSetToAddModList
->
list
,
coreset0
);
bwp
->
bwp_Dedicated
->
pdcch_Config
->
choice
.
setup
->
searchSpacesToAddModList
=
calloc
(
1
,
sizeof
(
struct
NR_PDCCH_Config__
searchSpacesToAddModList
));
NR_SearchSpace_t
*
ss3
=
calloc
(
1
,
sizeof
(
NR_SearchSpace_t
));
NR_SearchSpace_t
*
ss2
=
calloc
(
1
,
sizeof
(
NR_SearchSpace_t
));
bwp
->
bwp_Dedicated
->
pdcch_Config
->
choice
.
setup
->
searchSpacesToAddModList
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Dedicated
->
pdcch_Config
->
choice
.
setup
->
searchSpacesToAddModList
));
NR_SearchSpace_t
*
ss3
=
calloc
(
1
,
sizeof
(
*
ss3
));
NR_SearchSpace_t
*
ss2
=
calloc
(
1
,
sizeof
(
*
ss2
));
ss3
->
searchSpaceId
=
3
;
ss3
->
controlResourceSetId
=
calloc
(
1
,
sizeof
(
NR_ControlResourceSetId_t
));
ss3
->
controlResourceSetId
=
calloc
(
1
,
sizeof
(
*
ss3
->
controlResourceSetId
));
*
ss3
->
controlResourceSetId
=
1
;
ss3
->
monitoringSlotPeriodicityAndOffset
=
calloc
(
1
,
sizeof
(
*
ss3
->
monitoringSlotPeriodicityAndOffset
));
ss3
->
monitoringSlotPeriodicityAndOffset
->
present
=
NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1
;
ss3
->
monitoringSlotPeriodicityAndOffset
->
choice
.
sl1
=
(
NULL_t
)
0
;
ss3
->
duration
=
NULL
;
ss3
->
monitoringSymbolsWithinSlot
=
calloc
(
1
,
sizeof
(
BIT_STRING_
t
));
ss3
->
monitoringSymbolsWithinSlot
=
calloc
(
1
,
sizeof
(
*
ss3
->
monitoringSymbolsWithinSlo
t
));
ss3
->
monitoringSymbolsWithinSlot
->
buf
=
calloc
(
1
,
2
);
ss3
->
monitoringSymbolsWithinSlot
->
size
=
2
;
ss3
->
monitoringSymbolsWithinSlot
->
bits_unused
=
2
;
...
...
@@ -532,13 +532,13 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
ss3
->
searchSpaceType
->
choice
.
common
->
dci_Format2_3
=
NULL
;
ss2
->
searchSpaceId
=
2
;
ss2
->
controlResourceSetId
=
calloc
(
1
,
sizeof
(
NR_ControlResourceSetId_t
));
ss2
->
controlResourceSetId
=
calloc
(
1
,
sizeof
(
*
ss2
->
controlResourceSetId
));
*
ss2
->
controlResourceSetId
=
1
;
ss2
->
monitoringSlotPeriodicityAndOffset
=
calloc
(
1
,
sizeof
(
*
ss2
->
monitoringSlotPeriodicityAndOffset
));
ss2
->
monitoringSlotPeriodicityAndOffset
->
present
=
NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1
;
ss2
->
monitoringSlotPeriodicityAndOffset
->
choice
.
sl1
=
(
NULL_t
)
0
;
ss2
->
duration
=
NULL
;
ss2
->
monitoringSymbolsWithinSlot
=
calloc
(
1
,
sizeof
(
BIT_STRING_
t
));
ss2
->
monitoringSymbolsWithinSlot
=
calloc
(
1
,
sizeof
(
*
ss2
->
monitoringSymbolsWithinSlo
t
));
ss2
->
monitoringSymbolsWithinSlot
->
buf
=
calloc
(
1
,
2
);
ss2
->
monitoringSymbolsWithinSlot
->
size
=
2
;
ss2
->
monitoringSymbolsWithinSlot
->
bits_unused
=
2
;
...
...
@@ -566,11 +566,11 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
bwp
->
bwp_Dedicated
->
pdsch_Config
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Dedicated
->
pdsch_Config
));
bwp
->
bwp_Dedicated
->
pdsch_Config
->
present
=
NR_SetupRelease_PDSCH_Config_PR_setup
;
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
=
calloc
(
1
,
sizeof
(
struct
NR_PDSCH_Config
));
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
));
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
dataScramblingIdentityPDSCH
=
NULL
;
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
=
calloc
(
1
,
sizeof
(
struct
NR_SetupRelease_DMRS_DownlinkConfig
));
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
));
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
present
=
NR_SetupRelease_DMRS_DownlinkConfig_PR_setup
;
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
=
calloc
(
1
,
sizeof
(
struct
NR_DMRS_DownlinkConfig
));
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
));
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
->
dmrs_Type
=
NULL
;
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
->
maxLength
=
NULL
;
...
...
@@ -578,165 +578,165 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
->
scramblingID1
=
NULL
;
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
->
phaseTrackingRS
=
NULL
;
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
->
dmrs_AdditionalPosition
=
calloc
(
1
,
sizeof
(
long
));
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
->
dmrs_AdditionalPosition
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
->
dmrs_AdditionalPosition
));
*
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
->
dmrs_AdditionalPosition
=
NR_DMRS_DownlinkConfig__dmrs_AdditionalPosition_pos0
;
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
=
calloc
(
1
,
sizeof
(
struct
NR_PDSCH_Config__
tci_StatesToAddModList
));
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
));
NR_TCI_State_t
*
tcid0
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tcid0
=
calloc
(
1
,
sizeof
(
*
tcid0
));
tcid0
->
tci_StateId
=
0
;
tcid0
->
qcl_Type1
.
cell
=
NULL
;
tcid0
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tcid0
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tcid0
->
qcl_Type1
.
bwp_Id
));
*
tcid0
->
qcl_Type1
.
bwp_Id
=
1
;
tcid0
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_csi_rs
;
tcid0
->
qcl_Type1
.
referenceSignal
.
choice
.
csi_rs
=
2
;
tcid0
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeA
;
ASN_SEQUENCE_ADD
(
&
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tcid0
);
NR_TCI_State_t
*
tcid1
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tcid1
=
calloc
(
1
,
sizeof
(
*
tcid1
));
tcid1
->
tci_StateId
=
0
;
tcid1
->
qcl_Type1
.
cell
=
NULL
;
tcid1
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tcid1
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tcid1
->
qcl_Type1
.
bwp_Id
));
*
tcid1
->
qcl_Type1
.
bwp_Id
=
1
;
tcid1
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_csi_rs
;
tcid1
->
qcl_Type1
.
referenceSignal
.
choice
.
csi_rs
=
6
;
tcid1
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeA
;
ASN_SEQUENCE_ADD
(
&
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tcid1
);
NR_TCI_State_t
*
tcid2
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tcid2
=
calloc
(
1
,
sizeof
(
*
tcid2
));
tcid2
->
tci_StateId
=
2
;
tcid2
->
qcl_Type1
.
cell
=
NULL
;
tcid2
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tcid2
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tcid2
->
qcl_Type1
.
bwp_Id
));
*
tcid2
->
qcl_Type1
.
bwp_Id
=
1
;
tcid2
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_csi_rs
;
tcid2
->
qcl_Type1
.
referenceSignal
.
choice
.
csi_rs
=
10
;
tcid2
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeA
;
ASN_SEQUENCE_ADD
(
&
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tcid2
);
NR_TCI_State_t
*
tcid3
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tcid3
=
calloc
(
1
,
sizeof
(
*
tcid3
));
tcid3
->
tci_StateId
=
3
;
tcid3
->
qcl_Type1
.
cell
=
NULL
;
tcid3
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tcid3
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tcid3
->
qcl_Type1
.
bwp_Id
));
*
tcid3
->
qcl_Type1
.
bwp_Id
=
1
;
tcid3
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_csi_rs
;
tcid3
->
qcl_Type1
.
referenceSignal
.
choice
.
csi_rs
=
14
;
tcid3
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeA
;
ASN_SEQUENCE_ADD
(
&
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tcid3
);
NR_TCI_State_t
*
tcid4
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tcid4
=
calloc
(
1
,
sizeof
(
*
tcid4
));
tcid4
->
tci_StateId
=
4
;
tcid4
->
qcl_Type1
.
cell
=
NULL
;
tcid4
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tcid4
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tcid4
->
qcl_Type1
.
bwp_Id
));
*
tcid4
->
qcl_Type1
.
bwp_Id
=
1
;
tcid4
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_csi_rs
;
tcid4
->
qcl_Type1
.
referenceSignal
.
choice
.
csi_rs
=
18
;
tcid4
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeA
;
ASN_SEQUENCE_ADD
(
&
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tcid4
);
NR_TCI_State_t
*
tcid5
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tcid5
=
calloc
(
1
,
sizeof
(
*
tcid5
));
tcid5
->
tci_StateId
=
5
;
tcid5
->
qcl_Type1
.
cell
=
NULL
;
tcid5
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tcid5
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tcid5
->
qcl_Type1
.
bwp_Id
));
*
tcid5
->
qcl_Type1
.
bwp_Id
=
1
;
tcid5
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_csi_rs
;
tcid5
->
qcl_Type1
.
referenceSignal
.
choice
.
csi_rs
=
22
;
tcid5
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeA
;
ASN_SEQUENCE_ADD
(
&
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tcid5
);
NR_TCI_State_t
*
tcid6
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tcid6
=
calloc
(
1
,
sizeof
(
*
tcid6
));
tcid6
->
tci_StateId
=
6
;
tcid6
->
qcl_Type1
.
cell
=
NULL
;
tcid6
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tcid6
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tcid6
->
qcl_Type1
.
bwp_Id
));
*
tcid6
->
qcl_Type1
.
bwp_Id
=
1
;
tcid6
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_csi_rs
;
tcid6
->
qcl_Type1
.
referenceSignal
.
choice
.
csi_rs
=
26
;
tcid6
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeA
;
ASN_SEQUENCE_ADD
(
&
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tcid6
);
NR_TCI_State_t
*
tcid7
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tcid7
=
calloc
(
1
,
sizeof
(
*
tcid7
));
tcid7
->
tci_StateId
=
7
;
tcid7
->
qcl_Type1
.
cell
=
NULL
;
tcid7
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tcid7
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tcid7
->
qcl_Type1
.
bwp_Id
));
*
tcid7
->
qcl_Type1
.
bwp_Id
=
1
;
tcid7
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_csi_rs
;
tcid7
->
qcl_Type1
.
referenceSignal
.
choice
.
csi_rs
=
30
;
tcid7
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeA
;
ASN_SEQUENCE_ADD
(
&
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tcid7
);
NR_TCI_State_t
*
tcid8
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tcid8
=
calloc
(
1
,
sizeof
(
*
tcid8
));
tcid8
->
tci_StateId
=
8
;
tcid8
->
qcl_Type1
.
cell
=
NULL
;
tcid8
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tcid8
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tcid8
->
qcl_Type1
.
bwp_Id
));
*
tcid8
->
qcl_Type1
.
bwp_Id
=
1
;
tcid8
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_ssb
;
tcid8
->
qcl_Type1
.
referenceSignal
.
choice
.
ssb
=
0
;
tcid8
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeC
;
ASN_SEQUENCE_ADD
(
&
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tcid8
);
NR_TCI_State_t
*
tcid9
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tcid9
=
calloc
(
1
,
sizeof
(
*
tcid9
));
tcid9
->
tci_StateId
=
9
;
tcid9
->
qcl_Type1
.
cell
=
NULL
;
tcid9
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tcid9
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tcid9
->
qcl_Type1
.
bwp_Id
));
*
tcid9
->
qcl_Type1
.
bwp_Id
=
1
;
tcid9
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_ssb
;
tcid9
->
qcl_Type1
.
referenceSignal
.
choice
.
ssb
=
1
;
tcid9
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeC
;
ASN_SEQUENCE_ADD
(
&
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tcid9
);
NR_TCI_State_t
*
tcid10
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tcid10
=
calloc
(
1
,
sizeof
(
*
tcid10
));
tcid10
->
tci_StateId
=
10
;
tcid10
->
qcl_Type1
.
cell
=
NULL
;
tcid10
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tcid10
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tcid10
->
qcl_Type1
.
bwp_Id
));
*
tcid10
->
qcl_Type1
.
bwp_Id
=
1
;
tcid10
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_ssb
;
tcid10
->
qcl_Type1
.
referenceSignal
.
choice
.
ssb
=
2
;
tcid10
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeC
;
ASN_SEQUENCE_ADD
(
&
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tcid10
);
NR_TCI_State_t
*
tcid11
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tcid11
=
calloc
(
1
,
sizeof
(
*
tcid11
));
tcid11
->
tci_StateId
=
11
;
tcid11
->
qcl_Type1
.
cell
=
NULL
;
tcid11
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tcid11
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tcid11
->
qcl_Type1
.
bwp_Id
));
*
tcid11
->
qcl_Type1
.
bwp_Id
=
1
;
tcid11
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_ssb
;
tcid11
->
qcl_Type1
.
referenceSignal
.
choice
.
ssb
=
3
;
tcid11
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeC
;
ASN_SEQUENCE_ADD
(
&
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tcid11
);
NR_TCI_State_t
*
tcid12
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tcid12
=
calloc
(
1
,
sizeof
(
*
tcid12
));
tcid12
->
tci_StateId
=
12
;
tcid12
->
qcl_Type1
.
cell
=
NULL
;
tcid12
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tcid12
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tcid12
->
qcl_Type1
.
bwp_Id
));
*
tcid12
->
qcl_Type1
.
bwp_Id
=
1
;
tcid12
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_ssb
;
tcid12
->
qcl_Type1
.
referenceSignal
.
choice
.
ssb
=
4
;
tcid12
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeC
;
ASN_SEQUENCE_ADD
(
&
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tcid12
);
NR_TCI_State_t
*
tcid13
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tcid13
=
calloc
(
1
,
sizeof
(
*
tcid13
));
tcid13
->
tci_StateId
=
13
;
tcid13
->
qcl_Type1
.
cell
=
NULL
;
tcid13
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tcid13
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tcid13
->
qcl_Type1
.
bwp_Id
));
*
tcid13
->
qcl_Type1
.
bwp_Id
=
1
;
tcid13
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_ssb
;
tcid13
->
qcl_Type1
.
referenceSignal
.
choice
.
ssb
=
5
;
tcid13
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeC
;
ASN_SEQUENCE_ADD
(
&
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tcid13
);
NR_TCI_State_t
*
tcid14
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tcid14
=
calloc
(
1
,
sizeof
(
*
tcid14
));
tcid14
->
tci_StateId
=
14
;
tcid14
->
qcl_Type1
.
cell
=
NULL
;
tcid14
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tcid14
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tcid14
->
qcl_Type1
.
bwp_Id
));
*
tcid14
->
qcl_Type1
.
bwp_Id
=
1
;
tcid14
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_ssb
;
tcid14
->
qcl_Type1
.
referenceSignal
.
choice
.
ssb
=
6
;
tcid14
->
qcl_Type1
.
qcl_Type
=
NR_QCL_Info__qcl_Type_typeC
;
ASN_SEQUENCE_ADD
(
&
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
tci_StatesToAddModList
->
list
,
tcid14
);
NR_TCI_State_t
*
tcid15
=
calloc
(
1
,
sizeof
(
NR_TCI_State_t
));
NR_TCI_State_t
*
tcid15
=
calloc
(
1
,
sizeof
(
*
tcid15
));
tcid15
->
tci_StateId
=
15
;
tcid15
->
qcl_Type1
.
cell
=
NULL
;
tcid15
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
tcid15
->
qcl_Type1
.
bwp_Id
=
calloc
(
1
,
sizeof
(
*
tcid15
->
qcl_Type1
.
bwp_Id
));
*
tcid15
->
qcl_Type1
.
bwp_Id
=
1
;
tcid15
->
qcl_Type1
.
referenceSignal
.
present
=
NR_QCL_Info__referenceSignal_PR_ssb
;
tcid15
->
qcl_Type1
.
referenceSignal
.
choice
.
ssb
=
7
;
...
...
@@ -754,12 +754,12 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
rateMatchPatternGroup2
=
NULL
;
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
rbg_Size
=
NR_PDSCH_Config__rbg_Size_config1
;
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
mcs_Table
=
NULL
;
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
maxNrofCodeWordsScheduledByDCI
=
calloc
(
1
,
sizeof
(
long
));
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
maxNrofCodeWordsScheduledByDCI
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
maxNrofCodeWordsScheduledByDCI
));
*
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
maxNrofCodeWordsScheduledByDCI
=
NR_PDSCH_Config__maxNrofCodeWordsScheduledByDCI_n1
;
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
prb_BundlingType
.
present
=
NR_PDSCH_Config__prb_BundlingType_PR_staticBundling
;
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
prb_BundlingType
.
choice
.
staticBundling
=
calloc
(
1
,
sizeof
(
struct
NR_PDSCH_Config__prb_BundlingType__
staticBundling
));
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
prb_BundlingType
.
choice
.
staticBundling
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
prb_BundlingType
.
choice
.
staticBundling
));
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
prb_BundlingType
.
choice
.
staticBundling
->
bundleSize
=
calloc
(
1
,
sizeof
(
long
));
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
prb_BundlingType
.
choice
.
staticBundling
->
bundleSize
));
*
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
prb_BundlingType
.
choice
.
staticBundling
->
bundleSize
=
NR_PDSCH_Config__prb_BundlingType__staticBundling__bundleSize_wideband
;
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
zp_CSI_RS_ResourceToAddModList
=
NULL
;
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
zp_CSI_RS_ResourceToReleaseList
=
NULL
;
...
...
@@ -780,12 +780,12 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
rateMatchPatternGroup2
=
NULL
;
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
rbg_Size
=
NR_PDSCH_Config__rbg_Size_config1
;
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
mcs_Table
=
NULL
;
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
maxNrofCodeWordsScheduledByDCI
=
calloc
(
1
,
sizeof
(
long
));
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
maxNrofCodeWordsScheduledByDCI
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
maxNrofCodeWordsScheduledByDCI
));
*
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
maxNrofCodeWordsScheduledByDCI
=
NR_PDSCH_Config__maxNrofCodeWordsScheduledByDCI_n1
;
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
prb_BundlingType
.
present
=
NR_PDSCH_Config__prb_BundlingType_PR_staticBundling
;
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
prb_BundlingType
.
choice
.
staticBundling
=
calloc
(
1
,
sizeof
(
struct
NR_PDSCH_Config__prb_BundlingType__
staticBundling
));
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
prb_BundlingType
.
choice
.
staticBundling
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
prb_BundlingType
.
choice
.
staticBundling
));
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
prb_BundlingType
.
choice
.
staticBundling
->
bundleSize
=
calloc
(
1
,
sizeof
(
long
));
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
prb_BundlingType
.
choice
.
staticBundling
->
bundleSize
));
*
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
prb_BundlingType
.
choice
.
staticBundling
->
bundleSize
=
NR_PDSCH_Config__prb_BundlingType__staticBundling__bundleSize_wideband
;
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
zp_CSI_RS_ResourceToAddModList
=
NULL
;
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
zp_CSI_RS_ResourceToReleaseList
=
NULL
;
...
...
@@ -796,15 +796,15 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
p_ZP_CSI_RS_ResourceSet
=
NULL
;
bwp
->
bwp_Dedicated
->
sps_Config
=
NULL
;
bwp
->
bwp_Dedicated
->
radioLinkMonitoringConfig
=
calloc
(
1
,
sizeof
(
struct
NR_SetupRelease_R
adioLinkMonitoringConfig
));
bwp
->
bwp_Dedicated
->
radioLinkMonitoringConfig
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Dedicated
->
r
adioLinkMonitoringConfig
));
bwp
->
bwp_Dedicated
->
radioLinkMonitoringConfig
->
present
=
NR_SetupRelease_RadioLinkMonitoringConfig_PR_setup
;
bwp
->
bwp_Dedicated
->
radioLinkMonitoringConfig
->
choice
.
setup
=
calloc
(
1
,
sizeof
(
struct
NR_RadioLinkMonitoringConfig
));
bwp
->
bwp_Dedicated
->
radioLinkMonitoringConfig
->
choice
.
setup
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Dedicated
->
radioLinkMonitoringConfig
->
choice
.
setup
));
bwp
->
bwp_Dedicated
->
radioLinkMonitoringConfig
->
choice
.
setup
->
failureDetectionResourcesToAddModList
=
NULL
;
bwp
->
bwp_Dedicated
->
radioLinkMonitoringConfig
->
choice
.
setup
->
failureDetectionResourcesToReleaseList
=
NULL
;
bwp
->
bwp_Dedicated
->
radioLinkMonitoringConfig
->
choice
.
setup
->
beamFailureInstanceMaxCount
=
calloc
(
1
,
sizeof
(
long
));
bwp
->
bwp_Dedicated
->
radioLinkMonitoringConfig
->
choice
.
setup
->
beamFailureInstanceMaxCount
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Dedicated
->
radioLinkMonitoringConfig
->
choice
.
setup
->
beamFailureInstanceMaxCount
));
*
bwp
->
bwp_Dedicated
->
radioLinkMonitoringConfig
->
choice
.
setup
->
beamFailureInstanceMaxCount
=
NR_RadioLinkMonitoringConfig__beamFailureInstanceMaxCount_n3
;
bwp
->
bwp_Dedicated
->
radioLinkMonitoringConfig
->
choice
.
setup
->
beamFailureDetectionTimer
=
calloc
(
1
,
sizeof
(
long
));
bwp
->
bwp_Dedicated
->
radioLinkMonitoringConfig
->
choice
.
setup
->
beamFailureDetectionTimer
=
calloc
(
1
,
sizeof
(
*
bwp
->
bwp_Dedicated
->
radioLinkMonitoringConfig
->
choice
.
setup
->
beamFailureDetectionTimer
));
*
bwp
->
bwp_Dedicated
->
radioLinkMonitoringConfig
->
choice
.
setup
->
beamFailureDetectionTimer
=
NR_RadioLinkMonitoringConfig__beamFailureDetectionTimer_pbfd2
;
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
downlinkBWP_ToAddModList
->
list
,
bwp
);
...
...
@@ -816,12 +816,12 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
defaultDownlinkBWP_Id
=
NULL
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
));
NR_BWP_UplinkDedicated_t
*
initialUplinkBWP
=
calloc
(
1
,
sizeof
(
NR_BWP_UplinkDedicated_t
));
NR_BWP_UplinkDedicated_t
*
initialUplinkBWP
=
calloc
(
1
,
sizeof
(
*
initialUplinkBWP
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
initialUplinkBWP
=
initialUplinkBWP
;
initialUplinkBWP
->
pucch_Config
=
NULL
;
initialUplinkBWP
->
pusch_Config
=
calloc
(
1
,
sizeof
(
*
initialUplinkBWP
->
pusch_Config
));
initialUplinkBWP
->
pusch_Config
->
present
=
NR_SetupRelease_PUSCH_Config_PR_setup
;
NR_PUSCH_Config_t
*
pusch_Config
=
calloc
(
1
,
sizeof
(
NR_PUSCH_Config_t
));
NR_PUSCH_Config_t
*
pusch_Config
=
calloc
(
1
,
sizeof
(
*
pusch_Config
));
initialUplinkBWP
->
pusch_Config
->
choice
.
setup
=
pusch_Config
;
pusch_Config
->
txConfig
=
calloc
(
1
,
sizeof
(
*
pusch_Config
->
txConfig
));
*
pusch_Config
->
txConfig
=
NR_PUSCH_Config__txConfig_codebook
;
...
...
@@ -843,16 +843,16 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
pusch_Config
->
pusch_PowerControl
->
msg3_Alpha
=
calloc
(
1
,
sizeof
(
*
pusch_Config
->
pusch_PowerControl
->
msg3_Alpha
));
*
pusch_Config
->
pusch_PowerControl
->
msg3_Alpha
=
NR_Alpha_alpha1
;
pusch_Config
->
pusch_PowerControl
->
p0_NominalWithoutGrant
=
NULL
;
pusch_Config
->
pusch_PowerControl
->
p0_AlphaSets
=
calloc
(
1
,
sizeof
(
pusch_Config
->
pusch_PowerControl
->
p0_AlphaSets
));
NR_P0_PUSCH_AlphaSet_t
*
aset
=
calloc
(
1
,
sizeof
(
NR_P0_PUSCH_AlphaSet_
t
));
pusch_Config
->
pusch_PowerControl
->
p0_AlphaSets
=
calloc
(
1
,
sizeof
(
*
pusch_Config
->
pusch_PowerControl
->
p0_AlphaSets
));
NR_P0_PUSCH_AlphaSet_t
*
aset
=
calloc
(
1
,
sizeof
(
*
ase
t
));
aset
->
p0_PUSCH_AlphaSetId
=
0
;
aset
->
p0
=
calloc
(
1
,
sizeof
(
*
aset
->
p0
));
*
aset
->
p0
=
0
;
aset
->
alpha
=
calloc
(
1
,
sizeof
(
*
aset
->
alpha
));
*
aset
->
alpha
=
NR_Alpha_alpha1
;
ASN_SEQUENCE_ADD
(
&
pusch_Config
->
pusch_PowerControl
->
p0_AlphaSets
->
list
,
aset
);
pusch_Config
->
pusch_PowerControl
->
pathlossReferenceRSToAddModList
=
calloc
(
1
,
sizeof
(
pusch_Config
->
pusch_PowerControl
->
pathlossReferenceRSToAddModList
));
NR_PUSCH_PathlossReferenceRS_t
*
pl
=
calloc
(
1
,
sizeof
(
NR_PUSCH_PathlossReferenceRS_t
));
pusch_Config
->
pusch_PowerControl
->
pathlossReferenceRSToAddModList
=
calloc
(
1
,
sizeof
(
*
pusch_Config
->
pusch_PowerControl
->
pathlossReferenceRSToAddModList
));
NR_PUSCH_PathlossReferenceRS_t
*
pl
=
calloc
(
1
,
sizeof
(
*
pl
));
pl
->
pusch_PathlossReferenceRS_Id
=
0
;
pl
->
referenceSignal
.
present
=
NR_PUSCH_PathlossReferenceRS__referenceSignal_PR_csi_RS_Index
;
pl
->
referenceSignal
.
choice
.
csi_RS_Index
=
0
;
...
...
@@ -881,7 +881,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
initialUplinkBWP
->
srs_Config
=
calloc
(
1
,
sizeof
(
*
initialUplinkBWP
->
srs_Config
));
initialUplinkBWP
->
srs_Config
->
present
=
NR_SetupRelease_SRS_Config_PR_setup
;
NR_SRS_Config_t
*
srs_Config
=
calloc
(
1
,
sizeof
(
NR_SRS_Config_t
));
NR_SRS_Config_t
*
srs_Config
=
calloc
(
1
,
sizeof
(
*
srs_Config
));
initialUplinkBWP
->
srs_Config
->
choice
.
setup
=
srs_Config
;
srs_Config
->
srs_ResourceSetToReleaseList
=
NULL
;
srs_Config
->
srs_ResourceSetToAddModList
=
calloc
(
1
,
sizeof
(
*
srs_Config
->
srs_ResourceSetToAddModList
));
...
...
@@ -937,7 +937,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
uplinkBWP_ToReleaseList
=
NULL
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
uplinkBWP_ToAddModList
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
uplinkBWP_ToAddModList
));
NR_BWP_Uplink_t
*
ubwp
=
calloc
(
1
,
sizeof
(
NR_BWP_Uplink_t
));
NR_BWP_Uplink_t
*
ubwp
=
calloc
(
1
,
sizeof
(
*
ubwp
));
ubwp
->
bwp_Id
=
1
;
ubwp
->
bwp_Common
=
calloc
(
1
,
sizeof
(
*
ubwp
->
bwp_Common
));
// copy bwp_Common from Initial UL BWP except for bandwidth
...
...
@@ -953,15 +953,15 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
ubwp
->
bwp_Dedicated
=
calloc
(
1
,
sizeof
(
*
ubwp
->
bwp_Dedicated
));
ubwp
->
bwp_Dedicated
->
pucch_Config
=
calloc
(
1
,
sizeof
(
*
ubwp
->
bwp_Dedicated
->
pucch_Config
));
ubwp
->
bwp_Dedicated
->
pucch_Config
->
present
=
NR_SetupRelease_PUCCH_Config_PR_setup
;
NR_PUCCH_Config_t
*
pucch_Config
=
calloc
(
1
,
sizeof
(
NR_PUCCH_Config_t
));
NR_PUCCH_Config_t
*
pucch_Config
=
calloc
(
1
,
sizeof
(
*
pucch_Config
));
ubwp
->
bwp_Dedicated
->
pucch_Config
->
choice
.
setup
=
pucch_Config
;
pucch_Config
->
resourceSetToAddModList
=
calloc
(
1
,
sizeof
(
*
pucch_Config
->
resourceSetToAddModList
));
pucch_Config
->
resourceSetToReleaseList
=
NULL
;
NR_PUCCH_ResourceSet_t
*
pucchresset0
=
calloc
(
1
,
sizeof
(
NR_PUCCH_ResourceSet_t
));
NR_PUCCH_ResourceSet_t
*
pucchresset1
=
calloc
(
1
,
sizeof
(
NR_PUCCH_ResourceSet_t
));
NR_PUCCH_ResourceSet_t
*
pucchresset0
=
calloc
(
1
,
sizeof
(
*
pucchresset0
));
NR_PUCCH_ResourceSet_t
*
pucchresset1
=
calloc
(
1
,
sizeof
(
*
pucchresset1
));
pucchresset0
->
pucch_ResourceSetId
=
0
;
NR_PUCCH_ResourceId_t
*
pucchresset0id0
=
calloc
(
1
,
sizeof
(
NR_PUCCH_ResourceId_t
));
NR_PUCCH_ResourceId_t
*
pucchresset0id1
=
calloc
(
1
,
sizeof
(
NR_PUCCH_ResourceId_t
));
NR_PUCCH_ResourceId_t
*
pucchresset0id0
=
calloc
(
1
,
sizeof
(
*
pucchresset0id0
));
NR_PUCCH_ResourceId_t
*
pucchresset0id1
=
calloc
(
1
,
sizeof
(
*
pucchresset0id1
));
*
pucchresset0id0
=
1
;
ASN_SEQUENCE_ADD
(
&
pucchresset0
->
resourceList
.
list
,
pucchresset0id0
);
*
pucchresset0id1
=
2
;
...
...
@@ -971,8 +971,8 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
ASN_SEQUENCE_ADD
(
&
pucch_Config
->
resourceSetToAddModList
->
list
,
pucchresset0
);
pucchresset1
->
pucch_ResourceSetId
=
1
;
NR_PUCCH_ResourceId_t
*
pucchresset1id0
=
calloc
(
1
,
sizeof
(
NR_PUCCH_ResourceId_t
));
NR_PUCCH_ResourceId_t
*
pucchresset1id1
=
calloc
(
1
,
sizeof
(
NR_PUCCH_ResourceId_t
));
NR_PUCCH_ResourceId_t
*
pucchresset1id0
=
calloc
(
1
,
sizeof
(
*
pucchresset1id0
));
NR_PUCCH_ResourceId_t
*
pucchresset1id1
=
calloc
(
1
,
sizeof
(
*
pucchresset1id1
));
*
pucchresset1id0
=
3
;
ASN_SEQUENCE_ADD
(
&
pucchresset1
->
resourceList
.
list
,
pucchresset1id0
);
*
pucchresset1id1
=
4
;
...
...
@@ -1032,7 +1032,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
pucch_Config
->
format2
=
calloc
(
1
,
sizeof
(
*
pucch_Config
->
format2
));
pucch_Config
->
format2
->
present
=
NR_SetupRelease_PUCCH_FormatConfig_PR_setup
;
NR_PUCCH_FormatConfig_t
*
pucchfmt2
=
calloc
(
1
,
sizeof
(
*
pucch
_Config
->
format2
->
choice
.
setup
));
NR_PUCCH_FormatConfig_t
*
pucchfmt2
=
calloc
(
1
,
sizeof
(
*
pucch
fmt2
));
pucch_Config
->
format2
->
choice
.
setup
=
pucchfmt2
;
pucchfmt2
->
interslotFrequencyHopping
=
NULL
;
pucchfmt2
->
additionalDMRS
=
NULL
;
...
...
@@ -1047,7 +1047,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
pucch_Config
->
dl_DataToUL_ACK
=
calloc
(
1
,
sizeof
(
*
pucch_Config
->
dl_DataToUL_ACK
));
long
*
delay
[
8
];
for
(
int
i
=
0
;
i
<
8
;
i
++
)
{
delay
[
i
]
=
calloc
(
1
,
sizeof
(
long
));
delay
[
i
]
=
calloc
(
1
,
sizeof
(
*
delay
[
i
]
));
*
delay
[
i
]
=
(
i
<
6
)
?
(
i
+
2
)
:
0
;
ASN_SEQUENCE_ADD
(
&
pucch_Config
->
dl_DataToUL_ACK
->
list
,
delay
[
i
]);
}
...
...
@@ -1063,17 +1063,17 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
ASN_SEQUENCE_ADD
(
&
pucch_Config
->
spatialRelationInfoToAddModList
->
list
,
pucchspatial
);
pucch_Config
->
spatialRelationInfoToReleaseList
=
NULL
;
pucch_Config
->
pucch_PowerControl
=
calloc
(
1
,
sizeof
(
*
pucch_Config
->
pucch_PowerControl
));
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f0
=
calloc
(
1
,
sizeof
(
long
));
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f0
=
calloc
(
1
,
sizeof
(
*
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f0
));
*
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f0
=
0
;
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f1
=
calloc
(
1
,
sizeof
(
long
));
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f1
=
calloc
(
1
,
sizeof
(
*
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f1
));
*
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f1
=
0
;
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f2
=
calloc
(
1
,
sizeof
(
long
));
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f2
=
calloc
(
1
,
sizeof
(
*
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f2
));
*
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f2
=
0
;
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f3
=
calloc
(
1
,
sizeof
(
long
));
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f3
=
calloc
(
1
,
sizeof
(
*
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f3
));
*
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f3
=
0
;
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f4
=
calloc
(
1
,
sizeof
(
long
));
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f4
=
calloc
(
1
,
sizeof
(
*
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f4
));
*
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f4
=
0
;
pucch_Config
->
pucch_PowerControl
->
p0_Set
=
calloc
(
1
,
sizeof
(
*
pucch_Config
->
pucch_PowerControl
));
pucch_Config
->
pucch_PowerControl
->
p0_Set
=
calloc
(
1
,
sizeof
(
*
pucch_Config
->
pucch_PowerControl
->
p0_Set
));
NR_P0_PUCCH_t
*
p00
=
calloc
(
1
,
sizeof
(
*
p00
));
p00
->
p0_PUCCH_Id
=
1
;
p00
->
p0_PUCCH_Value
=
0
;
...
...
@@ -1099,7 +1099,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
uplinkBWP_ToAddModList
->
list
,
ubwp
);
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
firstActiveUplinkBWP_Id
=
calloc
(
1
,
sizeof
(
NR_BWP_Id_t
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
firstActiveUplinkBWP_Id
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
firstActiveUplinkBWP_Id
));
*
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
firstActiveUplinkBWP_Id
=
1
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
pusch_ServingCellConfig
=
NULL
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
carrierSwitching
=
NULL
;
...
...
@@ -1109,7 +1109,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
pdcch_ServingCellConfig
=
NULL
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
pdsch_ServingCellConfig
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
pdsch_ServingCellConfig
));
NR_PDSCH_ServingCellConfig_t
*
pdsch_servingcellconfig
=
calloc
(
1
,
sizeof
(
NR_PDSCH_ServingCellConfig_t
));
NR_PDSCH_ServingCellConfig_t
*
pdsch_servingcellconfig
=
calloc
(
1
,
sizeof
(
*
pdsch_servingcellconfig
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
pdsch_ServingCellConfig
->
present
=
NR_SetupRelease_PDSCH_ServingCellConfig_PR_setup
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
pdsch_ServingCellConfig
->
choice
.
setup
=
pdsch_servingcellconfig
;
pdsch_servingcellconfig
->
codeBlockGroupTransmission
=
NULL
;
...
...
@@ -1125,7 +1125,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
csi_MeasConfig
->
present
=
NR_SetupRelease_CSI_MeasConfig_PR_setup
;
NR_CSI_MeasConfig_t
*
csi_MeasConfig
=
calloc
(
1
,
sizeof
(
NR_CSI_MeasConfig_t
));
NR_CSI_MeasConfig_t
*
csi_MeasConfig
=
calloc
(
1
,
sizeof
(
*
csi_MeasConfig
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
csi_MeasConfig
->
choice
.
setup
=
csi_MeasConfig
;
csi_MeasConfig
->
nzp_CSI_RS_ResourceToAddModList
=
calloc
(
1
,
sizeof
(
*
csi_MeasConfig
->
nzp_CSI_RS_ResourceToAddModList
));
...
...
@@ -1575,9 +1575,9 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
csi_MeasConfig
->
nzp_CSI_RS_ResourceSetToAddModList
=
calloc
(
1
,
sizeof
(
*
csi_MeasConfig
->
nzp_CSI_RS_ResourceSetToAddModList
));
csi_MeasConfig
->
nzp_CSI_RS_ResourceSetToReleaseList
=
NULL
;
NR_NZP_CSI_RS_ResourceSet_t
*
nzpresset0
=
calloc
(
1
,
sizeof
(
NR_NZP_CSI_RS_ResourceSet_t
));
NR_NZP_CSI_RS_ResourceSet_t
*
nzpresset0
=
calloc
(
1
,
sizeof
(
*
nzpresset0
));
nzpresset0
->
nzp_CSI_ResourceSetId
=
0
;
NR_NZP_CSI_RS_ResourceSetId_t
*
nzpresset00
=
calloc
(
1
,
sizeof
(
NR_NZP_CSI_RS_ResourceSetId_t
));
NR_NZP_CSI_RS_ResourceSetId_t
*
nzpresset00
=
calloc
(
1
,
sizeof
(
*
nzpresset00
));
*
nzpresset00
=
0
;
ASN_SEQUENCE_ADD
(
&
nzpresset0
->
nzp_CSI_RS_Resources
.
list
,
nzpresset00
);
nzpresset0
->
repetition
=
NULL
;
...
...
@@ -1585,19 +1585,19 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
nzpresset0
->
trs_Info
=
NULL
;
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
nzp_CSI_RS_ResourceSetToAddModList
->
list
,
nzpresset0
);
if
(
n_physical_antenna_ports
>
1
)
{
NR_NZP_CSI_RS_ResourceSet_t
*
nzpresset3
=
calloc
(
1
,
sizeof
(
NR_NZP_CSI_RS_ResourceSet_t
));
NR_NZP_CSI_RS_ResourceSet_t
*
nzpresset3
=
calloc
(
1
,
sizeof
(
*
nzpresset3
));
nzpresset3
->
nzp_CSI_ResourceSetId
=
3
;
NR_NZP_CSI_RS_ResourceSetId_t
*
nzpresset30
=
calloc
(
1
,
sizeof
(
NR_NZP_CSI_RS_ResourceSetId_t
));
NR_NZP_CSI_RS_ResourceSetId_t
*
nzpresset30
=
calloc
(
1
,
sizeof
(
*
nzpresset30
));
*
nzpresset30
=
2
;
ASN_SEQUENCE_ADD
(
&
nzpresset3
->
nzp_CSI_RS_Resources
.
list
,
nzpresset30
);
if
(
n_physical_antenna_ports
>
3
)
{
NR_NZP_CSI_RS_ResourceSetId_t
*
nzpresset31
=
calloc
(
1
,
sizeof
(
NR_NZP_CSI_RS_ResourceSetId_t
));
NR_NZP_CSI_RS_ResourceSetId_t
*
nzpresset31
=
calloc
(
1
,
sizeof
(
*
nzpresset31
));
*
nzpresset31
=
3
;
ASN_SEQUENCE_ADD
(
&
nzpresset3
->
nzp_CSI_RS_Resources
.
list
,
nzpresset31
);
NR_NZP_CSI_RS_ResourceSetId_t
*
nzpresset32
=
calloc
(
1
,
sizeof
(
NR_NZP_CSI_RS_ResourceSetId_t
));
NR_NZP_CSI_RS_ResourceSetId_t
*
nzpresset32
=
calloc
(
1
,
sizeof
(
*
nzpresset32
));
*
nzpresset32
=
4
;
ASN_SEQUENCE_ADD
(
&
nzpresset3
->
nzp_CSI_RS_Resources
.
list
,
nzpresset32
);
NR_NZP_CSI_RS_ResourceSetId_t
*
nzpresset33
=
calloc
(
1
,
sizeof
(
NR_NZP_CSI_RS_ResourceSetId_t
));
NR_NZP_CSI_RS_ResourceSetId_t
*
nzpresset33
=
calloc
(
1
,
sizeof
(
*
nzpresset33
));
*
nzpresset33
=
5
;
ASN_SEQUENCE_ADD
(
&
nzpresset3
->
nzp_CSI_RS_Resources
.
list
,
nzpresset33
);
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
nzp_CSI_RS_ResourceSetToAddModList
->
list
,
nzpresset3
);
...
...
@@ -1611,18 +1611,18 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
}
if
(
n_physical_antenna_ports
>
7
)
{
NR_NZP_CSI_RS_ResourceSet_t
*
nzpresset4
=
calloc
(
1
,
sizeof
(
NR_NZP_CSI_RS_ResourceSet_t
));
NR_NZP_CSI_RS_ResourceSet_t
*
nzpresset4
=
calloc
(
1
,
sizeof
(
*
nzpresset4
));
nzpresset4
->
nzp_CSI_ResourceSetId
=
4
;
NR_NZP_CSI_RS_ResourceSetId_t
*
nzpresset40
=
calloc
(
1
,
sizeof
(
NR_NZP_CSI_RS_ResourceSetId_t
));
NR_NZP_CSI_RS_ResourceSetId_t
*
nzpresset40
=
calloc
(
1
,
sizeof
(
*
nzpresset40
));
*
nzpresset40
=
6
;
ASN_SEQUENCE_ADD
(
&
nzpresset4
->
nzp_CSI_RS_Resources
.
list
,
nzpresset40
);
NR_NZP_CSI_RS_ResourceSetId_t
*
nzpresset41
=
calloc
(
1
,
sizeof
(
NR_NZP_CSI_RS_ResourceSetId_t
));
NR_NZP_CSI_RS_ResourceSetId_t
*
nzpresset41
=
calloc
(
1
,
sizeof
(
*
nzpresset41
));
*
nzpresset41
=
7
;
ASN_SEQUENCE_ADD
(
&
nzpresset4
->
nzp_CSI_RS_Resources
.
list
,
nzpresset41
);
NR_NZP_CSI_RS_ResourceSetId_t
*
nzpresset42
=
calloc
(
1
,
sizeof
(
NR_NZP_CSI_RS_ResourceSetId_t
));
NR_NZP_CSI_RS_ResourceSetId_t
*
nzpresset42
=
calloc
(
1
,
sizeof
(
*
nzpresset42
));
*
nzpresset42
=
8
;
ASN_SEQUENCE_ADD
(
&
nzpresset4
->
nzp_CSI_RS_Resources
.
list
,
nzpresset42
);
NR_NZP_CSI_RS_ResourceSetId_t
*
nzpresset43
=
calloc
(
1
,
sizeof
(
NR_NZP_CSI_RS_ResourceSetId_t
));
NR_NZP_CSI_RS_ResourceSetId_t
*
nzpresset43
=
calloc
(
1
,
sizeof
(
*
nzpresset43
));
*
nzpresset43
=
9
;
ASN_SEQUENCE_ADD
(
&
nzpresset4
->
nzp_CSI_RS_Resources
.
list
,
nzpresset43
);
nzpresset4
->
repetition
=
calloc
(
1
,
sizeof
(
*
nzpresset4
->
repetition
));
...
...
@@ -1633,18 +1633,18 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
nzp_CSI_RS_ResourceSetToAddModList
->
list
,
nzpresset4
);
}
if
(
n_physical_antenna_ports
>
15
)
{
NR_NZP_CSI_RS_ResourceSet_t
*
nzpresset5
=
calloc
(
1
,
sizeof
(
NR_NZP_CSI_RS_ResourceSet_t
));
NR_NZP_CSI_RS_ResourceSet_t
*
nzpresset5
=
calloc
(
1
,
sizeof
(
*
nzpresset5
));
nzpresset5
->
nzp_CSI_ResourceSetId
=
5
;
NR_NZP_CSI_RS_ResourceSetId_t
*
nzpresset50
=
calloc
(
1
,
sizeof
(
NR_NZP_CSI_RS_ResourceSetId_t
));
NR_NZP_CSI_RS_ResourceSetId_t
*
nzpresset50
=
calloc
(
1
,
sizeof
(
*
nzpresset50
));
*
nzpresset50
=
10
;
ASN_SEQUENCE_ADD
(
&
nzpresset5
->
nzp_CSI_RS_Resources
.
list
,
nzpresset50
);
NR_NZP_CSI_RS_ResourceSetId_t
*
nzpresset51
=
calloc
(
1
,
sizeof
(
NR_NZP_CSI_RS_ResourceSetId_t
));
NR_NZP_CSI_RS_ResourceSetId_t
*
nzpresset51
=
calloc
(
1
,
sizeof
(
*
nzpresset51
));
*
nzpresset51
=
11
;
ASN_SEQUENCE_ADD
(
&
nzpresset5
->
nzp_CSI_RS_Resources
.
list
,
nzpresset51
);
NR_NZP_CSI_RS_ResourceSetId_t
*
nzpresset52
=
calloc
(
1
,
sizeof
(
NR_NZP_CSI_RS_ResourceSetId_t
));
NR_NZP_CSI_RS_ResourceSetId_t
*
nzpresset52
=
calloc
(
1
,
sizeof
(
*
nzpresset52
));
*
nzpresset52
=
12
;
ASN_SEQUENCE_ADD
(
&
nzpresset5
->
nzp_CSI_RS_Resources
.
list
,
nzpresset52
);
NR_NZP_CSI_RS_ResourceSetId_t
*
nzpresset53
=
calloc
(
1
,
sizeof
(
NR_NZP_CSI_RS_ResourceSetId_t
));
NR_NZP_CSI_RS_ResourceSetId_t
*
nzpresset53
=
calloc
(
1
,
sizeof
(
*
nzpresset53
));
*
nzpresset53
=
13
;
ASN_SEQUENCE_ADD
(
&
nzpresset5
->
nzp_CSI_RS_Resources
.
list
,
nzpresset53
);
nzpresset5
->
repetition
=
calloc
(
1
,
sizeof
(
*
nzpresset5
->
repetition
));
...
...
@@ -1846,7 +1846,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
csires8
->
resourceType
=
NR_CSI_ResourceConfig__resourceType_periodic
;
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_ResourceConfigToAddModList
->
list
,
csires8
);
NR_CSI_ResourceConfig_t
*
csires9
=
calloc
(
1
,
sizeof
(
*
csires
10
));
NR_CSI_ResourceConfig_t
*
csires9
=
calloc
(
1
,
sizeof
(
*
csires
9
));
csires9
->
csi_ResourceConfigId
=
9
;
csires9
->
csi_RS_ResourceSetList
.
present
=
NR_CSI_ResourceConfig__csi_RS_ResourceSetList_PR_nzp_CSI_RS_SSB
;
csires9
->
csi_RS_ResourceSetList
.
choice
.
nzp_CSI_RS_SSB
=
calloc
(
1
,
sizeof
(
*
csires9
->
csi_RS_ResourceSetList
.
choice
.
nzp_CSI_RS_SSB
));
...
...
@@ -2023,7 +2023,7 @@ void fill_default_reconfig(NR_ServingCellConfigCommon_t *servingcellconfigcommon
AssertFatal
(
enc_rval
.
encoded
>
0
,
"ASN1 message encoding failed (%s, %jd)!
\n
"
,
enc_rval
.
failed_type
->
name
,
enc_rval
.
encoded
);
reconfig
->
secondaryCellGroup
=
calloc
(
1
,
sizeof
(
OCTET_STRING_t
));
reconfig
->
secondaryCellGroup
=
calloc
(
1
,
sizeof
(
*
reconfig
->
secondaryCellGroup
));
OCTET_STRING_fromBuf
(
reconfig
->
secondaryCellGroup
,
(
const
char
*
)
scg_buffer
,
(
enc_rval
.
encoded
+
7
)
>>
3
);
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.217PRB.usrpn300.conf
View file @
932b4e0d
...
...
@@ -148,7 +148,7 @@ gNBs =
# ssb_PositionsInBurs_BitmapPR
# 1=short, 2=medium, 3=long
ssb_PositionsInBurst_PR
=
2
;
ssb_PositionsInBurst_Bitmap
=
1
5
;
ssb_PositionsInBurst_Bitmap
=
1
;
# ssb_periodicityServingCell
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
...
...
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