Loading...
Searching...
No Matches
Device.h File Reference
`#include <SoapySDR/Config.h>`
`#include <SoapySDR/Types.h>`
`#include <SoapySDR/Constants.h>`
`#include <SoapySDR/Errors.h>`
`#include <SoapySDR/Device.h>`

Go to the source code of this file.

## Typedefs

typedef struct SoapySDRDevice | SoapySDRDevice
| Forward declaration of device handle.
typedef struct SoapySDRStream | SoapySDRStream
| Forward declaration of stream handle.

## Functions

SOAPY_SDR_API int | SoapySDRDevice_lastStatus (void)
SOAPY_SDR_API const char * | SoapySDRDevice_lastError (void)
SOAPY_SDR_API SoapySDRKwargs * | SoapySDRDevice_enumerate (const SoapySDRKwargs *args, size_t *length)
SOAPY_SDR_API SoapySDRKwargs * | SoapySDRDevice_enumerateStrArgs (const char *args, size_t *length)
SOAPY_SDR_API SoapySDRDevice * | SoapySDRDevice_make (const SoapySDRKwargs *args)
SOAPY_SDR_API SoapySDRDevice * | SoapySDRDevice_makeStrArgs (const char *args)
SOAPY_SDR_API int | SoapySDRDevice_unmake (SoapySDRDevice *device)
SOAPY_SDR_API SoapySDRDevice ** | SoapySDRDevice_make_list (const SoapySDRKwargs *argsList, const size_t length)
SOAPY_SDR_API SoapySDRDevice ** | SoapySDRDevice_make_listStrArgs (const char *const *argsList, const size_t length)
SOAPY_SDR_API int | SoapySDRDevice_unmake_list (SoapySDRDevice **devices, const size_t length)
SOAPY_SDR_API char * | SoapySDRDevice_getDriverKey (const SoapySDRDevice *device)
SOAPY_SDR_API char * | SoapySDRDevice_getHardwareKey (const SoapySDRDevice *device)
SOAPY_SDR_API SoapySDRKwargs | SoapySDRDevice_getHardwareInfo (const SoapySDRDevice *device)
SOAPY_SDR_API int | SoapySDRDevice_setFrontendMapping (SoapySDRDevice *device, const int direction, const char *mapping)
SOAPY_SDR_API char * | SoapySDRDevice_getFrontendMapping (const SoapySDRDevice *device, const int direction)
SOAPY_SDR_API size_t | SoapySDRDevice_getNumChannels (const SoapySDRDevice *device, const int direction)
SOAPY_SDR_API SoapySDRKwargs | SoapySDRDevice_getChannelInfo (const SoapySDRDevice *device, const int direction, const size_t channel)
SOAPY_SDR_API bool | SoapySDRDevice_getFullDuplex (const SoapySDRDevice *device, const int direction, const size_t channel)
SOAPY_SDR_API char ** | SoapySDRDevice_getStreamFormats (const SoapySDRDevice *device, const int direction, const size_t channel, size_t *length)
SOAPY_SDR_API char * | SoapySDRDevice_getNativeStreamFormat (const SoapySDRDevice *device, const int direction, const size_t channel, double *fullScale)
SOAPY_SDR_API SoapySDRArgInfo * | SoapySDRDevice_getStreamArgsInfo (const SoapySDRDevice *device, const int direction, const size_t channel, size_t *length)
SOAPY_SDR_API SoapySDRStream * | SoapySDRDevice_setupStream (SoapySDRDevice *device, const int direction, const char *format, const size_t *channels, const size_t numChans, const SoapySDRKwargs *args)
SOAPY_SDR_API int | SoapySDRDevice_closeStream (SoapySDRDevice *device, SoapySDRStream *stream)
SOAPY_SDR_API size_t | SoapySDRDevice_getStreamMTU (const SoapySDRDevice *device, SoapySDRStream *stream)
SOAPY_SDR_API int | SoapySDRDevice_activateStream (SoapySDRDevice *device, SoapySDRStream *stream, const int flags, const long long timeNs, const size_t numElems)
SOAPY_SDR_API int | SoapySDRDevice_deactivateStream (SoapySDRDevice *device, SoapySDRStream *stream, const int flags, const long long timeNs)
SOAPY_SDR_API int | SoapySDRDevice_readStream (SoapySDRDevice *device, SoapySDRStream *stream, void *const *buffs, const size_t numElems, int *flags, long long *timeNs, const long timeoutUs)
SOAPY_SDR_API int | SoapySDRDevice_writeStream (SoapySDRDevice *device, SoapySDRStream *stream, const void *const *buffs, const size_t numElems, int *flags, const long long timeNs, const long timeoutUs)
SOAPY_SDR_API int | SoapySDRDevice_readStreamStatus (SoapySDRDevice *device, SoapySDRStream *stream, size_t *chanMask, int *flags, long long *timeNs, const long timeoutUs)
SOAPY_SDR_API size_t | SoapySDRDevice_getNumDirectAccessBuffers (SoapySDRDevice *device, SoapySDRStream *stream)
SOAPY_SDR_API int | SoapySDRDevice_getDirectAccessBufferAddrs (SoapySDRDevice *device, SoapySDRStream *stream, const size_t handle, void **buffs)
SOAPY_SDR_API int | SoapySDRDevice_acquireReadBuffer (SoapySDRDevice *device, SoapySDRStream *stream, size_t *handle, const void **buffs, int *flags, long long *timeNs, const long timeoutUs)
SOAPY_SDR_API void | SoapySDRDevice_releaseReadBuffer (SoapySDRDevice *device, SoapySDRStream *stream, const size_t handle)
SOAPY_SDR_API int | SoapySDRDevice_acquireWriteBuffer (SoapySDRDevice *device, SoapySDRStream *stream, size_t *handle, void **buffs, const long timeoutUs)
SOAPY_SDR_API void | SoapySDRDevice_releaseWriteBuffer (SoapySDRDevice *device, SoapySDRStream *stream, const size_t handle, const size_t numElems, int *flags, const long long timeNs)
SOAPY_SDR_API char ** | SoapySDRDevice_listAntennas (const SoapySDRDevice *device, const int direction, const size_t channel, size_t *length)
SOAPY_SDR_API int | SoapySDRDevice_setAntenna (SoapySDRDevice *device, const int direction, const size_t channel, const char *name)
SOAPY_SDR_API char * | SoapySDRDevice_getAntenna (const SoapySDRDevice *device, const int direction, const size_t channel)
SOAPY_SDR_API bool | SoapySDRDevice_hasDCOffsetMode (const SoapySDRDevice *device, const int direction, const size_t channel)
SOAPY_SDR_API int | SoapySDRDevice_setDCOffsetMode (SoapySDRDevice *device, const int direction, const size_t channel, const bool automatic)
SOAPY_SDR_API bool | SoapySDRDevice_getDCOffsetMode (const SoapySDRDevice *device, const int direction, const size_t channel)
SOAPY_SDR_API bool | SoapySDRDevice_hasDCOffset (const SoapySDRDevice *device, const int direction, const size_t channel)
SOAPY_SDR_API int | SoapySDRDevice_setDCOffset (SoapySDRDevice *device, const int direction, const size_t channel, const double offsetI, const double offsetQ)
SOAPY_SDR_API int | SoapySDRDevice_getDCOffset (const SoapySDRDevice *device, const int direction, const size_t channel, double *offsetI, double *offsetQ)
SOAPY_SDR_API bool | SoapySDRDevice_hasIQBalance (const SoapySDRDevice *device, const int direction, const size_t channel)
SOAPY_SDR_API int | SoapySDRDevice_setIQBalance (SoapySDRDevice *device, const int direction, const size_t channel, const double balanceI, const double balanceQ)
SOAPY_SDR_API int | SoapySDRDevice_getIQBalance (const SoapySDRDevice *device, const int direction, const size_t channel, double *balanceI, double *balanceQ)
SOAPY_SDR_API bool | SoapySDRDevice_hasIQBalanceMode (const SoapySDRDevice *device, const int direction, const size_t channel)
SOAPY_SDR_API int | SoapySDRDevice_setIQBalanceMode (SoapySDRDevice *device, const int direction, const size_t channel, const bool automatic)
SOAPY_SDR_API bool | SoapySDRDevice_getIQBalanceMode (const SoapySDRDevice *device, const int direction, const size_t channel)
SOAPY_SDR_API bool | SoapySDRDevice_hasFrequencyCorrection (const SoapySDRDevice *device, const int direction, const size_t channel)
SOAPY_SDR_API int | SoapySDRDevice_setFrequencyCorrection (SoapySDRDevice *device, const int direction, const size_t channel, const double value)
SOAPY_SDR_API double | SoapySDRDevice_getFrequencyCorrection (const SoapySDRDevice *device, const int direction, const size_t channel)
SOAPY_SDR_API char ** | SoapySDRDevice_listGains (const SoapySDRDevice *device, const int direction, const size_t channel, size_t *length)
SOAPY_SDR_API bool | SoapySDRDevice_hasGainMode (const SoapySDRDevice *device, const int direction, const size_t channel)
SOAPY_SDR_API int | SoapySDRDevice_setGainMode (SoapySDRDevice *device, const int direction, const size_t channel, const bool automatic)
SOAPY_SDR_API bool | SoapySDRDevice_getGainMode (const SoapySDRDevice *device, const int direction, const size_t channel)
SOAPY_SDR_API int | SoapySDRDevice_setGain (SoapySDRDevice *device, const int direction, const size_t channel, const double value)
SOAPY_SDR_API int | SoapySDRDevice_setGainElement (SoapySDRDevice *device, const int direction, const size_t channel, const char *name, const double value)
SOAPY_SDR_API double | SoapySDRDevice_getGain (const SoapySDRDevice *device, const int direction, const size_t channel)
SOAPY_SDR_API double | SoapySDRDevice_getGainElement (const SoapySDRDevice *device, const int direction, const size_t channel, const char *name)
SOAPY_SDR_API SoapySDRRange | SoapySDRDevice_getGainRange (const SoapySDRDevice *device, const int direction, const size_t channel)
SOAPY_SDR_API SoapySDRRange | SoapySDRDevice_getGainElementRange (const SoapySDRDevice *device, const int direction, const size_t channel, const char *name)
SOAPY_SDR_API int | SoapySDRDevice_setFrequency (SoapySDRDevice *device, const int direction, const size_t channel, const double frequency, const SoapySDRKwargs *args)
SOAPY_SDR_API int | SoapySDRDevice_setFrequencyComponent (SoapySDRDevice *device, const int direction, const size_t channel, const char *name, const double frequency, const SoapySDRKwargs *args)
SOAPY_SDR_API double | SoapySDRDevice_getFrequency (const SoapySDRDevice *device, const int direction, const size_t channel)
SOAPY_SDR_API double | SoapySDRDevice_getFrequencyComponent (const SoapySDRDevice *device, const int direction, const size_t channel, const char *name)
SOAPY_SDR_API char ** | SoapySDRDevice_listFrequencies (const SoapySDRDevice *device, const int direction, const size_t channel, size_t *length)
SOAPY_SDR_API SoapySDRRange * | SoapySDRDevice_getFrequencyRange (const SoapySDRDevice *device, const int direction, const size_t channel, size_t *length)
SOAPY_SDR_API SoapySDRRange * | SoapySDRDevice_getFrequencyRangeComponent (const SoapySDRDevice *device, const int direction, const size_t channel, const char *name, size_t *length)
SOAPY_SDR_API SoapySDRArgInfo * | SoapySDRDevice_getFrequencyArgsInfo (const SoapySDRDevice *device, const int direction, const size_t channel, size_t *length)
SOAPY_SDR_API int | SoapySDRDevice_setSampleRate (SoapySDRDevice *device, const int direction, const size_t channel, const double rate)
SOAPY_SDR_API double | SoapySDRDevice_getSampleRate (const SoapySDRDevice *device, const int direction, const size_t channel)
SOAPY_SDR_API double * | SoapySDRDevice_listSampleRates (const SoapySDRDevice *device, const int direction, const size_t channel, size_t *length)
SOAPY_SDR_API SoapySDRRange * | SoapySDRDevice_getSampleRateRange (const SoapySDRDevice *device, const int direction, const size_t channel, size_t *length)
SOAPY_SDR_API int | SoapySDRDevice_setBandwidth (SoapySDRDevice *device, const int direction, const size_t channel, const double bw)
SOAPY_SDR_API double | SoapySDRDevice_getBandwidth (const SoapySDRDevice *device, const int direction, const size_t channel)
SOAPY_SDR_API double * | SoapySDRDevice_listBandwidths (const SoapySDRDevice *device, const int direction, const size_t channel, size_t *length)
SOAPY_SDR_API SoapySDRRange * | SoapySDRDevice_getBandwidthRange (const SoapySDRDevice *device, const int direction, const size_t channel, size_t *length)
SOAPY_SDR_API int | SoapySDRDevice_setMasterClockRate (SoapySDRDevice *device, const double rate)
SOAPY_SDR_API double | SoapySDRDevice_getMasterClockRate (const SoapySDRDevice *device)
SOAPY_SDR_API SoapySDRRange * | SoapySDRDevice_getMasterClockRates (const SoapySDRDevice *device, size_t *length)
SOAPY_SDR_API int | SoapySDRDevice_setReferenceClockRate (SoapySDRDevice *device, const double rate)
SOAPY_SDR_API double | SoapySDRDevice_getReferenceClockRate (const SoapySDRDevice *device)
SOAPY_SDR_API SoapySDRRange * | SoapySDRDevice_getReferenceClockRates (const SoapySDRDevice *device, size_t *length)
SOAPY_SDR_API char ** | SoapySDRDevice_listClockSources (const SoapySDRDevice *device, size_t *length)
SOAPY_SDR_API int | SoapySDRDevice_setClockSource (SoapySDRDevice *device, const char *source)
SOAPY_SDR_API char * | SoapySDRDevice_getClockSource (const SoapySDRDevice *device)
SOAPY_SDR_API char ** | SoapySDRDevice_listTimeSources (const SoapySDRDevice *device, size_t *length)
SOAPY_SDR_API int | SoapySDRDevice_setTimeSource (SoapySDRDevice *device, const char *source)
SOAPY_SDR_API char * | SoapySDRDevice_getTimeSource (const SoapySDRDevice *device)
SOAPY_SDR_API bool | SoapySDRDevice_hasHardwareTime (const SoapySDRDevice *device, const char *what)
SOAPY_SDR_API long long | SoapySDRDevice_getHardwareTime (const SoapySDRDevice *device, const char *what)
SOAPY_SDR_API int | SoapySDRDevice_setHardwareTime (SoapySDRDevice *device, const long long timeNs, const char *what)
SOAPY_SDR_API int | SoapySDRDevice_setCommandTime (SoapySDRDevice *device, const long long timeNs, const char *what)
SOAPY_SDR_API char ** | SoapySDRDevice_listSensors (const SoapySDRDevice *device, size_t *length)
SOAPY_SDR_API SoapySDRArgInfo | SoapySDRDevice_getSensorInfo (const SoapySDRDevice *device, const char *key)
SOAPY_SDR_API char * | SoapySDRDevice_readSensor (const SoapySDRDevice *device, const char *key)
SOAPY_SDR_API char ** | SoapySDRDevice_listChannelSensors (const SoapySDRDevice *device, const int direction, const size_t channel, size_t *length)
SOAPY_SDR_API SoapySDRArgInfo | SoapySDRDevice_getChannelSensorInfo (const SoapySDRDevice *device, const int direction, const size_t channel, const char *key)
SOAPY_SDR_API char * | SoapySDRDevice_readChannelSensor (const SoapySDRDevice *device, const int direction, const size_t channel, const char *key)
SOAPY_SDR_API char ** | SoapySDRDevice_listRegisterInterfaces (const SoapySDRDevice *device, size_t *length)
SOAPY_SDR_API int | SoapySDRDevice_writeRegister (SoapySDRDevice *device, const char *name, const unsigned addr, const unsigned value)
SOAPY_SDR_API unsigned | SoapySDRDevice_readRegister (const SoapySDRDevice *device, const char *name, const unsigned addr)
SOAPY_SDR_API int | SoapySDRDevice_writeRegisters (SoapySDRDevice *device, const char *name, const unsigned addr, const unsigned *value, const size_t length)
SOAPY_SDR_API unsigned * | SoapySDRDevice_readRegisters (const SoapySDRDevice *device, const char *name, const unsigned addr, size_t *length)
SOAPY_SDR_API SoapySDRArgInfo * | SoapySDRDevice_getSettingInfo (const SoapySDRDevice *device, size_t *length)
SOAPY_SDR_API int | SoapySDRDevice_writeSetting (SoapySDRDevice *device, const char *key, const char *value)
SOAPY_SDR_API char * | SoapySDRDevice_readSetting (const SoapySDRDevice *device, const char *key)
SOAPY_SDR_API SoapySDRArgInfo * | SoapySDRDevice_getChannelSettingInfo (const SoapySDRDevice *device, const int direction, const size_t channel, size_t *length)
SOAPY_SDR_API int | SoapySDRDevice_writeChannelSetting (SoapySDRDevice *device, const int direction, const size_t channel, const char *key, const char *value)
SOAPY_SDR_API char * | SoapySDRDevice_readChannelSetting (const SoapySDRDevice *device, const int direction, const size_t channel, const char *key)
SOAPY_SDR_API char ** | SoapySDRDevice_listGPIOBanks (const SoapySDRDevice *device, size_t *length)
SOAPY_SDR_API int | SoapySDRDevice_writeGPIO (SoapySDRDevice *device, const char *bank, const unsigned value)
SOAPY_SDR_API int | SoapySDRDevice_writeGPIOMasked (SoapySDRDevice *device, const char *bank, const unsigned value, const unsigned mask)
SOAPY_SDR_API unsigned | SoapySDRDevice_readGPIO (const SoapySDRDevice *device, const char *bank)
SOAPY_SDR_API int | SoapySDRDevice_writeGPIODir (SoapySDRDevice *device, const char *bank, const unsigned dir)
SOAPY_SDR_API int | SoapySDRDevice_writeGPIODirMasked (SoapySDRDevice *device, const char *bank, const unsigned dir, const unsigned mask)
SOAPY_SDR_API unsigned | SoapySDRDevice_readGPIODir (const SoapySDRDevice *device, const char *bank)
SOAPY_SDR_API int | SoapySDRDevice_writeI2C (SoapySDRDevice *device, const int addr, const char *data, const size_t numBytes)
SOAPY_SDR_API char * | SoapySDRDevice_readI2C (SoapySDRDevice *device, const int addr, size_t *numBytes)
SOAPY_SDR_API unsigned | SoapySDRDevice_transactSPI (SoapySDRDevice *device, const int addr, const unsigned data, const size_t numBits)
SOAPY_SDR_API char ** | SoapySDRDevice_listUARTs (const SoapySDRDevice *device, size_t *length)
SOAPY_SDR_API int | SoapySDRDevice_writeUART (SoapySDRDevice *device, const char *which, const char *data)
SOAPY_SDR_API char * | SoapySDRDevice_readUART (const SoapySDRDevice *device, const char *which, const long timeoutUs)
SOAPY_SDR_API void * | SoapySDRDevice_getNativeDeviceHandle (const SoapySDRDevice *device)

