This service is used to configure the RF front ends of the nodes. The functionality follows the descriptions and details on the RF front end page (eg. setting the filters for one TX chain applies the setting to both TX chains of the node).
NOTE: Where node names are required, please use the fully qualified domain name (FQDN) of the node (eg. `sdr1-s1-lg1.bed.cosmos-lab.org`).
All the available methods are accessible from the a testbed console via an HTTP API located at `am1.cosmos-lab.org:5054/rf_control`. This API can be interacted with via a command line tool such as "curl" or any script using a "REST client" library.
This API call is used to get the current configuration of the RF front end(s) with respect to a node or list of nodes. The response will specify the parameters of the TX chain for the node(s) in question. It will show for a given node's `rf_port`, what `antenna` would be used if it were `connected`, whether the power amplifier (`power_amp`) is on or off, and the lower frequency (`f_lower`) and upper frequency (`f_upper`) of the filters.
HTTP API Path: `am1.cosmos-lab.org:5054/rf_control/get_tx_path`
Parameters:
| = Name = | = Decription = | = Required = | = Acceptable Input = |
|---|---|---|---|
| node | Comma separated list of node FQDNs | Y | (list of nodes) |
HTTP Request:
am1.cosmos-lab.org:5054/rf_control/get_tx_path?node=sdr1-s1-lg1.bed.cosmos-lab.org
Response:
<response status="OK">
<nodes>
<node name="sdr1-s1-lg1.bed.cosmos-lab.org">
<rf_port number="0" antenna="1" connected="true" power_amp="ON" f_lower="4900" f_upper="6200"/>
<rf_port number="1" antenna="3" connected="true" power_amp="ON" f_lower="4900" f_upper="6200"/>
<rf_port number="2" antenna="" connected="false"/>
<rf_port number="3" antenna="" connected="false"/>
</node>
</nodes>
</response>
In this example, node `sdr1-s1-lg1.bed.cosmos-lab.org` has:
* TX of rf_port 0, connected to antenna 1, its power amplifier is on, and the filters are set to 4900-6200MHz
* TX of rf_port 1, connected to antenna 3, its power amplifier is on, and the filters are set to 4900-6200MHz
* TX of rf_port 2 is not connected to anything
* TX of rf_port 3 is not connected to anything
HTTP Request:
am1.cosmos-lab.org:5054/rf_control/get_tx_path?node=sdr1-s1-lg1.bed.cosmos-lab.org,sdr2-s1-lg1.bed.cosmos-lab.org
Response:
<response status="OK">
<nodes>
<node name="sdr1-s1-lg1.bed.cosmos-lab.org">
<rf_port number="0" antenna="1" connected="false" power_amp="OFF" f_lower="4900" f_upper="6200"/>
<rf_port number="1" antenna="3" connected="false" power_amp="OFF" f_lower="4900" f_upper="6200"/>
<rf_port number="2" antenna="" connected="false"/>
<rf_port number="3" antenna="" connected="false"/>
</node>
<node name="sdr2-s1-lg1.bed.cosmos-lab.org">
<rf_port number="0" antenna="1" connected="true" power_amp="OFF" f_lower="4900" f_upper="6200"/>
<rf_port number="1" antenna="3" connected="true" power_amp="OFF" f_lower="4900" f_upper="6200"/>
</node>
</nodes>
</response>
}}}
=== Turn off power amplifiers ===
This API call is simply a shorthand to easily turn off the power amplifiers for a given node. Keep in mind that power amplifier state is shared between nodes in the same physical location (eg. sdr1-md1.bed.cosmos-lab.org and sdr2-md1.bed.cosmos-lab.org).
HTTP API Path: `am1.cosmos-lab.org:5054/rf_control/power_amp_off`
Parameters:
||= '''Name''' =||= '''Decription''' =||= '''Required''' =||= '''Acceptable Input''' =||
|| node || Comma separated list of node FQDNs || Y || list of node names ||
==== Example 1 ====
Turn off the power amplifier for `sdr1-s1-lg1.bed.cosmos-lab.org`.
HTTP Request:
{{{
am1.cosmos-lab.org:5054/rf_control/power_amp_off?node=sdr1-s1-lg1.bed.cosmos-lab.org
Response:
<response status="OK">
<message>OK</message>
</response>
HTTP API Path: `am1.cosmos-lab.org:5054/rf_control/set_tx_path`
Parameters:
| = Name = | = Decription = | = Required = | = Acceptable Input = |
|---|---|---|---|
| node | Comma separated list of node FQDNs | Y | (list of node names) |
| rf_port | Node RF port to configure | Y | 0, 1 |
| power_amp | Power amplifier state | N | on, off |
| f_center | Center frequency of range requested | * | (frequency in MHz) |
| f_bandwidth | Bandwidth of frequency range requested | * | (frequency in MHz) |
| f_lower | Lower end of frequency range requested | * | (frequency in MHz) |
| f_upper | Upper end of frequency range requested | * | (frequency in MHz) |
* The filter frequency selection parameters are not required if all are committed. However, to select a frequency range, at least two are required using the following format.
| = 1st Parameter = | = 2nd Parameter = | = Effective Frequency Range = |
|---|---|---|
| f_center | f_bandwidth | (f_center - f_bandwidth/2) to (f_center + f_bandwidth/2) |
| f_upper | f_lower | (f_lower) to (f_upper) |
| f_lower | f_bandwidth | (f_lower) to (f_lower + bandwidth) |
| f_upper | f_bandwidth | (f_upper - bandwidth) to (f_upper) |
The allowed transmit frequency bands are detailed on the PoliciesCompliance#OutdoorRadioFrequencyAllocation page.
For `sdr1-s1-lg1` in `bed` testbed, connect TX RF ports 0 and 1 to their respective antennas, turn on the power amplifier, and request a frequency of 2.4-2.5 GHz.
HTTP Request:
am1.cosmos-lab.org:5054/rf_control/set_tx_path?node=sdr1-s1-lg1.bed.cosmos-lab.org&rf_port=0,1&power_amp=on&f_lower=2400&f_upper=2500
Response:
<response status="OK">
<message>OK</message>
</response>