Data Repeater






The Data Repeater is an interface between the Console and other programs running within the local network. It streams IQ data in either 16-bit or 32-bit format, also providing the name of the radio, center frequency and bandwidth.

  • 16-bit - signed 16-bit integers, range -32,768 to +32767 [link]
  • 32-bit - floating point data, range +/- 32767.

The interface is provided by a DLL available for 32-bit and 64-bit programs. This page describes the interface in detail.

A sample Windows program with full source is available on request, Visual Studio 2013 or later is required.


The DLL is dynaically loaded, use SDRRepeaterLoader.h and SDRRepeaterLoader.cpp. You can also link a program against SDRRepeaterLoader.lib if desired.


BOOL SDRRepeaterConnectDlg(CWnd* pWndParent)

Displays the connection window (modal dialog), if the connection is successful the console starts streaming the IQ data. For each computer each program must use a unique Listener port.

void SDRRepeaterDisconnect()

Closes the connection, stops streaming.

void SDRRepeaterSetProgram(LPCTSTR lpszProgramName)

The name of the program, this is displayed in the console's Data Repeater management window.

void SDRRepeaterLogfileMsg(CWnd* pParent, UINT nMessage)

Diagnostic messages from the DLL are posted as messages using ::PostMessage(UINT message, WPARAM wParam,  LPARAM lParam).

  • WPARAM is a pointer to a null-terminated string containing the message title.
  • LPARAM is a pointer to a null-terminated string containing the message body.

The client must free this storage using delete.

void SDRRepeaterIQDataSetCallback(pfnIQDataCallback pfnCallback)

The samples are returned via a callback function.

void CALLBACK IQDataCallback(const void* pData, const int   nDataType, const int   nSamples)

  • void* pData - pointer to the IQ data.
  • int nDataType - 16 for 16-bit samples, 32 for 32-bit samples
  • int nSamples - number of samples.

Do not free the storage!

void SDRRepeaterRadioSetCallback(pfnRadioCallback pfnCallback)

The radio, center frequency and bandwidth are returned via a callback.

void CALLBACK RadioCallback(LPCTSTR lpszRadio, const __int64 n64FrequencyHz, const UINT nBandwidth)

Do not free the radio string!


This interface will be used for the Digital Mode program which will be written as part of the software suite in 2018 / 2019. Possible enhancements include:

  • Change the radio frequency
  • Request a 'slice' of data, for example 7.0 to 7.1 MHz