## Detailed Description

Interface definition for Soapy SDR devices. This is the C version of the Device interface.

General design rules about the API: The caller must free non-const array results.

Copyright
  Copyright (c) 2014-2018 Josh Blum Copyright (c) 2016-2016 Bastille Networks 2019-2021 Nicholas Corgan SPDX-License-Identifier: BSL-1.0

## Typedef Documentation

## SoapySDRDevice

typedef struct SoapySDRDevice SoapySDRDevice

Forward declaration of device handle.

## SoapySDRStream

typedef struct SoapySDRStream SoapySDRStream

Forward declaration of stream handle.

## Function Documentation

## SoapySDRDevice_acquireReadBuffer()

SOAPY_SDR_API int SoapySDRDevice_acquireReadBuffer | ( | SoapySDRDevice * | device,
|  | SoapySDRStream * | stream,
|  | size_t * | handle,
|  | const void ** | buffs,
|  | int * | flags,
|  | long long * | timeNs,
|  | const long | timeoutUs
| ) |  |

Acquire direct buffers from a receive stream. This call is part of the direct buffer access API.

The buffs array will be filled with a stream pointer for each channel. Each pointer can be read up to the number of return value elements.

The handle will be set by the implementation so that the caller may later release access to the buffers with releaseReadBuffer(). Handle represents an index into the internal scatter/gather table such that handle is between 0 and num direct buffers - 1.

