Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
openairinterface5G
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Environments
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
Aniq Ur Rahman
openairinterface5G
Commits
e6bf90e2
Commit
e6bf90e2
authored
Nov 11, 2020
by
Mahesh K
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
LTE and NR NFAPI integration
parent
643fc632
Changes
35
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
35 changed files
with
5501 additions
and
584 deletions
+5501
-584
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+19
-3
executables/nr-uesoftmodem.c
executables/nr-uesoftmodem.c
+2
-2
nfapi/oai_integration/nfapi_pnf.c
nfapi/oai_integration/nfapi_pnf.c
+485
-19
nfapi/oai_integration/nfapi_pnf.h
nfapi/oai_integration/nfapi_pnf.h
+2
-0
nfapi/oai_integration/nfapi_vnf.c
nfapi/oai_integration/nfapi_vnf.c
+198
-31
nfapi/open-nFAPI/nfapi/public_inc/nfapi_interface.h
nfapi/open-nFAPI/nfapi/public_inc/nfapi_interface.h
+36
-22
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h
+21
-5
nfapi/open-nFAPI/nfapi/src/nfapi_p5.c
nfapi/open-nFAPI/nfapi/src/nfapi_p5.c
+753
-78
nfapi/open-nFAPI/nfapi/src/nfapi_p7.c
nfapi/open-nFAPI/nfapi/src/nfapi_p7.c
+613
-73
nfapi/open-nFAPI/pnf/inc/pnf.h
nfapi/open-nFAPI/pnf/inc/pnf.h
+2
-1
nfapi/open-nFAPI/pnf/inc/pnf_p7.h
nfapi/open-nFAPI/pnf/inc/pnf_p7.h
+1
-1
nfapi/open-nFAPI/pnf/public_inc/nfapi_pnf_interface.h
nfapi/open-nFAPI/pnf/public_inc/nfapi_pnf_interface.h
+24
-13
nfapi/open-nFAPI/pnf/src/pnf.c
nfapi/open-nFAPI/pnf/src/pnf.c
+691
-66
nfapi/open-nFAPI/pnf/src/pnf_interface.c
nfapi/open-nFAPI/pnf/src/pnf_interface.c
+153
-8
nfapi/open-nFAPI/pnf/src/pnf_p7.c
nfapi/open-nFAPI/pnf/src/pnf_p7.c
+593
-23
nfapi/open-nFAPI/pnf/src/pnf_p7_interface.c
nfapi/open-nFAPI/pnf/src/pnf_p7_interface.c
+20
-0
nfapi/open-nFAPI/vnf/inc/vnf.h
nfapi/open-nFAPI/vnf/inc/vnf.h
+2
-0
nfapi/open-nFAPI/vnf/inc/vnf_p7.h
nfapi/open-nFAPI/vnf/inc/vnf_p7.h
+8
-5
nfapi/open-nFAPI/vnf/public_inc/nfapi_vnf_interface.h
nfapi/open-nFAPI/vnf/public_inc/nfapi_vnf_interface.h
+20
-9
nfapi/open-nFAPI/vnf/src/vnf.c
nfapi/open-nFAPI/vnf/src/vnf.c
+349
-20
nfapi/open-nFAPI/vnf/src/vnf_interface.c
nfapi/open-nFAPI/vnf/src/vnf_interface.c
+90
-14
nfapi/open-nFAPI/vnf/src/vnf_p7.c
nfapi/open-nFAPI/vnf/src/vnf_p7.c
+959
-131
nfapi/open-nFAPI/vnf/src/vnf_p7_interface.c
nfapi/open-nFAPI/vnf/src/vnf_p7_interface.c
+327
-7
openair1/PHY/INIT/lte_init.c
openair1/PHY/INIT/lte_init.c
+1
-1
openair1/PHY/INIT/lte_parms.c
openair1/PHY/INIT/lte_parms.c
+1
-0
openair1/SCHED/fapi_l1.c
openair1/SCHED/fapi_l1.c
+0
-2
openair1/SCHED/fapi_l1.h
openair1/SCHED/fapi_l1.h
+1
-0
openair1/SCHED/nfapi_lte_dummy.c
openair1/SCHED/nfapi_lte_dummy.c
+34
-0
openair1/SCHED/nfapi_nr_dummy.c
openair1/SCHED/nfapi_nr_dummy.c
+36
-0
openair1/SCHED/nfapi_nr_dummy_defs.c
openair1/SCHED/nfapi_nr_dummy_defs.c
+36
-0
openair2/GNB_APP/gnb_config.c
openair2/GNB_APP/gnb_config.c
+2
-2
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
+1
-2
openair2/PHY_INTERFACE/IF_Module.c
openair2/PHY_INTERFACE/IF_Module.c
+1
-0
openair2/PHY_INTERFACE/phy_stub_UE.c
openair2/PHY_INTERFACE/phy_stub_UE.c
+0
-27
targets/RT/USER/lte-softmodem.c
targets/RT/USER/lte-softmodem.c
+20
-19
No files found.
cmake_targets/CMakeLists.txt
View file @
e6bf90e2
...
...
@@ -1949,7 +1949,23 @@ set (MCE_APP_SRC
${
OPENAIR2_DIR
}
/MCE_APP/mce_app.c
${
OPENAIR2_DIR
}
/MCE_APP/mce_config.c
)
set
(
MISC_NFAPI_LTE
${
OPENAIR1_DIR
}
/SCHED/nfapi_lte_dummy.c
)
add_library
(
MISC_NFAPI_LTE_LIB
${
MISC_NFAPI_LTE
}
)
set
(
MISC_NFAPI_NR
${
OPENAIR1_DIR
}
/SCHED/nfapi_nr_dummy.c
)
add_library
(
MISC_NFAPI_NR_LIB
${
MISC_NFAPI_NR
}
)
add_library
(
L2
${
L2_SRC
}
${
MAC_SRC
}
...
...
@@ -2662,7 +2678,7 @@ add_dependencies(lte-softmodem rrc_flag s1ap_flag x2_flag oai_iqplayer)
target_link_libraries
(
lte-softmodem
-Wl,--start-group
RRC_LIB NR_RRC_LIB S1AP_LIB S1AP_ENB F1AP_LIB F1AP M2AP_LIB M2AP_ENB X2AP_LIB X2AP_ENB M3AP_LIB M3AP_ENB GTPV1U SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT MME_APP UDP SCHED_LIB SCHED_RU_LIB
PHY_COMMON PHY PHY_RU LFDS L2 L2_LTE NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB LFDS7
PHY_COMMON PHY PHY_RU LFDS L2 L2_LTE NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB
MISC_NFAPI_LTE_LIB
LFDS7
${
MSC_LIB
}
${
RAL_LIB
}
${
NAS_UE_LIB
}
${
ITTI_LIB
}
${
FLPT_MSG_LIB
}
${
ASYNC_IF_LIB
}
${
FLEXRAN_AGENT_LIB
}
${
FSPT_MSG_LIB
}
${
PROTO_AGENT_LIB
}
-Wl,--end-group z dl
)
...
...
@@ -2773,7 +2789,7 @@ target_link_libraries (lte-uesoftmodem
-Wl,--start-group
RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB X2AP_ENB M2AP_LIB M2AP_ENB M3AP_LIB M3AP_ENB F1AP F1AP_LIB
GTPV1U SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT MME_APP UDP SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON
PHY_UE PHY_RU LFDS L2_UE L2_LTE LFDS7 SIMU_COMMON SIMU NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_USER_LIB
PHY_UE PHY_RU LFDS L2_UE L2_LTE LFDS7 SIMU_COMMON SIMU NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_USER_LIB
MISC_NFAPI_LTE_LIB
${
MSC_LIB
}
${
RAL_LIB
}
${
NAS_UE_LIB
}
${
ITTI_LIB
}
${
FLPT_MSG_LIB
}
${
ASYNC_IF_LIB
}
${
ATLAS_LIBRARIES
}
-Wl,--end-group z dl
)
...
...
@@ -2858,7 +2874,7 @@ target_link_libraries (nr-uesoftmodem
-Wl,--start-group
RRC_LIB NR_RRC_LIB SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT UDP SCHED_RU_LIB SCHED_UE_LIB SCHED_NR_UE_LIB
PHY_COMMON PHY_NR_COMMON PHY_UE PHY_NR_UE PHY_RU LFDS NR_L2_UE L2_UE_LTE_NR MAC_NR_COMMON NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB
NFAPI_USER_LIB S1AP_LIB S1AP_ENB
NFAPI_USER_LIB
MISC_NFAPI_NR_LIB
S1AP_LIB S1AP_ENB
${
MSC_LIB
}
${
RAL_LIB
}
${
NAS_UE_LIB
}
${
ITTI_LIB
}
${
FLPT_MSG_LIB
}
${
ASYNC_IF_LIB
}
LFDS7
${
ATLAS_LIBRARIES
}
-Wl,--end-group z dl
)
...
...
executables/nr-uesoftmodem.c
View file @
e6bf90e2
...
...
@@ -89,8 +89,8 @@ unsigned short config_frames[4] = {2,9,11,13};
pthread_cond_t
nfapi_sync_cond
;
pthread_mutex_t
nfapi_sync_mutex
;
int
nfapi_sync_var
=-
1
;
//!< protected by mutex \ref nfapi_sync_mutex
uint16_t
sf_ahead
=
6
;
//??? value ???
uint16_t
slot_ahead
=
6
;
uint16_t
sf_ahead
=
4
;
//??? value ???
//
uint16_t slot_ahead = 6;
pthread_cond_t
sync_cond
;
pthread_mutex_t
sync_mutex
;
int
sync_var
=-
1
;
//!< protected by mutex \ref sync_mutex.
...
...
nfapi/oai_integration/nfapi_pnf.c
View file @
e6bf90e2
This diff is collapsed.
Click to expand it.
nfapi/oai_integration/nfapi_pnf.h
View file @
e6bf90e2
...
...
@@ -23,6 +23,8 @@
#define NFAPI_PNF_H__
int
oai_nfapi_rach_ind
(
nfapi_rach_indication_t
*
rach_ind
);
void
configure_nfapi_pnf
(
char
*
vnf_ip_addr
,
int
vnf_p5_port
,
char
*
pnf_ip_addr
,
int
pnf_p7_port
,
int
vnf_p7_port
);
void
configure_nr_nfapi_pnf
(
char
*
vnf_ip_addr
,
int
vnf_p5_port
,
char
*
pnf_ip_addr
,
int
pnf_p7_port
,
int
vnf_p7_port
);
void
oai_subframe_ind
(
uint16_t
sfn
,
uint16_t
sf
);
void
oai_slot_ind
(
uint16_t
sfn
,
uint16_t
slot
);
#endif
nfapi/oai_integration/nfapi_vnf.c
View file @
e6bf90e2
This diff is collapsed.
Click to expand it.
nfapi/open-nFAPI/nfapi/public_inc/nfapi_interface.h
View file @
e6bf90e2
...
...
@@ -187,7 +187,6 @@ typedef enum {
NFAPI_DL_NODE_SYNC
,
NFAPI_TIMING_INFO
,
NFAPI_RSSI_REQUEST
=
0x0200
,
NFAPI_RSSI_RESPONSE
,
NFAPI_RSSI_INDICATION
,
...
...
@@ -1125,12 +1124,12 @@ typedef struct {
uint32_t
error_code
;
nfapi_pnf_param_general_t
pnf_param_general
;
nfapi_pnf_phy_t
pnf_phy
;
//
nfapi_pnf_rf_t pnf_rf;
//
nfapi_pnf_phy_rel10_t pnf_phy_rel10;
//
nfapi_pnf_phy_rel11_t pnf_phy_rel11;
//
nfapi_pnf_phy_rel12_t pnf_phy_rel12;
//
nfapi_pnf_phy_rel13_t pnf_phy_rel13;
//
nfapi_pnf_phy_rel13_nb_iot_t pnf_phy_rel13_nb_iot;
nfapi_pnf_rf_t
pnf_rf
;
nfapi_pnf_phy_rel10_t
pnf_phy_rel10
;
nfapi_pnf_phy_rel11_t
pnf_phy_rel11
;
nfapi_pnf_phy_rel12_t
pnf_phy_rel12
;
nfapi_pnf_phy_rel13_t
pnf_phy_rel13
;
nfapi_pnf_phy_rel13_nb_iot_t
pnf_phy_rel13_nb_iot
;
nfapi_pnf_phy_rel15_t
pnf_phy_rel15
;
nfapi_vendor_extension_tlv_t
vendor_extension
;
}
nfapi_pnf_param_response_t
;
...
...
@@ -2498,8 +2497,7 @@ typedef struct {
typedef
struct
{
nfapi_p7_message_header_t
header
;
uint32_t
t1
;
//int32_t delta_sfn_sf;
int32_t
delta_sfn_slot
;
int32_t
delta_sfn_sf
;
nfapi_vendor_extension_tlv_t
vendor_extension
;
}
nfapi_dl_node_sync_t
;
...
...
@@ -2514,35 +2512,49 @@ typedef struct {
typedef
struct
{
nfapi_p7_message_header_t
header
;
uint32_t
last_sfn_sf
;
uint32_t
last_sfn
;
uint32_t
last_slot
;
uint32_t
time_since_last_timing_info
;
uint32_t
dl_config_jitter
;
uint32_t
tx_request_jitter
;
uint32_t
ul_config_jitter
;
uint32_t
hi_dci0_jitter
;
uint32_t
dl_tti_jitter
;
uint32_t
tx_data_request_jitter
;
uint32_t
ul_tti_jitter
;
uint32_t
ul_dci_jitter
;
int32_t
dl_config_latest_delay
;
int32_t
tx_request_latest_delay
;
int32_t
ul_config_latest_delay
;
int32_t
hi_dci0_latest_delay
;
int32_t
dl_tti_latest_delay
;
int32_t
tx_data_request_latest_delay
;
int32_t
ul_tti_latest_delay
;
int32_t
ul_dci_latest_delay
;
int32_t
dl_config_earliest_arrival
;
int32_t
tx_request_earliest_arrival
;
int32_t
ul_config_earliest_arrival
;
int32_t
hi_dci0_earliest_arrival
;
nfapi_vendor_extension_tlv_t
vendor_extension
;
}
nfapi_timing_info_t
;
typedef
struct
{
nfapi_p7_message_header_t
header
;
uint32_t
last_sfn
;
uint32_t
last_slot
;
uint32_t
time_since_last_timing_info
;
uint32_t
dl_tti_jitter
;
uint32_t
tx_data_request_jitter
;
uint32_t
ul_tti_jitter
;
uint32_t
ul_dci_jitter
;
int32_t
dl_tti_latest_delay
;
int32_t
tx_data_request_latest_delay
;
int32_t
ul_tti_latest_delay
;
int32_t
ul_dci_latest_delay
;
int32_t
dl_tti_earliest_arrival
;
int32_t
tx_data_request_earliest_arrival
;
int32_t
ul_tti_earliest_arrival
;
int32_t
ul_dci_earliest_arrival
;
nfapi_vendor_extension_tlv_t
vendor_extension
;
}
nfapi_timing_info_t
;
}
nfapi_
nr_
timing_info_t
;
typedef
struct
{
nfapi_tl_t
tl
;
...
...
@@ -3955,7 +3967,7 @@ int nfapi_p4_message_unpack(void *pMessageBuf, uint32_t messageBufLen, void *pUn
*
*/
int
nfapi_p5_message_pack
(
void
*
pMessageBuf
,
uint32_t
messageBufLen
,
void
*
pPackedBuf
,
uint32_t
packedBufLen
,
nfapi_p4_p5_codec_config_t
*
config
);
//
int nfapi_nr_p5_message_pack(void *pMessageBuf, uint32_t messageBufLen, void *pPackedBuf, uint32_t packedBufLen, nfapi_p4_p5_codec_config_t* config);
int
nfapi_nr_p5_message_pack
(
void
*
pMessageBuf
,
uint32_t
messageBufLen
,
void
*
pPackedBuf
,
uint32_t
packedBufLen
,
nfapi_p4_p5_codec_config_t
*
config
);
/*! \brief Decodes an NFAPI P5 message header
* \param pMessageBuf A pointer to an encoded P5 message header
...
...
@@ -3979,7 +3991,7 @@ int nfapi_p5_message_header_unpack(void *pMessageBuf, uint32_t messageBufLen, vo
*
* The function will decode a byte stream pointed to by pMessageBuf into a nfapi p5 message structure pointer to by pUnpackedBuf
*/
//
int nfapi_nr_p5_message_unpack(void *pMessageBuf, uint32_t messageBufLen, void *pUnpackedBuf, uint32_t unpackedBufLen, nfapi_p4_p5_codec_config_t* config);
int
nfapi_nr_p5_message_unpack
(
void
*
pMessageBuf
,
uint32_t
messageBufLen
,
void
*
pUnpackedBuf
,
uint32_t
unpackedBufLen
,
nfapi_p4_p5_codec_config_t
*
config
);
int
nfapi_p5_message_unpack
(
void
*
pMessageBuf
,
uint32_t
messageBufLen
,
void
*
pUnpackedBuf
,
uint32_t
unpackedBufLen
,
nfapi_p4_p5_codec_config_t
*
config
);
/*! \brief Encodes an NFAPI P7 message to a buffer
...
...
@@ -3993,6 +4005,7 @@ int nfapi_p5_message_unpack(void *pMessageBuf, uint32_t messageBufLen, void *pUn
*
*/
int
nfapi_p7_message_pack
(
void
*
pMessageBuf
,
void
*
pPackedBuf
,
uint32_t
packedBufLen
,
nfapi_p7_codec_config_t
*
config
);
int
nfapi_nr_p7_message_pack
(
void
*
pMessageBuf
,
void
*
pPackedBuf
,
uint32_t
packedBufLen
,
nfapi_p7_codec_config_t
*
config
);
/*! \brief Decodes an NFAPI P7 message header
* \param pMessageBuf A pointer to an encoded P7 message header
...
...
@@ -4018,6 +4031,7 @@ int nfapi_p7_message_header_unpack(void *pMessageBuf, uint32_t messageBufLen, vo
* The function will decode a byte stream pointed to by pMessageBuf into a nfapi p7 message structure pointer to by pUnpackedBuf
*/
int
nfapi_p7_message_unpack
(
void
*
pMessageBuf
,
uint32_t
messageBufLen
,
void
*
pUnpackedBuf
,
uint32_t
unpackedBufLen
,
nfapi_p7_codec_config_t
*
config
);
int
nfapi_nr_p7_message_unpack
(
void
*
pMessageBuf
,
uint32_t
messageBufLen
,
void
*
pUnpackedBuf
,
uint32_t
unpackedBufLen
,
nfapi_p7_codec_config_t
*
config
);
/*! \brief Calculates the checksum of a message
*
...
...
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h
View file @
e6bf90e2
...
...
@@ -78,7 +78,11 @@ typedef enum {
NFAPI_NR_PHY_MSG_TYPE_PNF_START_REQUEST
=
0x0104
,
NFAPI_NR_PHY_MSG_TYPE_PNF_START_RESPONSE
=
0x0105
,
NFAPI_NR_PHY_MSG_TYPE_PNF_STOP_REQUEST
=
0x0106
,
NFAPI_NR_PHY_MSG_TYPE_PNF_STOP_RESPONSE
=
0x0107
NFAPI_NR_PHY_MSG_TYPE_PNF_STOP_RESPONSE
=
0x0107
,
NFAPI_NR_PHY_MSG_TYPE_UL_NODE_SYNC
=
0x0180
,
NFAPI_NR_PHY_MSG_TYPE_DL_NODE_SYNC
,
NFAPI_NR_PHY_MSG_TYPE_TIMING_INFO
}
nfapi_nr_phy_msg_type_e
;
// SCF222_5G-FAPI_PHY_SPI_Specificayion.pdf Section 3.3
...
...
@@ -88,10 +92,6 @@ typedef enum {
//same with nfapi_param_request_t
typedef
struct
{
nfapi_p4_p5_message_header_t
header
;
nfapi_vendor_extension_tlv_t
vendor_extension
;
}
nfapi_nr_param_request_t
;
/*typedef struct {
...
...
@@ -1049,6 +1049,22 @@ typedef struct {
} nfapi_nr_dl_tti_request_body_t;
*/
typedef
struct
{
nfapi_p7_message_header_t
header
;
uint32_t
t1
;
int32_t
delta_sfn_slot
;
nfapi_vendor_extension_tlv_t
vendor_extension
;
}
nfapi_nr_dl_node_sync_t
;
typedef
struct
{
nfapi_p7_message_header_t
header
;
uint32_t
t1
;
uint32_t
t2
;
uint32_t
t3
;
nfapi_vendor_extension_tlv_t
vendor_extension
;
}
nfapi_nr_ul_node_sync_t
;
typedef
struct
{
nfapi_p7_message_header_t
header
;
/// System Frame Number (0-1023)
...
...
nfapi/open-nFAPI/nfapi/src/nfapi_p5.c
View file @
e6bf90e2
This diff is collapsed.
Click to expand it.
nfapi/open-nFAPI/nfapi/src/nfapi_p7.c
View file @
e6bf90e2
This diff is collapsed.
Click to expand it.
nfapi/open-nFAPI/pnf/inc/pnf.h
View file @
e6bf90e2
...
...
@@ -38,8 +38,9 @@ typedef struct {
int
pnf_connect
(
pnf_t
*
pnf
);
int
pnf_message_pump
(
pnf_t
*
pnf
);
int
pnf_nr_message_pump
(
pnf_t
*
pnf
);
//
int pnf_nr_pack_and_send_p5_message(pnf_t* pnf, nfapi_p4_p5_message_header_t* msg, uint32_t msg_len);
int
pnf_nr_pack_and_send_p5_message
(
pnf_t
*
pnf
,
nfapi_p4_p5_message_header_t
*
msg
,
uint32_t
msg_len
);
int
pnf_pack_and_send_p5_message
(
pnf_t
*
pnf
,
nfapi_p4_p5_message_header_t
*
msg
,
uint32_t
msg_len
);
int
pnf_pack_and_send_p4_message
(
pnf_t
*
pnf
,
nfapi_p4_p5_message_header_t
*
msg
,
uint32_t
msg_len
);
int
pnf_send_message
(
pnf_t
*
pnf
,
uint8_t
*
msg
,
uint32_t
msg_len
,
uint16_t
stream_id
);
...
...
nfapi/open-nFAPI/pnf/inc/pnf_p7.h
View file @
e6bf90e2
...
...
@@ -146,7 +146,7 @@ typedef struct {
}
pnf_p7_t
;
int
pnf_p7_message_pump
(
pnf_p7_t
*
pnf_p7
);
int
pnf_nr_p7_message_pump
(
pnf_p7_t
*
pnf_p7
);
int
pnf_p7_pack_and_send_p7_message
(
pnf_p7_t
*
pnf_p7
,
nfapi_p7_message_header_t
*
msg
,
uint32_t
msg_len
);
int
pnf_p7_send_message
(
pnf_p7_t
*
pnf_p7
,
uint8_t
*
msg
,
uint32_t
msg_len
);
...
...
nfapi/open-nFAPI/pnf/public_inc/nfapi_pnf_interface.h
View file @
e6bf90e2
...
...
@@ -127,7 +127,7 @@ typedef struct nfapi_pnf_config
* The client is expected to send the PNF_PARAM.response after receiving the
* PNF_PARAM.request. This can be done in the call back.
*/
//
int (*pnf_nr_param_req)(nfapi_pnf_config_t* config, nfapi_nr_pnf_param_request_t* req);
int
(
*
pnf_nr_param_req
)(
nfapi_pnf_config_t
*
config
,
nfapi_nr_pnf_param_request_t
*
req
);
int
(
*
pnf_param_req
)(
nfapi_pnf_config_t
*
config
,
nfapi_pnf_param_request_t
*
req
);
/*! A callback for the PNF_CONFIG.request
...
...
@@ -140,7 +140,8 @@ typedef struct nfapi_pnf_config
* PNF_CONFIG.request. This can be done in the call back.
*/
int
(
*
pnf_config_req
)(
nfapi_pnf_config_t
*
config
,
nfapi_pnf_config_request_t
*
req
);
int
(
*
pnf_nr_config_req
)(
nfapi_pnf_config_t
*
config
,
nfapi_nr_pnf_config_request_t
*
req
);
/*! A callback for the PNF_START.request
* \param config A pointer to the pnf configuration
* \param req A data structure for the decoded PNF_CONFIG.request. This will have
...
...
@@ -151,7 +152,8 @@ typedef struct nfapi_pnf_config
* PNF_START.request. This can be done in the call back.
*/
int
(
*
pnf_start_req
)(
nfapi_pnf_config_t
*
config
,
nfapi_pnf_start_request_t
*
req
);
int
(
*
pnf_nr_start_req
)(
nfapi_pnf_config_t
*
config
,
nfapi_nr_pnf_start_request_t
*
req
);
/*! A callback for the PNF_STOP.request
* \param config A pointer to the pnf configuration
* \param req A data structure for the decoded PNF_STOP.request. This will have
...
...
@@ -173,8 +175,9 @@ typedef struct nfapi_pnf_config
* The client is expected to send the PARAM.response after receiving the
* PARAM.request. This can be done in the call back.
*/
int
(
*
param_req
)(
nfapi_pnf_config_t
*
config
,
nfapi_pnf_phy_config_t
*
phy
,
nfapi_nr_param_request_scf_t
*
req
);
int
(
*
param_req
)(
nfapi_pnf_config_t
*
config
,
nfapi_pnf_phy_config_t
*
phy
,
nfapi_param_request_t
*
req
);
int
(
*
nr_param_req
)(
nfapi_pnf_config_t
*
config
,
nfapi_pnf_phy_config_t
*
phy
,
nfapi_nr_param_request_scf_t
*
req
);
/*! A callback for the CONFIG.request
* \param config A pointer to the pnf configuration
* \param phy A pointer to the pnf phy configuration
...
...
@@ -185,7 +188,8 @@ typedef struct nfapi_pnf_config
* The client is expected to send the CONFIG.response after receiving the
* CONFIG.request. This can be done in the call back.
*/
int
(
*
config_req
)(
nfapi_pnf_config_t
*
config
,
nfapi_pnf_phy_config_t
*
phy
,
nfapi_nr_config_request_scf_t
*
req
);
int
(
*
config_req
)(
nfapi_pnf_config_t
*
config
,
nfapi_pnf_phy_config_t
*
phy
,
nfapi_config_request_t
*
req
);
int
(
*
nr_config_req
)(
nfapi_pnf_config_t
*
config
,
nfapi_pnf_phy_config_t
*
phy
,
nfapi_nr_config_request_scf_t
*
req
);
/*! A callback for the START.request
* \param config A pointer to the pnf configuration
...
...
@@ -197,8 +201,8 @@ typedef struct nfapi_pnf_config
* The client is expected to send the START.response after the client has received the
* first subframe indication from FAPI.
*/
int
(
*
start_req
)(
nfapi_pnf_config_t
*
config
,
nfapi_pnf_phy_config_t
*
phy
,
nfapi_
nr_start_request_scf
_t
*
req
);
int
(
*
start_req
)(
nfapi_pnf_config_t
*
config
,
nfapi_pnf_phy_config_t
*
phy
,
nfapi_
start_request
_t
*
req
);
int
(
*
nr_start_req
)(
nfapi_pnf_config_t
*
config
,
nfapi_pnf_phy_config_t
*
phy
,
nfapi_nr_start_request_scf_t
*
req
);
/*! A callback for the STOP.request
* \param config A pointer to the pnf configuration
* \param phy A pointer to the pnf phy configuration
...
...
@@ -362,6 +366,7 @@ int nfapi_pnf_config_destroy(nfapi_pnf_config_t* config);
* \endcode
*/
int
nfapi_pnf_start
(
nfapi_pnf_config_t
*
config
);
int
nfapi_nr_pnf_start
(
nfapi_pnf_config_t
*
config
);
/*! Stop the PNF library.
* \param config A pointer to the pnf configuration
...
...
@@ -378,6 +383,8 @@ int nfapi_pnf_stop(nfapi_pnf_config_t* config);
*
*/
int
nfapi_pnf_pnf_param_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_pnf_param_response_t
*
resp
);
int
nfapi_nr_pnf_pnf_param_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_nr_pnf_param_response_t
*
resp
);
/*! Send the PNF_CONFIG.response
* \param config A pointer to a pnf configuraiton
...
...
@@ -386,6 +393,7 @@ int nfapi_pnf_pnf_param_resp(nfapi_pnf_config_t* config, nfapi_pnf_param_respons
*
*/
int
nfapi_pnf_pnf_config_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_pnf_config_response_t
*
resp
);
int
nfapi_nr_pnf_pnf_config_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_nr_pnf_config_response_t
*
resp
);
/*! Send the PNF_START.response
* \param config A pointer to a pnf configuraiton
...
...
@@ -394,7 +402,7 @@ int nfapi_pnf_pnf_config_resp(nfapi_pnf_config_t* config, nfapi_pnf_config_respo
*
*/
int
nfapi_pnf_pnf_start_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_pnf_start_response_t
*
resp
);
int
nfapi_nr_pnf_pnf_start_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_nr_pnf_start_response_t
*
resp
);
/*! Send the PNF_STOP.response
* \param config A pointer to a pnf configuraiton
* \param resp A pointer to the message structure
...
...
@@ -409,7 +417,8 @@ int nfapi_pnf_pnf_stop_resp(nfapi_pnf_config_t* config, nfapi_pnf_stop_response_
* \return 0 for success, -1 for failure
*
*/
int
nfapi_pnf_param_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_nr_param_response_scf_t
*
resp
);
int
nfapi_pnf_param_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_param_response_t
*
resp
);
int
nfapi_nr_pnf_param_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_nr_param_response_scf_t
*
resp
);
/*! Send the CONFIG.response
* \param config A pointer to a pnf configuraiton
...
...
@@ -417,15 +426,16 @@ int nfapi_pnf_param_resp(nfapi_pnf_config_t* config, nfapi_nr_param_response_scf
* \return 0 for success, -1 for failure
*
*/
int
nfapi_pnf_config_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_
nr_config_response_scf
_t
*
resp
);
int
nfapi_pnf_config_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_
config_response
_t
*
resp
);
int
nfapi_nr_pnf_config_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_nr_config_response_scf_t
*
resp
);
/*! Send the START.response
* \param config A pointer to a pnf configuraiton
* \param resp A pointer to the message structure
* \return 0 for success, -1 for failure
*
*/
int
nfapi_pnf_start_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_nr_start_response_scf_t
*
resp
);
int
nfapi_pnf_start_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_start_response_t
*
resp
);
int
nfapi_nr_pnf_start_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_nr_start_response_scf_t
*
resp
);
/*! Send the STOP.response
* \param config A pointer to a pnf configuraiton
...
...
@@ -738,6 +748,7 @@ int nfapi_pnf_p7_config_destroy(nfapi_pnf_p7_config_t* config);
* This function will not return until nfapi_pnf_p7_stop is called.
*/
int
nfapi_pnf_p7_start
(
nfapi_pnf_p7_config_t
*
config
);
int
nfapi_nr_pnf_p7_start
(
nfapi_pnf_p7_config_t
*
config
);
/*! Stop the PNF P7 library.
* \param config A pointer to a PNF P7 config
...
...
nfapi/open-nFAPI/pnf/src/pnf.c
View file @
e6bf90e2
This diff is collapsed.
Click to expand it.
nfapi/open-nFAPI/pnf/src/pnf_interface.c
View file @
e6bf90e2
...
...
@@ -83,6 +83,40 @@ int nfapi_pnf_start(nfapi_pnf_config_t* config)
return
0
;
}
int
nfapi_nr_pnf_start
(
nfapi_pnf_config_t
*
config
)
{
// Verify that config is not null
if
(
config
==
0
)
return
-
1
;
// Make sure to set the defined trace function before using NFAPI_TRACE
if
(
config
->
trace
)
nfapi_trace_g
=
config
->
trace
;
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"%s
\n
"
,
__FUNCTION__
);
pnf_t
*
_this
=
(
pnf_t
*
)(
config
);
while
(
_this
->
terminate
==
0
)
{
int
connect_result
=
pnf_connect
(
_this
);
if
(
connect_result
>
0
)
{
pnf_nr_message_pump
(
_this
);
}
else
if
(
connect_result
<
0
)
{
return
connect_result
;
}
sleep
(
1
);
}
NFAPI_TRACE
(
NFAPI_TRACE_INFO
,
"%s() terminate=1 - EXITTING............
\n
"
,
__FUNCTION__
);
return
0
;
}
int
nfapi_pnf_stop
(
nfapi_pnf_config_t
*
config
)
{
// Verify that config is not null
...
...
@@ -98,7 +132,7 @@ int nfapi_pnf_stop(nfapi_pnf_config_t* config)
return
0
;
}
/*
int
nfapi_nr_pnf_pnf_param_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_nr_pnf_param_response_t
*
resp
)
{
// ensure it's valid
...
...
@@ -112,7 +146,7 @@ int nfapi_nr_pnf_pnf_param_resp(nfapi_pnf_config_t* config, nfapi_nr_pnf_param_r
return
pnf_nr_pack_and_send_p5_message
(
_this
,
&
(
resp
->
header
),
sizeof
(
nfapi_nr_pnf_param_response_t
));
}
*/
int
nfapi_pnf_pnf_param_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_pnf_param_response_t
*
resp
)
{
// ensure it's valid
...
...
@@ -146,6 +180,27 @@ int nfapi_pnf_pnf_config_resp(nfapi_pnf_config_t* config, nfapi_pnf_config_respo
return
pnf_pack_and_send_p5_message
(
_this
,
&
(
resp
->
header
),
sizeof
(
nfapi_pnf_config_response_t
));
}
int
nfapi_nr_pnf_pnf_config_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_nr_pnf_config_response_t
*
resp
)
{
// ensure it's valid
if
(
config
==
NULL
||
resp
==
NULL
)
{
NFAPI_TRACE
(
NFAPI_TRACE_ERROR
,
"%s: NULL parameters
\n
"
,
__FUNCTION__
);
return
-
1
;
}
if
(
resp
->
error_code
==
NFAPI_MSG_OK
)
{
config
->
state
=
NFAPI_PNF_CONFIGURED
;
}
pnf_t
*
_this
=
(
pnf_t
*
)(
config
);
return
pnf_nr_pack_and_send_p5_message
(
_this
,
&
(
resp
->
header
),
sizeof
(
nfapi_nr_pnf_config_response_t
));
}
int
nfapi_pnf_pnf_start_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_pnf_start_response_t
*
resp
)
{
// ensure it's valid
...
...
@@ -165,6 +220,26 @@ int nfapi_pnf_pnf_start_resp(nfapi_pnf_config_t* config, nfapi_pnf_start_respons
return
pnf_pack_and_send_p5_message
(
_this
,
&
(
resp
->
header
),
sizeof
(
nfapi_pnf_start_response_t
));
}
int
nfapi_nr_pnf_pnf_start_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_nr_pnf_start_response_t
*
resp
)
{
// ensure it's valid
if
(
config
==
NULL
||
resp
==
NULL
)
{
NFAPI_TRACE
(
NFAPI_TRACE_ERROR
,
"%s: NULL parameters
\n
"
,
__FUNCTION__
);
return
-
1
;
}
if
(
resp
->
error_code
==
NFAPI_MSG_OK
)
{
config
->
state
=
NFAPI_PNF_RUNNING
;
}
pnf_t
*
_this
=
(
pnf_t
*
)(
config
);
return
pnf_nr_pack_and_send_p5_message
(
_this
,
&
(
resp
->
header
),
sizeof
(
nfapi_nr_pnf_start_response_t
));
}
int
nfapi_pnf_pnf_stop_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_pnf_stop_response_t
*
resp
)
{
// ensure it's valid
...
...
@@ -183,8 +258,21 @@ int nfapi_pnf_pnf_stop_resp(nfapi_pnf_config_t* config, nfapi_pnf_stop_response_
return
pnf_pack_and_send_p5_message
(
_this
,
&
(
resp
->
header
),
sizeof
(
nfapi_pnf_stop_response_t
));
}
int
nfapi_pnf_param_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_param_response_t
*
resp
)
{
if
(
config
==
NULL
||
resp
==
NULL
)
{
NFAPI_TRACE
(
NFAPI_TRACE_ERROR
,
"%s: NULL parameters
\n
"
,
__FUNCTION__
);
return
-
1
;
}
pnf_t
*
_this
=
(
pnf_t
*
)(
config
);
return
pnf_pack_and_send_p5_message
(
_this
,
&
(
resp
->
header
),
sizeof
(
nfapi_param_response_t
));
}
int
nfapi_pnf_param_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_nr_param_response_scf_t
*
resp
)
int
nfapi_
nr_
pnf_param_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_nr_param_response_scf_t
*
resp
)
{
if
(
config
==
NULL
||
resp
==
NULL
)
{
...
...
@@ -194,10 +282,38 @@ int nfapi_pnf_param_resp(nfapi_pnf_config_t* config, nfapi_nr_param_response_scf
pnf_t
*
_this
=
(
pnf_t
*
)(
config
);
return
pnf_pack_and_send_p5_message
(
_this
,
&
(
resp
->
header
),
sizeof
(
nfapi_nr_param_response_scf_t
));
return
pnf_nr_pack_and_send_p5_message
(
_this
,
&
(
resp
->
header
),
sizeof
(
nfapi_nr_param_response_scf_t
));
}
int
nfapi_pnf_config_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_config_response_t
*
resp
)
{
if
(
config
==
NULL
||
resp
==
NULL
)
{
NFAPI_TRACE
(
NFAPI_TRACE_ERROR
,
"%s: NULL parameters
\n
"
,
__FUNCTION__
);
return
-
1
;
}
pnf_t
*
_this
=
(
pnf_t
*
)(
config
);
nfapi_pnf_phy_config_t
*
phy
=
nfapi_pnf_phy_config_find
(
config
,
resp
->
header
.
phy_id
);
if
(
phy
)
{
if
(
resp
->
error_code
==
NFAPI_MSG_OK
)
{
phy
->
state
=
NFAPI_PNF_PHY_CONFIGURED
;
}
}
else
{
NFAPI_TRACE
(
NFAPI_TRACE_ERROR
,
"%s: unknow phy id %d
\n
"
,
__FUNCTION__
,
resp
->
header
.
phy_id
);
return
-
1
;
}
return
pnf_pack_and_send_p5_message
(
_this
,
&
(
resp
->
header
),
sizeof
(
nfapi_config_response_t
));
}
int
nfapi_pnf_config_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_nr_config_response_scf_t
*
resp
)
int
nfapi_
nr_
pnf_config_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_nr_config_response_scf_t
*
resp
)
{
if
(
config
==
NULL
||
resp
==
NULL
)
{
...
...
@@ -222,10 +338,38 @@ int nfapi_pnf_config_resp(nfapi_pnf_config_t* config, nfapi_nr_config_response_s
return
-
1
;
}
return
pnf_pack_and_send_p5_message
(
_this
,
&
(
resp
->
header
),
sizeof
(
nfapi_nr_config_response_scf_t
));
return
pnf_nr_pack_and_send_p5_message
(
_this
,
&
(
resp
->
header
),
sizeof
(
nfapi_nr_config_response_scf_t
));
}
int
nfapi_pnf_start_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_start_response_t
*
resp
)
{
if
(
config
==
NULL
||
resp
==
NULL
)
{
NFAPI_TRACE
(
NFAPI_TRACE_ERROR
,
"%s: NULL parameters
\n
"
,
__FUNCTION__
);
return
-
1
;
}
pnf_t
*
_this
=
(
pnf_t
*
)(
config
);
nfapi_pnf_phy_config_t
*
phy
=
nfapi_pnf_phy_config_find
(
config
,
resp
->
header
.
phy_id
);
if
(
phy
)
{
if
(
resp
->
error_code
==
NFAPI_MSG_OK
)
{
phy
->
state
=
NFAPI_PNF_PHY_RUNNING
;
}
}
else
{
NFAPI_TRACE
(
NFAPI_TRACE_ERROR
,
"%s: unknown phy id %d
\n
"
,
__FUNCTION__
,
resp
->
header
.
phy_id
);
return
-
1
;
}
return
pnf_pack_and_send_p5_message
(
_this
,
&
(
resp
->
header
),
sizeof
(
nfapi_start_response_t
));
}
int
nfapi_pnf_start_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_nr_start_response_scf_t
*
resp
)
int
nfapi_
nr_
pnf_start_resp
(
nfapi_pnf_config_t
*
config
,
nfapi_nr_start_response_scf_t
*
resp
)
{
if
(
config
==
NULL
||
resp
==
NULL
)
{
...
...
@@ -249,9 +393,10 @@ int nfapi_pnf_start_resp(nfapi_pnf_config_t* config, nfapi_nr_start_response_scf
return
-
1
;
}
return
pnf_pack_and_send_p5_message
(
_this
,
&
(
resp
->
header
),
sizeof
(
nfapi_nr_start_response_scf_t
));
return
pnf_
nr_
pack_and_send_p5_message
(
_this
,
&
(
resp
->
header
),
sizeof
(
nfapi_nr_start_response_scf_t
));
}