RFmx NR Python API Documentation ================================ About ===== The **nirfmx-python** repository generates Python bindings (Application Programming Interface) for interacting with the NI-RFmx drivers. **nirfmx-python** follows `Python Software Foundation `_ support policy for different versions. Operating System Support ======================== **nirfmxnr** supports Windows systems where the supported drivers are installed. Refer to `NI Hardware and Operating System Compatibility `_ for which versions of the driver support your hardware on a given operating system. Installation ============ You can use `pip `_ to download `nirfmxnr `_ and install it. .. code-block:: shell $ python -m pip install nirfmxnr Support and Feedback ==================== For support with Python API, hardware, the driver runtime or any other questions, please visit `NI Community Forums `_. Documentation: ============== .. toctree:: :maxdepth: 1 acp acp_component_carrier_configuration acp_component_carrier_results acp_configuration acp_results attributes chp chp_component_carrier_configuration chp_component_carrier_results chp_configuration chp_results component_carrier enums errors grpc_session_options modacc modacc_configuration modacc_results nr obw obw_configuration obw_results pvt pvt_configuration pvt_results sem sem_component_carrier_configuration sem_component_carrier_results sem_configuration sem_results txp txp_configuration txp_results Example: ======== .. code-block:: python import nirfmxinstr import nirfmxnr import numpy instr_session = None nr = None try: # Create a new RFmx Session instr_session = nirfmxinstr.Session(resource_name, option_string) # Get NR signal nr = instr_session.get_nr_signal_configuration() # Configure measurement instr_session.configure_frequency_reference(selector_string="", frequency_reference_source="OnboardClock", frequency_reference_frequency=10.0e6) nr.set_selected_ports(selector_string="", value="") nr.configure_rf(selector_string="", center_frequency=3.5e9, reference_level=0.0, external_attenuation=0.0) nr.configure_iq_power_edge_trigger( selector_string="", iq_power_edge_trigger_source="0", iq_power_edge_trigger_slope=nirfmxnr.IQPowerEdgeTriggerSlope.RISING_SLOPE, iq_power_edge_trigger_level=-20.0, trigger_delay=0.0, trigger_minimum_quiet_time_mode=nirfmxnr.TriggerMinimumQuietTimeMode.AUTO, trigger_minimum_quiet_time_duration=8.0e-6, iq_power_edge_trigger_level_type=nirfmxnr.IQPowerEdgeTriggerLevelType.RELATIVE, enable_trigger=False, ) nr.set_link_direction(selector_string="", value=nirfmxnr.LinkDirection.UPLINK) nr.set_frequency_range(selector_string="", value=nirfmxnr.FrequencyRange.RANGE1) nr.component_carrier.set_bandwidth(selector_string="", value=100e6) nr.component_carrier.set_bandwidth_part_subcarrier_spacing(selector_string="", value=30e3) nr.select_measurements(selector_string="", measurements=nirfmxnr.MeasurementTypes.CHP, enable_all_traces=True) nr.chp.configuration.configure_sweep_time(selector_string="", sweep_time_auto=nirfmxnr.ChpSweepTimeAuto.TRUE, sweep_time_interval=1.0e-3) nr.chp.configuration.configure_averaging(selector_string="", averaging_enabled=nirfmxnr.ChpAveragingEnabled.FALSE, averaging_count=10, averaging_type=nirfmxnr.ChpAveragingType.RMS) nr.initiate(selector_string="", result_name="") # Retrieve results absolute_power, relative_power, error_code = ( nr.chp.results.component_carrier.fetch_measurement( selector_string="", timeout=10.0 ) ) spectrum = numpy.empty(0, dtype=numpy.float32) nr.chp.results.fetch_spectrum(selector_string="", timeout=10.0, spectrum=spectrum) # Print results print(f"Absolute Power (dBm) : {absolute_power}") print(f"Relative Power (dB) : {relative_power}\n") except Exception as e: print("ERROR: " + str(e)) finally: # Close Session if nr is not None: nr.dispose() nr = None if instr_session is not None: instr_session.close() instr_session = None Additional Documentation ======================== Refer to the `NI-RFmx User Manual `_ for an overview of NI-RFmx, system requirements, troubleshooting, key concepts, etc. License ======= This project is licensed under the MIT License. While the source code is not publicly released, the license permits binary distribution with attribution. **Note:** This Python driver depends on several third-party components that are subject to separate commercial licenses. Users are responsible for ensuring they have the appropriate rights and licenses to use those dependencies in their environments. gRPC Features ============= For driver APIs that support it, passing a GrpcSessionOptions instance as a parameter to :py:meth:`nirfmxinstr.Session.__init__()` is subject to the NI General Purpose EULA. SSL/TLS Support =============== The server supports both server-side TLS and mutual TLS. Security configuration is accomplished by setting the `server_cert`, `server_key` and `root_cert` values in the server's configuration file. The server expects the certificate files specified in the configuration file to exist in a `certs` folder that is located in the same directory as the configuration file being used by the server. For more detailed information on SSL/TLS support refer to the [Server Security Support wiki page](https://github.com/ni/grpc-device/wiki/Server-Security-Support). Indices and Tables ================== * :ref:`genindex` * :ref:`modindex`