Parameters

  device | a pointer to a device instance
  stream | the opaque pointer to a stream handle
  handle | an index value used in the release() call
  buffs | an array of void* buffers num chans in size
  flags | optional flag indicators about the result
  timeNs | the buffer's timestamp in nanoseconds
  timeoutUs | the timeout in microseconds

Returns
  the number of elements read per buffer or error code

## SoapySDRDevice_acquireWriteBuffer()

SOAPY_SDR_API int SoapySDRDevice_acquireWriteBuffer | ( | SoapySDRDevice * | device,
|  | SoapySDRStream * | stream,
|  | size_t * | handle,
|  | void ** | buffs,
|  | const long | timeoutUs
| ) |  |

Acquire direct buffers from a transmit stream. This call is part of the direct buffer access API.

The buffs array will be filled with a stream pointer for each channel. Each pointer can be written up to the number of return value elements.

The handle will be set by the implementation so that the caller may later release access to the buffers with releaseWriteBuffer(). Handle represents an index into the internal scatter/gather table such that handle is between 0 and num direct buffers - 1.

Parameters

  device | a pointer to a device instance
  stream | the opaque pointer to a stream handle
  handle | an index value used in the release() call
  buffs | an array of void* buffers num chans in size
  timeoutUs | the timeout in microseconds

Returns
  the number of available elements per buffer or error

## SoapySDRDevice_activateStream()

SOAPY_SDR_API int SoapySDRDevice_activateStream | ( | SoapySDRDevice * | device,
|  | SoapySDRStream * | stream,
|  | const int | flags,
|  | const long long | timeNs,
|  | const size_t | numElems
| ) |  |

Activate a stream. Call activate to prepare a stream before using read/write(). The implementation control switches or stimulate data flow.

The timeNs is only valid when the flags have SOAPY_SDR_HAS_TIME. The numElems count can be used to request a finite burst size. The SOAPY_SDR_END_BURST flag can signal end on the finite burst. Not all implementations will support the full range of options. In this case, the implementation returns SOAPY_SDR_NOT_SUPPORTED.

Parameters

  device | a pointer to a device instance
  stream | the opaque pointer to a stream handle
  flags | optional flag indicators about the stream
  timeNs | optional activation time in nanoseconds
  numElems | optional element count for burst control

Returns
  0 for success or error code on failure

## SoapySDRDevice_closeStream()

SOAPY_SDR_API int SoapySDRDevice_closeStream | ( | SoapySDRDevice * | device,
|  | SoapySDRStream * | stream
| ) |  |

Close an open stream created by setupStream

Parameters

  device | a pointer to a device instance
  stream | the opaque pointer to a stream handle

Returns
  0 for success or error code on failure

## SoapySDRDevice_deactivateStream()

SOAPY_SDR_API int SoapySDRDevice_deactivateStream | ( | SoapySDRDevice * | device,
|  | SoapySDRStream * | stream,
|  | const int | flags,
|  | const long long | timeNs
| ) |  |

Deactivate a stream. Call deactivate when not using using read/write(). The implementation control switches or halt data flow.

The timeNs is only valid when the flags have SOAPY_SDR_HAS_TIME. Not all implementations will support the full range of options. In this case, the implementation returns SOAPY_SDR_NOT_SUPPORTED.

Parameters

  device | a pointer to a device instance
  stream | the opaque pointer to a stream handle
  flags | optional flag indicators about the stream
  timeNs | optional deactivation time in nanoseconds

Returns
  0 for success or error code on failure

## SoapySDRDevice_enumerate()

SOAPY_SDR_API SoapySDRKwargs * SoapySDRDevice_enumerate | ( | const SoapySDRKwargs * | args,
|  | size_t * | length
| ) |  |

Enumerate a list of available devices on the system.

Parameters

  | args | device construction key/value argument filters
  [out] | length | the number of elements in the result.

Returns
  a list of arguments strings, each unique to a device

## SoapySDRDevice_enumerateStrArgs()

SOAPY_SDR_API SoapySDRKwargs * SoapySDRDevice_enumerateStrArgs | ( | const char * | args,
|  | size_t * | length
| ) |  |

Enumerate a list of available devices on the system. Markup format for args: "keyA=valA, keyB=valB".

Parameters

  | args | a markup string of key/value argument filters
  [out] | length | the number of elements in the result.

Returns
  a list of arguments strings, each unique to a device

## SoapySDRDevice_getAntenna()

SOAPY_SDR_API char * SoapySDRDevice_getAntenna | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel
| ) |  |

Get the selected antenna on a chain.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device

Returns
  the name of an available antenna

## SoapySDRDevice_getBandwidth()

SOAPY_SDR_API double SoapySDRDevice_getBandwidth | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel
| ) |  |

Get the baseband filter width of the chain.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device

Returns
  the baseband filter width in Hz

## SoapySDRDevice_getBandwidthRange()

SOAPY_SDR_API SoapySDRRange * SoapySDRDevice_getBandwidthRange | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | size_t * | length
| ) |  |

Get the range of possible baseband filter widths.

Parameters

  | device | a pointer to a device instance
  | direction | the channel direction RX or TX
  | channel | an available channel on the device
  [out] | length | the number of ranges

Returns
  a list of bandwidth ranges in Hz

## SoapySDRDevice_getChannelInfo()

SOAPY_SDR_API SoapySDRKwargs SoapySDRDevice_getChannelInfo | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel
| ) |  |

Get channel info given the streaming direction

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | the channel number to get info for

Returns
  channel information

## SoapySDRDevice_getChannelSensorInfo()

SOAPY_SDR_API SoapySDRArgInfo SoapySDRDevice_getChannelSensorInfo | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | const char * | key
| ) |  |

Get meta-information about a channel sensor. Example: displayable name, type, range.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device
  key | the ID name of an available sensor

Returns
  meta-information about a sensor

## SoapySDRDevice_getChannelSettingInfo()

SOAPY_SDR_API SoapySDRArgInfo * SoapySDRDevice_getChannelSettingInfo | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | size_t * | length
| ) |  |

Describe the allowed keys and values used for channel settings.

Parameters

  | device | a pointer to a device instance
  | direction | the channel direction RX or TX
  | channel | an available channel on the device
  [out] | length | the number of sensor names

Returns
  a list of argument info structures

## SoapySDRDevice_getClockSource()

SOAPY_SDR_API char * SoapySDRDevice_getClockSource | ( | const SoapySDRDevice * | device | ) |

Get the clock source of the device

Parameters

  device | a pointer to a device instance

Returns
  the name of a clock source

## SoapySDRDevice_getDCOffset()

SOAPY_SDR_API int SoapySDRDevice_getDCOffset | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | double * | offsetI,
|  | double * | offsetQ
| ) |  |

Get the frontend DC offset correction.

Parameters

  | device | a pointer to a device instance
  | direction | the channel direction RX or TX
  | channel | an available channel on the device
  [out] | offsetI | the relative correction (1.0 max)
  [out] | offsetQ | the relative correction (1.0 max)

Returns
  0 for success or error code on failure

## SoapySDRDevice_getDCOffsetMode()

SOAPY_SDR_API bool SoapySDRDevice_getDCOffsetMode | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel
| ) |  |

Get the automatic DC offset corrections mode.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device

Returns
  true for automatic offset correction

## SoapySDRDevice_getDirectAccessBufferAddrs()

SOAPY_SDR_API int SoapySDRDevice_getDirectAccessBufferAddrs | ( | SoapySDRDevice * | device,
|  | SoapySDRStream * | stream,
|  | const size_t | handle,
|  | void ** | buffs
| ) |  |

Get the buffer addresses for a scatter/gather table entry. When the underlying DMA implementation uses scatter/gather then this call provides the user addresses for that table.

