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
Michael Black
OpenXG UE
Commits
f3f8560e
Commit
f3f8560e
authored
Mar 27, 2018
by
Guy De Souza
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
nfapi extension/ test nr-softmodem
parent
6e7d8a55
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
222 additions
and
80 deletions
+222
-80
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+4
-15
nfapi/open-nFAPI/nfapi/public_inc/nfapi_interface_nr_extension.h
...pen-nFAPI/nfapi/public_inc/nfapi_interface_nr_extension.h
+137
-0
openair1/PHY/INIT/defs_NR.h
openair1/PHY/INIT/defs_NR.h
+0
-38
openair1/PHY/INIT/nr_init.c
openair1/PHY/INIT/nr_init.c
+14
-4
openair1/PHY/INIT/nr_parms.c
openair1/PHY/INIT/nr_parms.c
+26
-22
targets/RT/USER/nr-softmodem.c
targets/RT/USER/nr-softmodem.c
+41
-1
No files found.
cmake_targets/CMakeLists.txt
View file @
f3f8560e
...
...
@@ -1236,10 +1236,7 @@ set(PHY_SRC_UE
# depend on code generation from asn1c
${
RRC_FULL_DIR
}
/asn1_constants.h
# actual source
${
OPENAIR1_DIR
}
/PHY/LTE_TRANSPORT/if4_tools.c
${
OPENAIR1_DIR
}
/PHY/LTE_TRANSPORT/if5_tools.c
${
OPENAIR1_DIR
}
/PHY/MODULATION/ofdm_mod.c
${
OPENAIR1_DIR
}
/PHY/MODULATION/slot_fep.c
${
OPENAIR1_DIR
}
/PHY/INIT/nr_init.c
${
OPENAIR1_DIR
}
/PHY/INIT/nr_parms.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/file_output.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/cadd_vv.c
...
...
@@ -2142,20 +2139,12 @@ target_link_libraries (lte-uesoftmodem-nos1 ${T_LIB})
add_executable
(
nr-softmodem
#${rrc_h}
#${s1ap_h}
${
OPENAIR_BIN_DIR
}
/messages_xml.h
${
OPENAIR_TARGETS
}
/RT/USER/rt_wrapper.c
${
OPENAIR_TARGETS
}
/RT/USER/lte-ru.c
${
OPENAIR_TARGETS
}
/RT/USER/nr-softmodem.c
${
OPENAIR1_DIR
}
/SIMULATION/TOOLS/taus.c
${
OPENAIR_TARGETS
}
/COMMON/create_tasks.c
${
OPENAIR_TARGETS
}
/ARCH/COMMON/common_lib.c
${
OPENAIR1_DIR
}
/SIMULATION/ETH_TRANSPORT/netlink_init.c
#${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
${
OPENAIR_DIR
}
/common/utils/utils.c
${
OPENAIR_DIR
}
/common/utils/system.c
${
GTPU_need_ITTI
}
${
XFORMS_SOURCE
}
${
XFORMS_SOURCE_SOFTMODEM
}
#
${GTPU_need_ITTI}
#
${XFORMS_SOURCE}
#
${XFORMS_SOURCE_SOFTMODEM}
${
T_SOURCE
}
${
CONFIG_SOURCES
}
${
SHLIB_LOADER_SOURCES
}
...
...
nfapi/open-nFAPI/nfapi/public_inc/nfapi_interface_nr_extension.h
0 → 100644
View file @
f3f8560e
/*
* Copyright 2017 Cisco Systems, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef _NFAPI_INTERFACE_NR_EXTENSION_H_
#define _NFAPI_INTERFACE_H_
#define _NFAPI_INTERFACE_NR_EXTENSION_H_
#include "stddef.h"
#define NFAPI_MAX_PNF_PHY 5
typedef
struct
{
uint16_t
tag
;
uint16_t
length
;
}
nfapi_tl_t
;
typedef
struct
{
nfapi_tl_t
tl
;
uint16_t
value
;
}
nfapi_uint16_tlv_t
;
typedef
struct
{
nfapi_tl_t
tl
;
int16_t
value
;
}
nfapi_int16_tlv_t
;
typedef
struct
{
nfapi_tl_t
tl
;
uint8_t
value
;
}
nfapi_uint8_tlv_t
;
typedef
enum
{
NFAPI_3GPP_REL_SUPPORTED_9
=
1
,
NFAPI_3GPP_REL_SUPPORTED_10
=
2
,
NFAPI_3GPP_REL_SUPPORTED_11
=
4
,
NFAPI_3GPP_REL_SUPPORTED_12
=
8
,
NFAPI_3GPP_REL_SUPPORTED_15
=
64
}
nfapi_3gpp_release_supported_e
;
typedef
enum
{
NFAPI_RAT_TYPE_LTE
=
0
,
NFAPI_RAT_TYPE_UTRAN
=
1
,
NFAPI_RAT_TYPE_GERAN
=
2
,
NFAPI_RAT_TYPE_NB_IOT
=
3
,
NFAPI_RAT_TYPE_NR
=
4
}
nfapi_rat_type_e
;
typedef
struct
{
nfapi_uint16_tlv_t
duplex_mode
;
nfapi_uint16_tlv_t
pcfich_power_offset
;
nfapi_uint16_tlv_t
pb
;
nfapi_uint16_tlv_t
dl_cyclic_prefix_type
;
nfapi_uint16_tlv_t
ul_cyclic_prefix_type
;
}
nfapi_subframe_config_t
;
#define NFAPI_SUBFRAME_CONFIG_DUPLEX_MODE_TAG 0x0001
#define NFAPI_SUBFRAME_CONFIG_PCFICH_POWER_OFFSET_TAG 0x0002
#define NFAPI_SUBFRAME_CONFIG_PB_TAG 0x0003
#define NFAPI_SUBFRAME_CONFIG_DL_CYCLIC_PREFIX_TYPE_TAG 0x0004
#define NFAPI_SUBFRAME_CONFIG_UL_CYCLIC_PREFIX_TYPE_TAG 0x0005
typedef
struct
{
nfapi_uint16_tlv_t
dl_channel_bandwidth
;
nfapi_uint16_tlv_t
ul_channel_bandwidth
;
nfapi_uint16_tlv_t
reference_signal_power
;
nfapi_uint16_tlv_t
tx_antenna_ports
;
nfapi_uint16_tlv_t
rx_antenna_ports
;
}
nfapi_rf_config_t
;
#define NFAPI_RF_CONFIG_DL_CHANNEL_BANDWIDTH_TAG 0x000A
#define NFAPI_RF_CONFIG_UL_CHANNEL_BANDWIDTH_TAG 0x000B
#define NFAPI_RF_CONFIG_REFERENCE_SIGNAL_POWER_TAG 0x000C
#define NFAPI_RF_CONFIG_TX_ANTENNA_PORTS_TAG 0x000D
#define NFAPI_RF_CONFIG_RX_ANTENNA_PORTS_TAG 0x000E
typedef
struct
{
uint16_t
phy_config_index
;
uint8_t
mu
;
}
nfapi_pnf_phy_rel15_info_t
;
typedef
struct
{
nfapi_tl_t
tl
;
uint16_t
number_of_phys
;
nfapi_pnf_phy_rel15_info_t
phy
[
NFAPI_MAX_PNF_PHY
];
}
nfapi_pnf_phy_rel15_t
;
#define NFAPI_PNF_PHY_REL15_TAG 0x100H
typedef
enum
{
NFAPI_HALF_FRAME_INDEX_FIRST_HALF
=
0
,
NFAPI_HALF_FRAME_INDEX_SECOND_HALF
=
1
}
nfapi_half_frame_index_e
;
typedef
struct
{
nfapi_uint16_tlv_t
primary_synchronization_signal_epre_eprers
;
nfapi_uint16_tlv_t
secondary_synchronization_signal_epre_eprers
;
nfapi_uint16_tlv_t
physical_cell_id
;
nfapi_half_frame_index_e
half_frame_index
;
nfapi_uint16_tlv_t
ssb_subcarrier_offset
;
nfapi_uint16_tlv_t
ssb_position_in_burst
;
nfapi_uint16_tlv_t
ssb_periodicity
;
nfapi_uint16_tlv_t
ss_pbch_block_power
;
}
nfapi_sch_config_t
;
#define NFAPI_SCH_CONFIG_PRIMARY_SYNCHRONIZATION_SIGNAL_EPRE_EPRERS_TAG 0x001E
#define NFAPI_SCH_CONFIG_SECONDARY_SYNCHRONIZATION_SIGNAL_EPRE_EPRERS_TAG 0x001F
#define NFAPI_SCH_CONFIG_PHYSICAL_CELL_ID_TAG 0x0020
#define NFAPI_SCH_CONFIG_HALF_FRAME_INDEX_TAG 0x0021
#define NFAPI_SCH_CONFIG_SSB_SUBCARRIER_OFFSET_TAG 0x0022
#define NFAPI_SCH_CONFIG_SSB_POSITION_IN_BURST 0x0023
#define NFAPI_SCH_CONFIG_SSB_PERIODICITY 0x0024
#define NFAPI_SCH_CONFIG_SS_PBCH_BLOCK_POWER 0x0025
//temporary
typedef
struct
{
nfapi_subframe_config_t
subframe_config
;
nfapi_rf_config_t
rf_config
;
nfapi_sch_config_t
sch_config
;
nfapi_pnf_phy_rel15_t
pnf_phy_rel15
;
}
nfapi_param_t
;
#endif
openair1/PHY/INIT/defs_NR.h
deleted
100644 → 0
View file @
6e7d8a55
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#ifndef __INIT_DEFS_NR__H__
#define __INIT_DEFS_NR__H__
#include "PHY/defs.h"
typedef
enum
{
NR_MU_0
=
0
,
NR_MU_1
,
NR_MU_2
,
NR_MU_3
,
NR_MU_4
,
}
nr_numerology_index_e
;
/// Subcarrier spacings in Hz indexed by numerology index
uint32_t
nr_subcarrier_spacing
[
MAX_NUM_SUBCARRIER_SPACING
]
=
{
15e3
,
30e3
,
60e3
,
120e3
,
240e3
};
#endif
openair1/PHY/INIT/nr_init.c
View file @
f3f8560e
...
...
@@ -19,7 +19,17 @@
* contact@openairinterface.org
*/
#include "defs.h"
#include "defs_NR.h"
#include "assertions.h"
#include <math.h>
#include "../defs_NR.h"
int
phy_init_nr_gNB
(
nfapi_param_t
*
nfapi_params
)
{
nfapi_params
->
pnf_phy_rel15
.
number_of_phys
=
1
;
nfapi_params
->
pnf_phy_rel15
.
phy
[
0
].
mu
=
1
;
nfapi_params
->
subframe_config
.
duplex_mode
.
value
=
1
;
//FDD
nfapi_params
->
subframe_config
.
dl_cyclic_prefix_type
.
value
=
0
;
//NORMAL
nfapi_params
->
rf_config
.
dl_channel_bandwidth
.
value
=
106
;
nfapi_params
->
rf_config
.
ul_channel_bandwidth
.
value
=
106
;
return
0
;
}
openair1/PHY/INIT/nr_parms.c
View file @
f3f8560e
...
...
@@ -19,33 +19,39 @@
* contact@openairinterface.org
*/
#include "defs.h"
#include "defs_NR.h"
#include "../defs_NR.h"
#include "log.h"
/// Subcarrier spacings in Hz indexed by numerology index
uint32_t
nr_subcarrier_spacing
[
MAX_NUM_SUBCARRIER_SPACING
]
=
{
15e3
,
30e3
,
60e3
,
120e3
,
240e3
};
int
nr_init_frame_parms
(
LTE_DL_FRAME_PARMS
*
frame_parms
)
int
nr_init_frame_parms
(
nfapi_param_t
nfapi_params
,
NR_DL_FRAME_PARMS
*
frame_parms
)
{
int
N_RB
=
nfapi_params
.
rf_config
.
dl_channel_bandwidth
.
value
;
int
Ncp
=
nfapi_params
.
subframe_config
.
dl_cyclic_prefix_type
.
value
;
int
mu
=
nfapi_params
.
pnf_phy_rel15
.
phy
[
0
].
mu
;
#if DISABLE_LOG_X
printf
(
"Initializing frame parms for mu %d, N_RB
_DL %d, Ncp %d, osf %d
\n
"
,
frame_parms
->
N_RB_DL
,
frame_parms
->
Ncp
,
osf
);
printf
(
"Initializing frame parms for mu %d, N_RB
%d, Ncp %d
\n
"
,
mu
,
N_RB
,
Ncp
);
#else
LOG_I
(
PHY
,
"Initializing frame parms for mu %d, N_RB
_DL %d, Ncp %d, osf %d
\n
"
,
frame_parms
->
N_RB_DL
,
frame_parms
->
Ncp
,
osf
);
LOG_I
(
PHY
,
"Initializing frame parms for mu %d, N_RB
%d, Ncp %d
\n
"
,
mu
,
N_RB
,
Ncp
);
#endif
if
(
frame_parms
->
Ncp
==
EXTENDED
)
AssertFatal
(
frame_parms
->
mu
==
NR_MU_2
,
"Invalid cyclic prefix %d for numerology index %d
\n
"
,
frame_parms
->
Ncp
,
frame_parms
->
mu
);
if
(
Ncp
==
1
)
//EXTENDED, to be modified after lte defs are properly linked
AssertFatal
(
mu
==
NR_MU_2
,
"Invalid cyclic prefix %d for numerology index %d
\n
"
,
Ncp
,
mu
);
switch
(
frame_parms
->
mu
)
{
switch
(
mu
)
{
case
NR_MU_0
:
//15kHz scs
frame_parms
->
s
cs
=
nr_subcarrier_spacing
[
NR_MU_0
];
frame_parms
->
s
ubcarrier_spacing
=
nr_subcarrier_spacing
[
NR_MU_0
];
break
;
case
NR_MU_1
:
//30kHz scs
frame_parms
->
s
cs
=
nr_subcarrier_spacing
[
NR_MU_1
];
frame_parms
->
s
ubcarrier_spacing
=
nr_subcarrier_spacing
[
NR_MU_1
];
switch
(
frame_parms
->
N_RB_DL
){
switch
(
N_RB
){
case
11
:
case
24
:
case
38
:
...
...
@@ -85,14 +91,14 @@ int nr_init_frame_parms(LTE_DL_FRAME_PARMS *frame_parms)
case
245
:
case
273
:
default:
AssertFatal
(
1
==
0
,
"Number of resource blocks %d undefined for mu %d, frame parms = %p
\n
"
,
frame_parms
->
N_RB_DL
,
frame_parms
->
mu
,
frame_parms
);
AssertFatal
(
1
==
0
,
"Number of resource blocks %d undefined for mu %d, frame parms = %p
\n
"
,
N_RB
,
mu
,
frame_parms
);
}
break
;
case
NR_MU_2
:
//60kHz scs
frame_parms
->
s
cs
=
nr_subcarrier_spacing
[
NR_MU_2
];
frame_parms
->
s
ubcarrier_spacing
=
nr_subcarrier_spacing
[
NR_MU_2
];
switch
(
frame_parms
->
N_RB_DL
){
//FR1 bands only
switch
(
N_RB
){
//FR1 bands only
case
11
:
case
18
:
case
38
:
...
...
@@ -106,30 +112,28 @@ int nr_init_frame_parms(LTE_DL_FRAME_PARMS *frame_parms)
case
121
:
case
135
:
default:
AssertFatal
(
1
==
0
,
"Number of resource blocks %d undefined for mu %d, frame parms = %p
\n
"
,
frame_parms
->
N_RB_DL
,
frame_parms
->
mu
,
frame_parms
);
AssertFatal
(
1
==
0
,
"Number of resource blocks %d undefined for mu %d, frame parms = %p
\n
"
,
N_RB
,
mu
,
frame_parms
);
}
break
;
case
NR_MU_3
:
frame_parms
->
s
cs
=
nr_subcarrier_spacing
[
NR_MU_3
];
frame_parms
->
s
ubcarrier_spacing
=
nr_subcarrier_spacing
[
NR_MU_3
];
break
;
case
NR_MU_4
:
frame_parms
->
s
cs
=
nr_subcarrier_spacing
[
NR_MU_4
];
frame_parms
->
s
ubcarrier_spacing
=
nr_subcarrier_spacing
[
NR_MU_4
];
break
;
default:
AssertFatal
(
1
==
0
,
"Invalid numerology index %d"
,
frame_parms
->
mu
);
AssertFatal
(
1
==
0
,
"Invalid numerology index %d"
,
mu
);
}
return
0
;
}
void
nr_dump_frame_parms
(
LTE
_DL_FRAME_PARMS
*
frame_parms
)
void
nr_dump_frame_parms
(
NR
_DL_FRAME_PARMS
*
frame_parms
)
{
LOG_I
(
PHY
,
"frame_parms->mu=%d
\n
"
,
frame_parms
->
mu
);
LOG_I
(
PHY
,
"frame_parms->scs=%d
\n
"
,
frame_parms
->
scs
);
LOG_I
(
PHY
,
"frame_parms->N_RB_DL=%d
\n
"
,
frame_parms
->
N_RB_DL
);
LOG_I
(
PHY
,
"frame_parms->scs=%d
\n
"
,
frame_parms
->
subcarrier_spacing
);
LOG_I
(
PHY
,
"frame_parms->ofdm_symbol_size=%d
\n
"
,
frame_parms
->
ofdm_symbol_size
);
LOG_I
(
PHY
,
"frame_parms->samples_per_tti=%d
\n
"
,
frame_parms
->
samples_per_tti
);
LOG_I
(
PHY
,
"frame_parms->nb_prefix_samples0=%d
\n
"
,
frame_parms
->
nb_prefix_samples0
);
...
...
targets/RT/USER/nr-softmodem.c
View file @
f3f8560e
...
...
@@ -19,4 +19,44 @@
* contact@openairinterface.org
*/
#include "nr-softmodem.h"
#include "nr-softmodem.h"
#include "PHY/types.h"
#include "../../nfapi/open-nFAPI/nfapi/public_inc/nfapi_interface_nr_extension.h"
//#include "PHY/defs.h"
#include "PHY/defs_NR.h"
//Temporary main function
void
exit_fun
(
const
char
*
s
)
{
int
ru_id
;
if
(
s
!=
NULL
)
{
printf
(
"%s %s() Exiting OAI softmodem: %s
\n
"
,
__FILE__
,
__FUNCTION__
,
s
);
}
/*oai_exit = 1;
if (RC.ru == NULL)
exit(-1); // likely init not completed, prevent crash or hang, exit now...
for (ru_id=0; ru_id<RC.nb_RU;ru_id++) {
if (RC.ru[ru_id] && RC.ru[ru_id]->rfdevice.trx_end_func)
RC.ru[ru_id]->rfdevice.trx_end_func(&RC.ru[ru_id]->rfdevice);
if (RC.ru[ru_id] && RC.ru[ru_id]->ifdevice.trx_end_func)
RC.ru[ru_id]->ifdevice.trx_end_func(&RC.ru[ru_id]->ifdevice);
}*/
}
int
main
(
int
argc
,
char
**
argv
)
{
nfapi_param_t
nfapi_params
;
NR_DL_FRAME_PARMS
frame_parms
;
phy_init_nr_gNB
(
&
nfapi_params
);
nr_init_frame_parms
(
nfapi_params
,
&
frame_parms
);
nr_dump_frame_parms
(
&
frame_parms
);
return
0
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment