Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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
OpenXG UE
Commits
cf23e2da
Commit
cf23e2da
authored
Jan 14, 2021
by
Mahesh
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Resolved build warnings(25+) and 5G nFAPI downlink errors(future_ul_tti_request)
parent
6130570e
Changes
28
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
28 changed files
with
172 additions
and
282 deletions
+172
-282
.vscode/launch.json
.vscode/launch.json
+14
-13
common/config/config_load_configmodule.c
common/config/config_load_configmodule.c
+9
-9
executables/nr-gnb.c
executables/nr-gnb.c
+3
-11
executables/nr-ru.c
executables/nr-ru.c
+1
-1
executables/nr-softmodem.c
executables/nr-softmodem.c
+5
-5
executables/softmodem-common.c
executables/softmodem-common.c
+4
-1
executables/softmodem-common.h
executables/softmodem-common.h
+7
-1
nfapi/oai_integration/nfapi_pnf.c
nfapi/oai_integration/nfapi_pnf.c
+1
-1
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h
+4
-3
nfapi/open-nFAPI/nfapi/src/nfapi_p5.c
nfapi/open-nFAPI/nfapi/src/nfapi_p5.c
+19
-62
nfapi/open-nFAPI/pnf/public_inc/nfapi_pnf_interface.h
nfapi/open-nFAPI/pnf/public_inc/nfapi_pnf_interface.h
+2
-1
nfapi/open-nFAPI/pnf/src/pnf.c
nfapi/open-nFAPI/pnf/src/pnf.c
+8
-8
nfapi/open-nFAPI/pnf/src/pnf_p7.c
nfapi/open-nFAPI/pnf/src/pnf_p7.c
+7
-41
nfapi/open-nFAPI/vnf/src/vnf.c
nfapi/open-nFAPI/vnf/src/vnf.c
+17
-65
nfapi/open-nFAPI/vnf/src/vnf_p7_interface.c
nfapi/open-nFAPI/vnf/src/vnf_p7_interface.c
+2
-5
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
+1
-1
openair1/SCHED/nfapi_lte_dummy.c
openair1/SCHED/nfapi_lte_dummy.c
+3
-3
openair1/SCHED/nfapi_nr_dummy.c
openair1/SCHED/nfapi_nr_dummy.c
+3
-3
openair1/SCHED_NR/fapi_nr_l1.c
openair1/SCHED_NR/fapi_nr_l1.c
+8
-8
openair1/SCHED_NR/phy_frame_config_nr.c
openair1/SCHED_NR/phy_frame_config_nr.c
+9
-9
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+1
-1
openair1/SIMULATION/NR_PHY/nr_dummy_functions.c
openair1/SIMULATION/NR_PHY/nr_dummy_functions.c
+5
-1
openair1/SIMULATION/NR_PHY/prachsim.c
openair1/SIMULATION/NR_PHY/prachsim.c
+5
-1
openair2/LAYER2/NR_MAC_gNB/config.c
openair2/LAYER2/NR_MAC_gNB/config.c
+1
-0
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
+11
-16
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
+1
-0
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
+16
-7
openair2/NR_PHY_INTERFACE/NR_IF_Module.c
openair2/NR_PHY_INTERFACE/NR_IF_Module.c
+5
-5
No files found.
.vscode/launch.json
View file @
cf23e2da
...
...
@@ -22,11 +22,10 @@
"name"
:
"(gdb) Launch VNF"
,
"type"
:
"cppdbg"
,
"request"
:
"launch"
,
"program"
:
"/home/glab/NR_nfapi/openairinterface5g/cmake_targets/ran_build/build/nr-softmodem"
,
"args"
:
[
"-E"
,
"-O "
,
"/home/glab/NR_nfapi/openairinterface5g/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band78.tm1.106PRB.nfapi.conf"
,
"--vnf"
],
"program"
:
"/home/spclab/nfapimode/openairinterface5g/cmake_targets/ran_build/build/nr-softmodem"
,
"args"
:
[
"-O "
,
"/home/spclab/nfapimode/openairinterface5g/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band78.tm1.106PRB.nfapi.conf"
,
"--nfapi"
,
"2"
,
"--phy-test"
,
"--noS1"
],
"stopAtEntry"
:
false
,
"cwd"
:
"${workspaceFolder}"
,
"environment"
:
[],
...
...
@@ -45,11 +44,11 @@
"name"
:
"(gdb) Launch PNF"
,
"type"
:
"cppdbg"
,
"request"
:
"launch"
,
"program"
:
"/home/
glab/NR_nfapi
/openairinterface5g/cmake_targets/ran_build/build/nr-softmodem"
,
"program"
:
"/home/
spclab/nfapimode
/openairinterface5g/cmake_targets/ran_build/build/nr-softmodem"
,
"args"
:
[
"-E"
,
"-O "
,
"/home/
glab/NR_nfapi
/openairinterface5g/targets/PROJECTS/GENERIC-LTE-EPC/CONF/oaiL1.nfapi.usrpx300.conf"
,
"--
pnf
"
],
"/home/
spclab/nfapimode
/openairinterface5g/targets/PROJECTS/GENERIC-LTE-EPC/CONF/oaiL1.nfapi.usrpx300.conf"
,
"--
nfapi"
,
"1
"
],
"stopAtEntry"
:
false
,
"cwd"
:
"${workspaceFolder}"
,
"environment"
:
[],
...
...
@@ -95,10 +94,10 @@
{
"name"
:
"(gdb) Launch
GNB
"
,
"name"
:
"(gdb) Launch
UE
"
,
"type"
:
"cppdbg"
,
"request"
:
"launch"
,
"program"
:
"
/home/glab/NR_nfapi/openairinterface5g/cmake_targets/ran_build/build/nr-
softmodem"
,
"program"
:
"
/home/spclab/nfapimode/openairinterface5g/cmake_targets/ran_build/build/nr-ue
softmodem"
,
//
"/home/glab/NR_nfapi/openairinterface5g/cmake_targets/ran_build/build/nr-softmodem"
,
...
...
@@ -109,7 +108,9 @@
//
"PARALLEL_SINGLE_THREAD"
,
//
"--rfsim"
,
//
"--phy-test"
],
"args"
:[
"-O"
,
"/home/glab/NR_nfapi/openairinterface5g/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpx300.conf"
],
"args"
:[
"--numerology"
,
"1"
,
"-r"
,
"106"
,
"-C"
,
"3510000000"
,
"--rfsim"
,
"--rfsimulator.serveraddr"
,
"127.0.0.1"
],
"stopAtEntry"
:
false
,
"cwd"
:
"${workspaceFolder}"
,
"environment"
:
[],
...
...
@@ -128,9 +129,9 @@
"name"
:
"(rfsim) Launch GNB"
,
"type"
:
"cppdbg"
,
"request"
:
"launch"
,
"program"
:
"
/home/glab/NR_nfapi
/openairinterface5g/cmake_targets/ran_build/build/nr-softmodem"
,
"program"
:
"
/home/spclab/nfapimode
/openairinterface5g/cmake_targets/ran_build/build/nr-softmodem"
,
"args"
:[
"-O"
,
"/home/
glab/NR_nfapi/openairinterface5g/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpx
300.conf"
,
"/home/
spclab/nfapimode/openairinterface5g/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpn
300.conf"
,
"--rfsim"
,
"--rfsimulator.serveraddr"
,
"server"
,
...
...
common/config/config_load_configmodule.c
View file @
cf23e2da
...
...
@@ -45,7 +45,7 @@
#define CONFIG_SHAREDLIBFORMAT "libparams_%s.so"
#include "nfapi/oai_integration/vendor_ext.h"
uint8_t
nfapi_mode
=
0
;
extern
uint8_t
nfapi_mode
;
int
load_config_sharedlib
(
configmodule_interface_t
*
cfgptr
)
{
void
*
lib_handle
;
...
...
@@ -215,15 +215,15 @@ configmodule_interface_t *load_configmodule(int argc,
tmpflags
=
CONFIG_HELP
;
}
if
(
strcmp
(
argv
[
i
],
"--vnf"
)
==
0
){
printf
(
"
\n
VNF ENABLED
\n
"
);
nfapi_mode
=
NFAPI_MODE_VNF
;
}
//
if( strcmp(argv[i], "--vnf") == 0 ){
//
printf("\nVNF ENABLED\n");
//
nfapi_mode = NFAPI_MODE_VNF;
//
}
if
(
strcmp
(
argv
[
i
],
"--pnf"
)
==
0
){
printf
(
"
\n
PNF ENABLED
\n
"
);
nfapi_mode
=
NFAPI_MODE_PNF
;
}
//
if( strcmp(argv[i], "--pnf") == 0 ){
//
printf("\nPNF ENABLED\n");
//
nfapi_mode = NFAPI_MODE_PNF;
//
}
}
...
...
executables/nr-gnb.c
View file @
cf23e2da
...
...
@@ -146,9 +146,6 @@ extern void add_subframe(uint16_t *frameP, uint16_t *subframeP, int offset);
static
inline
int
rxtx
(
PHY_VARS_gNB
*
gNB
,
int
frame_rx
,
int
slot_rx
,
int
frame_tx
,
int
slot_tx
,
char
*
thread_name
)
{
struct
timespec
current
;
clock_gettime
(
CLOCK_MONOTONIC
,
&
current
);
//LOG_I(PHY,"%sCurrent time %d.%d,frame_rx %d,slot_rx %d,frame_tx %d,slot_tx %d\n", __FUNCTION__, current.tv_sec,current.tv_nsec,frame_rx,slot_rx,frame_tx,slot_tx);
// if(nfapi_mode!=0)
// sf_ahead = (uint16_t) ceil((float)6/(0x01<<gNB->frame_parms.numerology_index));
sl_ahead
=
sf_ahead
*
gNB
->
frame_parms
.
slots_per_subframe
;
nfapi_nr_config_request_scf_t
*
cfg
=
&
gNB
->
gNB_config
;
...
...
@@ -157,7 +154,7 @@ clock_gettime(CLOCK_MONOTONIC, ¤t);
// *******************************************************************
// NFAPI not yet supported for NR - this code has to be revised
if
(
nfapi_mode
==
NFAPI_MODE_PNF
)
{
if
(
NFAPI_MODE
==
NFAPI_MODE_PNF
)
{
// I am a PNF and I need to let nFAPI know that we have a (sub)frame tick
//add_subframe(&frame, &subframe, 4);
//oai_subframe_ind(proc->frame_tx, proc->subframe_tx);
...
...
@@ -187,7 +184,6 @@ clock_gettime(CLOCK_MONOTONIC, ¤t);
// ****************************************
T
(
T_GNB_PHY_DL_TICK
,
T_INT
(
gNB
->
Mod_id
),
T_INT
(
frame_tx
),
T_INT
(
slot_tx
));
/* hack to remove UEs */
extern
int
rnti_to_remove
[
10
];
extern
volatile
int
rnti_to_remove_count
;
...
...
@@ -248,16 +244,15 @@ clock_gettime(CLOCK_MONOTONIC, ¤t);
}
*/
// Call the scheduler
pthread_mutex_lock
(
&
gNB
->
UL_INFO_mutex
);
gNB
->
UL_INFO
.
frame
=
frame_rx
;
gNB
->
UL_INFO
.
slot
=
slot_rx
;
gNB
->
UL_INFO
.
module_id
=
gNB
->
Mod_id
;
gNB
->
UL_INFO
.
CC_id
=
gNB
->
CC_id
;
gNB
->
if_inst
->
NR_UL_indication
(
&
gNB
->
UL_INFO
);
pthread_mutex_unlock
(
&
gNB
->
UL_INFO_mutex
);
// RX processing
int
tx_slot_type
=
nr_slot_select
(
cfg
,
frame_tx
,
slot_tx
);
int
rx_slot_type
=
nr_slot_select
(
cfg
,
frame_rx
,
slot_rx
);
...
...
@@ -408,7 +403,6 @@ static void *gNB_L1_thread( void *param ) {
while
(
!
oai_exit
)
{
struct
timespec
t
;
clock_gettime
(
CLOCK_MONOTONIC
,
&
t
);
//printf("\nbefore time %d.%d\n",t.tv_sec,t.tv_nsec);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_PROC_RXTX0
,
0
);
if
(
wait_on_condition
(
&
L1_proc
->
mutex
,
&
L1_proc
->
cond
,
&
L1_proc
->
instance_cnt
,
thread_name
)
<
0
)
break
;
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_PROC_RXTX0
,
1
);
...
...
@@ -419,8 +413,6 @@ static void *gNB_L1_thread( void *param ) {
int
frame_tx
=
L1_proc
->
frame_tx
;
int
slot_tx
=
L1_proc
->
slot_tx
;
uint64_t
timestamp_tx
=
L1_proc
->
timestamp_tx
;
//printf("\nframe %d slot %d after wait time %d.%d\n",frame_rx,slot_rx,t.tv_sec,t.tv_nsec);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_SLOT_NUMBER_TX0_GNB
,
slot_tx
);
...
...
executables/nr-ru.c
View file @
cf23e2da
...
...
@@ -1565,7 +1565,7 @@ void *ru_thread( void *param ) {
if
((
slot_start
.
tv_sec
>
curr_time
.
tv_sec
)
||
(
slot_start
.
tv_sec
==
curr_time
.
tv_sec
&&
slot_start
.
tv_nsec
>
curr_time
.
tv_nsec
)){
sleep_time
=
timespec_sub
(
slot_start
,
curr_time
);
usleep
(
sleep_time
.
tv_nsec
*
1e-3
);
usleep
(
sleep_time
.
tv_nsec
*
1e-3
);
}
else
{
//continue
}
...
...
executables/nr-softmodem.c
View file @
cf23e2da
...
...
@@ -915,7 +915,7 @@ if(!IS_SOFTMODEM_NOS1)
usleep
(
1000
);
if
(
nfapi_mode
)
{
if
(
NFAPI_MODE
)
{
printf
(
"NFAPI*** - mutex and cond created - will block shortly for completion of PNF connection
\n
"
);
pthread_cond_init
(
&
sync_cond
,
NULL
);
pthread_mutex_init
(
&
sync_mutex
,
NULL
);
...
...
@@ -923,7 +923,7 @@ if(!IS_SOFTMODEM_NOS1)
const
char
*
nfapi_mode_str
=
"<UNKNOWN>"
;
switch
(
nfapi_mode
)
{
switch
(
NFAPI_MODE
)
{
case
0
:
nfapi_mode_str
=
"MONOLITHIC"
;
break
;
...
...
@@ -943,7 +943,7 @@ if(!IS_SOFTMODEM_NOS1)
printf
(
"NFAPI MODE:%s
\n
"
,
nfapi_mode_str
);
if
(
nfapi_mode
==
NFAPI_MODE_VNF
)
// VNF
if
(
NFAPI_MODE
==
NFAPI_MODE_VNF
)
// VNF
wait_nfapi_init
(
"main?"
);
printf
(
"START MAIN THREADS
\n
"
);
...
...
@@ -972,7 +972,7 @@ if(!IS_SOFTMODEM_NOS1)
config_sync_var
=
0
;
if
(
nfapi_mode
==
NFAPI_MODE_PNF
)
{
// PNF
if
(
NFAPI_MODE
==
NFAPI_MODE_PNF
)
{
// PNF
wait_nfapi_init
(
"main?"
);
}
...
...
@@ -992,7 +992,7 @@ if(!IS_SOFTMODEM_NOS1)
load_softscope
(
"nr"
,
&
p
);
}
if
(
nfapi_mode
!=
NFAPI_MODE_PNF
&&
nfapi_mode
!=
NFAPI_MODE_VNF
)
{
if
(
NFAPI_MODE
!=
NFAPI_MODE_PNF
&&
NFAPI_MODE
!=
NFAPI_MODE_VNF
)
{
printf
(
"Not NFAPI mode - call init_eNB_afterRU()
\n
"
);
init_eNB_afterRU
();
}
else
{
...
...
executables/softmodem-common.c
View file @
cf23e2da
...
...
@@ -39,11 +39,13 @@
#include "executables/thread-common.h"
#include "common/utils/LOG/log.h"
#include "softmodem-common.h"
#include "nfapi/oai_integration/vendor_ext.h"
static
softmodem_params_t
softmodem_params
;
char
*
parallel_config
=
NULL
;
char
*
worker_config
=
NULL
;
uint8_t
nfapi_mode
=
0
;
static
mapping
softmodem_funcs
[]
=
MAPPING_SOFTMODEM_FUNCTIONS
;
static
struct
timespec
start
;
...
...
@@ -143,6 +145,7 @@ void get_common_options(uint32_t execmask) {
if
(
parallel_config
!=
NULL
)
set_parallel_conf
(
parallel_config
);
if
(
worker_config
!=
NULL
)
set_worker_conf
(
worker_config
);
nfapi_setmode
(
nfapi_mode
);
}
void
softmodem_printresources
(
int
sig
,
telnet_printfunc_t
pf
)
{
struct
rusage
usage
;
...
...
executables/softmodem-common.h
View file @
cf23e2da
...
...
@@ -90,7 +90,7 @@ extern "C"
#define CONFIG_HLP_RFSIM "Run in rf simulator mode (also known as basic simulator)\n"
#define CONFIG_HLP_NOKRNMOD "(noS1 only): Use tun instead of namesh module \n"
#define CONFIG_HLP_DISABLNBIOT "disable nb-iot, even if defined in config\n"
#define CONFIG_HLP_NFAPI "Change the nFAPI mode for NR\n"
/*-----------------------------------------------------------------------------------------------------------------------------------------------------*/
/* command line parameters common to eNodeB and UE */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
...
...
@@ -110,6 +110,7 @@ extern "C"
#define SEND_DMRSSYNC softmodem_params.send_dmrs_sync
#define USIM_TEST softmodem_params.usim_test
#define USE_256QAM_TABLE softmodem_params.use_256qam_table
#define NFAPI softmodem_params.nfapi
#define DEFAULT_RFCONFIG_FILE "/usr/local/etc/syriq/ue.band7.tm1.PRB100.NR40.dat";
...
...
@@ -139,6 +140,7 @@ extern "C"
{"nokrnmod", CONFIG_HLP_NOKRNMOD, PARAMFLAG_BOOL, uptr:&nokrnmod, defintval:0, TYPE_INT, 0}, \
{"nbiot-disable", CONFIG_HLP_DISABLNBIOT, PARAMFLAG_BOOL, uptr:&nonbiot, defuintval:0, TYPE_INT, 0}, \
{"use-256qam-table", CONFIG_HLP_256QAM, PARAMFLAG_BOOL, iptr:&USE_256QAM_TABLE, defintval:0, TYPE_INT, 0}, \
{"nfapi", CONFIG_HLP_NFAPI, 0, u8ptr:&nfapi_mode, defintval:0, TYPE_UINT8, 0}, \
}
...
...
@@ -225,6 +227,8 @@ typedef struct {
int
hw_timing_advance
;
uint32_t
send_dmrs_sync
;
int
use_256qam_table
;
uint8_t
nfapi
;
}
softmodem_params_t
;
extern
uint64_t
get_softmodem_optmask
(
void
);
...
...
@@ -236,6 +240,8 @@ extern char *get_softmodem_function(uint64_t *sofmodemfunc_mask_ptr);
extern
void
set_softmodem_sighandler
(
void
);
extern
uint64_t
downlink_frequency
[
MAX_NUM_CCs
][
4
];
extern
int32_t
uplink_frequency_offset
[
MAX_NUM_CCs
][
4
];
extern
uint8_t
nfapi_mode
;
#ifdef __cplusplus
}
#endif
...
...
nfapi/oai_integration/nfapi_pnf.c
View file @
cf23e2da
...
...
@@ -536,7 +536,7 @@ void nfapi_nr_send_pnf_start_resp(nfapi_pnf_config_t *config, uint16_t phy_id) {
printf
(
"Sending NFAPI_START_RESPONSE config:%p phy_id:%d
\n
"
,
config
,
phy_id
);
nfapi_nr_start_response_scf_t
start_resp
;
memset
(
&
start_resp
,
0
,
sizeof
(
start_resp
));
start_resp
.
header
.
message_id
=
NFAPI_START_RESPONSE
;
start_resp
.
header
.
message_id
=
NFAPI_
NR_PHY_MSG_TYPE_
START_RESPONSE
;
start_resp
.
header
.
phy_id
=
phy_id
;
start_resp
.
error_code
=
NFAPI_MSG_OK
;
nfapi_nr_pnf_start_resp
(
config
,
&
start_resp
);
...
...
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h
View file @
cf23e2da
...
...
@@ -59,6 +59,8 @@ typedef enum {
NFAPI_NR_PHY_MSG_TYPE_STOP_REQUEST
=
0X05
,
NFAPI_NR_PHY_MSG_TYPE_STOP_INDICATION
=
0X06
,
NFAPI_NR_PHY_MSG_TYPE_ERROR_INDICATION
=
0X07
,
NFAPI_NR_PHY_MSG_TYPE_START_RESPONSE
=
0X010D
,
NFAPI_NR_PHY_MSG_TYPE_STOP_RESPONSE
=
0X010F
,
//RESERVED 0X08 ~ 0X7F
NFAPI_NR_PHY_MSG_TYPE_DL_TTI_REQUEST
=
0X80
,
NFAPI_NR_PHY_MSG_TYPE_UL_TTI_REQUEST
=
0X81
,
...
...
@@ -523,7 +525,7 @@ typedef struct {
/* PARAM.RESPONSE */
typedef
struct
{
nfapi_p4_p5_message_header_t
header
;
nfapi_nr_param_errors_e
error_code
;
uint8_t
error_code
;
uint8_t
num_tlv
;
nfapi_vendor_extension_tlv_t
vendor_extension
;
...
...
@@ -545,7 +547,6 @@ typedef struct {
/* CONFIG.REQUEST */
typedef
struct
{
nfapi_p4_p5_message_header_t
header
;
nfapi_nr_param_errors_e
error_code
;
// TODO: check if needed
uint8_t
num_tlv
;
nfapi_vendor_extension_tlv_t
vendor_extension
;
...
...
@@ -564,7 +565,7 @@ typedef struct {
/* CONFIG.RESPONSE */
typedef
struct
{
nfapi_p4_p5_message_header_t
header
;
nfapi_nr_config_errors_e
error_code
;
uint8_t
error_code
;
//uint8_t num_invalid_tlvs;
// TODO: add list of invalid/unsupported TLVs (see Table 3.18)
nfapi_vendor_extension_tlv_t
vendor_extension
;
...
...
nfapi/open-nFAPI/nfapi/src/nfapi_p5.c
View file @
cf23e2da
This diff is collapsed.
Click to expand it.
nfapi/open-nFAPI/pnf/public_inc/nfapi_pnf_interface.h
View file @
cf23e2da
...
...
@@ -214,7 +214,8 @@ typedef struct nfapi_pnf_config
* STOP.request. This can be done in the call back.
*/
int
(
*
stop_req
)(
nfapi_pnf_config_t
*
config
,
nfapi_pnf_phy_config_t
*
phy
,
nfapi_stop_request_t
*
req
);
int
(
*
nr_stop_req
)(
nfapi_pnf_config_t
*
config
,
nfapi_pnf_phy_config_t
*
phy
,
nfapi_nr_stop_request_t
*
req
);
/*! A callback for the MEASUREMENT.request
* \param config A pointer to the pnf configuration
* \param phy A pointer to the pnf phy configuration
...
...
nfapi/open-nFAPI/pnf/src/pnf.c
View file @
cf23e2da
...
...
@@ -829,7 +829,7 @@ void pnf_nr_handle_start_request(pnf_t* pnf, void *pRecvMsg, int recvMsgLen)
{
nfapi_nr_start_response_scf_t
resp
;
memset
(
&
resp
,
0
,
sizeof
(
resp
));
resp
.
header
.
message_id
=
NFAPI_START_RESPONSE
;
resp
.
header
.
message_id
=
NFAPI_
NR_PHY_MSG_TYPE_
START_RESPONSE
;
resp
.
header
.
phy_id
=
req
.
header
.
phy_id
;
resp
.
error_code
=
NFAPI_MSG_INVALID_STATE
;
nfapi_nr_pnf_start_resp
(
config
,
&
resp
);
...
...
@@ -839,7 +839,7 @@ void pnf_nr_handle_start_request(pnf_t* pnf, void *pRecvMsg, int recvMsgLen)
{
nfapi_nr_start_response_scf_t
resp
;
memset
(
&
resp
,
0
,
sizeof
(
resp
));
resp
.
header
.
message_id
=
NFAPI_START_RESPONSE
;
resp
.
header
.
message_id
=
NFAPI_
NR_PHY_MSG_TYPE_
START_RESPONSE
;
resp
.
header
.
phy_id
=
req
.
header
.
phy_id
;
resp
.
error_code
=
NFAPI_MSG_INVALID_CONFIG
;
nfapi_nr_pnf_start_resp
(
config
,
&
resp
);
...
...
@@ -849,7 +849,7 @@ void pnf_nr_handle_start_request(pnf_t* pnf, void *pRecvMsg, int recvMsgLen)
{
nfapi_nr_start_response_scf_t
resp
;
memset
(
&
resp
,
0
,
sizeof
(
resp
));
resp
.
header
.
message_id
=
NFAPI_START_RESPONSE
;
resp
.
header
.
message_id
=
NFAPI_
NR_PHY_MSG_TYPE_
START_RESPONSE
;
resp
.
header
.
phy_id
=
req
.
header
.
phy_id
;
resp
.
error_code
=
NFAPI_MSG_INVALID_STATE
;
nfapi_nr_pnf_start_resp
(
config
,
&
resp
);
...
...
@@ -962,16 +962,16 @@ void pnf_nr_handle_stop_request(pnf_t* pnf, void *pRecvMsg, int recvMsgLen)
{
if
(
phy
->
state
!=
NFAPI_PNF_PHY_RUNNING
)
{
if
(
config
->
stop_req
)
if
(
config
->
nr_
stop_req
)
{
(
config
->
stop_req
)(
config
,
phy
,
&
req
);
(
config
->
nr_
stop_req
)(
config
,
phy
,
&
req
);
}
}
else
{
nfapi_stop_response_t
resp
;
memset
(
&
resp
,
0
,
sizeof
(
resp
));
resp
.
header
.
message_id
=
NFAPI_STOP_RESPONSE
;
resp
.
header
.
message_id
=
NFAPI_
NR_PHY_MSG_TYPE_
STOP_RESPONSE
;
resp
.
header
.
phy_id
=
req
.
header
.
phy_id
;
resp
.
error_code
=
NFAPI_MSG_INVALID_STATE
;
nfapi_pnf_stop_resp
(
config
,
&
resp
);
...
...
@@ -981,7 +981,7 @@ void pnf_nr_handle_stop_request(pnf_t* pnf, void *pRecvMsg, int recvMsgLen)
{
nfapi_stop_response_t
resp
;
memset
(
&
resp
,
0
,
sizeof
(
resp
));
resp
.
header
.
message_id
=
NFAPI_STOP_RESPONSE
;
resp
.
header
.
message_id
=
NFAPI_
NR_PHY_MSG_TYPE_
STOP_RESPONSE
;
resp
.
header
.
phy_id
=
req
.
header
.
phy_id
;
resp
.
error_code
=
NFAPI_MSG_INVALID_CONFIG
;
nfapi_pnf_stop_resp
(
config
,
&
resp
);
...
...
@@ -991,7 +991,7 @@ void pnf_nr_handle_stop_request(pnf_t* pnf, void *pRecvMsg, int recvMsgLen)
{
nfapi_stop_response_t
resp
;
memset
(
&
resp
,
0
,
sizeof
(
resp
));
resp
.
header
.
message_id
=
NFAPI_STOP_RESPONSE
;
resp
.
header
.
message_id
=
NFAPI_
NR_PHY_MSG_TYPE_
STOP_RESPONSE
;
resp
.
header
.
phy_id
=
req
.
header
.
phy_id
;
resp
.
error_code
=
NFAPI_MSG_INVALID_STATE
;
nfapi_pnf_stop_resp
(
config
,
&
resp
);
...
...
nfapi/open-nFAPI/pnf/src/pnf_p7.c
View file @
cf23e2da
...
...
@@ -514,7 +514,7 @@ static uint32_t get_slot_time(uint32_t now_hr, uint32_t slot_start_hr)
// if the us have wrapped adjust for it
if
(
now_hr
<
slot_start_us
)
{
now_us
+=
500000
;
// changed from 1e6 - gokul
now_us
+=
500000
;
}
return
now_us
-
slot_start_us
;
...
...
@@ -985,8 +985,6 @@ int pnf_p7_slot_ind(pnf_p7_t* pnf_p7, uint16_t phy_id, uint16_t sfn, uint16_t sl
uint8_t
tx_buffer_index
=
tx_slot_dec
%
pnf_p7
->
_public
.
slot_buffer_size
;
nfapi_pnf_p7_slot_buffer_t
*
tx_slot_buffer
=
&
(
pnf_p7
->
slot_buffer
[
tx_buffer_index
]);
//printf("sfn_sf_dec:%d tx_sfn_sf_dec:%d\n", sfn_sf_dec, tx_sfn_sf_dec);
if
(
0
)
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"%s() shift:%d slot_buffer->sfn_sf:%d tx_slot_buffer->sfn_slot:%d sfn_sf:%d subframe_buffer[buffer_index:%u dl_config_req:%p tx_req:%p] "
"TX:sfn_sf:%d:tx_buffer_index:%d[dl_config_req:%p tx_req:%p]
\n
"
,
__FUNCTION__
,
...
...
@@ -1013,18 +1011,16 @@ int pnf_p7_slot_ind(pnf_p7_t* pnf_p7, uint16_t phy_id, uint16_t sfn, uint16_t sl
{
if
(
pnf_p7
->
_public
.
tx_data_req_fn
)
{
{
(
pnf_p7
->
_public
.
tx_data_req_fn
)(
&
(
pnf_p7
->
_public
),
tx_slot_buffer
->
tx_data_req
);
}
//deallocate_nfapi_tx_request(slot_buffer->tx_req, pnf_p7);
}
else
{
// send dummy
if
(
pnf_p7
->
_public
.
tx_data_req_fn
&&
pnf_p7
->
_public
.
dummy_slot
.
tx_data_req
)
{
pnf_p7
->
_public
.
dummy_slot
.
tx_data_req
->
SFN
=
sfn_tx
;
// TODO: change tx_req to nfapi_nr_tx_data_request_t
pnf_p7
->
_public
.
dummy_slot
.
tx_data_req
->
SFN
=
sfn_tx
;
pnf_p7
->
_public
.
dummy_slot
.
tx_data_req
->
Slot
=
slot_tx
;
(
pnf_p7
->
_public
.
tx_data_req_fn
)(
&
(
pnf_p7
->
_public
),
pnf_p7
->
_public
.
dummy_slot
.
tx_data_req
);
...
...
@@ -1036,12 +1032,8 @@ int pnf_p7_slot_ind(pnf_p7_t* pnf_p7, uint16_t phy_id, uint16_t sfn, uint16_t sl
{
if
(
pnf_p7
->
_public
.
dl_tti_req_fn
)
{
printf
(
"
\n
In pnf_phy_dl_tti_req VNF: sfn %d slot %d, PNF: sfn %d slot %d
\n
"
,
tx_slot_buffer
->
dl_tti_req
->
SFN
,
tx_slot_buffer
->
dl_tti_req
->
Slot
,
pnf_p7
->
sfn
,
pnf_p7
->
slot
);
(
pnf_p7
->
_public
.
dl_tti_req_fn
)(
NULL
,
&
(
pnf_p7
->
_public
),
tx_slot_buffer
->
dl_tti_req
);
}
//deallocate_nfapi_dl_config_request(subframe_buffer->dl_config_req, pnf_p7);
}
...
...
@@ -1050,7 +1042,7 @@ int pnf_p7_slot_ind(pnf_p7_t* pnf_p7, uint16_t phy_id, uint16_t sfn, uint16_t sl
// send dummy
if
(
pnf_p7
->
_public
.
dl_tti_req_fn
&&
pnf_p7
->
_public
.
dummy_slot
.
dl_tti_req
)
{
pnf_p7
->
_public
.
dummy_slot
.
dl_tti_req
->
SFN
=
sfn_tx
;
// TODO: Change dl_config_req to nfapi_nr_dl_tti_request_t
pnf_p7
->
_public
.
dummy_slot
.
dl_tti_req
->
SFN
=
sfn_tx
;
pnf_p7
->
_public
.
dummy_slot
.
dl_tti_req
->
Slot
=
slot_tx
;
(
pnf_p7
->
_public
.
dl_tti_req_fn
)(
NULL
,
&
(
pnf_p7
->
_public
),
pnf_p7
->
_public
.
dummy_slot
.
dl_tti_req
);
}
...
...
@@ -1059,10 +1051,9 @@ int pnf_p7_slot_ind(pnf_p7_t* pnf_p7, uint16_t phy_id, uint16_t sfn, uint16_t sl
if
(
tx_slot_buffer
->
ul_dci_req
!=
0
)
{
if
(
pnf_p7
->
_public
.
ul_dci_req_fn
)
{
printf
(
"
\n
In pnf_phy_Ul_DCI_req VNF: sfn %d slot %d, PNF: sfn %d slot %d
\n
"
,
tx_slot_buffer
->
ul_dci_req
->
SFN
,
tx_slot_buffer
->
ul_dci_req
->
Slot
,
pnf_p7
->
sfn
,
pnf_p7
->
slot
);
{
(
pnf_p7
->
_public
.
ul_dci_req_fn
)(
NULL
,
&
(
pnf_p7
->
_public
),
tx_slot_buffer
->
ul_dci_req
);
}
//deallocate_nfapi_hi_dci0_request(subframe_buffer->hi_dci0_req, pnf_p7);
}
else
{
...
...
@@ -1074,24 +1065,6 @@ int pnf_p7_slot_ind(pnf_p7_t* pnf_p7, uint16_t phy_id, uint16_t sfn, uint16_t sl
(
pnf_p7
->
_public
.
ul_dci_req_fn
)(
NULL
,
&
(
pnf_p7
->
_public
),
pnf_p7
->
_public
.
dummy_slot
.
ul_dci_req
);
}
}
#if 0
if(tx_slot_buffer->ue_release_req != 0) // TODO: check later if needed
{
if(pnf_p7->_public.ue_release_req)
(pnf_p7->_public.ue_release_req)(&(pnf_p7->_public), tx_slot_buffer->ue_release_req);
}
else
{
//send dummy
if(pnf_p7->_public.ue_release_req && pnf_p7->_public.dummy_slot.ue_release_req)
{
pnf_p7->_public.dummy_slot.ue_release_req->sfn_sf = sfn_slot_tx;
(pnf_p7->_public.ue_release_req)(&(pnf_p7->_public), pnf_p7->_public.dummy_slot.ue_release_req);
}
}
#endif
//TODO: add deallocate fns for the new structs
if
(
tx_slot_buffer
->
dl_tti_req
!=
0
)
{
deallocate_nfapi_dl_tti_request
(
tx_slot_buffer
->
dl_tti_req
,
pnf_p7
);
...
...
@@ -1125,10 +1098,7 @@ int pnf_p7_slot_ind(pnf_p7_t* pnf_p7, uint16_t phy_id, uint16_t sfn, uint16_t sl
if
(
slot_buffer
->
ul_tti_req
!=
0
)
{
if
(
pnf_p7
->
_public
.
ul_tti_req_fn
)
{
struct
timespec
curr
;
// clock_gettime(CLOCK_MONOTONIC,&curr);
// printf("\ntime at which ul_tti handle fn %ld.%ld \n",curr.tv_sec,curr.tv_nsec);
printf
(
"
\n
In pnf_phy_ul_tti_req VNF: sfn %d slot %d, PNF: sfn %d slot %d
\n
"
,
slot_buffer
->
ul_tti_req
->
SFN
,
slot_buffer
->
ul_tti_req
->
Slot
,
pnf_p7
->
sfn
,
pnf_p7
->
slot
);
{
(
pnf_p7
->
_public
.
ul_tti_req_fn
)(
NULL
,
&
(
pnf_p7
->
_public
),
slot_buffer
->
ul_tti_req
);
}
//deallocate_nfapi_ul_config_request(subframe_buffer->ul_config_req, pnf_p7);
...
...
@@ -2597,8 +2567,6 @@ void pnf_nr_handle_dl_node_sync(void *pRecvMsg, int recvMsgLen, pnf_p7_t* pnf_p7
ul_node_sync
.
t1
=
dl_node_sync
.
t1
;
ul_node_sync
.
t2
=
calculate_nr_t2
(
rx_hr_time
,
pnf_p7
->
sfn
,
pnf_p7
->
slot
,
pnf_p7
->
slot_start_time_hr
);
ul_node_sync
.
t3
=
calculate_nr_t3
(
pnf_p7
->
sfn
,
pnf_p7
->
slot
,
pnf_p7
->
slot_start_time_hr
);
// ul_node_sync.t2 = ul_node_sync.t1 + 10;
// ul_node_sync.t3 = ul_node_sync.t2 + 10; // hardcoded - gokul
if
(
pthread_mutex_unlock
(
&
(
pnf_p7
->
mutex
))
!=
0
)
{
...
...
@@ -3020,7 +2988,7 @@ void pnf_nr_nfapi_p7_read_dispatch_message(pnf_p7_t* pnf_p7, uint32_t now_hr_tim
int
recvfrom_result
=
0
;
struct
sockaddr_in
remote_addr
;
socklen_t
remote_addr_size
=
sizeof
(
remote_addr
);
remote_addr
.
sin_family
=
2
;
//
Gokul -
hardcoded
remote_addr
.
sin_family
=
2
;
//hardcoded
do
{
...
...
@@ -3130,7 +3098,6 @@ int pnf_p7_message_pump(pnf_p7_t* pnf_p7)
struct
sockaddr_in
addr
;
memset
(
&
addr
,
0
,
sizeof
(
addr
));
addr
.
sin_family
=
AF_INET
;
//addr.sin_port = htons(pnf_p7->_public.local_p7_port); Gokul
addr
.
sin_port
=
pnf_p7
->
_public
.
local_p7_port
;
if
(
pnf_p7
->
_public
.
local_p7_addr
==
0
)
...
...
@@ -3271,7 +3238,6 @@ int pnf_nr_p7_message_pump(pnf_p7_t* pnf_p7)
struct
sockaddr_in
addr
;
memset
(
&
addr
,
0
,
sizeof
(
addr
));
addr
.
sin_family
=
AF_INET
;
//addr.sin_port = htons(pnf_p7->_public.local_p7_port); Gokul
addr
.
sin_port
=
pnf_p7
->
_public
.
local_p7_port
;
if
(
pnf_p7
->
_public
.
local_p7_addr
==
0
)
...
...
nfapi/open-nFAPI/vnf/src/vnf.c
View file @
cf23e2da
...
...
@@ -1100,62 +1100,14 @@ void vnf_nr_handle_p4_p5_message(void *pRecvMsg, int recvMsgLen, int p5_idx, nfa
vnf_nr_handle_config_response
(
pRecvMsg
,
recvMsgLen
,
config
,
p5_idx
);
break
;
case
NFAPI_START_RESPONSE
:
case
NFAPI_
NR_PHY_MSG_TYPE_
START_RESPONSE
:
vnf_nr_handle_start_response
(
pRecvMsg
,
recvMsgLen
,
config
,
p5_idx
);
break
;
case
NFAPI_STOP_RESPONSE
:
case
NFAPI_
NR_PHY_MSG_TYPE_
STOP_RESPONSE
:
vnf_handle_stop_response
(
pRecvMsg
,
recvMsgLen
,
config
,
p5_idx
);
break
;
case
NFAPI_MEASUREMENT_RESPONSE
:
vnf_handle_measurement_response
(
pRecvMsg
,
recvMsgLen
,
config
,
p5_idx
);
break
;
case
NFAPI_RSSI_RESPONSE
:
vnf_handle_rssi_response
(
pRecvMsg
,
recvMsgLen
,
config
,
p5_idx
);
break
;
case
NFAPI_RSSI_INDICATION
:
vnf_handle_rssi_indication
(
pRecvMsg
,
recvMsgLen
,
config
,
p5_idx
);
break
;
case
NFAPI_CELL_SEARCH_RESPONSE
:
vnf_handle_cell_search_response
(
pRecvMsg
,
recvMsgLen
,
config
,
p5_idx
);
break
;
case
NFAPI_CELL_SEARCH_INDICATION
:
vnf_handle_cell_search_indication
(
pRecvMsg
,
recvMsgLen
,
config
,
p5_idx
);
break
;
case
NFAPI_BROADCAST_DETECT_RESPONSE
:
vnf_handle_broadcast_detect_response
(
pRecvMsg
,
recvMsgLen
,
config
,
p5_idx
);
break
;
case
NFAPI_BROADCAST_DETECT_INDICATION
:
vnf_handle_broadcast_detect_indication
(
pRecvMsg
,
recvMsgLen
,
config
,
p5_idx
);
break
;
case
NFAPI_SYSTEM_INFORMATION_SCHEDULE_RESPONSE
:
vnf_handle_system_information_schedule_response
(
pRecvMsg
,
recvMsgLen
,
config
,
p5_idx
);
break
;
case
NFAPI_SYSTEM_INFORMATION_SCHEDULE_INDICATION
:
vnf_handle_system_information_schedule_indication
(
pRecvMsg
,
recvMsgLen
,
config
,
p5_idx
);
break
;
case
NFAPI_SYSTEM_INFORMATION_RESPONSE
:
vnf_handle_system_information_response
(
pRecvMsg
,
recvMsgLen
,
config
,
p5_idx
);
break
;
case
NFAPI_SYSTEM_INFORMATION_INDICATION
:
vnf_handle_system_information_indication
(
pRecvMsg
,
recvMsgLen
,
config
,
p5_idx
);
break
;
case
NFAPI_NMM_STOP_RESPONSE
:
vnf_handle_nmm_stop_response
(
pRecvMsg
,
recvMsgLen
,
config
,
p5_idx
);
break
;
default:
{
if
(
messageHeader
.
message_id
>=
NFAPI_VENDOR_EXT_MSG_MIN
&&
...
...
@@ -1387,11 +1339,11 @@ int vnf_nr_read_dispatch_message(nfapi_vnf_config_t* config, nfapi_vnf_pnf_info_
// handle now if complete message in one or more segments
if
((
flags
&
0x80
)
==
0x80
)
{
printf
(
"
\n
VNF RECEIVES:
\n
"
);
for
(
int
i
=
0
;
i
<
message_size
;
i
++
){
printf
(
"%d"
,
read_buffer
[
i
]);
}
printf
(
"
\n
"
);
//
printf("\nVNF RECEIVES:\n");
//
for(int i=0; i<message_size; i++){
//
printf("%d", read_buffer[i]);
//
}
//
printf("\n");
vnf_nr_handle_p4_p5_message
(
read_buffer
,
message_size
,
pnf
->
p5_idx
,
config
);
}
...
...
@@ -1516,11 +1468,11 @@ int vnf_read_dispatch_message(nfapi_vnf_config_t* config, nfapi_vnf_pnf_info_t*
// handle now if complete message in one or more segments
if
((
flags
&
0x80
)
==
0x80
)
{
printf
(
"
\n
VNF RECEIVES:
\n
"
);
for
(
int
i
=
0
;
i
<
message_size
;
i
++
){
printf
(
"%d"
,
read_buffer
[
i
]);
}
printf
(
"
\n
"
);
//
printf("\nVNF RECEIVES:\n");
//
for(int i=0; i<message_size; i++){
//
printf("%d", read_buffer[i]);
//
}
//
printf("\n");
vnf_handle_p4_p5_message
(
read_buffer
,
message_size
,
pnf
->
p5_idx
,
config
);
}
...
...
@@ -1549,11 +1501,11 @@ int vnf_read_dispatch_message(nfapi_vnf_config_t* config, nfapi_vnf_pnf_info_t*
static
int
vnf_send_p5_msg
(
nfapi_vnf_pnf_info_t
*
pnf
,
const
void
*
msg
,
int
len
,
uint8_t
stream
)
{
printf
(
"
\n
MESSAGE SENT:
\n
"
);
for
(
int
i
=
0
;
i
<
len
;
i
++
){
printf
(
"%d"
,
*
(
uint8_t
*
)(
msg
+
i
));
}
printf
(
"
\n
"
);
//
printf("\n MESSAGE SENT: \n");
//
for(int i=0; i<len; i++){
//
printf("%d", *(uint8_t *)(msg + i));
//
}
//
printf("\n");
//NFAPI_TRACE(NFAPI_TRACE_ERROR, "%s len:%d stream:%d\n", __FUNCTION__, len, stream);
...
...
nfapi/open-nFAPI/vnf/src/vnf_p7_interface.c
View file @
cf23e2da
...
...
@@ -176,7 +176,7 @@ int nfapi_nr_vnf_p7_start(nfapi_vnf_p7_config_t* config)
slot_start
=
timespec_add
(
slot_start
,
slot_duration
);
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"next slot will start at %d.%d
\n
"
,
slot_start
.
tv_sec
,
slot_start
.
tv_nsec
);
//printf("next slot will start at %d.%d\n",slot_start.tv_sec, slot_start.tv_nsec);
while
(
vnf_p7
->
terminate
==
0
)
{
fd_set
rfds
;
...
...
@@ -380,7 +380,7 @@ NFAPI_TRACE(NFAPI_TRACE_ERROR, "INVAL: pselect_timeout:%d.%ld adj[dur:%d adj:%d]
else
{
// we have overrun the subframe advance to go and collect $200
// CHANGE - gokul
if
((
millisecond
-
last_millisecond
)
>
3
)
NFAPI_TRACE
(
NFAPI_TRACE_WARN
,
"subframe overrun %ld %ld (%ld)
\n
"
,
millisecond
,
last_millisecond
,
millisecond
-
last_millisecond
+
1
);
...
...
@@ -411,11 +411,8 @@ struct timespec current_time;
curr
->
slot
++
;
}
vnf_nr_sync
(
vnf_p7
,
curr
);
//printf("\nsfn:%d, slot:%d\n current time:%d.%d",curr->sfn,curr->slot,current_time.tv_sec, current_time.tv_nsec); //remove later - gokul
//printf("next slot will start at %d.%d\n",current_time.tv_sec, current_time.tv_nsec);
curr
=
curr
->
next
;
}
//send_mac_subframe_indications(vnf_p7);
send_mac_slot_indications
(
vnf_p7
);
}
else
if
(
selectRetval
>
0
)
...
...
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
View file @
cf23e2da
...
...
@@ -421,7 +421,7 @@ void dump_pdsch_stats(PHY_VARS_gNB *gNB) {
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_SCH_STATS_MAX
;
i
++
)
if
(
gNB
->
dlsch_stats
[
i
].
rnti
>
0
)
LOG_
I
(
PHY
,
"DLSCH RNTI %x: round_trials %d(%1.1e):%d(%1.1e):%d(%1.1e):%d, current_Qm %d, current_RI %d, total_bytes TX %d
\n
"
,
LOG_
D
(
PHY
,
"DLSCH RNTI %x: round_trials %d(%1.1e):%d(%1.1e):%d(%1.1e):%d, current_Qm %d, current_RI %d, total_bytes TX %d
\n
"
,
gNB
->
dlsch_stats
[
i
].
rnti
,
gNB
->
dlsch_stats
[
i
].
round_trials
[
0
],
(
double
)
gNB
->
dlsch_stats
[
i
].
round_trials
[
1
]
/
gNB
->
dlsch_stats
[
i
].
round_trials
[
0
],
...
...
openair1/SCHED/nfapi_lte_dummy.c
View file @
cf23e2da
...
...
@@ -12,16 +12,16 @@ void handle_nfapi_nr_pdcch_pdu(PHY_VARS_gNB *gNB,
void
handle_nr_nfapi_ssb_pdu
(
PHY_VARS_gNB
*
gNB
,
int
frame
,
int
slot
,
nfapi_nr_dl_tti_request_pdu_t
*
dl_tti_pdu
){}
int16_t
find_nr_dlsch
(
uint16_t
rnti
,
PHY_VARS_gNB
*
gNB
,
find_type_t
type
){}
int16_t
find_nr_dlsch
(
uint16_t
rnti
,
PHY_VARS_gNB
*
gNB
,
find_type_t
type
){
return
0
;
}
void
handle_nr_nfapi_pdsch_pdu
(
PHY_VARS_gNB
*
gNB
,
int
frame
,
int
slot
,
nfapi_nr_dl_tti_pdsch_pdu
*
pdsch_pdu
,
uint8_t
*
sdu
){
}
int
l1_north_init_gNB
(
void
){}
int
l1_north_init_gNB
(
void
){
return
0
;
}
uint8_t
slot_ahead
=
6
;
//uint8_t nfapi_mode=0;
NR_IF_Module_t
*
NR_IF_Module_init
(
int
Mod_id
)
{}
NR_IF_Module_t
*
NR_IF_Module_init
(
int
Mod_id
)
{
return
NULL
;
}
void
handle_nfapi_nr_ul_dci_pdu
(
PHY_VARS_gNB
*
gNB
,
int
frame
,
int
slot
,
...
...
openair1/SCHED/nfapi_nr_dummy.c
View file @
cf23e2da
...
...
@@ -12,16 +12,16 @@ void handle_nfapi_nr_pdcch_pdu(PHY_VARS_gNB *gNB,
void
handle_nr_nfapi_ssb_pdu
(
PHY_VARS_gNB
*
gNB
,
int
frame
,
int
slot
,
nfapi_nr_dl_tti_request_pdu_t
*
dl_tti_pdu
){}
int16_t
find_nr_dlsch
(
uint16_t
rnti
,
PHY_VARS_gNB
*
gNB
,
find_type_t
type
){}
int16_t
find_nr_dlsch
(
uint16_t
rnti
,
PHY_VARS_gNB
*
gNB
,
find_type_t
type
){
return
0
;
}
void
handle_nr_nfapi_pdsch_pdu
(
PHY_VARS_gNB
*
gNB
,
int
frame
,
int
slot
,
nfapi_nr_dl_tti_pdsch_pdu
*
pdsch_pdu
,
uint8_t
*
sdu
){
}
int
l1_north_init_gNB
(
void
){}
int
l1_north_init_gNB
(
void
){
return
0
;
}
uint8_t
slot_ahead
=
6
;
//uint8_t nfapi_mode=0;
NR_IF_Module_t
*
NR_IF_Module_init
(
int
Mod_id
)
{}
NR_IF_Module_t
*
NR_IF_Module_init
(
int
Mod_id
)
{
return
NULL
;
}
void
handle_nfapi_nr_ul_dci_pdu
(
PHY_VARS_gNB
*
gNB
,
int
frame
,
int
slot
,
...
...
openair1/SCHED_NR/fapi_nr_l1.c
View file @
cf23e2da
...
...
@@ -177,7 +177,7 @@ 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
;
if
(
nfapi_mode
!=
NFAPI_MODE_VNF
)
if
(
NFAPI_MODE
!=
NFAPI_MODE_VNF
)
handle_nr_nfapi_ssb_pdu
(
gNB
,
frame
,
slot
,
dl_tti_pdu
);
...
...
@@ -185,7 +185,7 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){
case
NFAPI_NR_DL_TTI_PDCCH_PDU_TYPE
:
AssertFatal
(
pdcch_received
==
0
,
"pdcch_received is not 0, we can only handle one PDCCH PDU per slot
\n
"
);
if
(
nfapi_mode
!=
NFAPI_MODE_VNF
)
if
(
NFAPI_MODE
!=
NFAPI_MODE_VNF
)
handle_nfapi_nr_pdcch_pdu
(
gNB
,
frame
,
slot
,
&
dl_tti_pdu
->
pdcch_pdu
);
...
...
@@ -202,19 +202,19 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){
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
=
(
uint8_t
*
)
TX_req
->
pdu_list
[
pduIndex
].
TLVs
[
0
].
value
.
direct
;
if
(
nfapi_mode
!=
NFAPI_MODE_VNF
)
if
(
NFAPI_MODE
!=
NFAPI_MODE_VNF
)
handle_nr_nfapi_pdsch_pdu
(
gNB
,
frame
,
slot
,
&
dl_tti_pdu
->
pdsch_pdu
,
sdu
);
}
}
}
// if (UL_tti_req!=NULL) memcpy(&gNB->UL_tti_req,UL_tti_req,sizeof(nfapi_nr_ul_tti_request_t));
if
(
nfapi_mode
!=
NFAPI_MODE_VNF
)
if
(
NFAPI_MODE
!=
NFAPI_MODE_VNF
)
for
(
int
i
=
0
;
i
<
number_ul_dci_pdu
;
i
++
)
{
handle_nfapi_nr_ul_dci_pdu
(
gNB
,
frame
,
slot
,
&
UL_dci_req
->
ul_dci_pdu_list
[
i
]);
}
if
(
nfapi_mode
!=
NFAPI_MODE_VNF
)
if
(
NFAPI_MODE
!=
NFAPI_MODE_VNF
)
for
(
int
i
=
0
;
i
<
number_ul_tti_pdu
;
i
++
)
{
switch
(
UL_tti_req
->
pdus_list
[
i
].
pdu_type
)
{
case
NFAPI_NR_UL_CONFIG_PUSCH_PDU_TYPE
:
...
...
@@ -234,17 +234,17 @@ if(nfapi_mode != NFAPI_MODE_VNF)
}
}
// if(
nfapi_mode
!= NFAPI_MONOLITHIC && number_ul_tti_pdu>0)
// if(
NFAPI_MODE
!= NFAPI_MONOLITHIC && number_ul_tti_pdu>0)
// {
// oai_nfapi_ul_tti_req(UL_tti_req);
// }
// if (
nfapi_mode
!= NFAPI_MONOLITHIC && Sched_INFO->UL_dci_req->numPdus!=0)
// if (
NFAPI_MODE
!= NFAPI_MONOLITHIC && Sched_INFO->UL_dci_req->numPdus!=0)
// {
// oai_nfapi_ul_dci_req(Sched_INFO->UL_dci_req);
// }//Only DL
if
(
nfapi_mode
!=
NFAPI_MONOLITHIC
)
if
(
NFAPI_MODE
!=
NFAPI_MONOLITHIC
)
{
if
(
Sched_INFO
->
DL_req
->
dl_tti_request_body
.
nPDUs
>
0
)
{
Sched_INFO
->
DL_req
->
SFN
=
frame
;
...
...
openair1/SCHED_NR/phy_frame_config_nr.c
View file @
cf23e2da
...
...
@@ -150,6 +150,7 @@ int set_tdd_config_nr( nfapi_nr_config_request_scf_t *cfg,
}
}
}
//printf("Set tdd config nr tti: 26, symbol count: 0 value: %d \n", cfg->tdd_table.max_tdd_periodicity_list[26].max_num_of_symbol_per_slot_list[0].slot_config.value);
/*
while(slot_number != nb_slots_to_set) {
...
...
@@ -312,14 +313,16 @@ int set_tdd_configuration_dedicated_nr(NR_DL_FRAME_PARMS *frame_parms) {
int
nr_slot_select
(
nfapi_nr_config_request_scf_t
*
cfg
,
int
nr_frame
,
int
nr_tti
)
{
/* for FDD all slot can be considered as an uplink */
int
mu
=
cfg
->
ssb_config
.
scs_common
.
value
,
check_slot
=
0
;
if
(
cfg
->
cell_config
.
frame_duplex_type
.
value
==
FDD
)
{
return
(
NR_UPLINK_SLOT
|
NR_DOWNLINK_SLOT
);
}
#if 1 // Hardcoding, change later
if
(
nr_frame
%
2
==
0
)
{
for
(
int
symbol_count
=
0
;
symbol_count
<
NR_NUMBER_OF_SYMBOLS_PER_SLOT
;
symbol_count
++
)
{
if
(
cfg
->
tdd_table
.
max_tdd_periodicity_list
[
nr_tti
].
max_num_of_symbol_per_slot_list
[
symbol_count
].
slot_config
.
value
==
1
)
{
check_slot
++
;
...
...
@@ -331,7 +334,7 @@ int nr_slot_select(nfapi_nr_config_request_scf_t *cfg, int nr_frame, int nr_tti)
}
check_slot
=
0
;
for
(
int
symbol_count
=
0
;
symbol_count
<
NR_NUMBER_OF_SYMBOLS_PER_SLOT
;
symbol_count
++
)
{
if
(
cfg
->
tdd_table
.
max_tdd_periodicity_list
[
nr_tti
].
max_num_of_symbol_per_slot_list
[
symbol_count
].
slot_config
.
value
==
0
)
{
check_slot
++
;
...
...
@@ -344,7 +347,8 @@ int nr_slot_select(nfapi_nr_config_request_scf_t *cfg, int nr_frame, int nr_tti)
return
(
NR_MIXED_SLOT
);
}
}
else
{
for
(
int
symbol_count
=
0
;
symbol_count
<
NR_NUMBER_OF_SYMBOLS_PER_SLOT
;
symbol_count
++
)
{
for
(
int
symbol_count
=
0
;
symbol_count
<
NR_NUMBER_OF_SYMBOLS_PER_SLOT
;
symbol_count
++
)
{
if
(
cfg
->
tdd_table
.
max_tdd_periodicity_list
[((
1
<<
mu
)
*
NR_NUMBER_OF_SUBFRAMES_PER_FRAME
)
+
nr_tti
].
max_num_of_symbol_per_slot_list
[
symbol_count
].
slot_config
.
value
==
1
)
{
check_slot
++
;
}
...
...
@@ -355,7 +359,7 @@ int nr_slot_select(nfapi_nr_config_request_scf_t *cfg, int nr_frame, int nr_tti)
}
check_slot
=
0
;
for
(
int
symbol_count
=
0
;
symbol_count
<
NR_NUMBER_OF_SYMBOLS_PER_SLOT
;
symbol_count
++
)
{
if
(
cfg
->
tdd_table
.
max_tdd_periodicity_list
[((
1
<<
mu
)
*
NR_NUMBER_OF_SUBFRAMES_PER_FRAME
)
+
nr_tti
].
max_num_of_symbol_per_slot_list
[
symbol_count
].
slot_config
.
value
==
0
)
{
check_slot
++
;
...
...
@@ -368,10 +372,6 @@ int nr_slot_select(nfapi_nr_config_request_scf_t *cfg, int nr_frame, int nr_tti)
return
(
NR_MIXED_SLOT
);
}
}
#else
return
(
NR_DOWNLINK_SLOT
);
#endif
}
...
...
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
cf23e2da
...
...
@@ -164,7 +164,7 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB,
}
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_gNB_COMMON_TX
,
1
);
if
(
nfapi_mode
==
NFAPI_MONOLITHIC
||
nfapi_mode
==
NFAPI_MODE_PNF
)
{
if
(
NFAPI_MODE
==
NFAPI_MONOLITHIC
||
NFAPI_MODE
==
NFAPI_MODE_PNF
)
{
if
((
!
(
frame
%
ssb_frame_periodicity
)))
// generate SSB only for given frames according to SSB periodicity
nr_common_signal_procedures
(
gNB
,
frame
,
slot
);
}
...
...
openair1/SIMULATION/NR_PHY/nr_dummy_functions.c
View file @
cf23e2da
...
...
@@ -9,4 +9,8 @@ int oai_nfapi_ul_tti_req(nfapi_nr_ul_tti_request_t *ul_tti_req){ return(0); }
int32_t
get_uldl_offset
(
int
nr_bandP
)
{
return
(
0
);
}
NR_IF_Module_t
*
NR_IF_Module_init
(
int
Mod_id
)
{
return
(
NULL
);}
// int dummy_nr_ue_dl_indication(nr_downlink_indication_t *dl_info) { return(0); }
// int dummy_nr_ue_ul_indication(nr_uplink_indication_t *ul_info) { return(0); }
\ No newline at end of file
// int dummy_nr_ue_ul_indication(nr_uplink_indication_t *ul_info) { return(0); }
nfapi_mode_t
nfapi_mod
;
nfapi_mode_t
nfapi_getmode
(
void
)
{
return
nfapi_mod
;
}
\ No newline at end of file
openair1/SIMULATION/NR_PHY/prachsim.c
View file @
cf23e2da
...
...
@@ -47,7 +47,7 @@
#include "OCG_vars.h"
#include <openair2/LAYER2/MAC/mac_vars.h>
#include <openair2/RRC/LTE/rrc_vars.h>
#include "openair1/SIMULATION/NR_PHY/nr_dummy_functions.c"
//
#include "openair1/SIMULATION/NR_PHY/nr_dummy_functions.c"
#define NR_PRACH_DEBUG 1
...
...
@@ -71,6 +71,10 @@ int sl_ahead = 0;
/* temporary dummy implem of get_softmodem_optmask, till basic simulators implemented as device */
uint64_t
get_softmodem_optmask
(
void
)
{
return
0
;}
softmodem_params_t
*
get_softmodem_params
(
void
)
{
return
0
;}
int
oai_nfapi_dl_tti_req
(
nfapi_nr_dl_tti_request_t
*
dl_config_req
)
{
return
(
0
);
}
int
oai_nfapi_tx_data_req
(
nfapi_nr_tx_data_request_t
*
tx_data_req
){
return
(
0
);
}
int
oai_nfapi_ul_dci_req
(
nfapi_nr_ul_dci_request_t
*
ul_dci_req
){
return
(
0
);
}
int
oai_nfapi_ul_tti_req
(
nfapi_nr_ul_tti_request_t
*
ul_tti_req
){
return
(
0
);
}
void
rrc_data_ind
(
...
...
openair2/LAYER2/NR_MAC_gNB/config.c
View file @
cf23e2da
...
...
@@ -308,6 +308,7 @@ void config_common(int Mod_idP, int pdsch_AntennaPorts, NR_ServingCellConfigComm
LOG_E
(
MAC
,
"TDD configuration can not be done
\n
"
);
else
LOG_I
(
MAC
,
"TDD has been properly configurated
\n
"
);
}
}
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
View file @
cf23e2da
...
...
@@ -97,7 +97,7 @@ void clear_nr_nfapi_information(gNB_MAC_INST * gNB,
gNB
->
pdu_index
[
CC_idP
]
=
0
;
if
(
nfapi_mode
==
NFAPI_MONOLITHIC
||
nfapi_mode
==
NFAPI_MODE_PNF
)
{
// monolithic or PNF
if
(
NFAPI_MODE
==
NFAPI_MONOLITHIC
||
NFAPI_MODE
==
NFAPI_MODE_PNF
)
{
// monolithic or PNF
DL_req
[
CC_idP
].
SFN
=
frameP
;
DL_req
[
CC_idP
].
Slot
=
slotP
;
...
...
@@ -291,10 +291,11 @@ bool is_xlsch_in_slot(uint64_t bitmap, sub_frame_t slot) {
return
(
bitmap
>>
slot
)
&
0x01
;
}
void
gNB_dlsch_ulsch_scheduler
(
module_id_t
module_idP
,
void
gNB_dlsch_ulsch_scheduler
(
module_id_t
module_idP
,
frame_t
frame
,
sub_frame_t
slot
){
protocol_ctxt_t
ctxt
;
PROTOCOL_CTXT_SET_BY_MODULE_ID
(
&
ctxt
,
module_idP
,
ENB_FLAG_YES
,
NOT_A_RNTI
,
frame
,
slot
,
module_idP
);
...
...
@@ -308,7 +309,7 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP,
NR_COMMON_channels_t
*
cc
=
gNB
->
common_channels
;
NR_ServingCellConfigCommon_t
*
scc
=
cc
->
ServingCellConfigCommon
;
NR_TDD_UL_DL_Pattern_t
*
tdd_pattern
=
&
scc
->
tdd_UL_DL_ConfigurationCommon
->
pattern1
;
switch
(
scc
->
tdd_UL_DL_ConfigurationCommon
->
pattern1
.
dl_UL_TransmissionPeriodicity
)
{
case
0
:
nb_periods_per_frame
=
20
;
// 10ms/0p5ms
...
...
@@ -360,7 +361,7 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP,
nr_rlc_tick
(
frame
,
slot
>>
*
scc
->
ssbSubcarrierSpacing
);
nr_rrc_trigger
(
&
ctxt
,
0
/*CC_id*/
,
frame
,
slot
>>
*
scc
->
ssbSubcarrierSpacing
);
}
const
uint64_t
dlsch_in_slot_bitmap
=
(
1
<<
1
)
|
(
1
<<
2
);
//const uint64_t dlsch_in_slot_bitmap = (1 << 2);
const
uint64_t
ulsch_in_slot_bitmap
=
(
1
<<
8
);
...
...
@@ -371,7 +372,6 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP,
RC
.
nrmac
[
module_idP
]
->
UE_info
.
num_pdcch_cand
[
UE_id
][
i
]
=
0
;
for
(
int
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
//mbsfn_status[CC_id] = 0;
// clear vrb_maps
memset
(
cc
[
CC_id
].
vrb_map
,
0
,
sizeof
(
uint16_t
)
*
275
);
// clear last scheduled slot's content (only)!
...
...
@@ -382,14 +382,11 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP,
clear_nr_nfapi_information
(
RC
.
nrmac
[
module_idP
],
CC_id
,
frame
,
slot
);
}
if
((
slot
==
0
)
&&
(
frame
&
127
)
==
0
)
dump_mac_stats
(
RC
.
nrmac
[
module_idP
]);
// This schedules MIB
schedule_nr_mib
(
module_idP
,
frame
,
slot
,
nr_slots_per_frame
[
*
scc
->
ssbSubcarrierSpacing
]);
// This schedule PRACH if we are not in phy_test mode
if
(
get_softmodem_params
()
->
phy_test
==
0
)
{
/* we need to make sure that resources for PRACH are free. To avoid that
...
...
@@ -402,6 +399,7 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP,
const
frame_t
f
=
(
frame
+
(
slot
+
n_slots_ahead
)
/
nr_slots_per_frame
[
*
scc
->
ssbSubcarrierSpacing
])
%
1024
;
const
sub_frame_t
s
=
(
slot
+
n_slots_ahead
)
%
nr_slots_per_frame
[
*
scc
->
ssbSubcarrierSpacing
];
schedule_nr_prach
(
module_idP
,
f
,
s
);
}
// This schedule SR
...
...
@@ -416,23 +414,20 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP,
if
(
get_softmodem_params
()
->
phy_test
==
0
)
{
nr_schedule_RA
(
module_idP
,
frame
,
slot
);
}
// This schedules the DCI for Uplink and subsequently PUSCH
if
(
slot
<
10
)
{
if
(
NFAPI_MODE
==
NFAPI_MODE_VNF
){
gNB
->
UL_tti_req_ahead
[
0
][
8
].
SFN
=
frame
;
//Added to set the UL_tti_req_ahead SFN in VNF mode
}
nr_schedule_ulsch
(
module_idP
,
frame
,
slot
,
num_slots_per_tdd
,
nr_ulmix_slots
,
ulsch_in_slot_bitmap
);
}
// This schedules the DCI for Downlink and PDSCH
if
(
is_xlsch_in_slot
(
dlsch_in_slot_bitmap
,
slot
%
num_slots_per_tdd
)
&&
slot
<
10
)
{
nr_schedule_ue_spec
(
module_idP
,
frame
,
slot
,
num_slots_per_tdd
);
}
if
(
UE_info
->
active
[
UE_id
])
nr_schedule_pucch
(
module_idP
,
UE_id
,
nr_ulmix_slots
,
frame
,
slot
);
stop_meas
(
&
RC
.
nrmac
[
module_idP
]
->
eNB_scheduler
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_DLSCH_ULSCH_SCHEDULER
,
VCD_FUNCTION_OUT
);
}
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
View file @
cf23e2da
...
...
@@ -669,6 +669,7 @@ void nr_add_msg3(module_id_t module_idP, int CC_id, frame_t frameP, sub_frame_t
future_ul_tti_req
->
pdus_list
[
future_ul_tti_req
->
n_pdus
].
pdu_size
=
sizeof
(
nfapi_nr_pusch_pdu_t
);
nfapi_nr_pusch_pdu_t
*
pusch_pdu
=
&
future_ul_tti_req
->
pdus_list
[
future_ul_tti_req
->
n_pdus
].
pusch_pdu
;
memset
(
pusch_pdu
,
0
,
sizeof
(
nfapi_nr_pusch_pdu_t
));
//pusch_pdu = (nfapi_nr_pusch_pdu_t *) malloc(sizeof(nfapi_nr_pusch_pdu_t));
future_ul_tti_req
->
n_pdus
+=
1
;
AssertFatal
(
ra
->
secondaryCellGroup
,
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
View file @
cf23e2da
...
...
@@ -31,6 +31,7 @@
#include "NR_MAC_COMMON/nr_mac_extern.h"
#include "NR_MAC_gNB/mac_proto.h"
#include "common/ran_context.h"
#include "nfapi/oai_integration/vendor_ext.h"
extern
RAN_CONTEXT_t
RC
;
...
...
@@ -39,9 +40,9 @@ void nr_schedule_pucch(int Mod_idP,
int
nr_ulmix_slots
,
frame_t
frameP
,
sub_frame_t
slotP
)
{
NR_UE_info_t
*
UE_info
=
&
RC
.
nrmac
[
Mod_idP
]
->
UE_info
;
AssertFatal
(
UE_info
->
active
[
UE_id
],
"Cannot find UE_id %d is not active
\n
"
,
UE_id
);
for
(
int
k
=
0
;
k
<
nr_ulmix_slots
;
k
++
)
{
for
(
int
l
=
0
;
l
<
2
;
l
++
)
{
NR_sched_pucch
*
curr_pucch
=
&
UE_info
->
UE_sched_ctrl
[
UE_id
].
sched_pucch
[
k
][
l
];
...
...
@@ -52,7 +53,7 @@ void nr_schedule_pucch(int Mod_idP,
||
frameP
!=
curr_pucch
->
frame
||
slotP
!=
curr_pucch
->
ul_slot
)
continue
;
nfapi_nr_ul_tti_request_t
*
future_ul_tti_req
=
&
RC
.
nrmac
[
Mod_idP
]
->
UL_tti_req_ahead
[
0
][
curr_pucch
->
ul_slot
];
AssertFatal
(
future_ul_tti_req
->
SFN
==
curr_pucch
->
frame
...
...
@@ -62,12 +63,16 @@ void nr_schedule_pucch(int Mod_idP,
future_ul_tti_req
->
Slot
,
curr_pucch
->
frame
,
curr_pucch
->
ul_slot
);
future_ul_tti_req
->
pdus_list
[
future_ul_tti_req
->
n_pdus
].
pdu_type
=
NFAPI_NR_UL_CONFIG_PUCCH_PDU_TYPE
;
future_ul_tti_req
->
pdus_list
[
future_ul_tti_req
->
n_pdus
].
pdu_size
=
sizeof
(
nfapi_nr_pucch_pdu_t
);
nfapi_nr_pucch_pdu_t
*
pucch_pdu
=
&
future_ul_tti_req
->
pdus_list
[
future_ul_tti_req
->
n_pdus
].
pucch_pdu
;
memset
(
pucch_pdu
,
0
,
sizeof
(
nfapi_nr_pucch_pdu_t
));
future_ul_tti_req
->
n_pdus
+=
1
;
future_ul_tti_req
->
pdus_list
[
future_ul_tti_req
->
n_pdus
].
pdu_type
=
NFAPI_NR_UL_CONFIG_PUCCH_PDU_TYPE
;
//future_ul_tti_req->pdus_list[future_ul_tti_req->n_pdus].pdu_size = sizeof(nfapi_nr_pucch_pdu_t);
/*For some reason, seems to cause a segmentation fault in the VNF while running nFAPI. If size of pucch pdu is needed,
use the size function on the pdu structure directly. */
future_ul_tti_req
->
n_pdus
+=
1
;
LOG_D
(
MAC
,
"%4d.%2d Scheduling pucch reception in %4d.%2d: bits SR %d, ACK %d, CSI %d, k %d l %d
\n
"
,
frameP
,
...
...
@@ -79,6 +84,11 @@ void nr_schedule_pucch(int Mod_idP,
O_csi
,
k
,
l
);
if
(
NFAPI_MODE
==
NFAPI_MONOLITHIC
)
memset
(
pucch_pdu
,
0
,
sizeof
(
nfapi_nr_pucch_pdu_t
));
if
(
NFAPI_MODE
==
NFAPI_MODE_VNF
)
pucch_pdu
=
(
nfapi_nr_pucch_pdu_t
*
)
calloc
(
1
,
sizeof
(
nfapi_nr_pucch_pdu_t
));
NR_ServingCellConfigCommon_t
*
scc
=
RC
.
nrmac
[
Mod_idP
]
->
common_channels
->
ServingCellConfigCommon
;
nr_configure_pucch
(
pucch_pdu
,
scc
,
...
...
@@ -88,7 +98,6 @@ void nr_schedule_pucch(int Mod_idP,
O_csi
,
O_ack
,
O_sr
);
memset
(
&
UE_info
->
UE_sched_ctrl
[
UE_id
].
sched_pucch
[
k
][
l
],
0
,
sizeof
(
NR_sched_pucch
));
...
...
openair2/NR_PHY_INTERFACE/NR_IF_Module.c
View file @
cf23e2da
...
...
@@ -193,7 +193,7 @@ void NR_UL_indication(NR_UL_IND_t *UL_info) {
module_id
,
CC_id
,
UL_info
->
rach_ind
.
number_of_pdus
,
UL_info
->
rx_ind
.
number_of_pdus
,
UL_info
->
crc_ind
.
number_crcs
);
if
(
nfapi_mode
!=
NFAPI_MODE_PNF
)
{
if
(
NFAPI_MODE
!=
NFAPI_MODE_PNF
)
{
if
(
ifi
->
CC_mask
==
0
)
{
ifi
->
current_frame
=
UL_info
->
frame
;
ifi
->
current_slot
=
UL_info
->
slot
;
...
...
@@ -212,7 +212,7 @@ void NR_UL_indication(NR_UL_IND_t *UL_info) {
mac
->
UL_dci_req
[
CC_id
].
numPdus
=
0
;
handle_nr_ulsch
(
UL_info
);
if
(
nfapi_mode
!=
NFAPI_MODE_PNF
)
{
if
(
NFAPI_MODE
!=
NFAPI_MODE_PNF
)
{
if
(
ifi
->
CC_mask
==
((
1
<<
MAX_NUM_CCs
)
-
1
))
{
/*
eNB_dlsch_ulsch_scheduler(module_id,
...
...
@@ -220,11 +220,12 @@ void NR_UL_indication(NR_UL_IND_t *UL_info) {
(UL_info->slot+sl_ahead)%10);
*/
nfapi_nr_config_request_scf_t
*
cfg
=
&
mac
->
config
[
CC_id
];
int
spf
=
get_spf
(
cfg
);
gNB_dlsch_ulsch_scheduler
(
module_id
,
(
UL_info
->
frame
+
((
UL_info
->
slot
>
(
spf
-
1
-
sl_ahead
))
?
1
:
0
))
%
1024
,
(
UL_info
->
slot
+
sl_ahead
)
%
spf
);
ifi
->
CC_mask
=
0
;
sched_info
->
module_id
=
module_id
;
sched_info
->
CC_id
=
CC_id
;
...
...
@@ -239,7 +240,6 @@ void NR_UL_indication(NR_UL_IND_t *UL_info) {
#ifdef DUMP_FAPI
dump_dl
(
sched_info
);
#endif
if
(
ifi
->
NR_Schedule_response
)
{
AssertFatal
(
ifi
->
NR_Schedule_response
!=
NULL
,
"nr_schedule_response is null (mod %d, cc %d)
\n
"
,
...
...
@@ -247,11 +247,11 @@ void NR_UL_indication(NR_UL_IND_t *UL_info) {
CC_id
);
ifi
->
NR_Schedule_response
(
sched_info
);
}
LOG_D
(
PHY
,
"NR_Schedule_response: SFN_SF:%d%d dl_pdus:%d
\n
"
,
sched_info
->
frame
,
sched_info
->
slot
,
sched_info
->
DL_req
->
dl_tti_request_body
.
nPDUs
);
}
}
}
...
...
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