# adi.FMComms2.Tx
<!-- <div class="sysobj_h1">adi.FMComms2.Tx</div> -->

<!-- <div class="sysobj_top_desc">
Receive data from Analog Devices AD9361 transceiver
</div> -->

<!-- <div class="sysobj_desc_title">Description</div> -->

<div class="sysobj_desc_txt">
<span>
    The adi.FMComms2.Tx System object is a signal source that can <br>    send complex data to the FMComms2.<br> <br>    tx = adi.FMComms2.Tx;<br>    tx = adi.FMComms2.Tx('uri','ip:192.168.2.1');<br> <br>    <a href="https://www.analog.com/en/design-center/evaluation-hardware-and-software/evaluation-boards-kits/EVAL-AD-FMCOMMS2.html">Product Page</a><br> <br>
</span>

</div>

<div class="sysobj_desc_title">Creation</div>

The class can be instantiated in the following way with and without property name value pairs.

```matlab
dev = adi.FMComms2.Tx
dev = adi.FMComms2.Tx(Name, Value)
```

<div class="sysobj_desc_title">Properties</div>

<div class="sysobj_desc_txt">
<span>
Unless otherwise indicated, properties are non-tunable, which means you cannot change their values after calling the object. Objects lock when you call them, and the release function unlocks them.
<br><br>
If a property is tunable, you can change its value at any time.
<br><br>
For more information on changing property values, see <a href="https://www.mathworks.com/help/matlab/matlab_prog/system-design-in-matlab-using-system-objects.html">System Design in MATLAB Using System Objects.</a>
</span>
</div>
<br>



:::{dropdown} CenterFrequency
RF center frequency, specified in Hz as a scalar. The default is 2.4e9. This property is tunable.
:::

:::{dropdown} SamplingRate
Baseband sampling rate in Hz, specified as a scalar from 65105 to 61.44e6 samples per second.
:::

:::{dropdown} RFBandwidth
RF Bandwidth of front-end analog filter in Hz, specified as a scalar from 200 kHz to 56 MHz.
:::

:::{dropdown} AttenuationChannel0
Attentuation specified as a scalar from -89.75 to 0 dB with a resolution of 0.25 dB.
:::

:::{dropdown} AttenuationChannel1
Attentuation specified as a scalar from -89.75 to 0 dB with a resolution of 0.25 dB.
:::

:::{dropdown} RFPortSelect
'A' 'B'
:::

:::{dropdown} SamplesPerFrame
Number of samples per frame, specified as an even positive integer from 2 to 16,777,216. Using values less than 3660 can yield poor performance.
:::

:::{dropdown} EnableCustomFilter
Enable use of custom filter file to set SamplingRate, RFBandwidth, and FIR in datapaths
:::

:::{dropdown} CustomFilterFileName
Path to custom filter file created from filter wizard
:::

:::{dropdown} EnabledChannels
Indexs of channels to be enabled. Input should be a [1xN] vector with the indexes of channels to be enabled. Order is irrelevant
:::

:::{dropdown} uri
Hostname or IP address of remote libIIO device
:::

:::{dropdown} enIO
If true, connects to libIIO device during simulation
:::

:::{dropdown} DataSource
Data source, specified as one of the following: 'DMA' — Specify the host as the source of the data. 'DDS' — Specify the DDS on the radio hardware as the source of the data. In this case, each channel has two additive tones.
:::

:::{dropdown} DDSFrequencies
Frequencies values in Hz of the DDS tone generators. For complex data devices the input is a [2xN] matrix where N is the available channels on the board. For complex data devices this is at most max(EnabledChannels)*2. For non-complex data devices this is at most max(EnabledChannels). If N < this upper limit, other DDSs are not set.
:::

:::{dropdown} DDSScales
Scale of DDS tones in range [0,1]. For complex data devices the input is a [2xN] matrix where N is the available channels on the board. For complex data devices this is at most max(EnabledChannels)*2. For non-complex data devices this is at most max(EnabledChannels). If N < this upper limit, other DDSs are not set.
:::

:::{dropdown} DDSPhases
Phases of DDS tones in range [0,360000]. For complex data devices the input is a [2xN] matrix where N is the available channels on the board. For complex data devices this is at most max(EnabledChannels)*2. For non-complex data devices this is at most max(EnabledChannels). If N < this upper limit, other DDSs are not set.
:::

:::{dropdown} EnableCyclicBuffers
Enable Cyclic Buffers, configures transmit buffers to be cyclic, which makes them continuously repeat
:::


<br>
<div class="sysobj_desc_title">Example Usage</div>

```matlab

%% Configure device
tx = adi.FMComms2.Tx;
tx.uri = 'ip:analog.local';

tx.CenterFrequency = 1e9;

tx.DataSource = 'DMA';
tx.EnableCyclicBuffers = true;
tx.EnabledChannels = 1;
%% Generate tone
amplitude = 2^15; frequency = 0.12e6;
swv1 = dsp.SineWave(amplitude, frequency);
swv1.ComplexOutput = true;
swv1.SamplesPerFrame = 2^14;
swv1.SampleRate = tx.SamplingRate;
y = swv1();
% Send
tx(y);

```