Expose packing/unpacking functions for (n)FAPI P5 messages for FAPI library creation
Will be reused from other files in later commits. Added packing/unpacking procedures for STOP.indication and ERROR.indication. Separate a packing function for STOP.request for use in the NR FAPI library.
This commit is contained in:
@@ -4121,8 +4121,39 @@ int pack_nr_srs_beamforming_report(void *pMessageBuf, void *pPackedBuf, uint32_t
|
|||||||
*/
|
*/
|
||||||
int unpack_nr_srs_beamforming_report(void *pMessageBuf, uint32_t messageBufLen, void *pUnpackedBuf, uint32_t unpackedBufLen);
|
int unpack_nr_srs_beamforming_report(void *pMessageBuf, uint32_t messageBufLen, void *pUnpackedBuf, uint32_t unpackedBufLen);
|
||||||
|
|
||||||
uint8_t unpack_nr_param_response(uint8_t** ppReadPackedMsg, uint8_t* end, void* msg, nfapi_p4_p5_codec_config_t* config);
|
uint8_t pack_nr_param_request(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config);
|
||||||
|
|
||||||
uint8_t unpack_nr_config_response(uint8_t** ppReadPackedMsg, uint8_t* end, void* msg, nfapi_p4_p5_codec_config_t* config);
|
uint8_t unpack_nr_param_request(uint8_t **ppReadPackedMsg, uint8_t *end, void *msg, nfapi_p4_p5_codec_config_t *config);
|
||||||
|
|
||||||
|
uint8_t pack_nr_param_response(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config);
|
||||||
|
|
||||||
|
uint8_t unpack_nr_param_response(uint8_t **ppReadPackedMsg, uint8_t *end, void *msg, nfapi_p4_p5_codec_config_t *config);
|
||||||
|
|
||||||
|
uint8_t pack_nr_config_request(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config);
|
||||||
|
|
||||||
|
uint8_t unpack_nr_config_request(uint8_t **ppReadPackedMsg, uint8_t *end, void *msg, nfapi_p4_p5_codec_config_t *config);
|
||||||
|
|
||||||
|
uint8_t pack_nr_config_response(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config);
|
||||||
|
|
||||||
|
uint8_t unpack_nr_config_response(uint8_t **ppReadPackedMsg, uint8_t *end, void *msg, nfapi_p4_p5_codec_config_t *config);
|
||||||
|
|
||||||
|
uint8_t pack_nr_start_request(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config);
|
||||||
|
|
||||||
|
uint8_t unpack_nr_start_request(uint8_t **ppReadPackedMsg, uint8_t *end, void *msg, nfapi_p4_p5_codec_config_t *config);
|
||||||
|
|
||||||
|
uint8_t pack_nr_start_response(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config);
|
||||||
|
|
||||||
|
uint8_t unpack_nr_start_response(uint8_t **ppReadPackedMsg, uint8_t *end, void *msg, nfapi_p4_p5_codec_config_t *config);
|
||||||
|
|
||||||
|
uint8_t pack_nr_stop_request(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config);
|
||||||
|
|
||||||
|
uint8_t unpack_nr_stop_request(uint8_t **ppReadPackedMsg, uint8_t *end, void *msg, nfapi_p4_p5_codec_config_t *config);
|
||||||
|
|
||||||
|
uint8_t pack_nr_stop_indication(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config);
|
||||||
|
|
||||||
|
uint8_t unpack_nr_stop_indication(uint8_t **ppReadPackedMsg, uint8_t *end, void *msg, nfapi_p4_p5_codec_config_t *config);
|
||||||
|
|
||||||
|
uint8_t pack_nr_error_indication(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config);
|
||||||
|
|
||||||
|
uint8_t unpack_nr_error_indication(uint8_t **ppReadPackedMsg, uint8_t *end, void *msg, nfapi_p4_p5_codec_config_t *config);
|
||||||
#endif /* _NFAPI_INTERFACE_H_ */
|
#endif /* _NFAPI_INTERFACE_H_ */
|
||||||
|
|||||||
@@ -273,7 +273,8 @@ static uint8_t pack_pnf_stop_response(void *msg, uint8_t **ppWritePackedMsg, uin
|
|||||||
pack_vendor_extension_tlv(pNfapiMsg->vendor_extension, ppWritePackedMsg, end, config));
|
pack_vendor_extension_tlv(pNfapiMsg->vendor_extension, ppWritePackedMsg, end, config));
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t pack_nr_param_request(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config) {
|
uint8_t pack_nr_param_request(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config)
|
||||||
|
{
|
||||||
nfapi_nr_param_request_scf_t *pNfapiMsg = (nfapi_nr_param_request_scf_t *)msg;
|
nfapi_nr_param_request_scf_t *pNfapiMsg = (nfapi_nr_param_request_scf_t *)msg;
|
||||||
return (pack_vendor_extension_tlv(pNfapiMsg->vendor_extension, ppWritePackedMsg, end, config));
|
return (pack_vendor_extension_tlv(pNfapiMsg->vendor_extension, ppWritePackedMsg, end, config));
|
||||||
}
|
}
|
||||||
@@ -665,7 +666,7 @@ static uint8_t pack_param_response(void *msg, uint8_t **ppWritePackedMsg, uint8_
|
|||||||
&& pack_vendor_extension_tlv(pNfapiMsg->vendor_extension, ppWritePackedMsg, end, config));
|
&& pack_vendor_extension_tlv(pNfapiMsg->vendor_extension, ppWritePackedMsg, end, config));
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t pack_nr_param_response(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config)
|
uint8_t pack_nr_param_response(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config)
|
||||||
{
|
{
|
||||||
printf("\nRUNNING pack_param_response\n");
|
printf("\nRUNNING pack_param_response\n");
|
||||||
nfapi_nr_param_response_scf_t *pNfapiMsg = (nfapi_nr_param_response_scf_t *)msg;
|
nfapi_nr_param_response_scf_t *pNfapiMsg = (nfapi_nr_param_response_scf_t *)msg;
|
||||||
@@ -1470,7 +1471,7 @@ static uint8_t pack_config_request(void *msg, uint8_t **ppWritePackedMsg, uint8_
|
|||||||
&pack_uint8_tlv_value));
|
&pack_uint8_tlv_value));
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t pack_nr_config_request(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config)
|
uint8_t pack_nr_config_request(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config)
|
||||||
{
|
{
|
||||||
uint8_t *pNumTLVFields = (uint8_t *)*ppWritePackedMsg;
|
uint8_t *pNumTLVFields = (uint8_t *)*ppWritePackedMsg;
|
||||||
|
|
||||||
@@ -1793,7 +1794,7 @@ static uint8_t pack_nr_config_request(void *msg, uint8_t **ppWritePackedMsg, uin
|
|||||||
// START Precoding Matrix (PM) PDU
|
// START Precoding Matrix (PM) PDU
|
||||||
// Struct in nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h nfapi_nr_pm_pdu_t, currently unused, tag to use for AERIAL
|
// Struct in nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h nfapi_nr_pm_pdu_t, currently unused, tag to use for AERIAL
|
||||||
// is 0xA011 END Precoding Matrix (PM) PDU
|
// is 0xA011 END Precoding Matrix (PM) PDU
|
||||||
if(NFAPI_MODE != NFAPI_MODE_AERIAL){
|
if (NFAPI_MODE != NFAPI_MODE_AERIAL) {
|
||||||
// START nFAPI TLVs included in CONFIG.request for IDLE and CONFIGURED states
|
// START nFAPI TLVs included in CONFIG.request for IDLE and CONFIGURED states
|
||||||
retval &= pack_nr_tlv(NFAPI_NR_NFAPI_P7_VNF_ADDRESS_IPV4_TAG,
|
retval &= pack_nr_tlv(NFAPI_NR_NFAPI_P7_VNF_ADDRESS_IPV4_TAG,
|
||||||
&(pNfapiMsg->nfapi_config.p7_vnf_address_ipv4),
|
&(pNfapiMsg->nfapi_config.p7_vnf_address_ipv4),
|
||||||
@@ -1849,7 +1850,7 @@ static uint8_t pack_nr_config_request(void *msg, uint8_t **ppWritePackedMsg, uin
|
|||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t pack_nr_config_response(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config)
|
uint8_t pack_nr_config_response(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config)
|
||||||
{
|
{
|
||||||
nfapi_nr_config_response_scf_t *pNfapiMsg = (nfapi_nr_config_response_scf_t *)msg;
|
nfapi_nr_config_response_scf_t *pNfapiMsg = (nfapi_nr_config_response_scf_t *)msg;
|
||||||
return (push8(pNfapiMsg->error_code, ppWritePackedMsg, end) && push8(pNfapiMsg->num_invalid_tlvs, ppWritePackedMsg, end)
|
return (push8(pNfapiMsg->error_code, ppWritePackedMsg, end) && push8(pNfapiMsg->num_invalid_tlvs, ppWritePackedMsg, end)
|
||||||
@@ -1865,7 +1866,8 @@ static uint8_t pack_config_response(void *msg, uint8_t **ppWritePackedMsg, uint8
|
|||||||
pack_vendor_extension_tlv(pNfapiMsg->vendor_extension, ppWritePackedMsg, end, config) );
|
pack_vendor_extension_tlv(pNfapiMsg->vendor_extension, ppWritePackedMsg, end, config) );
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t pack_nr_start_request(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config) {
|
uint8_t pack_nr_start_request(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config)
|
||||||
|
{
|
||||||
nfapi_nr_start_request_scf_t *pNfapiMsg = (nfapi_nr_start_request_scf_t *)msg;
|
nfapi_nr_start_request_scf_t *pNfapiMsg = (nfapi_nr_start_request_scf_t *)msg;
|
||||||
return pack_vendor_extension_tlv(pNfapiMsg->vendor_extension, ppWritePackedMsg, end, config);
|
return pack_vendor_extension_tlv(pNfapiMsg->vendor_extension, ppWritePackedMsg, end, config);
|
||||||
}
|
}
|
||||||
@@ -1875,10 +1877,11 @@ static uint8_t pack_start_request(void *msg, uint8_t **ppWritePackedMsg, uint8_t
|
|||||||
return pack_vendor_extension_tlv(pNfapiMsg->vendor_extension, ppWritePackedMsg, end, config);
|
return pack_vendor_extension_tlv(pNfapiMsg->vendor_extension, ppWritePackedMsg, end, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t pack_nr_start_response(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config) {
|
uint8_t pack_nr_start_response(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config)
|
||||||
|
{
|
||||||
nfapi_nr_start_response_scf_t *pNfapiMsg = (nfapi_nr_start_response_scf_t *)msg;
|
nfapi_nr_start_response_scf_t *pNfapiMsg = (nfapi_nr_start_response_scf_t *)msg;
|
||||||
return ( push32(pNfapiMsg->error_code, ppWritePackedMsg, end ) &&
|
return (push32(pNfapiMsg->error_code, ppWritePackedMsg, end)
|
||||||
pack_vendor_extension_tlv(pNfapiMsg->vendor_extension, ppWritePackedMsg, end, config) );
|
&& pack_vendor_extension_tlv(pNfapiMsg->vendor_extension, ppWritePackedMsg, end, config));
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t pack_start_response(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config) {
|
static uint8_t pack_start_response(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config) {
|
||||||
@@ -1887,11 +1890,36 @@ static uint8_t pack_start_response(void *msg, uint8_t **ppWritePackedMsg, uint8_
|
|||||||
pack_vendor_extension_tlv(pNfapiMsg->vendor_extension, ppWritePackedMsg, end, config) );
|
pack_vendor_extension_tlv(pNfapiMsg->vendor_extension, ppWritePackedMsg, end, config) );
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t pack_stop_request(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config) {
|
uint8_t pack_nr_stop_request(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config)
|
||||||
|
{
|
||||||
|
nfapi_nr_stop_request_scf_t *pNfapiMsg = (nfapi_nr_stop_request_scf_t *)msg;
|
||||||
|
return pack_vendor_extension_tlv(pNfapiMsg->vendor_extension, ppWritePackedMsg, end, config);
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint8_t pack_stop_request(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config)
|
||||||
|
{
|
||||||
nfapi_stop_request_t *pNfapiMsg = (nfapi_stop_request_t *)msg;
|
nfapi_stop_request_t *pNfapiMsg = (nfapi_stop_request_t *)msg;
|
||||||
return pack_vendor_extension_tlv(pNfapiMsg->vendor_extension, ppWritePackedMsg, end, config);
|
return pack_vendor_extension_tlv(pNfapiMsg->vendor_extension, ppWritePackedMsg, end, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint8_t pack_nr_stop_indication(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config)
|
||||||
|
{
|
||||||
|
nfapi_nr_stop_indication_scf_t *pNfapiMsg = (nfapi_nr_stop_indication_scf_t *)msg;
|
||||||
|
return pack_vendor_extension_tlv(pNfapiMsg->vendor_extension, ppWritePackedMsg, end, config);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t pack_nr_error_indication(void *msg, uint8_t **ppWritePackedMsg, uint8_t *end, nfapi_p4_p5_codec_config_t *config)
|
||||||
|
{
|
||||||
|
nfapi_nr_error_indication_scf_t *pNfapiMsg = (nfapi_nr_error_indication_scf_t *)msg;
|
||||||
|
uint8_t retval = push16(pNfapiMsg->sfn, ppWritePackedMsg, end);
|
||||||
|
retval &= push16(pNfapiMsg->slot, ppWritePackedMsg, end);
|
||||||
|
retval &= push8(pNfapiMsg->message_id, ppWritePackedMsg, end);
|
||||||
|
retval &= push8(pNfapiMsg->error_code, ppWritePackedMsg, end);
|
||||||
|
|
||||||
|
retval &= pack_vendor_extension_tlv(pNfapiMsg->vendor_extension, ppWritePackedMsg, end, config);
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
static uint8_t pack_recevied_interference_power_measurement_value(void *tlv, uint8_t **ppWritePackedMsg, uint8_t *end) {
|
static uint8_t pack_recevied_interference_power_measurement_value(void *tlv, uint8_t **ppWritePackedMsg, uint8_t *end) {
|
||||||
nfapi_received_interference_power_measurement_t *value = (nfapi_received_interference_power_measurement_t *)tlv;
|
nfapi_received_interference_power_measurement_t *value = (nfapi_received_interference_power_measurement_t *)tlv;
|
||||||
return ( push16(value->number_of_resource_blocks, ppWritePackedMsg, end) &&
|
return ( push16(value->number_of_resource_blocks, ppWritePackedMsg, end) &&
|
||||||
@@ -2422,7 +2450,7 @@ static uint8_t unpack_param_request(uint8_t **ppReadPackedMsg, uint8_t *end, voi
|
|||||||
return unpack_tlv_list(NULL, 0, ppReadPackedMsg, end, config, &(pNfapiMsg->vendor_extension));
|
return unpack_tlv_list(NULL, 0, ppReadPackedMsg, end, config, &(pNfapiMsg->vendor_extension));
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t unpack_nr_param_request(uint8_t **ppReadPackedMsg, uint8_t *end, void *msg, nfapi_p4_p5_codec_config_t *config)
|
uint8_t unpack_nr_param_request(uint8_t **ppReadPackedMsg, uint8_t *end, void *msg, nfapi_p4_p5_codec_config_t *config)
|
||||||
{
|
{
|
||||||
nfapi_nr_param_request_scf_t *pNfapiMsg = (nfapi_nr_param_request_scf_t *)msg;
|
nfapi_nr_param_request_scf_t *pNfapiMsg = (nfapi_nr_param_request_scf_t *)msg;
|
||||||
return unpack_nr_tlv_list(NULL, 0, ppReadPackedMsg, end, config, &(pNfapiMsg->vendor_extension));
|
return unpack_nr_tlv_list(NULL, 0, ppReadPackedMsg, end, config, &(pNfapiMsg->vendor_extension));
|
||||||
@@ -2915,7 +2943,7 @@ static uint8_t unpack_config_request(uint8_t **ppReadPackedMsg, uint8_t *end, vo
|
|||||||
&pNfapiMsg->vendor_extension));
|
&pNfapiMsg->vendor_extension));
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t unpack_nr_config_request(uint8_t **ppReadPackedMsg, uint8_t *end, void *msg, nfapi_p4_p5_codec_config_t *config)
|
uint8_t unpack_nr_config_request(uint8_t **ppReadPackedMsg, uint8_t *end, void *msg, nfapi_p4_p5_codec_config_t *config)
|
||||||
{
|
{
|
||||||
// Helper vars for indexed TLVs
|
// Helper vars for indexed TLVs
|
||||||
int prach_root_seq_idx = 0;
|
int prach_root_seq_idx = 0;
|
||||||
@@ -3229,7 +3257,7 @@ uint8_t unpack_nr_config_response(uint8_t **ppReadPackedMsg, uint8_t *end, void
|
|||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t unpack_nr_start_request(uint8_t **ppReadPackedMsg, uint8_t *end, void *msg, nfapi_p4_p5_codec_config_t *config)
|
uint8_t unpack_nr_start_request(uint8_t **ppReadPackedMsg, uint8_t *end, void *msg, nfapi_p4_p5_codec_config_t *config)
|
||||||
{
|
{
|
||||||
nfapi_nr_start_request_scf_t *pNfapiMsg = (nfapi_nr_start_request_scf_t *)msg;
|
nfapi_nr_start_request_scf_t *pNfapiMsg = (nfapi_nr_start_request_scf_t *)msg;
|
||||||
return unpack_nr_tlv_list(NULL, 0, ppReadPackedMsg, end, config, &(pNfapiMsg->vendor_extension));
|
return unpack_nr_tlv_list(NULL, 0, ppReadPackedMsg, end, config, &(pNfapiMsg->vendor_extension));
|
||||||
@@ -3240,17 +3268,22 @@ static uint8_t unpack_start_request(uint8_t **ppReadPackedMsg, uint8_t *end, voi
|
|||||||
return unpack_tlv_list(NULL, 0, ppReadPackedMsg, end, config, &(pNfapiMsg->vendor_extension));
|
return unpack_tlv_list(NULL, 0, ppReadPackedMsg, end, config, &(pNfapiMsg->vendor_extension));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint8_t unpack_nr_start_response(uint8_t **ppReadPackedMsg, uint8_t *end, void *msg, nfapi_p4_p5_codec_config_t *config)
|
||||||
|
{
|
||||||
|
nfapi_nr_start_response_scf_t *pNfapiMsg = (nfapi_nr_start_response_scf_t *)msg;
|
||||||
|
return (pull32(ppReadPackedMsg, &pNfapiMsg->error_code, end)
|
||||||
|
&& unpack_nr_tlv_list(NULL, 0, ppReadPackedMsg, end, config, &(pNfapiMsg->vendor_extension)));
|
||||||
|
}
|
||||||
static uint8_t unpack_start_response(uint8_t **ppReadPackedMsg, uint8_t *end, void *msg, nfapi_p4_p5_codec_config_t *config) {
|
static uint8_t unpack_start_response(uint8_t **ppReadPackedMsg, uint8_t *end, void *msg, nfapi_p4_p5_codec_config_t *config) {
|
||||||
nfapi_start_response_t *pNfapiMsg = (nfapi_start_response_t *)msg;
|
nfapi_start_response_t *pNfapiMsg = (nfapi_start_response_t *)msg;
|
||||||
return ( pull32(ppReadPackedMsg, &pNfapiMsg->error_code, end) &&
|
return ( pull32(ppReadPackedMsg, &pNfapiMsg->error_code, end) &&
|
||||||
unpack_tlv_list(NULL, 0, ppReadPackedMsg, end, config, &(pNfapiMsg->vendor_extension)));
|
unpack_tlv_list(NULL, 0, ppReadPackedMsg, end, config, &(pNfapiMsg->vendor_extension)));
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t unpack_nr_start_response(uint8_t **ppReadPackedMsg, uint8_t *end, void *msg, nfapi_p4_p5_codec_config_t *config)
|
uint8_t unpack_nr_stop_request(uint8_t **ppReadPackedMsg, uint8_t *end, void *msg, nfapi_p4_p5_codec_config_t *config)
|
||||||
{
|
{
|
||||||
nfapi_nr_start_response_scf_t *pNfapiMsg = (nfapi_nr_start_response_scf_t *)msg;
|
nfapi_nr_stop_request_scf_t *pNfapiMsg = (nfapi_nr_stop_request_scf_t *)msg;
|
||||||
return (pull32(ppReadPackedMsg, &pNfapiMsg->error_code, end)
|
return unpack_nr_tlv_list(NULL, 0, ppReadPackedMsg, end, config, &(pNfapiMsg->vendor_extension));
|
||||||
&& unpack_nr_tlv_list(NULL, 0, ppReadPackedMsg, end, config, &(pNfapiMsg->vendor_extension)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t unpack_stop_request(uint8_t **ppReadPackedMsg, uint8_t *end, void *msg, nfapi_p4_p5_codec_config_t *config) {
|
static uint8_t unpack_stop_request(uint8_t **ppReadPackedMsg, uint8_t *end, void *msg, nfapi_p4_p5_codec_config_t *config) {
|
||||||
@@ -3258,6 +3291,23 @@ static uint8_t unpack_stop_request(uint8_t **ppReadPackedMsg, uint8_t *end, void
|
|||||||
return unpack_tlv_list(NULL, 0, ppReadPackedMsg, end, config, &(pNfapiMsg->vendor_extension));
|
return unpack_tlv_list(NULL, 0, ppReadPackedMsg, end, config, &(pNfapiMsg->vendor_extension));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint8_t unpack_nr_stop_indication(uint8_t **ppReadPackedMsg, uint8_t *end, void *msg, nfapi_p4_p5_codec_config_t *config)
|
||||||
|
{
|
||||||
|
nfapi_nr_stop_indication_scf_t *pNfapiMsg = (nfapi_nr_stop_indication_scf_t *)msg;
|
||||||
|
return unpack_nr_tlv_list(NULL, 0, ppReadPackedMsg, end, config, &(pNfapiMsg->vendor_extension));
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t unpack_nr_error_indication(uint8_t **ppReadPackedMsg, uint8_t *end, void *msg, nfapi_p4_p5_codec_config_t *config)
|
||||||
|
{
|
||||||
|
nfapi_nr_error_indication_scf_t *pNfapiMsg = (nfapi_nr_error_indication_scf_t *)msg;
|
||||||
|
uint8_t retval = pull16(ppReadPackedMsg, &pNfapiMsg->sfn, end);
|
||||||
|
retval &= pull16(ppReadPackedMsg, &pNfapiMsg->slot, end);
|
||||||
|
retval &= pull8(ppReadPackedMsg, &pNfapiMsg->message_id, end);
|
||||||
|
retval &= pull8(ppReadPackedMsg, &pNfapiMsg->error_code, end);
|
||||||
|
retval &= unpack_nr_tlv_list(NULL, 0, ppReadPackedMsg, end, config, &(pNfapiMsg->vendor_extension));
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
static uint8_t unpack_received_interference_power_measurement_value(void *tlv, uint8_t **ppReadPackedMsg, uint8_t *end) {
|
static uint8_t unpack_received_interference_power_measurement_value(void *tlv, uint8_t **ppReadPackedMsg, uint8_t *end) {
|
||||||
nfapi_received_interference_power_measurement_t *value = (nfapi_received_interference_power_measurement_t *)tlv;
|
nfapi_received_interference_power_measurement_t *value = (nfapi_received_interference_power_measurement_t *)tlv;
|
||||||
return ( pull16(ppReadPackedMsg, &value->number_of_resource_blocks, end) &&
|
return ( pull16(ppReadPackedMsg, &value->number_of_resource_blocks, end) &&
|
||||||
|
|||||||
@@ -214,21 +214,21 @@ typedef struct nfapi_pnf_config
|
|||||||
* STOP.request. This can be done in the call back.
|
* 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 (*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);
|
int (*nr_stop_req)(nfapi_pnf_config_t* config, nfapi_pnf_phy_config_t* phy, nfapi_nr_stop_request_scf_t* req);
|
||||||
|
|
||||||
/*! A callback for the MEASUREMENT.request
|
/*! A callback for the MEASUREMENT.request
|
||||||
* \param config A pointer to the pnf configuration
|
* \param config A pointer to the pnf configuration
|
||||||
* \param phy A pointer to the pnf phy configuration
|
* \param phy A pointer to the pnf phy configuration
|
||||||
* \param req A data structure for the decoded MEASUREMENT.request. This will have
|
* \param req A data structure for the decoded MEASUREMENT.request. This will have
|
||||||
* been allocated on the stack
|
* been allocated on the stack
|
||||||
* \return not currently used
|
* \return not currently used
|
||||||
*
|
*
|
||||||
* The client is expected to send the MEASUREMENT.response after receiving the
|
* The client is expected to send the MEASUREMENT.response after receiving the
|
||||||
* MEASUREMENT.request. This can be done in the call back.
|
* MEASUREMENT.request. This can be done in the call back.
|
||||||
*/
|
*/
|
||||||
int (*measurement_req)(nfapi_pnf_config_t* config, nfapi_pnf_phy_config_t* phy, nfapi_measurement_request_t* req);
|
int (*measurement_req)(nfapi_pnf_config_t* config, nfapi_pnf_phy_config_t* phy, nfapi_measurement_request_t* req);
|
||||||
|
|
||||||
/*! A callback for the RSSI.request
|
/*! A callback for the RSSI.request
|
||||||
* \param config A pointer to the pnf configuration
|
* \param config A pointer to the pnf configuration
|
||||||
* \param phy A pointer to the pnf phy configuration
|
* \param phy A pointer to the pnf phy configuration
|
||||||
* \param req A data structure for the decoded RSSI.request. This will have
|
* \param req A data structure for the decoded RSSI.request. This will have
|
||||||
|
|||||||
@@ -937,75 +937,58 @@ void pnf_handle_stop_request(pnf_t* pnf, void *pRecvMsg, int recvMsgLen)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void pnf_nr_handle_stop_request(pnf_t* pnf, void *pRecvMsg, int recvMsgLen)
|
void pnf_nr_handle_stop_request(pnf_t* pnf, void* pRecvMsg, int recvMsgLen)
|
||||||
{
|
{
|
||||||
// ensure it's valid
|
// ensure it's valid
|
||||||
if (pRecvMsg == NULL || pnf == NULL)
|
if (pRecvMsg == NULL || pnf == NULL) {
|
||||||
{
|
NFAPI_TRACE(NFAPI_TRACE_ERROR, "%s: NULL parameters\n", __FUNCTION__);
|
||||||
NFAPI_TRACE(NFAPI_TRACE_ERROR, "%s: NULL parameters\n", __FUNCTION__);
|
} else {
|
||||||
}
|
nfapi_nr_stop_request_scf_t req;
|
||||||
else
|
|
||||||
{
|
|
||||||
nfapi_nr_stop_request_t req;
|
|
||||||
|
|
||||||
NFAPI_TRACE(NFAPI_TRACE_INFO, "STOP.request received\n");
|
NFAPI_TRACE(NFAPI_TRACE_INFO, "STOP.request received\n");
|
||||||
|
|
||||||
nfapi_pnf_config_t* config = &(pnf->_public);
|
nfapi_pnf_config_t* config = &(pnf->_public);
|
||||||
|
|
||||||
// unpack the message
|
// unpack the message
|
||||||
if (nfapi_nr_p5_message_unpack(pRecvMsg, recvMsgLen, &req, sizeof(req), &config->codec_config) >= 0)
|
if (nfapi_nr_p5_message_unpack(pRecvMsg, recvMsgLen, &req, sizeof(req), &config->codec_config) >= 0) {
|
||||||
{
|
if (config->state == NFAPI_PNF_RUNNING) {
|
||||||
if(config->state == NFAPI_PNF_RUNNING)
|
nfapi_pnf_phy_config_t* phy = nfapi_pnf_phy_config_find(config, req.header.phy_id);
|
||||||
{
|
if (phy) {
|
||||||
nfapi_pnf_phy_config_t* phy = nfapi_pnf_phy_config_find(config, req.header.phy_id);
|
if (phy->state != NFAPI_PNF_PHY_RUNNING) {
|
||||||
if(phy)
|
if (config->nr_stop_req) {
|
||||||
{
|
(config->nr_stop_req)(config, phy, &req);
|
||||||
if(phy->state != NFAPI_PNF_PHY_RUNNING)
|
}
|
||||||
{
|
} else {
|
||||||
if(config->nr_stop_req)
|
nfapi_stop_response_t resp;
|
||||||
{
|
memset(&resp, 0, sizeof(resp));
|
||||||
(config->nr_stop_req)(config, phy, &req);
|
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;
|
||||||
else
|
nfapi_pnf_stop_resp(config, &resp);
|
||||||
{
|
}
|
||||||
nfapi_stop_response_t resp;
|
} else {
|
||||||
memset(&resp, 0, sizeof(resp));
|
nfapi_stop_response_t resp;
|
||||||
resp.header.message_id = NFAPI_NR_PHY_MSG_TYPE_STOP_RESPONSE;
|
memset(&resp, 0, sizeof(resp));
|
||||||
resp.header.phy_id = req.header.phy_id;
|
resp.header.message_id = NFAPI_NR_PHY_MSG_TYPE_STOP_RESPONSE;
|
||||||
resp.error_code = NFAPI_MSG_INVALID_STATE;
|
resp.header.phy_id = req.header.phy_id;
|
||||||
nfapi_pnf_stop_resp(config, &resp);
|
resp.error_code = NFAPI_MSG_INVALID_CONFIG;
|
||||||
}
|
nfapi_pnf_stop_resp(config, &resp);
|
||||||
}
|
}
|
||||||
else
|
} else {
|
||||||
{
|
nfapi_stop_response_t resp;
|
||||||
nfapi_stop_response_t resp;
|
memset(&resp, 0, sizeof(resp));
|
||||||
memset(&resp, 0, sizeof(resp));
|
resp.header.message_id = NFAPI_NR_PHY_MSG_TYPE_STOP_RESPONSE;
|
||||||
resp.header.message_id = NFAPI_NR_PHY_MSG_TYPE_STOP_RESPONSE;
|
resp.header.phy_id = req.header.phy_id;
|
||||||
resp.header.phy_id = req.header.phy_id;
|
resp.error_code = NFAPI_MSG_INVALID_STATE;
|
||||||
resp.error_code = NFAPI_MSG_INVALID_CONFIG;
|
nfapi_pnf_stop_resp(config, &resp);
|
||||||
nfapi_pnf_stop_resp(config, &resp);
|
}
|
||||||
}
|
} else {
|
||||||
}
|
NFAPI_TRACE(NFAPI_TRACE_ERROR, "%s: Unpack message failed, ignoring\n", __FUNCTION__);
|
||||||
else
|
}
|
||||||
{
|
|
||||||
nfapi_stop_response_t resp;
|
|
||||||
memset(&resp, 0, sizeof(resp));
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
NFAPI_TRACE(NFAPI_TRACE_ERROR, "%s: Unpack message failed, ignoring\n", __FUNCTION__);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(req.vendor_extension)
|
if (req.vendor_extension)
|
||||||
pnf->_public.codec_config.deallocate(req.vendor_extension);
|
pnf->_public.codec_config.deallocate(req.vendor_extension);
|
||||||
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void pnf_handle_measurement_request(pnf_t* pnf, void *pRecvMsg, int recvMsgLen)
|
void pnf_handle_measurement_request(pnf_t* pnf, void *pRecvMsg, int recvMsgLen)
|
||||||
|
|||||||
Reference in New Issue
Block a user