Table Of Contents

Selector Strings

    Last Modified: February 6, 2018

    RFmx is a powerful API that supports basic and advanced features and provides multiple ways to configure measurements and fetch measurement results. The same Configuration and Fetch nodes/functions can be used in basic and advanced use cases, such as named signal configurations, without having to rewrite code. The following image shows a basic ACP measurement that does not use named signal configurations.

    The NI-RFmx Selector String input allows you to specify the full context of what you are configuring or fetching. The following figure shows an example of the Selector String input on one of the NI-RFmx Fetch Measurements nodes.

    For example, an ACP measurement can have multiple offset channels, and you can configure the frequency and measurement bandwidth properties for each offset channel. When you configure the measurement bandwidth for a specific offset channel, you must specify the offset channel for which you are configuring the Measurement Bandwidth property. When you configure the first offset channel, you must specify the context in the Selector String input as offset0, as shown in the following figure.

    The contexts you can specify depend on what you are configuring or fetching. For example, if you are configuring a carrier channel, you specify which carrier channel, such as "carrier3", you are configuring. If you are configuring an offset channel, you specify which offset channel, such as "offset2", you are configuring.

    Some contexts, such as a named signal configuration, can be specified in all Configuration and Fetch nodes. Some contexts, such as a named result, can be specified in only the Initiate and Fetch nodes.

    Multiple Contexts

    When using multiple features in the API, you can specify multiple contexts in the same Selector String input separated with a '/'. For example, to configure carrier 0 in the named signal configuration called "MySignal", you must specify "signal::Mysignal/carrier0" as the selector string.

    Another example of multiple contexts is performing LTE noncontiguous carrier aggregation measurements. In this case, the signal is composed of multiple subblocks, and each subblock can contain multiple carriers. When you configure a property of a carrier in LTE noncontiguous carrier aggregation, you must specify the index of the carrier within the subblock and the index of the subblock. For example, you would specify that you are configuring the first carrier in the second subblock by using "subblock1/carrier0" as the selector string.

    String Prefixes in Selector Strings

    NI-RFmx requires a prefix, such as "carrier" or "signal::", before the number or name in the selector string so that it is clear what object is being configured. The "::" is required for "signal::" and "result::" because those items use arbitrary user-defined names and the API must identify where the user-specified name starts in the selector string. You can specify the selector strings as constants, such as "carrier0" and "signal::mysignal" or use the Build String Utility nodes/functions provided by RFmx to create correctly formed strings.

    Build String Utility Nodes/Functions

    NI-RFmx provides a set of Utility nodes/functions/methods, as shown in the following figure, to build the context string for various measurement configurations.

    For example, the Build Signal String node takes in a named signal configuration name and/or a result name and constructs a string containing the contexts you specified. If you call the Build Signal String node with "MySignal" passed to the Signal Name input, the output string is "signal::MySignal". Each RFmx driver provides build string utility nodes/functions/methods for specific cases, such as Build Spur String2, which takes in a spur number in addition to optionally taking in a previously constructed selector string. If you call the Build Spur String2 node with a spur set to 2, and the Selector String input set to the output of the previously called Build Range String2 node, say range1, the output string is "signal::MySignal/range1/spur2".

    Selector String in Property Node

    When setting properties or fetching results from an RFmx property node in LabVIEW, you specify the context using the Selector String property. You must set the Selector String property above the other properties that you want the context in the selector string to apply to.

    Selector Strings when using Array Nodes

    Notice that NI-RFmx provides array versions of configure and fetch nodes that allow you to configure multiple instances of a property or fetch multiple instances of a result. For example, to configure the frequencies of all the ACP measurement offset channels, you can use the ACP Configure Offset (Array) node, passing in an array that has the frequency for each offset channel. When using these array nodes/functions/methods, you do not need to specify in the Selector String input the context for the elements in the array. For example, you pass "" as the selector string in the Configure ACP Offset Channel (Array) node. However, if you are using named signal configurations or named results, you pass those contexts in the selector string even when you use the array nodes/functions/methods.

    Selector String Syntax

    The following table lists the various selector string formats that you can use. For integral channel specifiers, valid values for i are 0 to (number of channels - 1). For example, if you set the value of ACP Num Offsets property to 5, you can configure ACP offset properties for offset0, offset1, offset2, offset3, and offset4.

    In the following table, the term channel or ch is used to refer to numeric contexts such as carrier, offset, or range.

    Selector String String Function Example
    ch<i> Configures one channel carrier0
    ch<i>-<j> Configures a range of channels between i and j carrier0-5
    ch<i>:<j> Configures a range of channels between i and j carrier0:5
    ch<i>, ch<j>, ch<k> Configures channels i, j, and k carrier0, carrier2, carrier4
    ch<i>, ch<j>-<k> Configures channel i and a range of channels between j and k carrier0, carrier1-5
    ch<i>, ch<j>:<k> Configures channel i and a range of channels between j and k carrier0, carrier1:5
    ch::all Configures all channels from 0 to (Number of X - 1). Number of X is the current value of the Number of ... property, that corresponds to the context used. For example, in an ACP measurement, you set the Number of Offsets property before setting any offset properties and when you use "all", NI-RFmx uses the current value of Number of Offsets to determine which offset channels to configure. offset::all

    The following table lists the various selector string formats that you can use to specify the named signal configurations (using the "signal::" prefix) and named results (using the "result::" prefix). Notice that the "result::" prefix is valid only when fetching results and currently cannot be used to configure measurements.

    Syntax String Function Example
    signal::<signalname> Specifies signal <signalname> signal::sig1
    signal::<signalname>/ch<i> Specifies channel i on signal <signalname> signal::sig1/carrier0
    signal::<signalname>/result::<resultname>/ch<i> Specifies channel i for result <resultname> on signal <signalname> signal::sig1/result::r1/carrier0
    signal::<signalname>/result::<resultname> Specifies named result <resultname> on signal <signalname> signal::sig1/result::r1
    result::<resultname> Specifies named result <resultname> on the default signal result::r1

    The following characters are not allowed in signal names and result names: ()*+,-./{} !"#$%&':;<=>?@[]\^`|~ and any non-printable character.

    Recently Viewed Topics