Example: The caller may query the DMA memory addresses once after stream creation to pre-allocate a re-usable ring-buffer.

Parameters

  device | a pointer to a device instance
  stream | the opaque pointer to a stream handle
  handle | an index value between 0 and num direct buffers - 1
  buffs | an array of void* buffers num chans in size

Returns
  0 for success or error code when not supported

## SoapySDRDevice_getDriverKey()

SOAPY_SDR_API char * SoapySDRDevice_getDriverKey | ( | const SoapySDRDevice * | device | ) |

A key that uniquely identifies the device driver. This key identifies the underlying implementation. Several variants of a product may share a driver.

Parameters

  device | a pointer to a device instance

## SoapySDRDevice_getFrequency()

SOAPY_SDR_API double SoapySDRDevice_getFrequency | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel
| ) |  |

Get the overall center frequency of the chain.

- For RX, this specifies the down-conversion frequency.
- For TX, this specifies the up-conversion frequency.
  Parameters

    device | a pointer to a device instance
    direction | the channel direction RX or TX
    channel | an available channel on the device

  Returns
    the center frequency in Hz

## SoapySDRDevice_getFrequencyArgsInfo()

SOAPY_SDR_API SoapySDRArgInfo * SoapySDRDevice_getFrequencyArgsInfo | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | size_t * | length
| ) |  |

Query the argument info description for tune args.

Parameters

  | device | a pointer to a device instance
  | direction | the channel direction RX or TX
  | channel | an available channel on the device
  [out] | length | the number of argument infos

Returns
  a list of argument info structures

## SoapySDRDevice_getFrequencyComponent()

SOAPY_SDR_API double SoapySDRDevice_getFrequencyComponent | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | const char * | name
| ) |  |

Get the frequency of a tunable element in the chain.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device
  name | the name of a tunable element

Returns
  the tunable element's frequency in Hz

## SoapySDRDevice_getFrequencyCorrection()

SOAPY_SDR_API double SoapySDRDevice_getFrequencyCorrection | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel
| ) |  |

Get the frontend frequency correction value.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device

Returns
  the correction value in PPM

## SoapySDRDevice_getFrequencyRange()

SOAPY_SDR_API SoapySDRRange * SoapySDRDevice_getFrequencyRange | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | size_t * | length
| ) |  |

Get the range of overall frequency values.

Parameters

  | device | a pointer to a device instance
  | direction | the channel direction RX or TX
  | channel | an available channel on the device
  [out] | length | the number of ranges

Returns
  a list of frequency ranges in Hz

## SoapySDRDevice_getFrequencyRangeComponent()

SOAPY_SDR_API SoapySDRRange * SoapySDRDevice_getFrequencyRangeComponent | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | const char * | name,
|  | size_t * | length
| ) |  |

Get the range of tunable values for the specified element.

Parameters

  | device | a pointer to a device instance
  | direction | the channel direction RX or TX
  | channel | an available channel on the device
  | name | the name of a tunable element
  [out] | length | the number of ranges

Returns
  a list of frequency ranges in Hz

## SoapySDRDevice_getFrontendMapping()

SOAPY_SDR_API char * SoapySDRDevice_getFrontendMapping | ( | const SoapySDRDevice * | device,
|  | const int | direction
| ) |  |

Get the mapping configuration string.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX

Returns
  the vendor-specific mapping string

## SoapySDRDevice_getFullDuplex()

SOAPY_SDR_API bool SoapySDRDevice_getFullDuplex | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel
| ) |  |

Find out if the specified channel is full or half duplex.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device

Returns
  true for full duplex, false for half duplex

## SoapySDRDevice_getGain()

SOAPY_SDR_API double SoapySDRDevice_getGain | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel
| ) |  |

Get the overall value of the gain elements in a chain.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device

Returns
  the value of the gain in dB

## SoapySDRDevice_getGainElement()

SOAPY_SDR_API double SoapySDRDevice_getGainElement | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | const char * | name
| ) |  |

Get the value of an individual amplification element in a chain.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device
  name | the name of an amplification element

Returns
  the value of the gain in dB

## SoapySDRDevice_getGainElementRange()

SOAPY_SDR_API SoapySDRRange SoapySDRDevice_getGainElementRange | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | const char * | name
| ) |  |

Get the range of possible gain values for a specific element.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device
  name | the name of an amplification element

Returns
  the range of possible gain values for the specified amplification element in dB

## SoapySDRDevice_getGainMode()

SOAPY_SDR_API bool SoapySDRDevice_getGainMode | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel
| ) |  |

Get the automatic gain mode on the chain.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device

Returns
  true for automatic gain setting

## SoapySDRDevice_getGainRange()

SOAPY_SDR_API SoapySDRRange SoapySDRDevice_getGainRange | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel
| ) |  |

Get the overall range of possible gain values.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device

Returns
  the range of possible gain values for this channel in dB

## SoapySDRDevice_getHardwareInfo()

SOAPY_SDR_API SoapySDRKwargs SoapySDRDevice_getHardwareInfo | ( | const SoapySDRDevice * | device | ) |

Query a dictionary of available device information. This dictionary can any number of values like vendor name, product name, revisions, serials... This information can be displayed to the user to help identify the instantiated device.

Parameters

  device | a pointer to a device instance

## SoapySDRDevice_getHardwareKey()

SOAPY_SDR_API char * SoapySDRDevice_getHardwareKey | ( | const SoapySDRDevice * | device | ) |

A key that uniquely identifies the hardware. This key should be meaningful to the user to optimize for the underlying hardware.

Parameters

  device | a pointer to a device instance

## SoapySDRDevice_getHardwareTime()

SOAPY_SDR_API long long SoapySDRDevice_getHardwareTime | ( | const SoapySDRDevice * | device,
|  | const char * | what
| ) |  |

Read the time from the hardware clock on the device. The what argument can refer to a specific time counter.

Parameters

  device | a pointer to a device instance
  what | optional argument

Returns
  the time in nanoseconds

## SoapySDRDevice_getIQBalance()

SOAPY_SDR_API int SoapySDRDevice_getIQBalance | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | double * | balanceI,
|  | double * | balanceQ
| ) |  |

Get the frontend IQ balance correction.

Parameters

  | device | a pointer to a device instance
  | direction | the channel direction RX or TX
  | channel | an available channel on the device
  [out] | balanceI | the relative correction (1.0 max)
  [out] | balanceQ | the relative correction (1.0 max)

Returns
  0 for success or error code on failure

## SoapySDRDevice_getIQBalanceMode()

SOAPY_SDR_API bool SoapySDRDevice_getIQBalanceMode | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel
| ) |  |

Get the automatic frontend IQ balance corrections mode.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device

Returns
  true for automatic correction

## SoapySDRDevice_getMasterClockRate()

SOAPY_SDR_API double SoapySDRDevice_getMasterClockRate | ( | const SoapySDRDevice * | device | ) |

Get the master clock rate of the device.

Parameters

  device | a pointer to a device instance

Returns
  the clock rate in Hz

## SoapySDRDevice_getMasterClockRates()

SOAPY_SDR_API SoapySDRRange * SoapySDRDevice_getMasterClockRates | ( | const SoapySDRDevice * | device,
|  | size_t * | length
| ) |  |

Get the range of available master clock rates.

Parameters

  | device | a pointer to a device instance
  [out] | length | the number of ranges

Returns
  a list of clock rate ranges in Hz

## SoapySDRDevice_getNativeDeviceHandle()

SOAPY_SDR_API void * SoapySDRDevice_getNativeDeviceHandle | ( | const SoapySDRDevice * | device | ) |

A handle to the native device used by the driver. The implementation may return a null value if it does not support or does not wish to provide access to the native handle.

Parameters

  device | a pointer to a device instance

Returns
  a handle to the native device or null

## SoapySDRDevice_getNativeStreamFormat()

SOAPY_SDR_API char * SoapySDRDevice_getNativeStreamFormat | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | double * | fullScale
| ) |  |

Get the hardware's native stream format for this channel. This is the format used by the underlying transport layer, and the direct buffer access API calls (when available).

Parameters

  | device | a pointer to a device instance
  | direction | the channel direction RX or TX
  | channel | an available channel on the device
  [out] | fullScale | the maximum possible value

Returns
  the native stream buffer format string

## SoapySDRDevice_getNumChannels()

SOAPY_SDR_API size_t SoapySDRDevice_getNumChannels | ( | const SoapySDRDevice * | device,
|  | const int | direction
| ) |  |

Get a number of channels given the streaming direction

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX

Returns
  the number of channels

## SoapySDRDevice_getNumDirectAccessBuffers()

SOAPY_SDR_API size_t SoapySDRDevice_getNumDirectAccessBuffers | ( | SoapySDRDevice * | device,
|  | SoapySDRStream * | stream
| ) |  |

How many direct access buffers can the stream provide? This is the number of times the user can call acquire() on a stream without making subsequent calls to release(). A return value of 0 means that direct access is not supported.

Parameters

  device | a pointer to a device instance
  stream | the opaque pointer to a stream handle

Returns
  the number of direct access buffers or 0

## SoapySDRDevice_getReferenceClockRate()

SOAPY_SDR_API double SoapySDRDevice_getReferenceClockRate | ( | const SoapySDRDevice * | device | ) |

Get the reference clock rate of the device.

Parameters

  device | a pointer to a device instance

Returns
  the clock rate in Hz

## SoapySDRDevice_getReferenceClockRates()

