From 21288b78cd638f5edfd5b82b8d8013d4b5099074 Mon Sep 17 00:00:00 2001 From: WesleyTangNationalInstruments <103216564+WesleyTangNationalInstruments@users.noreply.github.com> Date: Mon, 27 Mar 2023 17:47:04 -0500 Subject: [PATCH] Update RFmxNR (to include RFmxNR_ModAccFetchPUSCHPhaseOffsetTrace) (#892) (#894) * Updated NR with latest from ni-central. Most notably "RFmxNR_ModAccFetchPUSCHPhaseOffsetTrace". * Updated header. --- generated/nirfmxnr/nirfmxnr.proto | 17 +++++++ generated/nirfmxnr/nirfmxnr_client.cpp | 19 +++++++ generated/nirfmxnr/nirfmxnr_client.h | 1 + .../nirfmxnr/nirfmxnr_compilation_test.cpp | 5 ++ generated/nirfmxnr/nirfmxnr_library.cpp | 9 ++++ generated/nirfmxnr/nirfmxnr_library.h | 3 ++ .../nirfmxnr/nirfmxnr_library_interface.h | 1 + generated/nirfmxnr/nirfmxnr_mock_library.h | 1 + generated/nirfmxnr/nirfmxnr_service.cpp | 45 ++++++++++++++++ generated/nirfmxnr/nirfmxnr_service.h | 1 + imports/include/niRFmxNR.h | 25 +++++++++ .../codegen/metadata/nirfmxnr/attributes.py | 10 ++++ source/codegen/metadata/nirfmxnr/functions.py | 51 +++++++++++++++++++ 13 files changed, 188 insertions(+) diff --git a/generated/nirfmxnr/nirfmxnr.proto b/generated/nirfmxnr/nirfmxnr.proto index 274b00778..9feda3b1b 100644 --- a/generated/nirfmxnr/nirfmxnr.proto +++ b/generated/nirfmxnr/nirfmxnr.proto @@ -149,6 +149,7 @@ service NiRFmxNR { rpc ModAccFetchPUSCHDataConstellationTrace(ModAccFetchPUSCHDataConstellationTraceRequest) returns (ModAccFetchPUSCHDataConstellationTraceResponse); rpc ModAccFetchPUSCHDemodulatedBits(ModAccFetchPUSCHDemodulatedBitsRequest) returns (ModAccFetchPUSCHDemodulatedBitsResponse); rpc ModAccFetchPUSCHPTRSConstellationTrace(ModAccFetchPUSCHPTRSConstellationTraceRequest) returns (ModAccFetchPUSCHPTRSConstellationTraceResponse); + rpc ModAccFetchPUSCHPhaseOffsetTrace(ModAccFetchPUSCHPhaseOffsetTraceRequest) returns (ModAccFetchPUSCHPhaseOffsetTraceResponse); rpc ModAccFetchPeakEVMPerSlotMaximumTrace(ModAccFetchPeakEVMPerSlotMaximumTraceRequest) returns (ModAccFetchPeakEVMPerSlotMaximumTraceResponse); rpc ModAccFetchPeakEVMPerSubcarrierMaximumTrace(ModAccFetchPeakEVMPerSubcarrierMaximumTraceRequest) returns (ModAccFetchPeakEVMPerSubcarrierMaximumTraceResponse); rpc ModAccFetchPeakEVMPerSymbolMaximumTrace(ModAccFetchPeakEVMPerSymbolMaximumTraceRequest) returns (ModAccFetchPeakEVMPerSymbolMaximumTraceResponse); @@ -587,6 +588,8 @@ enum NiRFmxNRAttribute { NIRFMXNR_ATTRIBUTE_MODACC_TRANSIENT_PERIOD = 9453732; NIRFMXNR_ATTRIBUTE_MODACC_TRANSIENT_POWER_CHANGE_THRESHOLD = 9453733; NIRFMXNR_ATTRIBUTE_MODACC_RESULTS_PUSCH_DATA_TRANSIENT_RMS_EVM_MEAN = 9453734; + NIRFMXNR_ATTRIBUTE_MODACC_RESULTS_PUSCH_PEAK_PHASE_OFFSET_MAXIMUM = 9453735; + NIRFMXNR_ATTRIBUTE_MODACC_RESULTS_PUSCH_PEAK_PHASE_OFFSET_SLOT_INDEX = 9453736; NIRFMXNR_ATTRIBUTE_OBW_MEASUREMENT_ENABLED = 9461760; NIRFMXNR_ATTRIBUTE_OBW_SPAN = 9461763; NIRFMXNR_ATTRIBUTE_OBW_RBW_FILTER_AUTO_BANDWIDTH = 9461766; @@ -2995,6 +2998,20 @@ message ModAccFetchPUSCHPTRSConstellationTraceResponse { int32 actual_array_size = 3; } +message ModAccFetchPUSCHPhaseOffsetTraceRequest { + nidevice_grpc.Session instrument = 1; + string selector_string = 2; + double timeout = 3; +} + +message ModAccFetchPUSCHPhaseOffsetTraceResponse { + int32 status = 1; + double x0 = 2; + double dx = 3; + repeated float pusch_phase_offset = 4; + int32 actual_array_size = 5; +} + message ModAccFetchPeakEVMPerSlotMaximumTraceRequest { nidevice_grpc.Session instrument = 1; string selector_string = 2; diff --git a/generated/nirfmxnr/nirfmxnr_client.cpp b/generated/nirfmxnr/nirfmxnr_client.cpp index 46157468c..516949aef 100644 --- a/generated/nirfmxnr/nirfmxnr_client.cpp +++ b/generated/nirfmxnr/nirfmxnr_client.cpp @@ -2695,6 +2695,25 @@ mod_acc_fetch_puschptrs_constellation_trace(const StubPtr& stub, const nidevice_ return response; } +ModAccFetchPUSCHPhaseOffsetTraceResponse +mod_acc_fetch_pusch_phase_offset_trace(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const double& timeout) +{ + ::grpc::ClientContext context; + + auto request = ModAccFetchPUSCHPhaseOffsetTraceRequest{}; + request.mutable_instrument()->CopyFrom(instrument); + request.set_selector_string(selector_string); + request.set_timeout(timeout); + + auto response = ModAccFetchPUSCHPhaseOffsetTraceResponse{}; + + raise_if_error( + stub->ModAccFetchPUSCHPhaseOffsetTrace(&context, request, &response), + context); + + return response; +} + ModAccFetchPeakEVMPerSlotMaximumTraceResponse mod_acc_fetch_peak_evm_per_slot_maximum_trace(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const double& timeout) { diff --git a/generated/nirfmxnr/nirfmxnr_client.h b/generated/nirfmxnr/nirfmxnr_client.h index 684a9637d..ab0e7ff4f 100644 --- a/generated/nirfmxnr/nirfmxnr_client.h +++ b/generated/nirfmxnr/nirfmxnr_client.h @@ -154,6 +154,7 @@ ModAccFetchPUSCHDMRSConstellationTraceResponse mod_acc_fetch_puschdmrs_constella ModAccFetchPUSCHDataConstellationTraceResponse mod_acc_fetch_pusch_data_constellation_trace(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const double& timeout); ModAccFetchPUSCHDemodulatedBitsResponse mod_acc_fetch_pusch_demodulated_bits(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const double& timeout); ModAccFetchPUSCHPTRSConstellationTraceResponse mod_acc_fetch_puschptrs_constellation_trace(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const double& timeout); +ModAccFetchPUSCHPhaseOffsetTraceResponse mod_acc_fetch_pusch_phase_offset_trace(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const double& timeout); ModAccFetchPeakEVMPerSlotMaximumTraceResponse mod_acc_fetch_peak_evm_per_slot_maximum_trace(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const double& timeout); ModAccFetchPeakEVMPerSubcarrierMaximumTraceResponse mod_acc_fetch_peak_evm_per_subcarrier_maximum_trace(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const double& timeout); ModAccFetchPeakEVMPerSymbolMaximumTraceResponse mod_acc_fetch_peak_evm_per_symbol_maximum_trace(const StubPtr& stub, const nidevice_grpc::Session& instrument, const std::string& selector_string, const double& timeout); diff --git a/generated/nirfmxnr/nirfmxnr_compilation_test.cpp b/generated/nirfmxnr/nirfmxnr_compilation_test.cpp index 8f80a4320..37aa2d22f 100644 --- a/generated/nirfmxnr/nirfmxnr_compilation_test.cpp +++ b/generated/nirfmxnr/nirfmxnr_compilation_test.cpp @@ -667,6 +667,11 @@ int32 ModAccFetchPUSCHPTRSConstellationTrace(niRFmxInstrHandle instrumentHandle, return RFmxNR_ModAccFetchPUSCHPTRSConstellationTrace(instrumentHandle, selectorString, timeout, puschptrsConstellation, arraySize, actualArraySize); } +int32 ModAccFetchPUSCHPhaseOffsetTrace(niRFmxInstrHandle instrumentHandle, char selectorString[], float64 timeout, float64* x0, float64* dx, float32 puschPhaseOffset[], int32 arraySize, int32* actualArraySize) +{ + return RFmxNR_ModAccFetchPUSCHPhaseOffsetTrace(instrumentHandle, selectorString, timeout, x0, dx, puschPhaseOffset, arraySize, actualArraySize); +} + int32 ModAccFetchPeakEVMPerSlotMaximumTrace(niRFmxInstrHandle instrumentHandle, char selectorString[], float64 timeout, float64* x0, float64* dx, float32 peakEVMPerSlotMaximum[], int32 arraySize, int32* actualArraySize) { return RFmxNR_ModAccFetchPeakEVMPerSlotMaximumTrace(instrumentHandle, selectorString, timeout, x0, dx, peakEVMPerSlotMaximum, arraySize, actualArraySize); diff --git a/generated/nirfmxnr/nirfmxnr_library.cpp b/generated/nirfmxnr/nirfmxnr_library.cpp index 9c2fcfdb9..c2be8a86a 100644 --- a/generated/nirfmxnr/nirfmxnr_library.cpp +++ b/generated/nirfmxnr/nirfmxnr_library.cpp @@ -153,6 +153,7 @@ NiRFmxNRLibrary::NiRFmxNRLibrary() : shared_library_(kLibraryName) function_pointers_.ModAccFetchPUSCHDataConstellationTrace = reinterpret_cast(shared_library_.get_function_pointer("RFmxNR_ModAccFetchPUSCHDataConstellationTrace")); function_pointers_.ModAccFetchPUSCHDemodulatedBits = reinterpret_cast(shared_library_.get_function_pointer("RFmxNR_ModAccFetchPUSCHDemodulatedBits")); function_pointers_.ModAccFetchPUSCHPTRSConstellationTrace = reinterpret_cast(shared_library_.get_function_pointer("RFmxNR_ModAccFetchPUSCHPTRSConstellationTrace")); + function_pointers_.ModAccFetchPUSCHPhaseOffsetTrace = reinterpret_cast(shared_library_.get_function_pointer("RFmxNR_ModAccFetchPUSCHPhaseOffsetTrace")); function_pointers_.ModAccFetchPeakEVMPerSlotMaximumTrace = reinterpret_cast(shared_library_.get_function_pointer("RFmxNR_ModAccFetchPeakEVMPerSlotMaximumTrace")); function_pointers_.ModAccFetchPeakEVMPerSubcarrierMaximumTrace = reinterpret_cast(shared_library_.get_function_pointer("RFmxNR_ModAccFetchPeakEVMPerSubcarrierMaximumTrace")); function_pointers_.ModAccFetchPeakEVMPerSymbolMaximumTrace = reinterpret_cast(shared_library_.get_function_pointer("RFmxNR_ModAccFetchPeakEVMPerSymbolMaximumTrace")); @@ -1309,6 +1310,14 @@ int32 NiRFmxNRLibrary::ModAccFetchPUSCHPTRSConstellationTrace(niRFmxInstrHandle return function_pointers_.ModAccFetchPUSCHPTRSConstellationTrace(instrumentHandle, selectorString, timeout, puschptrsConstellation, arraySize, actualArraySize); } +int32 NiRFmxNRLibrary::ModAccFetchPUSCHPhaseOffsetTrace(niRFmxInstrHandle instrumentHandle, char selectorString[], float64 timeout, float64* x0, float64* dx, float32 puschPhaseOffset[], int32 arraySize, int32* actualArraySize) +{ + if (!function_pointers_.ModAccFetchPUSCHPhaseOffsetTrace) { + throw nidevice_grpc::LibraryLoadException("Could not find RFmxNR_ModAccFetchPUSCHPhaseOffsetTrace."); + } + return function_pointers_.ModAccFetchPUSCHPhaseOffsetTrace(instrumentHandle, selectorString, timeout, x0, dx, puschPhaseOffset, arraySize, actualArraySize); +} + int32 NiRFmxNRLibrary::ModAccFetchPeakEVMPerSlotMaximumTrace(niRFmxInstrHandle instrumentHandle, char selectorString[], float64 timeout, float64* x0, float64* dx, float32 peakEVMPerSlotMaximum[], int32 arraySize, int32* actualArraySize) { if (!function_pointers_.ModAccFetchPeakEVMPerSlotMaximumTrace) { diff --git a/generated/nirfmxnr/nirfmxnr_library.h b/generated/nirfmxnr/nirfmxnr_library.h index 2eb1fd171..9aba3c1ac 100644 --- a/generated/nirfmxnr/nirfmxnr_library.h +++ b/generated/nirfmxnr/nirfmxnr_library.h @@ -150,6 +150,7 @@ class NiRFmxNRLibrary : public nirfmxnr_grpc::NiRFmxNRLibraryInterface { int32 ModAccFetchPUSCHDataConstellationTrace(niRFmxInstrHandle instrumentHandle, char selectorString[], float64 timeout, NIComplexSingle puschDataConstellation[], int32 arraySize, int32* actualArraySize); int32 ModAccFetchPUSCHDemodulatedBits(niRFmxInstrHandle instrumentHandle, char selectorString[], float64 timeout, int8 bits[], int32 arraySize, int32* actualArraySize); int32 ModAccFetchPUSCHPTRSConstellationTrace(niRFmxInstrHandle instrumentHandle, char selectorString[], float64 timeout, NIComplexSingle puschptrsConstellation[], int32 arraySize, int32* actualArraySize); + int32 ModAccFetchPUSCHPhaseOffsetTrace(niRFmxInstrHandle instrumentHandle, char selectorString[], float64 timeout, float64* x0, float64* dx, float32 puschPhaseOffset[], int32 arraySize, int32* actualArraySize); int32 ModAccFetchPeakEVMPerSlotMaximumTrace(niRFmxInstrHandle instrumentHandle, char selectorString[], float64 timeout, float64* x0, float64* dx, float32 peakEVMPerSlotMaximum[], int32 arraySize, int32* actualArraySize); int32 ModAccFetchPeakEVMPerSubcarrierMaximumTrace(niRFmxInstrHandle instrumentHandle, char selectorString[], float64 timeout, float64* x0, float64* dx, float32 peakEVMPerSubcarrierMaximum[], int32 arraySize, int32* actualArraySize); int32 ModAccFetchPeakEVMPerSymbolMaximumTrace(niRFmxInstrHandle instrumentHandle, char selectorString[], float64 timeout, float64* x0, float64* dx, float32 peakEVMPerSymbolMaximum[], int32 arraySize, int32* actualArraySize); @@ -371,6 +372,7 @@ class NiRFmxNRLibrary : public nirfmxnr_grpc::NiRFmxNRLibraryInterface { using ModAccFetchPUSCHDataConstellationTracePtr = decltype(&RFmxNR_ModAccFetchPUSCHDataConstellationTrace); using ModAccFetchPUSCHDemodulatedBitsPtr = decltype(&RFmxNR_ModAccFetchPUSCHDemodulatedBits); using ModAccFetchPUSCHPTRSConstellationTracePtr = decltype(&RFmxNR_ModAccFetchPUSCHPTRSConstellationTrace); + using ModAccFetchPUSCHPhaseOffsetTracePtr = decltype(&RFmxNR_ModAccFetchPUSCHPhaseOffsetTrace); using ModAccFetchPeakEVMPerSlotMaximumTracePtr = decltype(&RFmxNR_ModAccFetchPeakEVMPerSlotMaximumTrace); using ModAccFetchPeakEVMPerSubcarrierMaximumTracePtr = decltype(&RFmxNR_ModAccFetchPeakEVMPerSubcarrierMaximumTrace); using ModAccFetchPeakEVMPerSymbolMaximumTracePtr = decltype(&RFmxNR_ModAccFetchPeakEVMPerSymbolMaximumTrace); @@ -592,6 +594,7 @@ class NiRFmxNRLibrary : public nirfmxnr_grpc::NiRFmxNRLibraryInterface { ModAccFetchPUSCHDataConstellationTracePtr ModAccFetchPUSCHDataConstellationTrace; ModAccFetchPUSCHDemodulatedBitsPtr ModAccFetchPUSCHDemodulatedBits; ModAccFetchPUSCHPTRSConstellationTracePtr ModAccFetchPUSCHPTRSConstellationTrace; + ModAccFetchPUSCHPhaseOffsetTracePtr ModAccFetchPUSCHPhaseOffsetTrace; ModAccFetchPeakEVMPerSlotMaximumTracePtr ModAccFetchPeakEVMPerSlotMaximumTrace; ModAccFetchPeakEVMPerSubcarrierMaximumTracePtr ModAccFetchPeakEVMPerSubcarrierMaximumTrace; ModAccFetchPeakEVMPerSymbolMaximumTracePtr ModAccFetchPeakEVMPerSymbolMaximumTrace; diff --git a/generated/nirfmxnr/nirfmxnr_library_interface.h b/generated/nirfmxnr/nirfmxnr_library_interface.h index 0d989ee8b..83c64d54b 100644 --- a/generated/nirfmxnr/nirfmxnr_library_interface.h +++ b/generated/nirfmxnr/nirfmxnr_library_interface.h @@ -147,6 +147,7 @@ class NiRFmxNRLibraryInterface { virtual int32 ModAccFetchPUSCHDataConstellationTrace(niRFmxInstrHandle instrumentHandle, char selectorString[], float64 timeout, NIComplexSingle puschDataConstellation[], int32 arraySize, int32* actualArraySize) = 0; virtual int32 ModAccFetchPUSCHDemodulatedBits(niRFmxInstrHandle instrumentHandle, char selectorString[], float64 timeout, int8 bits[], int32 arraySize, int32* actualArraySize) = 0; virtual int32 ModAccFetchPUSCHPTRSConstellationTrace(niRFmxInstrHandle instrumentHandle, char selectorString[], float64 timeout, NIComplexSingle puschptrsConstellation[], int32 arraySize, int32* actualArraySize) = 0; + virtual int32 ModAccFetchPUSCHPhaseOffsetTrace(niRFmxInstrHandle instrumentHandle, char selectorString[], float64 timeout, float64* x0, float64* dx, float32 puschPhaseOffset[], int32 arraySize, int32* actualArraySize) = 0; virtual int32 ModAccFetchPeakEVMPerSlotMaximumTrace(niRFmxInstrHandle instrumentHandle, char selectorString[], float64 timeout, float64* x0, float64* dx, float32 peakEVMPerSlotMaximum[], int32 arraySize, int32* actualArraySize) = 0; virtual int32 ModAccFetchPeakEVMPerSubcarrierMaximumTrace(niRFmxInstrHandle instrumentHandle, char selectorString[], float64 timeout, float64* x0, float64* dx, float32 peakEVMPerSubcarrierMaximum[], int32 arraySize, int32* actualArraySize) = 0; virtual int32 ModAccFetchPeakEVMPerSymbolMaximumTrace(niRFmxInstrHandle instrumentHandle, char selectorString[], float64 timeout, float64* x0, float64* dx, float32 peakEVMPerSymbolMaximum[], int32 arraySize, int32* actualArraySize) = 0; diff --git a/generated/nirfmxnr/nirfmxnr_mock_library.h b/generated/nirfmxnr/nirfmxnr_mock_library.h index 9b68d2332..3b9baa6d2 100644 --- a/generated/nirfmxnr/nirfmxnr_mock_library.h +++ b/generated/nirfmxnr/nirfmxnr_mock_library.h @@ -149,6 +149,7 @@ class NiRFmxNRMockLibrary : public nirfmxnr_grpc::NiRFmxNRLibraryInterface { MOCK_METHOD(int32, ModAccFetchPUSCHDataConstellationTrace, (niRFmxInstrHandle instrumentHandle, char selectorString[], float64 timeout, NIComplexSingle puschDataConstellation[], int32 arraySize, int32* actualArraySize), (override)); MOCK_METHOD(int32, ModAccFetchPUSCHDemodulatedBits, (niRFmxInstrHandle instrumentHandle, char selectorString[], float64 timeout, int8 bits[], int32 arraySize, int32* actualArraySize), (override)); MOCK_METHOD(int32, ModAccFetchPUSCHPTRSConstellationTrace, (niRFmxInstrHandle instrumentHandle, char selectorString[], float64 timeout, NIComplexSingle puschptrsConstellation[], int32 arraySize, int32* actualArraySize), (override)); + MOCK_METHOD(int32, ModAccFetchPUSCHPhaseOffsetTrace, (niRFmxInstrHandle instrumentHandle, char selectorString[], float64 timeout, float64* x0, float64* dx, float32 puschPhaseOffset[], int32 arraySize, int32* actualArraySize), (override)); MOCK_METHOD(int32, ModAccFetchPeakEVMPerSlotMaximumTrace, (niRFmxInstrHandle instrumentHandle, char selectorString[], float64 timeout, float64* x0, float64* dx, float32 peakEVMPerSlotMaximum[], int32 arraySize, int32* actualArraySize), (override)); MOCK_METHOD(int32, ModAccFetchPeakEVMPerSubcarrierMaximumTrace, (niRFmxInstrHandle instrumentHandle, char selectorString[], float64 timeout, float64* x0, float64* dx, float32 peakEVMPerSubcarrierMaximum[], int32 arraySize, int32* actualArraySize), (override)); MOCK_METHOD(int32, ModAccFetchPeakEVMPerSymbolMaximumTrace, (niRFmxInstrHandle instrumentHandle, char selectorString[], float64 timeout, float64* x0, float64* dx, float32 peakEVMPerSymbolMaximum[], int32 arraySize, int32* actualArraySize), (override)); diff --git a/generated/nirfmxnr/nirfmxnr_service.cpp b/generated/nirfmxnr/nirfmxnr_service.cpp index 0ef467cc2..68c4c00a1 100644 --- a/generated/nirfmxnr/nirfmxnr_service.cpp +++ b/generated/nirfmxnr/nirfmxnr_service.cpp @@ -5130,6 +5130,51 @@ namespace nirfmxnr_grpc { } } + //--------------------------------------------------------------------- + //--------------------------------------------------------------------- + ::grpc::Status NiRFmxNRService::ModAccFetchPUSCHPhaseOffsetTrace(::grpc::ServerContext* context, const ModAccFetchPUSCHPhaseOffsetTraceRequest* request, ModAccFetchPUSCHPhaseOffsetTraceResponse* 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(); + float64 timeout = request->timeout(); + float64 x0 {}; + float64 dx {}; + int32 actual_array_size {}; + while (true) { + auto status = library_->ModAccFetchPUSCHPhaseOffsetTrace(instrument, selector_string, timeout, &x0, &dx, nullptr, 0, &actual_array_size); + if (!status_ok(status)) { + return ConvertApiErrorStatusForNiRFmxInstrHandle(context, status, instrument); + } + response->mutable_pusch_phase_offset()->Resize(actual_array_size, 0); + float32* pusch_phase_offset = response->mutable_pusch_phase_offset()->mutable_data(); + auto array_size = actual_array_size; + status = library_->ModAccFetchPUSCHPhaseOffsetTrace(instrument, selector_string, timeout, &x0, &dx, pusch_phase_offset, array_size, &actual_array_size); + if (status == kErrorReadBufferTooSmall || status == kWarningCAPIStringTruncatedToFitBuffer) { + // buffer is now too small, try again + continue; + } + if (!status_ok(status)) { + return ConvertApiErrorStatusForNiRFmxInstrHandle(context, status, instrument); + } + response->set_status(status); + response->set_x0(x0); + response->set_dx(dx); + response->mutable_pusch_phase_offset()->Resize(actual_array_size, 0); + response->set_actual_array_size(actual_array_size); + return ::grpc::Status::OK; + } + } + catch (nidevice_grpc::NonDriverException& ex) { + return ex.GetStatus(); + } + } + //--------------------------------------------------------------------- //--------------------------------------------------------------------- ::grpc::Status NiRFmxNRService::ModAccFetchPeakEVMPerSlotMaximumTrace(::grpc::ServerContext* context, const ModAccFetchPeakEVMPerSlotMaximumTraceRequest* request, ModAccFetchPeakEVMPerSlotMaximumTraceResponse* response) diff --git a/generated/nirfmxnr/nirfmxnr_service.h b/generated/nirfmxnr/nirfmxnr_service.h index 8959251d1..696098409 100644 --- a/generated/nirfmxnr/nirfmxnr_service.h +++ b/generated/nirfmxnr/nirfmxnr_service.h @@ -175,6 +175,7 @@ class NiRFmxNRService final : public NiRFmxNR::Service { ::grpc::Status ModAccFetchPUSCHDataConstellationTrace(::grpc::ServerContext* context, const ModAccFetchPUSCHDataConstellationTraceRequest* request, ModAccFetchPUSCHDataConstellationTraceResponse* response) override; ::grpc::Status ModAccFetchPUSCHDemodulatedBits(::grpc::ServerContext* context, const ModAccFetchPUSCHDemodulatedBitsRequest* request, ModAccFetchPUSCHDemodulatedBitsResponse* response) override; ::grpc::Status ModAccFetchPUSCHPTRSConstellationTrace(::grpc::ServerContext* context, const ModAccFetchPUSCHPTRSConstellationTraceRequest* request, ModAccFetchPUSCHPTRSConstellationTraceResponse* response) override; + ::grpc::Status ModAccFetchPUSCHPhaseOffsetTrace(::grpc::ServerContext* context, const ModAccFetchPUSCHPhaseOffsetTraceRequest* request, ModAccFetchPUSCHPhaseOffsetTraceResponse* response) override; ::grpc::Status ModAccFetchPeakEVMPerSlotMaximumTrace(::grpc::ServerContext* context, const ModAccFetchPeakEVMPerSlotMaximumTraceRequest* request, ModAccFetchPeakEVMPerSlotMaximumTraceResponse* response) override; ::grpc::Status ModAccFetchPeakEVMPerSubcarrierMaximumTrace(::grpc::ServerContext* context, const ModAccFetchPeakEVMPerSubcarrierMaximumTraceRequest* request, ModAccFetchPeakEVMPerSubcarrierMaximumTraceResponse* response) override; ::grpc::Status ModAccFetchPeakEVMPerSymbolMaximumTrace(::grpc::ServerContext* context, const ModAccFetchPeakEVMPerSymbolMaximumTraceRequest* request, ModAccFetchPeakEVMPerSymbolMaximumTraceResponse* response) override; diff --git a/imports/include/niRFmxNR.h b/imports/include/niRFmxNR.h index 8fa47cdb1..50d38e814 100644 --- a/imports/include/niRFmxNR.h +++ b/imports/include/niRFmxNR.h @@ -240,6 +240,8 @@ #define RFMXNR_ATTR_MODACC_RESULTS_PUSCH_PTRS_RMS_EVM_MEAN 0x00904048 #define RFMXNR_ATTR_MODACC_RESULTS_PUSCH_PTRS_PEAK_EVM_MAXIMUM 0x00904049 #define RFMXNR_ATTR_MODACC_RESULTS_PUSCH_DATA_TRANSIENT_RMS_EVM_MEAN 0x009040a6 +#define RFMXNR_ATTR_MODACC_RESULTS_PUSCH_PEAK_PHASE_OFFSET_MAXIMUM 0x009040a7 +#define RFMXNR_ATTR_MODACC_RESULTS_PUSCH_PEAK_PHASE_OFFSET_SLOT_INDEX 0x009040a8 #define RFMXNR_ATTR_MODACC_RESULTS_PDSCH_QPSK_RMS_EVM_MEAN 0x00904055 #define RFMXNR_ATTR_MODACC_RESULTS_PDSCH_16QAM_RMS_EVM_MEAN 0x00904056 #define RFMXNR_ATTR_MODACC_RESULTS_PDSCH_64QAM_RMS_EVM_MEAN 0x00904057 @@ -2708,6 +2710,17 @@ int32 __stdcall RFmxNR_ModAccFetchPDSCHDataConstellationTraceSplit( int32* actualArraySize ); +int32 __stdcall RFmxNR_ModAccFetchPUSCHPhaseOffsetTrace( + niRFmxInstrHandle instrumentHandle, + char selectorString[], + float64 timeout, + float64* x0, + float64* dx, + float32 PUSCHPhaseOffset[], + int32 arraySize, + int32* actualArraySize +); + int32 __stdcall RFmxNR_ModAccFetchFrequencyErrorPerSlotMaximumTrace( niRFmxInstrHandle instrumentHandle, char selectorString[], @@ -5848,6 +5861,18 @@ int32 __stdcall RFmxNR_ModAccGetResultsPUSCHDataTransientRMSEVMMean( float64 *attrVal ); +int32 __stdcall RFmxNR_ModAccGetResultsPUSCHPeakPhaseOffsetMaximum( + niRFmxInstrHandle instrumentHandle, + char selectorString[], + float64 *attrVal +); + +int32 __stdcall RFmxNR_ModAccGetResultsPUSCHPeakPhaseOffsetSlotIndex( + niRFmxInstrHandle instrumentHandle, + char selectorString[], + int32 *attrVal +); + int32 __stdcall RFmxNR_ModAccGetResultsPDSCHQPSKRMSEVMMean( niRFmxInstrHandle instrumentHandle, char selectorString[], diff --git a/source/codegen/metadata/nirfmxnr/attributes.py b/source/codegen/metadata/nirfmxnr/attributes.py index e339e15cc..310e26930 100644 --- a/source/codegen/metadata/nirfmxnr/attributes.py +++ b/source/codegen/metadata/nirfmxnr/attributes.py @@ -1855,6 +1855,16 @@ 'name': 'MODACC_RESULTS_PUSCH_DATA_TRANSIENT_RMS_EVM_MEAN', 'type': 'float64' }, + 9453735: { + 'access': 'read-write', + 'name': 'MODACC_RESULTS_PUSCH_PEAK_PHASE_OFFSET_MAXIMUM', + 'type': 'float64' + }, + 9453736: { + 'access': 'read-write', + 'name': 'MODACC_RESULTS_PUSCH_PEAK_PHASE_OFFSET_SLOT_INDEX', + 'type': 'int32' + }, 9461760: { 'access': 'read-write', 'name': 'OBW_MEASUREMENT_ENABLED', diff --git a/source/codegen/metadata/nirfmxnr/functions.py b/source/codegen/metadata/nirfmxnr/functions.py index f41cf428d..7405cdb6e 100644 --- a/source/codegen/metadata/nirfmxnr/functions.py +++ b/source/codegen/metadata/nirfmxnr/functions.py @@ -4440,6 +4440,57 @@ ], 'returns': 'int32' }, + 'ModAccFetchPUSCHPhaseOffsetTrace': { + 'parameters': [ + { + 'direction': 'in', + 'grpc_name': 'instrument', + 'name': 'instrumentHandle', + 'type': 'niRFmxInstrHandle' + }, + { + 'direction': 'in', + 'name': 'selectorString', + 'type': 'char[]' + }, + { + 'direction': 'in', + 'name': 'timeout', + 'type': 'float64' + }, + { + 'direction': 'out', + 'name': 'x0', + 'type': 'float64' + }, + { + 'direction': 'out', + 'name': 'dx', + 'type': 'float64' + }, + { + 'direction': 'out', + 'name': 'puschPhaseOffset', + 'size': { + 'mechanism': 'ivi-dance-with-a-twist', + 'value': 'arraySize', + 'value_twist': 'actualArraySize' + }, + 'type': 'float32[]' + }, + { + 'direction': 'in', + 'name': 'arraySize', + 'type': 'int32' + }, + { + 'direction': 'out', + 'name': 'actualArraySize', + 'type': 'int32' + } + ], + 'returns': 'int32' + }, 'ModAccFetchPeakEVMPerSlotMaximumTrace': { 'parameters': [ {