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!

Message Flow

The client sends a TCP connection request on port 50050 (user configurable). The connection is accepted, a REPEATER_SETTINGS structure is returned.

The client must send an ACK message every second, when received a REPEATER_ACK message is returned.

The client can request an updates REPEATER_SETTINGS structure at any time.



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