SOAPY_SDR_API SoapySDRRange * SoapySDRDevice_getReferenceClockRates | ( | const SoapySDRDevice * | device,
|  | size_t * | length
| ) |  |

Get the range of available reference clock rates.

Parameters

  | device | a pointer to a device instance
  [out] | length | the number of sources

Returns
  a list of clock rate ranges in Hz

## SoapySDRDevice_getSampleRate()

SOAPY_SDR_API double SoapySDRDevice_getSampleRate | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel
| ) |  |

Get the baseband sample rate of the chain.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device

Returns
  the sample rate in samples per second

## SoapySDRDevice_getSampleRateRange()

SOAPY_SDR_API SoapySDRRange * SoapySDRDevice_getSampleRateRange | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | size_t * | length
| ) |  |

Get the range of possible baseband sample rates.

Parameters

  | device | a pointer to a device instance
  | direction | the channel direction RX or TX
  | channel | an available channel on the device
  [out] | length | the number of sample rates

Returns
  a list of sample rate ranges in samples per second

## SoapySDRDevice_getSensorInfo()

SOAPY_SDR_API SoapySDRArgInfo SoapySDRDevice_getSensorInfo | ( | const SoapySDRDevice * | device,
|  | const char * | key
| ) |  |

Get meta-information about a sensor. Example: displayable name, type, range.

Parameters

  device | a pointer to a device instance
  key | the ID name of an available sensor

Returns
  meta-information about a sensor

## SoapySDRDevice_getSettingInfo()

SOAPY_SDR_API SoapySDRArgInfo * SoapySDRDevice_getSettingInfo | ( | const SoapySDRDevice * | device,
|  | size_t * | length
| ) |  |

Describe the allowed keys and values used for settings.

Parameters

  | device | a pointer to a device instance
  [out] | length | the number of sensor names

Returns
  a list of argument info structures

## SoapySDRDevice_getStreamArgsInfo()

SOAPY_SDR_API SoapySDRArgInfo * SoapySDRDevice_getStreamArgsInfo | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | size_t * | length
| ) |  |

Query the argument info description for stream args.

Parameters

  | device | a pointer to a device instance
  | direction | the channel direction RX or TX
  | channel | an available channel on the device
  [out] | length | the number of argument infos

Returns
  a list of argument info structures

## SoapySDRDevice_getStreamFormats()

SOAPY_SDR_API char ** SoapySDRDevice_getStreamFormats | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | size_t * | length
| ) |  |

Query a list of the available stream formats.

Parameters

  | device | a pointer to a device instance
  | direction | the channel direction RX or TX
  | channel | an available channel on the device
  [out] | length | the number of format strings

Returns
  a list of allowed format strings. See SoapySDRDevice_setupStream() for the format syntax.

## SoapySDRDevice_getStreamMTU()

SOAPY_SDR_API size_t SoapySDRDevice_getStreamMTU | ( | const SoapySDRDevice * | device,
|  | SoapySDRStream * | stream
| ) |  |

Get the stream's maximum transmission unit (MTU) in number of elements. The MTU specifies the maximum payload transfer in a stream operation. This value can be used as a stream buffer allocation size that can best optimize throughput given the underlying stream implementation.

Parameters

  device | a pointer to a device instance
  stream | the opaque pointer to a stream handle

Returns
  the MTU in number of stream elements (never zero)

## SoapySDRDevice_getTimeSource()

SOAPY_SDR_API char * SoapySDRDevice_getTimeSource | ( | const SoapySDRDevice * | device | ) |

Get the time source of the device

Parameters

  device | a pointer to a device instance

Returns
  the name of a time source

## SoapySDRDevice_hasDCOffset()

SOAPY_SDR_API bool SoapySDRDevice_hasDCOffset | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel
| ) |  |

Does the device support frontend DC offset correction?

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device

Returns
  true if DC offset corrections are supported

## SoapySDRDevice_hasDCOffsetMode()

SOAPY_SDR_API bool SoapySDRDevice_hasDCOffsetMode | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel
| ) |  |

Does the device support automatic DC offset corrections?

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device

Returns
  true if automatic corrections are supported

## SoapySDRDevice_hasFrequencyCorrection()

SOAPY_SDR_API bool SoapySDRDevice_hasFrequencyCorrection | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel
| ) |  |

Does the device support frontend frequency correction?

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device

Returns
  true if frequency corrections are supported

## SoapySDRDevice_hasGainMode()

SOAPY_SDR_API bool SoapySDRDevice_hasGainMode | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel
| ) |  |

Does the device support automatic gain control?

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device

Returns
  true for automatic gain control

## SoapySDRDevice_hasHardwareTime()

SOAPY_SDR_API bool SoapySDRDevice_hasHardwareTime | ( | const SoapySDRDevice * | device,
|  | const char * | what
| ) |  |

Does this device have a hardware clock?

Parameters

  device | a pointer to a device instance
  what | optional argument

Returns
  true if the hardware clock exists

## SoapySDRDevice_hasIQBalance()

SOAPY_SDR_API bool SoapySDRDevice_hasIQBalance | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel
| ) |  |

Does the device support frontend IQ balance correction?

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device

Returns
  true if IQ balance corrections are supported

## SoapySDRDevice_hasIQBalanceMode()

SOAPY_SDR_API bool SoapySDRDevice_hasIQBalanceMode | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel
| ) |  |

Does the device support automatic frontend IQ balance correction?

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device

Returns
  true if automatic IQ balance corrections are supported

## SoapySDRDevice_lastError()

SOAPY_SDR_API const char * SoapySDRDevice_lastError | ( | void |  | ) |

Get the last error message after a device call fails. When an device API call throws, the C bindings catch the exception, store its message in thread-safe storage, and return a non-zero status code to indicate failure. Use lastError() to access the exception's error message.

## SoapySDRDevice_lastStatus()

SOAPY_SDR_API int SoapySDRDevice_lastStatus | ( | void |  | ) |

Get the last status code after a Device API call. The status code is cleared on entry to each Device call. When an device API call throws, the C bindings catch the exception, and set a non-zero last status code. Use lastStatus() to determine success/failure for Device calls without integer status return codes.

## SoapySDRDevice_listAntennas()

SOAPY_SDR_API char ** SoapySDRDevice_listAntennas | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | size_t * | length
| ) |  |

Get a list of available antennas to select on a given chain.

Parameters

  | device | a pointer to a device instance
  | direction | the channel direction RX or TX
  | channel | an available channel on the device
  [out] | length | the number of antenna names

Returns
  a list of available antenna names

## SoapySDRDevice_listBandwidths()

SOAPY_SDR_API double * SoapySDRDevice_listBandwidths | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | size_t * | length
| ) |  |

Get the range of possible baseband filter widths.

Deprecated:
  replaced by getBandwidthRange()

Parameters

  | device | a pointer to a device instance
  | direction | the channel direction RX or TX
  | channel | an available channel on the device
  [out] | length | the number of bandwidths

Returns
  a list of possible bandwidths in Hz

## SoapySDRDevice_listChannelSensors()

SOAPY_SDR_API char ** SoapySDRDevice_listChannelSensors | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | size_t * | length
| ) |  |

List the available channel readback sensors. A sensor can represent a reference lock, RSSI, temperature.

Parameters

  | device | a pointer to a device instance
  | direction | the channel direction RX or TX
  | channel | an available channel on the device
  [out] | length | the number of sensor names

Returns
  a list of available sensor string names

## SoapySDRDevice_listClockSources()

SOAPY_SDR_API char ** SoapySDRDevice_listClockSources | ( | const SoapySDRDevice * | device,
|  | size_t * | length
| ) |  |

Get the list of available clock sources.

Parameters

  | device | a pointer to a device instance
  [out] | length | the number of sources

Returns
  a list of clock source names

## SoapySDRDevice_listFrequencies()

SOAPY_SDR_API char ** SoapySDRDevice_listFrequencies | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | size_t * | length
| ) |  |

List available tunable elements in the chain. Elements should be in order RF to baseband.

Parameters

  | device | a pointer to a device instance
  | direction | the channel direction RX or TX
  | channel | an available channel
  [out] | length | the number names

Returns
  a list of tunable elements by name

## SoapySDRDevice_listGains()

SOAPY_SDR_API char ** SoapySDRDevice_listGains | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | size_t * | length
| ) |  |

List available amplification elements. Elements should be in order RF to baseband.

Parameters

  | device | a pointer to a device instance
  | direction | the channel direction RX or TX
  | channel | an available channel
  [out] | length | the number of gain names

Returns
  a list of gain string names

## SoapySDRDevice_listGPIOBanks()

SOAPY_SDR_API char ** SoapySDRDevice_listGPIOBanks | ( | const SoapySDRDevice * | device,
|  | size_t * | length
| ) |  |

Get a list of available GPIO banks by name.

Parameters

  [out] | length | the number of GPIO banks
  | device | a pointer to a device instance

## SoapySDRDevice_listRegisterInterfaces()

SOAPY_SDR_API char ** SoapySDRDevice_listRegisterInterfaces | ( | const SoapySDRDevice * | device,
|  | size_t * | length
| ) |  |

Get a list of available register interfaces by name.

Parameters

  | device | a pointer to a device instance
  [out] | length | the number of interfaces

Returns
  a list of available register interfaces

## SoapySDRDevice_listSampleRates()

SOAPY_SDR_API double * SoapySDRDevice_listSampleRates | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | size_t * | length
| ) |  |

Get the range of possible baseband sample rates.

Deprecated:
  replaced by getSampleRateRange()

