Data Repeater

Data Repeater

And it's over to you...

About

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 below, Visual Studio 2013 or later is required.

Sample Program

SDRRepeater.dll is dynamically loaded, use SDRRepeaterLoader.h and SDRRepeaterLoader.cpp (link below). You can also link a program against SDRRepeaterLoader.lib if desired.
  • The loader class files are here.
  • An example C++ program is here. Compile with Visual Studio 2013 or higher.
  • SDRRepeater.dll is located in the SDR Console installation folder, copy to the folder containing your application.

API

BOOL SDRRepeaterConnectDlg(CWnd* pWndParent)
Displays the connection window (modal dialog), if the connection is successful the console starts streaming the IQ data. Use a unique Listener port for each computer in your network.
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.

Future

This interface will be used for the Digital Mode program which will be written as part of the SDR-Radio.com software suite in 2020 / 2021. Possible enhancements include:
  • Change the radio frequency
  • Request a 'slice' of data, for example 7.0 to 7.1 MHz
Share by: