From 213c26bc093caf59ccf810a498c59a9ec6346397 Mon Sep 17 00:00:00 2001 From: rnagaraj Date: Fri, 24 Oct 2025 17:01:21 +0530 Subject: [PATCH 1/3] Making DPDCfgApplyDPDUserLookupTableInterleavedIQ as special --- generated/nirfmxspecan/nirfmxspecan.proto | 1 + .../nirfmxspecan/nirfmxspecan_client.cpp | 3 +- generated/nirfmxspecan/nirfmxspecan_client.h | 2 +- .../nirfmxspecan/nirfmxspecan_service.cpp | 43 ------------ .../metadata/nirfmxspecan/functions_addon.py | 49 +++++++++++++ source/custom/nirfmxspecan_service.custom.cpp | 70 ++++++++++++++++--- 6 files changed, 112 insertions(+), 56 deletions(-) diff --git a/generated/nirfmxspecan/nirfmxspecan.proto b/generated/nirfmxspecan/nirfmxspecan.proto index 21fc01d28..c65e64108 100644 --- a/generated/nirfmxspecan/nirfmxspecan.proto +++ b/generated/nirfmxspecan/nirfmxspecan.proto @@ -4841,6 +4841,7 @@ message DPDCfgApplyDPDUserLookupTableInterleavedIQRequest { string selector_string = 2; repeated float lut_input_powers = 3; repeated float lut_complex_gains = 4; + int32 array_size = 5; } message DPDCfgApplyDPDUserLookupTableInterleavedIQResponse { diff --git a/generated/nirfmxspecan/nirfmxspecan_client.cpp b/generated/nirfmxspecan/nirfmxspecan_client.cpp index 9ef2eed65..c5cd00946 100644 --- a/generated/nirfmxspecan/nirfmxspecan_client.cpp +++ b/generated/nirfmxspecan/nirfmxspecan_client.cpp @@ -3161,7 +3161,7 @@ dpd_cfg_apply_dpd_user_lookup_table(const StubPtr& stub, const nidevice_grpc::Se } DPDCfgApplyDPDUserLookupTableInterleavedIQResponse -dpd_cfg_apply_dpd_user_lookup_table_interleaved_iq(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const std::vector& lut_input_powers, const std::vector& lut_complex_gains) +dpd_cfg_apply_dpd_user_lookup_table_interleaved_iq(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const std::vector& lut_input_powers, const std::vector& lut_complex_gains, const pb::int32& array_size) { ::grpc::ClientContext context; @@ -3170,6 +3170,7 @@ dpd_cfg_apply_dpd_user_lookup_table_interleaved_iq(const StubPtr& stub, const ni request.set_selector_string(selector_string); copy_array(lut_input_powers, request.mutable_lut_input_powers()); copy_array(lut_complex_gains, request.mutable_lut_complex_gains()); + request.set_array_size(array_size); auto response = DPDCfgApplyDPDUserLookupTableInterleavedIQResponse{}; diff --git a/generated/nirfmxspecan/nirfmxspecan_client.h b/generated/nirfmxspecan/nirfmxspecan_client.h index 4e2e8d269..f95aa85d4 100644 --- a/generated/nirfmxspecan/nirfmxspecan_client.h +++ b/generated/nirfmxspecan/nirfmxspecan_client.h @@ -161,7 +161,7 @@ DPDCfgApplyDPDUserDPDPolynomialResponse dpd_cfg_apply_dpd_user_dpd_polynomial(co DPDCfgApplyDPDUserDPDPolynomialInterleavedIQResponse dpd_cfg_apply_dpd_user_dpd_polynomial_interleaved_iq(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const std::vector& dpd_polynomial); DPDCfgApplyDPDUserDPDPolynomialSplitResponse dpd_cfg_apply_dpd_user_dpd_polynomial_split(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const std::vector& dpd_polynomial_i, const std::vector& dpd_polynomial_q); DPDCfgApplyDPDUserLookupTableResponse dpd_cfg_apply_dpd_user_lookup_table(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const std::vector& lut_input_powers, const std::vector& lut_complex_gains); -DPDCfgApplyDPDUserLookupTableInterleavedIQResponse dpd_cfg_apply_dpd_user_lookup_table_interleaved_iq(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const std::vector& lut_input_powers, const std::vector& lut_complex_gains); +DPDCfgApplyDPDUserLookupTableInterleavedIQResponse dpd_cfg_apply_dpd_user_lookup_table_interleaved_iq(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const std::vector& lut_input_powers, const std::vector& lut_complex_gains, const pb::int32& array_size); DPDCfgApplyDPDUserLookupTableSplitResponse dpd_cfg_apply_dpd_user_lookup_table_split(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const std::vector& lut_input_powers, const std::vector& lut_complex_gains_i, const std::vector& lut_complex_gains_q); DPDCfgAveragingResponse dpd_cfg_averaging(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const simple_variant& averaging_enabled, const pb::int32& averaging_count); DPDCfgDPDModelResponse dpd_cfg_dpd_model(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const simple_variant& dpd_model); diff --git a/generated/nirfmxspecan/nirfmxspecan_service.cpp b/generated/nirfmxspecan/nirfmxspecan_service.cpp index 186b39845..2417c2ec5 100644 --- a/generated/nirfmxspecan/nirfmxspecan_service.cpp +++ b/generated/nirfmxspecan/nirfmxspecan_service.cpp @@ -5622,49 +5622,6 @@ namespace nirfmxspecan_grpc { } } - //--------------------------------------------------------------------- - //--------------------------------------------------------------------- - ::grpc::Status NiRFmxSpecAnService::DPDCfgApplyDPDUserLookupTableInterleavedIQ(::grpc::ServerContext* context, const DPDCfgApplyDPDUserLookupTableInterleavedIQRequest* request, DPDCfgApplyDPDUserLookupTableInterleavedIQResponse* response) - { - if (context->IsCancelled()) { - return ::grpc::Status::CANCELLED; - } - try { - auto instrument_grpc_session = request->instrument(); - niRFmxInstrHandle instrument = session_repository_->access_session(instrument_grpc_session.name()); - auto selector_string_mbcs = convert_from_grpc(request->selector_string()); - char* selector_string = (char*)selector_string_mbcs.c_str(); - auto lut_input_powers = const_cast(request->lut_input_powers().data()); - auto lut_complex_gains = const_cast(request->lut_complex_gains().data()); - auto array_size_determine_from_sizes = std::array - { - request->lut_input_powers_size(), - request->lut_complex_gains_size() - }; - const auto array_size_size_calculation = calculate_linked_array_size(array_size_determine_from_sizes, true); - - if (array_size_size_calculation.match_state == MatchState::MISMATCH) { - return ::grpc::Status(::grpc::INVALID_ARGUMENT, "The sizes of linked repeated fields [lut_input_powers, lut_complex_gains] do not match"); - } - // NULL out optional params with zero sizes. - if (array_size_size_calculation.match_state == MatchState::MATCH_OR_ZERO) { - lut_input_powers = request->lut_input_powers_size() ? std::move(lut_input_powers) : nullptr; - lut_complex_gains = request->lut_complex_gains_size() ? std::move(lut_complex_gains) : nullptr; - } - auto array_size = array_size_size_calculation.size; - - auto status = library_->DPDCfgApplyDPDUserLookupTableInterleavedIQ(instrument, selector_string, lut_input_powers, lut_complex_gains, array_size); - if (!status_ok(status)) { - return ConvertApiErrorStatusForNiRFmxInstrHandle(context, status, instrument); - } - response->set_status(status); - return ::grpc::Status::OK; - } - catch (nidevice_grpc::NonDriverException& ex) { - return ex.GetStatus(); - } - } - //--------------------------------------------------------------------- //--------------------------------------------------------------------- ::grpc::Status NiRFmxSpecAnService::DPDCfgApplyDPDUserLookupTableSplit(::grpc::ServerContext* context, const DPDCfgApplyDPDUserLookupTableSplitRequest* request, DPDCfgApplyDPDUserLookupTableSplitResponse* response) diff --git a/source/codegen/metadata/nirfmxspecan/functions_addon.py b/source/codegen/metadata/nirfmxspecan/functions_addon.py index 2120c22de..a3f9c5ed7 100644 --- a/source/codegen/metadata/nirfmxspecan/functions_addon.py +++ b/source/codegen/metadata/nirfmxspecan/functions_addon.py @@ -55,4 +55,53 @@ ], 'returns': 'int32' }, + 'DPDCfgApplyDPDUserLookupTableInterleavedIQ': { + 'cname': 'RFmxSpecAn_DPDCfgApplyDPDUserLookupTable', + 'codegen_method': 'CustomCode', + 'parameters': [ + { + 'direction': 'in', + 'grpc_name': 'instrument', + 'name': 'instrumentHandle', + 'type': 'niRFmxInstrHandle' + }, + { + 'direction': 'in', + 'name': 'selectorString', + 'type': 'char[]' + }, + { + 'direction': 'in', + 'name': 'lutInputPowers', + 'size': { + 'mechanism': 'custom-code', + 'tags': [ + 'optional' + ], + 'value': 'arraySize' + }, + 'type': 'float32[]' + }, + { + 'direction': 'in', + 'name': 'lutComplexGains', + 'size': { + 'mechanism': 'custom-code', + 'tags': [ + 'optional' + ], + 'value': 'arraySize' + }, + 'type': 'float32[]', + 'value_converted_to_c_representation': 'reinterpret_cast(lutComplexGains)' + }, + { + 'direction': 'in', + 'name': 'arraySize', + 'type': 'int32', + 'value_converted_to_c_representation': 'arraySize/2' + } + ], + 'returns': 'int32' + }, } diff --git a/source/custom/nirfmxspecan_service.custom.cpp b/source/custom/nirfmxspecan_service.custom.cpp index 5a77700f7..f7b69c690 100644 --- a/source/custom/nirfmxspecan_service.custom.cpp +++ b/source/custom/nirfmxspecan_service.custom.cpp @@ -1,18 +1,66 @@ #include +using nidevice_grpc::converters::convert_to_grpc; +using nidevice_grpc::converters::convert_from_grpc; +using nidevice_grpc::converters::calculate_linked_array_size; +using nidevice_grpc::converters::MatchState; namespace nirfmxspecan_grpc { -::grpc::Status NiRFmxSpecAnService::ConvertApiErrorStatusForNiRFmxInstrHandle(::grpc::ServerContextBase* context, int32_t status, niRFmxInstrHandle instrumentHandle) -{ - ViStatus error_code{}; - std::string description(nidevice_grpc::kMaxGrpcErrorDescriptionSize, '\0'); - // Try first to get the most recent error with a dynamic message. - library_->GetError(instrumentHandle, &error_code, nidevice_grpc::kMaxGrpcErrorDescriptionSize, &description[0]); - if (error_code != status) { - // Since another thread has changed the status, fall back to the static message lookup. - library_->GetErrorString(instrumentHandle, status, nidevice_grpc::kMaxGrpcErrorDescriptionSize, &description[0]); + // Returns true if it's safe to use outputs of a method with the given status. + inline bool status_ok(int32 status) + { + return status >= 0; + } + + ::grpc::Status NiRFmxSpecAnService::ConvertApiErrorStatusForNiRFmxInstrHandle(::grpc::ServerContextBase* context, int32_t status, niRFmxInstrHandle instrumentHandle) + { + ViStatus error_code{}; + std::string description(nidevice_grpc::kMaxGrpcErrorDescriptionSize, '\0'); + // Try first to get the most recent error with a dynamic message. + library_->GetError(instrumentHandle, &error_code, nidevice_grpc::kMaxGrpcErrorDescriptionSize, &description[0]); + if (error_code != status) { + // Since another thread has changed the status, fall back to the static message lookup. + library_->GetErrorString(instrumentHandle, status, nidevice_grpc::kMaxGrpcErrorDescriptionSize, &description[0]); + } + return nidevice_grpc::ApiErrorAndDescriptionToStatus(context, status, description); + } + + //--------------------------------------------------------------------- + //--------------------------------------------------------------------- + ::grpc::Status NiRFmxSpecAnService::DPDCfgApplyDPDUserLookupTableInterleavedIQ(::grpc::ServerContext*context, const DPDCfgApplyDPDUserLookupTableInterleavedIQRequest* request, DPDCfgApplyDPDUserLookupTableInterleavedIQResponse* response) + { + if (context->IsCancelled()) { + return ::grpc::Status::CANCELLED; + } + try { + auto instrument_grpc_session = request->instrument(); + niRFmxInstrHandle instrument = session_repository_->access_session(instrument_grpc_session.name()); + auto selector_string_mbcs = convert_from_grpc(request->selector_string()); + char* selector_string = (char*)selector_string_mbcs.c_str(); + auto lut_input_powers = const_cast(request->lut_input_powers().data()); + auto lut_complex_gains = const_cast(request->lut_complex_gains().data()); + auto array_size = 0; + if (request->lut_input_powers_size()) { + array_size = request->lut_input_powers_size() * 2; + if (request->lut_complex_gains_size()) { + if (request->lut_complex_gains_size() != array_size) { + return ::grpc::Status(::grpc::INVALID_ARGUMENT, "lut_complex_gains size must be twice the size of lut_input_powers."); + } + } + } + else if (request->lut_complex_gains_size()) { + array_size = request->lut_complex_gains_size(); + } + auto status = library_->DPDCfgApplyDPDUserLookupTableInterleavedIQ(instrument, selector_string, lut_input_powers, lut_complex_gains, array_size); + if (!status_ok(status)) { + return ConvertApiErrorStatusForNiRFmxInstrHandle(context, status, instrument); + } + response->set_status(status); + return ::grpc::Status::OK; + } + catch (nidevice_grpc::NonDriverException& ex) { + return ex.GetStatus(); + } } - return nidevice_grpc::ApiErrorAndDescriptionToStatus(context, status, description); -} } // namespace nirfmxspecan_grpc From fe7549129d87f83e638cd111e5864997fff1eb46 Mon Sep 17 00:00:00 2001 From: rnagaraj Date: Mon, 27 Oct 2025 12:36:36 +0530 Subject: [PATCH 2/3] Correcting the special metadata in functions_addon.py of nifrmxspecan and generating proto file --- generated/nirfmxspecan/nirfmxspecan.proto | 1 - generated/nirfmxspecan/nirfmxspecan_client.cpp | 3 +-- generated/nirfmxspecan/nirfmxspecan_client.h | 2 +- generated/nirfmxspecan/nirfmxspecan_compilation_test.cpp | 4 ++-- generated/nirfmxspecan/nirfmxspecan_library.cpp | 4 ++-- generated/nirfmxspecan/nirfmxspecan_library.h | 2 +- generated/nirfmxspecan/nirfmxspecan_library_interface.h | 2 +- generated/nirfmxspecan/nirfmxspecan_mock_library.h | 2 +- source/codegen/metadata/nirfmxspecan/functions_addon.py | 6 ------ 9 files changed, 9 insertions(+), 17 deletions(-) diff --git a/generated/nirfmxspecan/nirfmxspecan.proto b/generated/nirfmxspecan/nirfmxspecan.proto index c65e64108..21fc01d28 100644 --- a/generated/nirfmxspecan/nirfmxspecan.proto +++ b/generated/nirfmxspecan/nirfmxspecan.proto @@ -4841,7 +4841,6 @@ message DPDCfgApplyDPDUserLookupTableInterleavedIQRequest { string selector_string = 2; repeated float lut_input_powers = 3; repeated float lut_complex_gains = 4; - int32 array_size = 5; } message DPDCfgApplyDPDUserLookupTableInterleavedIQResponse { diff --git a/generated/nirfmxspecan/nirfmxspecan_client.cpp b/generated/nirfmxspecan/nirfmxspecan_client.cpp index c5cd00946..9ef2eed65 100644 --- a/generated/nirfmxspecan/nirfmxspecan_client.cpp +++ b/generated/nirfmxspecan/nirfmxspecan_client.cpp @@ -3161,7 +3161,7 @@ dpd_cfg_apply_dpd_user_lookup_table(const StubPtr& stub, const nidevice_grpc::Se } DPDCfgApplyDPDUserLookupTableInterleavedIQResponse -dpd_cfg_apply_dpd_user_lookup_table_interleaved_iq(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const std::vector& lut_input_powers, const std::vector& lut_complex_gains, const pb::int32& array_size) +dpd_cfg_apply_dpd_user_lookup_table_interleaved_iq(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const std::vector& lut_input_powers, const std::vector& lut_complex_gains) { ::grpc::ClientContext context; @@ -3170,7 +3170,6 @@ dpd_cfg_apply_dpd_user_lookup_table_interleaved_iq(const StubPtr& stub, const ni request.set_selector_string(selector_string); copy_array(lut_input_powers, request.mutable_lut_input_powers()); copy_array(lut_complex_gains, request.mutable_lut_complex_gains()); - request.set_array_size(array_size); auto response = DPDCfgApplyDPDUserLookupTableInterleavedIQResponse{}; diff --git a/generated/nirfmxspecan/nirfmxspecan_client.h b/generated/nirfmxspecan/nirfmxspecan_client.h index f95aa85d4..4e2e8d269 100644 --- a/generated/nirfmxspecan/nirfmxspecan_client.h +++ b/generated/nirfmxspecan/nirfmxspecan_client.h @@ -161,7 +161,7 @@ DPDCfgApplyDPDUserDPDPolynomialResponse dpd_cfg_apply_dpd_user_dpd_polynomial(co DPDCfgApplyDPDUserDPDPolynomialInterleavedIQResponse dpd_cfg_apply_dpd_user_dpd_polynomial_interleaved_iq(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const std::vector& dpd_polynomial); DPDCfgApplyDPDUserDPDPolynomialSplitResponse dpd_cfg_apply_dpd_user_dpd_polynomial_split(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const std::vector& dpd_polynomial_i, const std::vector& dpd_polynomial_q); DPDCfgApplyDPDUserLookupTableResponse dpd_cfg_apply_dpd_user_lookup_table(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const std::vector& lut_input_powers, const std::vector& lut_complex_gains); -DPDCfgApplyDPDUserLookupTableInterleavedIQResponse dpd_cfg_apply_dpd_user_lookup_table_interleaved_iq(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const std::vector& lut_input_powers, const std::vector& lut_complex_gains, const pb::int32& array_size); +DPDCfgApplyDPDUserLookupTableInterleavedIQResponse dpd_cfg_apply_dpd_user_lookup_table_interleaved_iq(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const std::vector& lut_input_powers, const std::vector& lut_complex_gains); DPDCfgApplyDPDUserLookupTableSplitResponse dpd_cfg_apply_dpd_user_lookup_table_split(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const std::vector& lut_input_powers, const std::vector& lut_complex_gains_i, const std::vector& lut_complex_gains_q); DPDCfgAveragingResponse dpd_cfg_averaging(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const simple_variant& averaging_enabled, const pb::int32& averaging_count); DPDCfgDPDModelResponse dpd_cfg_dpd_model(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const simple_variant& dpd_model); diff --git a/generated/nirfmxspecan/nirfmxspecan_compilation_test.cpp b/generated/nirfmxspecan/nirfmxspecan_compilation_test.cpp index 536688deb..6b89b9249 100644 --- a/generated/nirfmxspecan/nirfmxspecan_compilation_test.cpp +++ b/generated/nirfmxspecan/nirfmxspecan_compilation_test.cpp @@ -702,9 +702,9 @@ int32 DPDCfgApplyDPDUserLookupTable(niRFmxInstrHandle instrumentHandle, char sel return RFmxSpecAn_DPDCfgApplyDPDUserLookupTable(instrumentHandle, selectorString, lutInputPowers, lutComplexGains, arraySize); } -int32 DPDCfgApplyDPDUserLookupTableInterleavedIQ(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGains[], int32 arraySize) +int32 DPDCfgApplyDPDUserLookupTableInterleavedIQ(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGains[]) { - return RFmxSpecAn_DPDCfgApplyDPDUserLookupTable(instrumentHandle, selectorString, lutInputPowers, reinterpret_cast(lutComplexGains), arraySize/2); + return RFmxSpecAn_DPDCfgApplyDPDUserLookupTable(instrumentHandle, selectorString, lutInputPowers, reinterpret_cast(lutComplexGains)); } int32 DPDCfgApplyDPDUserLookupTableSplit(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGainsI[], float32 lutComplexGainsQ[], int32 arraySize) diff --git a/generated/nirfmxspecan/nirfmxspecan_library.cpp b/generated/nirfmxspecan/nirfmxspecan_library.cpp index 29d8a8cca..d1d736aa6 100644 --- a/generated/nirfmxspecan/nirfmxspecan_library.cpp +++ b/generated/nirfmxspecan/nirfmxspecan_library.cpp @@ -1643,12 +1643,12 @@ int32 NiRFmxSpecAnLibrary::DPDCfgApplyDPDUserLookupTable(niRFmxInstrHandle instr return function_pointers_.DPDCfgApplyDPDUserLookupTable(instrumentHandle, selectorString, lutInputPowers, lutComplexGains, arraySize); } -int32 NiRFmxSpecAnLibrary::DPDCfgApplyDPDUserLookupTableInterleavedIQ(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGains[], int32 arraySize) +int32 NiRFmxSpecAnLibrary::DPDCfgApplyDPDUserLookupTableInterleavedIQ(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGains[]) { if (!function_pointers_.DPDCfgApplyDPDUserLookupTableInterleavedIQ) { throw nidevice_grpc::LibraryLoadException("Could not find RFmxSpecAn_DPDCfgApplyDPDUserLookupTable."); } - return function_pointers_.DPDCfgApplyDPDUserLookupTableInterleavedIQ(instrumentHandle, selectorString, lutInputPowers, reinterpret_cast(lutComplexGains), arraySize/2); + return function_pointers_.DPDCfgApplyDPDUserLookupTableInterleavedIQ(instrumentHandle, selectorString, lutInputPowers, reinterpret_cast(lutComplexGains)); } int32 NiRFmxSpecAnLibrary::DPDCfgApplyDPDUserLookupTableSplit(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGainsI[], float32 lutComplexGainsQ[], int32 arraySize) diff --git a/generated/nirfmxspecan/nirfmxspecan_library.h b/generated/nirfmxspecan/nirfmxspecan_library.h index bc36c4116..86adb0afe 100644 --- a/generated/nirfmxspecan/nirfmxspecan_library.h +++ b/generated/nirfmxspecan/nirfmxspecan_library.h @@ -160,7 +160,7 @@ class NiRFmxSpecAnLibrary : public nirfmxspecan_grpc::NiRFmxSpecAnLibraryInterfa int32 DPDCfgApplyDPDUserDPDPolynomialInterleavedIQ(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 dpdPolynomial[], int32 arraySize) override; int32 DPDCfgApplyDPDUserDPDPolynomialSplit(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 dpdPolynomialI[], float32 dpdPolynomialQ[], int32 arraySize) override; int32 DPDCfgApplyDPDUserLookupTable(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], NIComplexSingle lutComplexGains[], int32 arraySize) override; - int32 DPDCfgApplyDPDUserLookupTableInterleavedIQ(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGains[], int32 arraySize) override; + int32 DPDCfgApplyDPDUserLookupTableInterleavedIQ(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGains[]) override; int32 DPDCfgApplyDPDUserLookupTableSplit(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGainsI[], float32 lutComplexGainsQ[], int32 arraySize) override; int32 DPDCfgAveraging(niRFmxInstrHandle instrumentHandle, char selectorString[], int32 averagingEnabled, int32 averagingCount) override; int32 DPDCfgDPDModel(niRFmxInstrHandle instrumentHandle, char selectorString[], int32 dpdModel) override; diff --git a/generated/nirfmxspecan/nirfmxspecan_library_interface.h b/generated/nirfmxspecan/nirfmxspecan_library_interface.h index 70cabdd44..e5da3dcab 100644 --- a/generated/nirfmxspecan/nirfmxspecan_library_interface.h +++ b/generated/nirfmxspecan/nirfmxspecan_library_interface.h @@ -154,7 +154,7 @@ class NiRFmxSpecAnLibraryInterface { virtual int32 DPDCfgApplyDPDUserDPDPolynomialInterleavedIQ(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 dpdPolynomial[], int32 arraySize) = 0; virtual int32 DPDCfgApplyDPDUserDPDPolynomialSplit(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 dpdPolynomialI[], float32 dpdPolynomialQ[], int32 arraySize) = 0; virtual int32 DPDCfgApplyDPDUserLookupTable(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], NIComplexSingle lutComplexGains[], int32 arraySize) = 0; - virtual int32 DPDCfgApplyDPDUserLookupTableInterleavedIQ(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGains[], int32 arraySize) = 0; + virtual int32 DPDCfgApplyDPDUserLookupTableInterleavedIQ(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGains[]) = 0; virtual int32 DPDCfgApplyDPDUserLookupTableSplit(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGainsI[], float32 lutComplexGainsQ[], int32 arraySize) = 0; virtual int32 DPDCfgAveraging(niRFmxInstrHandle instrumentHandle, char selectorString[], int32 averagingEnabled, int32 averagingCount) = 0; virtual int32 DPDCfgDPDModel(niRFmxInstrHandle instrumentHandle, char selectorString[], int32 dpdModel) = 0; diff --git a/generated/nirfmxspecan/nirfmxspecan_mock_library.h b/generated/nirfmxspecan/nirfmxspecan_mock_library.h index 347c49e4f..b1f30d4ca 100644 --- a/generated/nirfmxspecan/nirfmxspecan_mock_library.h +++ b/generated/nirfmxspecan/nirfmxspecan_mock_library.h @@ -156,7 +156,7 @@ class NiRFmxSpecAnMockLibrary : public nirfmxspecan_grpc::NiRFmxSpecAnLibraryInt MOCK_METHOD(int32, DPDCfgApplyDPDUserDPDPolynomialInterleavedIQ, (niRFmxInstrHandle instrumentHandle, char selectorString[], float32 dpdPolynomial[], int32 arraySize), (override)); MOCK_METHOD(int32, DPDCfgApplyDPDUserDPDPolynomialSplit, (niRFmxInstrHandle instrumentHandle, char selectorString[], float32 dpdPolynomialI[], float32 dpdPolynomialQ[], int32 arraySize), (override)); MOCK_METHOD(int32, DPDCfgApplyDPDUserLookupTable, (niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], NIComplexSingle lutComplexGains[], int32 arraySize), (override)); - MOCK_METHOD(int32, DPDCfgApplyDPDUserLookupTableInterleavedIQ, (niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGains[], int32 arraySize), (override)); + MOCK_METHOD(int32, DPDCfgApplyDPDUserLookupTableInterleavedIQ, (niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGains[]), (override)); MOCK_METHOD(int32, DPDCfgApplyDPDUserLookupTableSplit, (niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGainsI[], float32 lutComplexGainsQ[], int32 arraySize), (override)); MOCK_METHOD(int32, DPDCfgAveraging, (niRFmxInstrHandle instrumentHandle, char selectorString[], int32 averagingEnabled, int32 averagingCount), (override)); MOCK_METHOD(int32, DPDCfgDPDModel, (niRFmxInstrHandle instrumentHandle, char selectorString[], int32 dpdModel), (override)); diff --git a/source/codegen/metadata/nirfmxspecan/functions_addon.py b/source/codegen/metadata/nirfmxspecan/functions_addon.py index a3f9c5ed7..58a025d69 100644 --- a/source/codegen/metadata/nirfmxspecan/functions_addon.py +++ b/source/codegen/metadata/nirfmxspecan/functions_addon.py @@ -94,12 +94,6 @@ }, 'type': 'float32[]', 'value_converted_to_c_representation': 'reinterpret_cast(lutComplexGains)' - }, - { - 'direction': 'in', - 'name': 'arraySize', - 'type': 'int32', - 'value_converted_to_c_representation': 'arraySize/2' } ], 'returns': 'int32' From 0d296978cb1a65f41b0f91d36fcc959312a32979 Mon Sep 17 00:00:00 2001 From: rnagaraj Date: Mon, 27 Oct 2025 14:56:53 +0530 Subject: [PATCH 3/3] Correcting the special metadata and generating gRPC Service code --- generated/nirfmxspecan/nirfmxspecan_compilation_test.cpp | 4 ++-- generated/nirfmxspecan/nirfmxspecan_library.cpp | 4 ++-- generated/nirfmxspecan/nirfmxspecan_library.h | 2 +- generated/nirfmxspecan/nirfmxspecan_library_interface.h | 2 +- generated/nirfmxspecan/nirfmxspecan_mock_library.h | 2 +- source/codegen/metadata/nirfmxspecan/functions_addon.py | 6 ++++++ 6 files changed, 13 insertions(+), 7 deletions(-) diff --git a/generated/nirfmxspecan/nirfmxspecan_compilation_test.cpp b/generated/nirfmxspecan/nirfmxspecan_compilation_test.cpp index 6b89b9249..cef22e595 100644 --- a/generated/nirfmxspecan/nirfmxspecan_compilation_test.cpp +++ b/generated/nirfmxspecan/nirfmxspecan_compilation_test.cpp @@ -702,9 +702,9 @@ int32 DPDCfgApplyDPDUserLookupTable(niRFmxInstrHandle instrumentHandle, char sel return RFmxSpecAn_DPDCfgApplyDPDUserLookupTable(instrumentHandle, selectorString, lutInputPowers, lutComplexGains, arraySize); } -int32 DPDCfgApplyDPDUserLookupTableInterleavedIQ(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGains[]) +int32 DPDCfgApplyDPDUserLookupTableInterleavedIQ(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGains[], int32 arraySize) { - return RFmxSpecAn_DPDCfgApplyDPDUserLookupTable(instrumentHandle, selectorString, lutInputPowers, reinterpret_cast(lutComplexGains)); + return RFmxSpecAn_DPDCfgApplyDPDUserLookupTable(instrumentHandle, selectorString, lutInputPowers, reinterpret_cast(lutComplexGains), arraySize); } int32 DPDCfgApplyDPDUserLookupTableSplit(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGainsI[], float32 lutComplexGainsQ[], int32 arraySize) diff --git a/generated/nirfmxspecan/nirfmxspecan_library.cpp b/generated/nirfmxspecan/nirfmxspecan_library.cpp index d1d736aa6..da7db0a7a 100644 --- a/generated/nirfmxspecan/nirfmxspecan_library.cpp +++ b/generated/nirfmxspecan/nirfmxspecan_library.cpp @@ -1643,12 +1643,12 @@ int32 NiRFmxSpecAnLibrary::DPDCfgApplyDPDUserLookupTable(niRFmxInstrHandle instr return function_pointers_.DPDCfgApplyDPDUserLookupTable(instrumentHandle, selectorString, lutInputPowers, lutComplexGains, arraySize); } -int32 NiRFmxSpecAnLibrary::DPDCfgApplyDPDUserLookupTableInterleavedIQ(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGains[]) +int32 NiRFmxSpecAnLibrary::DPDCfgApplyDPDUserLookupTableInterleavedIQ(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGains[], int32 arraySize) { if (!function_pointers_.DPDCfgApplyDPDUserLookupTableInterleavedIQ) { throw nidevice_grpc::LibraryLoadException("Could not find RFmxSpecAn_DPDCfgApplyDPDUserLookupTable."); } - return function_pointers_.DPDCfgApplyDPDUserLookupTableInterleavedIQ(instrumentHandle, selectorString, lutInputPowers, reinterpret_cast(lutComplexGains)); + return function_pointers_.DPDCfgApplyDPDUserLookupTableInterleavedIQ(instrumentHandle, selectorString, lutInputPowers, reinterpret_cast(lutComplexGains), arraySize); } int32 NiRFmxSpecAnLibrary::DPDCfgApplyDPDUserLookupTableSplit(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGainsI[], float32 lutComplexGainsQ[], int32 arraySize) diff --git a/generated/nirfmxspecan/nirfmxspecan_library.h b/generated/nirfmxspecan/nirfmxspecan_library.h index 86adb0afe..bc36c4116 100644 --- a/generated/nirfmxspecan/nirfmxspecan_library.h +++ b/generated/nirfmxspecan/nirfmxspecan_library.h @@ -160,7 +160,7 @@ class NiRFmxSpecAnLibrary : public nirfmxspecan_grpc::NiRFmxSpecAnLibraryInterfa int32 DPDCfgApplyDPDUserDPDPolynomialInterleavedIQ(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 dpdPolynomial[], int32 arraySize) override; int32 DPDCfgApplyDPDUserDPDPolynomialSplit(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 dpdPolynomialI[], float32 dpdPolynomialQ[], int32 arraySize) override; int32 DPDCfgApplyDPDUserLookupTable(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], NIComplexSingle lutComplexGains[], int32 arraySize) override; - int32 DPDCfgApplyDPDUserLookupTableInterleavedIQ(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGains[]) override; + int32 DPDCfgApplyDPDUserLookupTableInterleavedIQ(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGains[], int32 arraySize) override; int32 DPDCfgApplyDPDUserLookupTableSplit(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGainsI[], float32 lutComplexGainsQ[], int32 arraySize) override; int32 DPDCfgAveraging(niRFmxInstrHandle instrumentHandle, char selectorString[], int32 averagingEnabled, int32 averagingCount) override; int32 DPDCfgDPDModel(niRFmxInstrHandle instrumentHandle, char selectorString[], int32 dpdModel) override; diff --git a/generated/nirfmxspecan/nirfmxspecan_library_interface.h b/generated/nirfmxspecan/nirfmxspecan_library_interface.h index e5da3dcab..70cabdd44 100644 --- a/generated/nirfmxspecan/nirfmxspecan_library_interface.h +++ b/generated/nirfmxspecan/nirfmxspecan_library_interface.h @@ -154,7 +154,7 @@ class NiRFmxSpecAnLibraryInterface { virtual int32 DPDCfgApplyDPDUserDPDPolynomialInterleavedIQ(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 dpdPolynomial[], int32 arraySize) = 0; virtual int32 DPDCfgApplyDPDUserDPDPolynomialSplit(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 dpdPolynomialI[], float32 dpdPolynomialQ[], int32 arraySize) = 0; virtual int32 DPDCfgApplyDPDUserLookupTable(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], NIComplexSingle lutComplexGains[], int32 arraySize) = 0; - virtual int32 DPDCfgApplyDPDUserLookupTableInterleavedIQ(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGains[]) = 0; + virtual int32 DPDCfgApplyDPDUserLookupTableInterleavedIQ(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGains[], int32 arraySize) = 0; virtual int32 DPDCfgApplyDPDUserLookupTableSplit(niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGainsI[], float32 lutComplexGainsQ[], int32 arraySize) = 0; virtual int32 DPDCfgAveraging(niRFmxInstrHandle instrumentHandle, char selectorString[], int32 averagingEnabled, int32 averagingCount) = 0; virtual int32 DPDCfgDPDModel(niRFmxInstrHandle instrumentHandle, char selectorString[], int32 dpdModel) = 0; diff --git a/generated/nirfmxspecan/nirfmxspecan_mock_library.h b/generated/nirfmxspecan/nirfmxspecan_mock_library.h index b1f30d4ca..347c49e4f 100644 --- a/generated/nirfmxspecan/nirfmxspecan_mock_library.h +++ b/generated/nirfmxspecan/nirfmxspecan_mock_library.h @@ -156,7 +156,7 @@ class NiRFmxSpecAnMockLibrary : public nirfmxspecan_grpc::NiRFmxSpecAnLibraryInt MOCK_METHOD(int32, DPDCfgApplyDPDUserDPDPolynomialInterleavedIQ, (niRFmxInstrHandle instrumentHandle, char selectorString[], float32 dpdPolynomial[], int32 arraySize), (override)); MOCK_METHOD(int32, DPDCfgApplyDPDUserDPDPolynomialSplit, (niRFmxInstrHandle instrumentHandle, char selectorString[], float32 dpdPolynomialI[], float32 dpdPolynomialQ[], int32 arraySize), (override)); MOCK_METHOD(int32, DPDCfgApplyDPDUserLookupTable, (niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], NIComplexSingle lutComplexGains[], int32 arraySize), (override)); - MOCK_METHOD(int32, DPDCfgApplyDPDUserLookupTableInterleavedIQ, (niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGains[]), (override)); + MOCK_METHOD(int32, DPDCfgApplyDPDUserLookupTableInterleavedIQ, (niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGains[], int32 arraySize), (override)); MOCK_METHOD(int32, DPDCfgApplyDPDUserLookupTableSplit, (niRFmxInstrHandle instrumentHandle, char selectorString[], float32 lutInputPowers[], float32 lutComplexGainsI[], float32 lutComplexGainsQ[], int32 arraySize), (override)); MOCK_METHOD(int32, DPDCfgAveraging, (niRFmxInstrHandle instrumentHandle, char selectorString[], int32 averagingEnabled, int32 averagingCount), (override)); MOCK_METHOD(int32, DPDCfgDPDModel, (niRFmxInstrHandle instrumentHandle, char selectorString[], int32 dpdModel), (override)); diff --git a/source/codegen/metadata/nirfmxspecan/functions_addon.py b/source/codegen/metadata/nirfmxspecan/functions_addon.py index 58a025d69..68071566a 100644 --- a/source/codegen/metadata/nirfmxspecan/functions_addon.py +++ b/source/codegen/metadata/nirfmxspecan/functions_addon.py @@ -94,6 +94,12 @@ }, 'type': 'float32[]', 'value_converted_to_c_representation': 'reinterpret_cast(lutComplexGains)' + }, + { + 'direction': 'in', + 'include_in_proto': False, + 'name': 'arraySize', + 'type': 'int32', } ], 'returns': 'int32'