Parameters

  | device | a pointer to a device instance
  | direction | the channel direction RX or TX
  | channel | an available channel on the device
  [out] | length | the number of sample rates

Returns
  a list of possible rates in samples per second

## SoapySDRDevice_listSensors()

SOAPY_SDR_API char ** SoapySDRDevice_listSensors | ( | const SoapySDRDevice * | device,
|  | size_t * | length
| ) |  |

List the available global readback sensors. A sensor can represent a reference lock, RSSI, temperature.

Parameters

  | device | a pointer to a device instance
  [out] | length | the number of sensor names

Returns
  a list of available sensor string names

## SoapySDRDevice_listTimeSources()

SOAPY_SDR_API char ** SoapySDRDevice_listTimeSources | ( | const SoapySDRDevice * | device,
|  | size_t * | length
| ) |  |

Get the list of available time sources.

Parameters

  | device | a pointer to a device instance
  [out] | length | the number of sources

Returns
  a list of time source names

## SoapySDRDevice_listUARTs()

SOAPY_SDR_API char ** SoapySDRDevice_listUARTs | ( | const SoapySDRDevice * | device,
|  | size_t * | length
| ) |  |

Enumerate the available UART devices.

Parameters

  | device | a pointer to a device instance
  [out] | length | the number of UART names

Returns
  a list of names of available UARTs

## SoapySDRDevice_make()

SOAPY_SDR_API SoapySDRDevice * SoapySDRDevice_make | ( | const SoapySDRKwargs * | args | ) |

Make a new Device object given device construction args. The device pointer will be stored in a table so subsequent calls with the same arguments will produce the same device. For every call to make, there should be a matched call to unmake.

Parameters

  args | device construction key/value argument map

Returns
  a pointer to a new Device object

## SoapySDRDevice_make_list()

SOAPY_SDR_API SoapySDRDevice ** SoapySDRDevice_make_list | ( | const SoapySDRKwargs * | argsList,
|  | const size_t | length
| ) |  |

Create a list of devices from a list of construction arguments. This is a convenience call to parallelize device construction, and is fundamentally a parallel for loop of make(Kwargs).

Parameters

  argsList | a list of device arguments per each device
  length | the length of the argsList array

Returns
  a list of device pointers per each specified argument

## SoapySDRDevice_make_listStrArgs()

SOAPY_SDR_API SoapySDRDevice ** SoapySDRDevice_make_listStrArgs | ( | const char *const * | argsList,
|  | const size_t | length
| ) |  |

Create a list of devices from a list of construction arguments. This is a convenience call to parallelize device construction, and is fundamentally a parallel for loop of makeStrArgs(args).

Parameters

  argsList | a list of device arguments per each device
  length | the length of the argsList array

Returns
  a list of device pointers per each specified argument

## SoapySDRDevice_makeStrArgs()

SOAPY_SDR_API SoapySDRDevice * SoapySDRDevice_makeStrArgs | ( | const char * | args | ) |

Make a new Device object given device construction args. The device pointer will be stored in a table so subsequent calls with the same arguments will produce the same device. For every call to make, there should be a matched call to unmake.

Parameters

  args | a markup string of key/value arguments

Returns
  a pointer to a new Device object or null for error

## SoapySDRDevice_readChannelSensor()

SOAPY_SDR_API char * SoapySDRDevice_readChannelSensor | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | const char * | key
| ) |  |

Readback a channel sensor given the name. The value returned is a string which can represent a boolean ("true"/"false"), an integer, or float.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device
  key | the ID name of an available sensor

Returns
  the current value of the sensor

## SoapySDRDevice_readChannelSetting()

SOAPY_SDR_API char * SoapySDRDevice_readChannelSetting | ( | const SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | const char * | key
| ) |  |

Read an arbitrary channel setting on the device.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device
  key | the setting identifier

Returns
  the setting value

## SoapySDRDevice_readGPIO()

SOAPY_SDR_API unsigned SoapySDRDevice_readGPIO | ( | const SoapySDRDevice * | device,
|  | const char * | bank
| ) |  |

Readback the value of a GPIO bank.

Parameters

  device | a pointer to a device instance
  bank | the name of an available bank

Returns
  an integer representing GPIO bits

## SoapySDRDevice_readGPIODir()

SOAPY_SDR_API unsigned SoapySDRDevice_readGPIODir | ( | const SoapySDRDevice * | device,
|  | const char * | bank
| ) |  |

Read the data direction of a GPIO bank.

Parameters

  device | a pointer to a device instance 1 bits represent outputs, 0 bits represent inputs.
  bank | the name of an available bank

Returns
  an integer representing data direction bits

## SoapySDRDevice_readI2C()

SOAPY_SDR_API char * SoapySDRDevice_readI2C | ( | SoapySDRDevice * | device,
|  | const int | addr,
|  | size_t * | numBytes
| ) |  |

Read from an available I2C slave. If the device contains multiple I2C masters, the address bits can encode which master. Pass the number of bytes to be read in via numBytes; numBytes will be set to the number of actual bytes read.

Parameters

  | device | a pointer to a device instance
  | addr | the address of the slave
  [in,out] | numBytes | the number of bytes to read

Returns
  an array of bytes read from the slave

## SoapySDRDevice_readRegister()

SOAPY_SDR_API unsigned SoapySDRDevice_readRegister | ( | const SoapySDRDevice * | device,
|  | const char * | name,
|  | const unsigned | addr
| ) |  |

Read a register on the device given the interface name.

Parameters

  device | a pointer to a device instance
  name | the name of a available register interface
  addr | the register address

Returns
  the register value

## SoapySDRDevice_readRegisters()

SOAPY_SDR_API unsigned * SoapySDRDevice_readRegisters | ( | const SoapySDRDevice * | device,
|  | const char * | name,
|  | const unsigned | addr,
|  | size_t * | length
| ) |  |

Read a memory block on the device given the interface name. Pass the number of words to be read in via length; length will be set to the number of actual words read.

Parameters

  | device | a pointer to a device instance
  | name | the name of a available memory block interface
  | addr | the memory block start address
  [in,out] | length | number of words to be read from memory block

Returns
  the memory block content

## SoapySDRDevice_readSensor()

SOAPY_SDR_API char * SoapySDRDevice_readSensor | ( | const SoapySDRDevice * | device,
|  | const char * | key
| ) |  |

Readback a global sensor given the name. The value returned is a string which can represent a boolean ("true"/"false"), an integer, or float.

Parameters

  device | a pointer to a device instance
  key | the ID name of an available sensor

Returns
  the current value of the sensor

## SoapySDRDevice_readSetting()

SOAPY_SDR_API char * SoapySDRDevice_readSetting | ( | const SoapySDRDevice * | device,
|  | const char * | key
| ) |  |

Read an arbitrary setting on the device.

Parameters

  device | a pointer to a device instance
  key | the setting identifier

Returns
  the setting value

## SoapySDRDevice_readStream()

SOAPY_SDR_API int SoapySDRDevice_readStream | ( | SoapySDRDevice * | device,
|  | SoapySDRStream * | stream,
|  | void *const * | buffs,
|  | const size_t | numElems,
|  | int * | flags,
|  | long long * | timeNs,
|  | const long | timeoutUs
| ) |  |

Read elements from a stream for reception. This is a multi-channel call, and buffs should be an array of void *, where each pointer will be filled with data from a different channel.

Client code compatibility: The readStream() call should be well defined at all times, including prior to activation and after deactivation. When inactive, readStream() should implement the timeout specified by the caller and return SOAPY_SDR_TIMEOUT.

Parameters

  | device | a pointer to a device instance
  | stream | the opaque pointer to a stream handle
  | buffs | an array of void* buffers num chans in size
  | numElems | the number of elements in each buffer
  [out] | flags | optional flag indicators about the result
  [out] | timeNs | the buffer's timestamp in nanoseconds
  | timeoutUs | the timeout in microseconds

Returns
  the number of elements read per buffer or error code

## SoapySDRDevice_readStreamStatus()

SOAPY_SDR_API int SoapySDRDevice_readStreamStatus | ( | SoapySDRDevice * | device,
|  | SoapySDRStream * | stream,
|  | size_t * | chanMask,
|  | int * | flags,
|  | long long * | timeNs,
|  | const long | timeoutUs
| ) |  |

Readback status information about a stream. This call is typically used on a transmit stream to report time errors, underflows, and burst completion.

Client code compatibility: Client code may continually poll readStreamStatus() in a loop. Implementations of readStreamStatus() should wait in the call for a status change event or until the timeout expiration. When stream status is not implemented on a particular stream, readStreamStatus() should return SOAPY_SDR_NOT_SUPPORTED. Client code may use this indication to disable a polling loop.

Parameters

  device | a pointer to a device instance
  stream | the opaque pointer to a stream handle
  chanMask | to which channels this status applies
  flags | optional input flags and output flags
  timeNs | the buffer's timestamp in nanoseconds
  timeoutUs | the timeout in microseconds

Returns
  0 for success or error code like timeout

## SoapySDRDevice_readUART()

SOAPY_SDR_API char * SoapySDRDevice_readUART | ( | const SoapySDRDevice * | device,
|  | const char * | which,
|  | const long | timeoutUs
| ) |  |

Read bytes from a UART until timeout or newline. Its up to the implementation to set the baud rate, carriage return settings, flushing on newline.

Parameters

  device | a pointer to a device instance
  which | the name of an available UART
  timeoutUs | a timeout in microseconds

Returns
  a null terminated array of bytes

## SoapySDRDevice_releaseReadBuffer()

SOAPY_SDR_API void SoapySDRDevice_releaseReadBuffer | ( | SoapySDRDevice * | device,
|  | SoapySDRStream * | stream,
|  | const size_t | handle
| ) |  |

Release an acquired buffer back to the receive stream. This call is part of the direct buffer access API.

Parameters

  device | a pointer to a device instance
  stream | the opaque pointer to a stream handle
  handle | the opaque handle from the acquire() call

## SoapySDRDevice_releaseWriteBuffer()

SOAPY_SDR_API void SoapySDRDevice_releaseWriteBuffer | ( | SoapySDRDevice * | device,
|  | SoapySDRStream * | stream,
|  | const size_t | handle,
|  | const size_t | numElems,
|  | int * | flags,
|  | const long long | timeNs
| ) |  |

Release an acquired buffer back to the transmit stream. This call is part of the direct buffer access API.

Stream meta-data is provided as part of the release call, and not the acquire call so that the caller may acquire buffers without committing to the contents of the meta-data, which can be determined by the user as the buffers are filled.

Parameters

  device | a pointer to a device instance
  stream | the opaque pointer to a stream handle
  handle | the opaque handle from the acquire() call
  numElems | the number of elements written to each buffer
  flags | optional input flags and output flags
  timeNs | the buffer's timestamp in nanoseconds

## SoapySDRDevice_setAntenna()

SOAPY_SDR_API int SoapySDRDevice_setAntenna | ( | SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | const char * | name
| ) |  |

Set the selected antenna on a chain.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device
  name | the name of an available antenna

Returns
  an error code or 0 for success

## SoapySDRDevice_setBandwidth()

SOAPY_SDR_API int SoapySDRDevice_setBandwidth | ( | SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | const double | bw
| ) |  |

Set the baseband filter width of the chain.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device
  bw | the baseband filter width in Hz

Returns
  an error code or 0 for success

## SoapySDRDevice_setClockSource()

SOAPY_SDR_API int SoapySDRDevice_setClockSource | ( | SoapySDRDevice * | device,
|  | const char * | source
| ) |  |

Set the clock source on the device

Parameters

  device | a pointer to a device instance
  source | the name of a clock source

Returns
  an error code or 0 for success

## SoapySDRDevice_setCommandTime()

SOAPY_SDR_API int SoapySDRDevice_setCommandTime | ( | SoapySDRDevice * | device,
|  | const long long | timeNs,
|  | const char * | what
| ) |  |

Set the time of subsequent configuration calls. The what argument can refer to a specific command queue. Implementations may use a time of 0 to clear.

Deprecated:
  replaced by setHardwareTime()

Parameters

  device | a pointer to a device instance
  timeNs | time in nanoseconds
  what | optional argument

Returns
  0 for success or error code on failure

## SoapySDRDevice_setDCOffset()

SOAPY_SDR_API int SoapySDRDevice_setDCOffset | ( | SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | const double | offsetI,
|  | const double | offsetQ
| ) |  |

Set the frontend DC offset correction.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device
  offsetI | the relative correction (1.0 max)
  offsetQ | the relative correction (1.0 max)

Returns
  an error code or 0 for success

## SoapySDRDevice_setDCOffsetMode()

SOAPY_SDR_API int SoapySDRDevice_setDCOffsetMode | ( | SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | const bool | automatic
| ) |  |

Set the automatic DC offset corrections mode.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device
  automatic | true for automatic offset correction

Returns
  an error code or 0 for success

## SoapySDRDevice_setFrequency()

SOAPY_SDR_API int SoapySDRDevice_setFrequency | ( | SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | const double | frequency,
|  | const SoapySDRKwargs * | args
| ) |  |

Set the center frequency of the chain.

- For RX, this specifies the down-conversion frequency.
- For TX, this specifies the up-conversion frequency.

The default implementation of setFrequency() will tune the "RF" component as close as possible to the requested center frequency. Tuning inaccuracies will be compensated for with the "BB" component.

The args can be used to augment the tuning algorithm.

- Use "OFFSET" to specify an "RF" tuning offset, usually with the intention of moving the LO out of the passband. The offset will be compensated for using the "BB" component.
- Use the name of a component for the key and a frequency in Hz as the value (any format) to enforce a specific frequency. The other components will be tuned with compensation to achieve the specified overall frequency.
- Use the name of a component for the key and the value "IGNORE" so that the tuning algorithm will avoid altering the component.
- Vendor specific implementations can also use the same args to augment tuning in other ways such as specifying fractional vs integer N tuning.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device
  frequency | the center frequency in Hz
  args | optional tuner arguments

Returns
  an error code or 0 for success

## SoapySDRDevice_setFrequencyComponent()

SOAPY_SDR_API int SoapySDRDevice_setFrequencyComponent | ( | SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | const char * | name,
|  | const double | frequency,
|  | const SoapySDRKwargs * | args
| ) |  |

Tune the center frequency of the specified element.

- For RX, this specifies the down-conversion frequency.
- For TX, this specifies the up-conversion frequency.

Recommended names used to represent tunable components:

- "CORR" - freq error correction in PPM
- "RF" - frequency of the RF frontend
- "BB" - frequency of the baseband DSP

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device
  name | the name of a tunable element
  frequency | the center frequency in Hz
  args | optional tuner arguments

Returns
  an error code or 0 for success

## SoapySDRDevice_setFrequencyCorrection()

SOAPY_SDR_API int SoapySDRDevice_setFrequencyCorrection | ( | SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | const double | value
| ) |  |

Fine tune the frontend frequency correction.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device
  value | the correction in PPM

Returns
  an error code or 0 for success

## SoapySDRDevice_setFrontendMapping()

SOAPY_SDR_API int SoapySDRDevice_setFrontendMapping | ( | SoapySDRDevice * | device,
|  | const int | direction,
|  | const char * | mapping
| ) |  |

Set the frontend mapping of available DSP units to RF frontends. This mapping controls channel mapping and channel availability.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  mapping | a vendor-specific mapping string

Returns
  an error code or 0 for success

## SoapySDRDevice_setGain()

SOAPY_SDR_API int SoapySDRDevice_setGain | ( | SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | const double | value
| ) |  |

Set the overall amplification in a chain. The gain will be distributed automatically across available element.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device
  value | the new amplification value in dB

Returns
  an error code or 0 for success

## SoapySDRDevice_setGainElement()

SOAPY_SDR_API int SoapySDRDevice_setGainElement | ( | SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | const char * | name,
|  | const double | value
| ) |  |

Set the value of a amplification element in a chain.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device
  name | the name of an amplification element
  value | the new amplification value in dB

Returns
  an error code or 0 for success

## SoapySDRDevice_setGainMode()

SOAPY_SDR_API int SoapySDRDevice_setGainMode | ( | SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | const bool | automatic
| ) |  |

Set the automatic gain mode on the chain.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device
  automatic | true for automatic gain setting

Returns
  an error code or 0 for success

## SoapySDRDevice_setHardwareTime()

SOAPY_SDR_API int SoapySDRDevice_setHardwareTime | ( | SoapySDRDevice * | device,
|  | const long long | timeNs,
|  | const char * | what
| ) |  |

Write the time to the hardware clock on the device. The what argument can refer to a specific time counter.

Parameters

  device | a pointer to a device instance
  timeNs | time in nanoseconds
  what | optional argument

Returns
  0 for success or error code on failure

## SoapySDRDevice_setIQBalance()

SOAPY_SDR_API int SoapySDRDevice_setIQBalance | ( | SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | const double | balanceI,
|  | const double | balanceQ
| ) |  |

Set the frontend IQ balance correction.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device
  balanceI | the relative correction (1.0 max)
  balanceQ | the relative correction (1.0 max)

Returns
  an error code or 0 for success

## SoapySDRDevice_setIQBalanceMode()

SOAPY_SDR_API int SoapySDRDevice_setIQBalanceMode | ( | SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | const bool | automatic
| ) |  |

Set the automatic frontend IQ balance correction.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device
  automatic | true for automatic correction

Returns
  0 for success or error code on failure

## SoapySDRDevice_setMasterClockRate()

SOAPY_SDR_API int SoapySDRDevice_setMasterClockRate | ( | SoapySDRDevice * | device,
|  | const double | rate
| ) |  |

Set the master clock rate of the device.

Parameters

  device | a pointer to a device instance
  rate | the clock rate in Hz

Returns
  an error code or 0 for success

## SoapySDRDevice_setReferenceClockRate()

SOAPY_SDR_API int SoapySDRDevice_setReferenceClockRate | ( | SoapySDRDevice * | device,
|  | const double | rate
| ) |  |

Set the reference clock rate of the device.

Parameters

  device | a pointer to a device instance
  rate | the clock rate in Hz

Returns
  an error code or 0 for success

## SoapySDRDevice_setSampleRate()

SOAPY_SDR_API int SoapySDRDevice_setSampleRate | ( | SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | const double | rate
| ) |  |

Set the baseband sample rate of the chain.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device
  rate | the sample rate in samples per second

Returns
  an error code or 0 for success

## SoapySDRDevice_setTimeSource()

SOAPY_SDR_API int SoapySDRDevice_setTimeSource | ( | SoapySDRDevice * | device,
|  | const char * | source
| ) |  |

Set the time source on the device

Parameters

  device | a pointer to a device instance
  source | the name of a time source

Returns
  an error code or 0 for success

## SoapySDRDevice_setupStream()

SOAPY_SDR_API SoapySDRStream * SoapySDRDevice_setupStream | ( | SoapySDRDevice * | device,
|  | const int | direction,
|  | const char * | format,
|  | const size_t * | channels,
|  | const size_t | numChans,
|  | const SoapySDRKwargs * | args
| ) |  |

Initialize a stream given a list of channels and stream arguments. The implementation may change switches or power-up components. All stream API calls should be usable with the new stream object after setupStream() is complete, regardless of the activity state.

The API allows any number of simultaneous TX and RX streams, but many dual-channel devices are limited to one stream in each direction, using either one or both channels. This call will return an error if an unsupported combination is requested, or if a requested channel in this direction is already in use by another stream.

When multiple channels are added to a stream, they are typically expected to have the same sample rate. See SoapySDRDevice_setSampleRate().

Parameters

  device | a pointer to a device instance

Returns
  the opaque pointer to a stream handle.

  The returned stream is not required to have internal locking, and may not be used concurrently from multiple threads.

Parameters

  direction | the channel direction (`SOAPY_SDR_RX` or `SOAPY_SDR_TX`)

  format

  A string representing the desired buffer format in read/writeStream()

  The first character selects the number type:
  - "C" means complex
  - "F" means floating point
  - "S" means signed integer
  - "U" means unsigned integer

  The type character is followed by the number of bits per number (complex is 2x this size per sample)

  Example format strings:

  - "CF32" - complex float32 (8 bytes per element)
  - "CS16" - complex int16 (4 bytes per element)
  - "CS12" - complex int12 (3 bytes per element)
  - "CS4" - complex int4 (1 byte per element)
  - "S32" - int32 (4 bytes per element)
  - "U8" - uint8 (1 byte per element)

  channels | a list of channels or empty for automatic
  numChans | the number of elements in the channels array

  args

  stream args or empty for defaults

  Recommended keys to use in the args dictionary:
  - "WIRE" - format of the samples between device and host

Returns
  the stream pointer or nullptr for failure

## SoapySDRDevice_transactSPI()

SOAPY_SDR_API unsigned SoapySDRDevice_transactSPI | ( | SoapySDRDevice * | device,
|  | const int | addr,
|  | const unsigned | data,
|  | const size_t | numBits
| ) |  |

Perform a SPI transaction and return the result. Its up to the implementation to set the clock rate, and read edge, and the write edge of the SPI core. SPI slaves without a readback pin will return 0.

If the device contains multiple SPI masters, the address bits can encode which master.

Parameters

  device | a pointer to a device instance
  addr | an address of an available SPI slave
  data | the SPI data, numBits-1 is first out
  numBits | the number of bits to clock out

Returns
  the readback data, numBits-1 is first in

## SoapySDRDevice_unmake()

SOAPY_SDR_API int SoapySDRDevice_unmake | ( | SoapySDRDevice * | device | ) |

Unmake or release a device object handle.

Parameters

  device | a pointer to a device object

Returns
  0 for success or error code on failure

## SoapySDRDevice_unmake_list()

SOAPY_SDR_API int SoapySDRDevice_unmake_list | ( | SoapySDRDevice ** | devices,
|  | const size_t | length
| ) |  |

Unmake or release a list of device handles and free the devices array memory as well. This is a convenience call to parallelize device destruction, and is fundamentally a parallel for loop of unmake(Device *).

Parameters

  devices | a list of pointers to device objects
  length | the length of the devices array

Returns
  0 for success or error code on failure

## SoapySDRDevice_writeChannelSetting()

SOAPY_SDR_API int SoapySDRDevice_writeChannelSetting | ( | SoapySDRDevice * | device,
|  | const int | direction,
|  | const size_t | channel,
|  | const char * | key,
|  | const char * | value
| ) |  |

Write an arbitrary channel setting on the device. The interpretation is up the implementation.

Parameters

  device | a pointer to a device instance
  direction | the channel direction RX or TX
  channel | an available channel on the device
  key | the setting identifier
  value | the setting value

Returns
  0 for success or error code on failure

## SoapySDRDevice_writeGPIO()

SOAPY_SDR_API int SoapySDRDevice_writeGPIO | ( | SoapySDRDevice * | device,
|  | const char * | bank,
|  | const unsigned | value
| ) |  |

Write the value of a GPIO bank.

Parameters

  device | a pointer to a device instance
  bank | the name of an available bank
  value | an integer representing GPIO bits

Returns
  0 for success or error code on failure

## SoapySDRDevice_writeGPIODir()

SOAPY_SDR_API int SoapySDRDevice_writeGPIODir | ( | SoapySDRDevice * | device,
|  | const char * | bank,
|  | const unsigned | dir
| ) |  |

Write the data direction of a GPIO bank. 1 bits represent outputs, 0 bits represent inputs.

Parameters

  device | a pointer to a device instance
  bank | the name of an available bank
  dir | an integer representing data direction bits

Returns
  0 for success or error code on failure

## SoapySDRDevice_writeGPIODirMasked()

SOAPY_SDR_API int SoapySDRDevice_writeGPIODirMasked | ( | SoapySDRDevice * | device,
|  | const char * | bank,
|  | const unsigned | dir,
|  | const unsigned | mask
| ) |  |

Write the data direction of a GPIO bank with modification mask. 1 bits represent outputs, 0 bits represent inputs.

Parameters

  device | a pointer to a device instance
  bank | the name of an available bank
  dir | an integer representing data direction bits
  mask | a modification mask where 1 = modify

Returns
  0 for success or error code on failure

## SoapySDRDevice_writeGPIOMasked()

SOAPY_SDR_API int SoapySDRDevice_writeGPIOMasked | ( | SoapySDRDevice * | device,
|  | const char * | bank,
|  | const unsigned | value,
|  | const unsigned | mask
| ) |  |

Write the value of a GPIO bank with modification mask.

Parameters

  device | a pointer to a device instance
  bank | the name of an available bank
  value | an integer representing GPIO bits
  mask | a modification mask where 1 = modify

Returns
  0 for success or error code on failure

## SoapySDRDevice_writeI2C()

SOAPY_SDR_API int SoapySDRDevice_writeI2C | ( | SoapySDRDevice * | device,
|  | const int | addr,
|  | const char * | data,
|  | const size_t | numBytes
| ) |  |

Write to an available I2C slave. If the device contains multiple I2C masters, the address bits can encode which master.

Parameters

  device | a pointer to a device instance
  addr | the address of the slave
  data | an array of bytes write out
  numBytes | the number of bytes to write

Returns
  0 for success or error code on failure

## SoapySDRDevice_writeRegister()

SOAPY_SDR_API int SoapySDRDevice_writeRegister | ( | SoapySDRDevice * | device,
|  | const char * | name,
|  | const unsigned | addr,
|  | const unsigned | value
| ) |  |

Write a register on the device given the interface name. This can represent a register on a soft CPU, FPGA, IC; the interpretation is up the implementation to decide.

Parameters

  device | a pointer to a device instance
  name | the name of a available register interface
  addr | the register address
  value | the register value

Returns
  0 for success or error code on failure

## SoapySDRDevice_writeRegisters()

SOAPY_SDR_API int SoapySDRDevice_writeRegisters | ( | SoapySDRDevice * | device,
|  | const char * | name,
|  | const unsigned | addr,
|  | const unsigned * | value,
|  | const size_t | length
| ) |  |

Write a memory block on the device given the interface name. This can represent a memory block on a soft CPU, FPGA, IC; the interpretation is up the implementation to decide.

Parameters

  device | a pointer to a device instance
  name | the name of a available memory block interface
  addr | the memory block start address
  value | the memory block content
  length | the number of words in the block

Returns
  0 for success or error code on failure

## SoapySDRDevice_writeSetting()

SOAPY_SDR_API int SoapySDRDevice_writeSetting | ( | SoapySDRDevice * | device,
|  | const char * | key,
|  | const char * | value
| ) |  |

Write an arbitrary setting on the device. The interpretation is up the implementation.

Parameters

  device | a pointer to a device instance
  key | the setting identifier
  value | the setting value

Returns
  0 for success or error code on failure

## SoapySDRDevice_writeStream()

SOAPY_SDR_API int SoapySDRDevice_writeStream | ( | SoapySDRDevice * | device,
|  | SoapySDRStream * | stream,
|  | const void *const * | buffs,
|  | const size_t | numElems,
|  | int * | flags,
|  | const long long | timeNs,
|  | const long | timeoutUs
| ) |  |

Write elements to a stream for transmission. This is a multi-channel call, and buffs should be an array of void *, where each pointer will be filled with data for a different channel.

Client code compatibility: Client code relies on writeStream() for proper back-pressure. The writeStream() implementation must enforce the timeout such that the call blocks until space becomes available or timeout expiration.

Parameters

  | device | a pointer to a device instance
  | stream | the opaque pointer to a stream handle
  | buffs | an array of void* buffers num chans in size
  | numElems | the number of elements in each buffer
  [in,out] | flags | optional input flags and output flags
  | timeNs | the buffer's timestamp in nanoseconds
  | timeoutUs | the timeout in microseconds

Returns
  the number of elements written per buffer or error

## SoapySDRDevice_writeUART()

SOAPY_SDR_API int SoapySDRDevice_writeUART | ( | SoapySDRDevice * | device,
|  | const char * | which,
|  | const char * | data
| ) |  |

Write data to a UART device. Its up to the implementation to set the baud rate, carriage return settings, flushing on newline.

Parameters

  device | a pointer to a device instance
  which | the name of an available UART
  data | a null terminated array of bytes

Returns
  0 for success or error code on failure