Merge branch 'master' of https://github.com/f4exb/sdrangel into osx
@ -346,6 +346,7 @@ if (BUILD_DEBIAN)
|
||||
add_subdirectory(libmirisdr)
|
||||
add_subdirectory(libperseus)
|
||||
add_subdirectory(libiio)
|
||||
add_subdirectory(libsoapysdr)
|
||||
endif (BUILD_DEBIAN)
|
||||
|
||||
add_subdirectory(devices)
|
||||
|
@ -35,7 +35,7 @@ static int runQtApplication(int argc, char* argv[], qtwebapp::LoggerWithFile *lo
|
||||
*/
|
||||
QCoreApplication::setOrganizationName("f4exb");
|
||||
QCoreApplication::setApplicationName("SDRangel");
|
||||
QCoreApplication::setApplicationVersion("4.3.0");
|
||||
QCoreApplication::setApplicationVersion("4.3.1");
|
||||
#if QT_VERSION >= 0x050600
|
||||
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); // DPI support
|
||||
QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); //HiDPI pixmaps
|
||||
|
@ -57,7 +57,7 @@ static int runQtApplication(int argc, char* argv[], qtwebapp::LoggerWithFile *lo
|
||||
|
||||
QCoreApplication::setOrganizationName("f4exb");
|
||||
QCoreApplication::setApplicationName("SDRangelBench");
|
||||
QCoreApplication::setApplicationVersion("4.3.0");
|
||||
QCoreApplication::setApplicationVersion("4.3.1");
|
||||
|
||||
int catchSignals[] = {SIGQUIT, SIGINT, SIGTERM, SIGHUP};
|
||||
std::vector<int> vsig(catchSignals, catchSignals + sizeof(catchSignals) / sizeof(int));
|
||||
|
@ -56,7 +56,7 @@ static int runQtApplication(int argc, char* argv[], qtwebapp::LoggerWithFile *lo
|
||||
|
||||
QCoreApplication::setOrganizationName("f4exb");
|
||||
QCoreApplication::setApplicationName("SDRangelSrv");
|
||||
QCoreApplication::setApplicationVersion("4.3.0");
|
||||
QCoreApplication::setApplicationVersion("4.3.1");
|
||||
|
||||
int catchSignals[] = {SIGQUIT, SIGINT, SIGTERM, SIGHUP};
|
||||
std::vector<int> vsig(catchSignals, catchSignals + sizeof(catchSignals) / sizeof(int));
|
||||
|
@ -9,8 +9,11 @@ QT += core
|
||||
TEMPLATE = lib
|
||||
TARGET = cm256cc
|
||||
|
||||
CONFIG(MSVC):DEFINES += cm256cc_EXPORTS
|
||||
|
||||
CONFIG(MINGW32):LIBCM256CCSRC = "C:\softs\cm256cc"
|
||||
CONFIG(MINGW64):LIBCM256CCSRC = "C:\softs\cm256cc"
|
||||
CONFIG(MSVC):LIBCM256CCSRC = "C:\softs\cm256cc"
|
||||
CONFIG(macx):LIBCM256CCSRC = "../../deps/cm256cc"
|
||||
|
||||
INCLUDEPATH += $$LIBCM256CCSRC
|
||||
@ -26,4 +29,5 @@ SOURCES = $$LIBCM256CCSRC/gf256.cpp\
|
||||
$$LIBCM256CCSRC/cm256.cpp
|
||||
|
||||
HEADERS = $$LIBCM256CCSRC/gf256.h\
|
||||
$$LIBCM256CCSRC/cm256.h
|
||||
$$LIBCM256CCSRC/cm256.h\
|
||||
$$LIBCM256CCSRC/export.h
|
||||
|
@ -137,7 +137,7 @@ if (NOT FFMPEG_LIBRARIES)
|
||||
endif ()
|
||||
|
||||
# Now set the noncached _FOUND vars for the components.
|
||||
foreach (_component AVCODEC AVDEVICE AVFORMAT AVUTIL POSTPROCESS SWSCALE)
|
||||
foreach (_component AVCODEC AVDEVICE AVFORMAT AVUTIL POSTPROC SWSCALE)
|
||||
set_component_found(${_component})
|
||||
endforeach ()
|
||||
|
||||
|
12
debian/changelog
vendored
@ -1,9 +1,19 @@
|
||||
sdrangel (4.3.1-1) unstable; urgency=medium
|
||||
|
||||
* RTL-SDR: offset tuning support
|
||||
* SoapySDR support: 250 ms minimum timeout
|
||||
* LimeSDR REST API: support GPIO
|
||||
|
||||
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Fri, 30 Nov 2018 21:14:18 +0100
|
||||
|
||||
sdrangel (4.3.0-1) unstable; urgency=medium
|
||||
|
||||
* SoapySDR support
|
||||
* BladeRF2 corrections
|
||||
* Scope fixes possible seg fault and correct memory processing
|
||||
* FCDPro/FCDProPlus critical fixes to make it work again
|
||||
|
||||
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 18 Nov 2018 21:14:18 +0100
|
||||
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Thu, 22 Nov 2018 21:14:18 +0100
|
||||
|
||||
sdrangel (4.2.4-1) unstable; urgency=medium
|
||||
|
||||
|
2
debian/rules
vendored
@ -21,5 +21,5 @@
|
||||
# dh_make generated override targets
|
||||
# This is example for Cmake (See https://bugs.debian.org/641051 )
|
||||
override_dh_auto_configure:
|
||||
dh_auto_configure -- -DCMAKE_INSTALL_PREFIX=/opt/sdrangel -DDEBUG_OUTPUT=ON -DBUILD_TYPE=DEBIAN -DRX_SAMPLE_24BIT=ON -DLIBCM256CCSRC=/z1/development/cm256cc -DLIBDSDCCSRC=/z1/development/dsdcc -DLIBAIRSPYSRC=/z1/development/libairspy -DLIBAIRSPYHFSRC=/z1/softs/airspyhf -DLIBHACKRFSRC=/z1/development/hackrf/host -DLIBRTLSDRSRC=/z1/development/librtlsdr.f4exb -DLIBMBELIBSRC=/z1/development/mbelib -DLIBSERIALDVSRC=/z1/development/serialDV -DLIBBLADERFSRC=/z1/softs/bladeRF -DLIBBLADERFCOMMONSRC=/z1/softs/bladeRF/host/common -DLIBBLADERFLIBSRC=/z1/softs/bladeRF/host/libraries/libbladeRF -DLIBMIRISDRSRC=/z1/development/libmirisdr-4 -DLIBLIMESUITESRC=/z1/softs/LimeSuite -DLIBIIOSRC=/z1/softs/libiio -DLIBPERSEUSSRC=/z1/softs/libperseus-sdr
|
||||
dh_auto_configure -- -DCMAKE_INSTALL_PREFIX=/opt/sdrangel -DDEBUG_OUTPUT=ON -DBUILD_TYPE=DEBIAN -DRX_SAMPLE_24BIT=ON -DLIBCM256CCSRC=/z1/development/cm256cc -DLIBDSDCCSRC=/z1/development/dsdcc -DLIBAIRSPYSRC=/z1/development/libairspy -DLIBAIRSPYHFSRC=/z1/softs/airspyhf -DLIBHACKRFSRC=/z1/development/hackrf/host -DLIBRTLSDRSRC=/z1/development/librtlsdr.f4exb -DLIBMBELIBSRC=/z1/development/mbelib -DLIBSERIALDVSRC=/z1/development/serialDV -DLIBBLADERFSRC=/z1/softs/bladeRF -DLIBBLADERFCOMMONSRC=/z1/softs/bladeRF/host/common -DLIBBLADERFLIBSRC=/z1/softs/bladeRF/host/libraries/libbladeRF -DLIBMIRISDRSRC=/z1/development/libmirisdr-4 -DLIBLIMESUITESRC=/z1/softs/LimeSuite -DLIBIIOSRC=/z1/softs/libiio -DLIBPERSEUSSRC=/z1/softs/libperseus-sdr -DSOAPYSDR_SOURCE_DIR=/z1/softs/SoapySDR
|
||||
|
||||
|
@ -1,5 +1,7 @@
|
||||
project(devices)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
|
||||
find_package(LibUSB)
|
||||
|
||||
if (BUILD_DEBIAN)
|
||||
|
@ -14,13 +14,13 @@
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "../bladerf1/devicebladerf1.h"
|
||||
|
||||
#include <QtGlobal>
|
||||
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
|
||||
#include "devicebladerf1.h"
|
||||
|
||||
bool DeviceBladeRF1::open_bladerf(struct bladerf **dev, const char *serial)
|
||||
{
|
||||
int fpga_loaded;
|
||||
|
@ -30,7 +30,7 @@ private:
|
||||
static struct bladerf *open_bladerf_from_serial(const char *serial);
|
||||
};
|
||||
|
||||
class BladerfBandwidths {
|
||||
class DEVICES_API BladerfBandwidths {
|
||||
public:
|
||||
static unsigned int getBandwidth(unsigned int bandwidth_index);
|
||||
static unsigned int getBandwidthIndex(unsigned int bandwidth);
|
||||
|
@ -31,7 +31,7 @@ class BladeRF2Output;
|
||||
class DEVICES_API DeviceBladeRF2Shared
|
||||
{
|
||||
public:
|
||||
class MsgReportBuddyChange : public Message {
|
||||
class DEVICES_API MsgReportBuddyChange : public Message {
|
||||
MESSAGE_CLASS_DECLARATION
|
||||
|
||||
public:
|
||||
|
@ -61,7 +61,7 @@ MINGW32 || MINGW64 || macx {
|
||||
}
|
||||
|
||||
MSVC {
|
||||
INCLUDEPATH += "C:\softs\PothosSDR\include"
|
||||
INCLUDEPATH += "C:\Program Files\PothosSDR\include"
|
||||
}
|
||||
|
||||
INCLUDEPATH += $$LIBPERSEUSSRC
|
||||
@ -136,6 +136,13 @@ macx {
|
||||
}
|
||||
|
||||
MSVC {
|
||||
SOURCES += bladerf1/devicebladerf1.cpp\
|
||||
bladerf1/devicebladerf1values.cpp\
|
||||
bladerf1/devicebladerf1shared.cpp
|
||||
|
||||
SOURCES += bladerf2/devicebladerf2.cpp\
|
||||
bladerf2/devicebladerf2shared.cpp
|
||||
|
||||
SOURCES += hackrf/devicehackrf.cpp\
|
||||
hackrf/devicehackrfvalues.cpp\
|
||||
hackrf/devicehackrfshared.cpp
|
||||
@ -144,6 +151,25 @@ MSVC {
|
||||
limesdr/devicelimesdrparam.cpp\
|
||||
limesdr/devicelimesdrshared.cpp
|
||||
|
||||
SOURCES += soapysdr/devicesoapysdr.cpp\
|
||||
soapysdr/devicesoapysdrparams.cpp\
|
||||
soapysdr/devicesoapysdrscan.cpp\
|
||||
soapysdr/devicesoapysdrshared.cpp
|
||||
|
||||
SOURCES += plutosdr/deviceplutosdr.cpp\
|
||||
plutosdr/deviceplutosdrbox.cpp\
|
||||
plutosdr/deviceplutosdrparams.cpp\
|
||||
plutosdr/deviceplutosdrscan.cpp\
|
||||
plutosdr/deviceplutosdrshared.cpp
|
||||
|
||||
HEADERS += bladerf1/devicebladerf1.h\
|
||||
bladerf1/devicebladerf1param.h\
|
||||
bladerf1/devicebladerf1values.h\
|
||||
bladerf1/devicebladerf1shared.h
|
||||
|
||||
HEADERS += bladerf2/devicebladerf2.h\
|
||||
bladerf2/devicebladerf2shared.h
|
||||
|
||||
HEADERS += hackrf/devicehackrf.h\
|
||||
hackrf/devicehackrfparam.h\
|
||||
hackrf/devicehackrfvalues.h\
|
||||
@ -152,6 +178,17 @@ MSVC {
|
||||
HEADERS += limesdr/devicelimesdr.h\
|
||||
limesdr/devicelimesdrparam.h\
|
||||
limesdr/devicelimesdrshared.h
|
||||
|
||||
HEADERS += soapysdr/devicesoapysdr.h\
|
||||
soapysdr/devicesoapysdrparams.h\
|
||||
soapysdr/devicesoapysdrscan.h\
|
||||
soapysdr/devicesoapysdrshared.h
|
||||
|
||||
HEADERS += plutosdr/deviceplutosdr.h\
|
||||
plutosdr/deviceplutosdrbox.h\
|
||||
plutosdr/deviceplutosdrparams.h\
|
||||
plutosdr/deviceplutosdrscan.h\
|
||||
plutosdr/deviceplutosdrshared.h
|
||||
}
|
||||
|
||||
LIBS += -L../sdrbase/$${build_subdir} -lsdrbase
|
||||
@ -171,5 +208,8 @@ macx {
|
||||
|
||||
MSVC {
|
||||
LIBS += -L../libhackrf/$${build_subdir} -llibhackrf
|
||||
LIBS += -LC:\softs\PothosSDR\lib -lLimeSuite
|
||||
LIBS += -L"C:\Program Files\PothosSDR\bin" -L"C:\Program Files\PothosSDR\lib" -lbladeRF
|
||||
LIBS += -L"C:\Program Files\PothosSDR\bin" -L"C:\Program Files\PothosSDR\lib" -lLimeSuite
|
||||
LIBS += -L"C:\Program Files\PothosSDR\bin" -L"C:\Program Files\PothosSDR\lib" -lSoapySDR
|
||||
LIBS += -L"C:\Program Files\PothosSDR\bin" -L"C:\Program Files\PothosSDR\lib" -llibiio
|
||||
}
|
||||
|
@ -15,6 +15,7 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <stdio.h>
|
||||
#include <QtGlobal>
|
||||
#include "devicehackrf.h"
|
||||
|
||||
DeviceHackRF::DeviceHackRF()
|
||||
@ -22,7 +23,7 @@ DeviceHackRF::DeviceHackRF()
|
||||
hackrf_error rc = (hackrf_error) hackrf_init();
|
||||
|
||||
if (rc != HACKRF_SUCCESS) {
|
||||
fprintf(stderr, "DeviceHackRF::open_hackrf: failed to initiate HackRF library %s\n", hackrf_error_name(rc));
|
||||
qCritical("DeviceHackRF::open_hackrf: failed to initiate HackRF library %s", hackrf_error_name(rc));
|
||||
}
|
||||
}
|
||||
|
||||
@ -59,6 +60,7 @@ hackrf_device *DeviceHackRF::open_hackrf(const char * const serial)
|
||||
}
|
||||
else
|
||||
{
|
||||
qCritical("DeviceHackRF::open_hackrf: error #%d: %s", (int) rc, hackrf_error_name(rc));
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@ -79,6 +81,7 @@ hackrf_device *DeviceHackRF::open_hackrf_from_sequence(int sequence)
|
||||
}
|
||||
else
|
||||
{
|
||||
qCritical("DeviceHackRF::open_hackrf_from_sequence: error #%d: %s", (int) rc, hackrf_error_name(rc));
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -30,11 +30,7 @@ public:
|
||||
protected:
|
||||
DeviceHackRF();
|
||||
DeviceHackRF(const DeviceHackRF&) {}
|
||||
#ifdef _MSC_VER
|
||||
DeviceHackRF& operator=(const DeviceHackRF& other) { return *this; }
|
||||
#else
|
||||
DeviceHackRF& operator=(const DeviceHackRF& other __attribute__((unused))) { return *this; }
|
||||
#endif
|
||||
DeviceHackRF& operator=(const DeviceHackRF& other) { (void) other; return *this; }
|
||||
~DeviceHackRF();
|
||||
private:
|
||||
static hackrf_device *open_hackrf_from_sequence(int sequence);
|
||||
|
@ -23,7 +23,7 @@
|
||||
class DEVICES_API DeviceHackRFShared
|
||||
{
|
||||
public:
|
||||
class MsgConfigureFrequencyDelta : public Message
|
||||
class DEVICES_API MsgConfigureFrequencyDelta : public Message
|
||||
{
|
||||
MESSAGE_CLASS_DECLARATION
|
||||
|
||||
|
@ -19,7 +19,9 @@
|
||||
|
||||
bool DeviceLimeSDRParams::open(lms_info_str_t deviceStr)
|
||||
{
|
||||
qDebug("DeviceLimeSDRParams::open: serial: %s", (const char *) deviceStr);
|
||||
getHardwareType((const char *) deviceStr);
|
||||
|
||||
qDebug("DeviceLimeSDRParams::open: serial: %s type: %d", (const char *) deviceStr, (int) m_type);
|
||||
|
||||
if (LMS_Open(&m_dev, deviceStr, 0) < 0)
|
||||
{
|
||||
@ -105,3 +107,18 @@ void DeviceLimeSDRParams::close()
|
||||
}
|
||||
}
|
||||
|
||||
void DeviceLimeSDRParams::getHardwareType(const char *device_str)
|
||||
{
|
||||
QString deviceStr(device_str);
|
||||
|
||||
if (deviceStr.contains(QString("LimeSDR Mini"))) {
|
||||
m_type = LimeMini;
|
||||
} else if (deviceStr.contains(QString("LimeSDR-USB"))) {
|
||||
m_type = LimeUSB;
|
||||
} else if (deviceStr.contains(QString("media=SPI"))) {
|
||||
m_type = LimeSPI;
|
||||
} else {
|
||||
m_type = LimeUndefined;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -30,6 +30,14 @@
|
||||
*/
|
||||
struct DEVICES_API DeviceLimeSDRParams
|
||||
{
|
||||
enum LimeType
|
||||
{
|
||||
LimeSPI,
|
||||
LimeMini,
|
||||
LimeUSB,
|
||||
LimeUndefined
|
||||
};
|
||||
|
||||
lms_device_t *m_dev; //!< device handle
|
||||
uint32_t m_nbRxChannels; //!< number of Rx channels (normally 2, we'll see if we really use it...)
|
||||
uint32_t m_nbTxChannels; //!< number of Tx channels (normally 2, we'll see if we really use it...)
|
||||
@ -44,6 +52,7 @@ struct DEVICES_API DeviceLimeSDRParams
|
||||
int m_log2OvSRTx; //!< log2 of Tx oversampling (0..5)
|
||||
float m_rxFrequency; //!< Rx frequency
|
||||
float m_txFrequency; //!< Tx frequency
|
||||
LimeType m_type; //!< Hardware type
|
||||
|
||||
DeviceLimeSDRParams() :
|
||||
m_dev(0),
|
||||
@ -53,7 +62,8 @@ struct DEVICES_API DeviceLimeSDRParams
|
||||
m_log2OvSRRx(0),
|
||||
m_log2OvSRTx(0),
|
||||
m_rxFrequency(1e6),
|
||||
m_txFrequency(1e6)
|
||||
m_txFrequency(1e6),
|
||||
m_type(LimeUndefined)
|
||||
{
|
||||
m_lpfRangeRx.max = 0.0f;
|
||||
m_lpfRangeRx.min = 0.0f;
|
||||
@ -90,6 +100,9 @@ struct DEVICES_API DeviceLimeSDRParams
|
||||
~DeviceLimeSDRParams()
|
||||
{
|
||||
}
|
||||
|
||||
private:
|
||||
void getHardwareType(const char *device_str);
|
||||
};
|
||||
|
||||
#endif /* DEVICES_LIMESDR_DEVICELIMESDRPARAM_H_ */
|
||||
|
@ -18,6 +18,7 @@
|
||||
|
||||
MESSAGE_CLASS_DEFINITION(DeviceLimeSDRShared::MsgReportBuddyChange, Message)
|
||||
MESSAGE_CLASS_DEFINITION(DeviceLimeSDRShared::MsgReportClockSourceChange, Message)
|
||||
MESSAGE_CLASS_DEFINITION(DeviceLimeSDRShared::MsgReportGPIOChange, Message)
|
||||
MESSAGE_CLASS_DEFINITION(DeviceLimeSDRShared::MsgReportDeviceInfo, Message)
|
||||
|
||||
const float DeviceLimeSDRShared::m_sampleFifoLengthInSeconds = 0.25;
|
||||
|
@ -28,7 +28,7 @@
|
||||
class DEVICES_API DeviceLimeSDRShared
|
||||
{
|
||||
public:
|
||||
class MsgReportBuddyChange : public Message {
|
||||
class DEVICES_API MsgReportBuddyChange : public Message {
|
||||
MESSAGE_CLASS_DECLARATION
|
||||
|
||||
public:
|
||||
@ -69,7 +69,7 @@ public:
|
||||
{ }
|
||||
};
|
||||
|
||||
class MsgReportClockSourceChange : public Message {
|
||||
class DEVICES_API MsgReportClockSourceChange : public Message {
|
||||
MESSAGE_CLASS_DECLARATION
|
||||
|
||||
public:
|
||||
@ -98,27 +98,52 @@ public:
|
||||
{ }
|
||||
};
|
||||
|
||||
class MsgReportDeviceInfo : public Message {
|
||||
class DEVICES_API MsgReportDeviceInfo : public Message {
|
||||
MESSAGE_CLASS_DECLARATION
|
||||
|
||||
public:
|
||||
float getTemperature() const { return m_temperature; }
|
||||
uint8_t getGPIOPins() const { return m_gpioPins; }
|
||||
|
||||
static MsgReportDeviceInfo* create(float temperature)
|
||||
static MsgReportDeviceInfo* create(float temperature, uint8_t gpioPins)
|
||||
{
|
||||
return new MsgReportDeviceInfo(temperature);
|
||||
return new MsgReportDeviceInfo(temperature, gpioPins);
|
||||
}
|
||||
|
||||
private:
|
||||
float m_temperature;
|
||||
uint8_t m_gpioPins;
|
||||
|
||||
MsgReportDeviceInfo(float temperature) :
|
||||
MsgReportDeviceInfo(float temperature, uint8_t gpioPins) :
|
||||
Message(),
|
||||
m_temperature(temperature)
|
||||
m_temperature(temperature),
|
||||
m_gpioPins(gpioPins)
|
||||
{ }
|
||||
};
|
||||
|
||||
class ThreadInterface
|
||||
class DEVICES_API MsgReportGPIOChange : public Message {
|
||||
MESSAGE_CLASS_DECLARATION
|
||||
|
||||
public:
|
||||
uint8_t getGPIODir() const { return m_gpioDir; }
|
||||
uint8_t getGPIOPins() const { return m_gpioPins; }
|
||||
|
||||
static MsgReportGPIOChange* create(uint8_t gpioDir, uint8_t gpioPins)
|
||||
{
|
||||
return new MsgReportGPIOChange(gpioDir, gpioPins);
|
||||
}
|
||||
|
||||
private:
|
||||
uint8_t m_gpioDir;
|
||||
uint8_t m_gpioPins;
|
||||
|
||||
MsgReportGPIOChange(uint8_t gpioDir, uint8_t gpioPins) :
|
||||
m_gpioDir(gpioDir),
|
||||
m_gpioPins(gpioPins)
|
||||
{}
|
||||
};
|
||||
|
||||
class DEVICES_API ThreadInterface
|
||||
{
|
||||
public:
|
||||
virtual void startWork() = 0;
|
||||
|
@ -32,7 +32,7 @@ public:
|
||||
protected:
|
||||
DevicePerseus();
|
||||
DevicePerseus(const DevicePerseus&) : m_nbDevices(0) {}
|
||||
DevicePerseus& operator=(const DevicePerseus& other __attribute__((unused))) { return *this; }
|
||||
DevicePerseus& operator=(const DevicePerseus& other) { (void) other; return *this; }
|
||||
~DevicePerseus();
|
||||
|
||||
private:
|
||||
|
@ -24,6 +24,11 @@
|
||||
|
||||
#include "export.h"
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
#include <BaseTsd.h>
|
||||
typedef SSIZE_T ssize_t;
|
||||
#endif
|
||||
|
||||
class DEVICES_API DevicePlutoSDRBox
|
||||
{
|
||||
public:
|
||||
|
@ -30,7 +30,7 @@ class DEVICES_API DevicePlutoSDRBox;
|
||||
* There is only one copy that is constructed by the first participant and destroyed by the last.
|
||||
* A participant knows it is the first or last by checking the lists of buddies (Rx + Tx).
|
||||
*/
|
||||
class DevicePlutoSDRParams
|
||||
class DEVICES_API DevicePlutoSDRParams
|
||||
{
|
||||
public:
|
||||
DevicePlutoSDRParams();
|
||||
|
@ -42,7 +42,7 @@ public:
|
||||
virtual bool isRunning() = 0;
|
||||
};
|
||||
|
||||
class MsgCrossReportToBuddy : public Message {
|
||||
class DEVICES_API MsgCrossReportToBuddy : public Message {
|
||||
MESSAGE_CLASS_DECLARATION
|
||||
public:
|
||||
uint64_t getDevSampleRate() const { return m_devSampleRate; }
|
||||
|
@ -20,7 +20,8 @@ if (BUILD_DEBIAN)
|
||||
include_directories(
|
||||
.
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
${SOAPYSDRSRC}
|
||||
${SOAPYSDR_SOURCE_DIR}/include
|
||||
${SOAPYSDR_SOURCE_DIR}/src
|
||||
)
|
||||
else (BUILD_DEBIAN)
|
||||
include_directories(
|
||||
@ -39,7 +40,7 @@ add_library(soapysdrdevice SHARED
|
||||
|
||||
if (BUILD_DEBIAN)
|
||||
target_link_libraries(soapysdrdevice
|
||||
soapysdr
|
||||
SoapySDR
|
||||
sdrbase
|
||||
)
|
||||
else (BUILD_DEBIAN)
|
||||
|
@ -38,7 +38,7 @@ public:
|
||||
protected:
|
||||
DeviceSoapySDR();
|
||||
DeviceSoapySDR(const DeviceSoapySDR&) {}
|
||||
DeviceSoapySDR& operator=(const DeviceSoapySDR& other __attribute__((unused))) { return *this; }
|
||||
DeviceSoapySDR& operator=(const DeviceSoapySDR& other) { (void) other; return *this; }
|
||||
~DeviceSoapySDR();
|
||||
|
||||
private:
|
||||
|
@ -68,6 +68,8 @@ public:
|
||||
DeviceSoapySDRParams(SoapySDR::Device *device);
|
||||
~DeviceSoapySDRParams();
|
||||
|
||||
const SoapySDR::ArgInfoList& getDeviceArgs() const { return m_deviceSettingsArgs; }
|
||||
|
||||
const ChannelSettings* getRxChannelSettings(uint32_t index)
|
||||
{
|
||||
if (index < m_nbRx) {
|
||||
|
@ -66,14 +66,16 @@ void DeviceSoapySDRScan::scan()
|
||||
|
||||
SoapySDR::Kwargs::const_iterator kargIt;
|
||||
|
||||
if ((kargIt = kit->find("label")) != kit->end())
|
||||
{
|
||||
if ((kargIt = kit->find("label")) != kit->end()) {
|
||||
m_deviceEnums.back().m_label = QString(kargIt->second.c_str());
|
||||
} else { // if no label is registered for this device then create a label with the driver name and sequence
|
||||
m_deviceEnums.back().m_label = QString("%1-%2").arg(m_deviceEnums.back().m_driverName).arg(deviceSeq);
|
||||
}
|
||||
|
||||
qDebug("DeviceSoapySDRScan::scan: %s #%u %s",
|
||||
m_deviceEnums.back().m_driverName.toStdString().c_str(),
|
||||
deviceSeq,
|
||||
kargIt->second.c_str());
|
||||
}
|
||||
m_deviceEnums.back().m_label.toStdString().c_str());
|
||||
|
||||
if ((kargIt = kit->find("serial")) != kit->end())
|
||||
{
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include "devicesoapysdrshared.h"
|
||||
|
||||
MESSAGE_CLASS_DEFINITION(DeviceSoapySDRShared::MsgReportBuddyChange, Message)
|
||||
MESSAGE_CLASS_DEFINITION(DeviceSoapySDRShared::MsgReportDeviceArgsChange, Message)
|
||||
|
||||
const float DeviceSoapySDRShared::m_sampleFifoLengthInSeconds = 0.25;
|
||||
const int DeviceSoapySDRShared::m_sampleFifoMinSize = 75000; // 300 kS/s knee
|
||||
@ -24,6 +25,7 @@ const int DeviceSoapySDRShared::m_sampleFifoMinSize32 = 150000; // Fixed for
|
||||
|
||||
DeviceSoapySDRShared::DeviceSoapySDRShared() :
|
||||
m_device(0),
|
||||
m_deviceParams(0),
|
||||
m_channel(-1),
|
||||
m_source(0),
|
||||
m_sink(0)
|
||||
|
@ -17,6 +17,9 @@
|
||||
#ifndef DEVICES_SOAPYSDR_DEVICESOAPYSDRSHARED_H_
|
||||
#define DEVICES_SOAPYSDR_DEVICESOAPYSDRSHARED_H_
|
||||
|
||||
#include <QMap>
|
||||
#include <QVariant>
|
||||
|
||||
#include <SoapySDR/Device.hpp>
|
||||
|
||||
#include "util/message.h"
|
||||
@ -32,7 +35,7 @@ class SoapySDROutput;
|
||||
class DEVICES_API DeviceSoapySDRShared
|
||||
{
|
||||
public:
|
||||
class MsgReportBuddyChange : public Message {
|
||||
class DEVICES_API MsgReportBuddyChange : public Message {
|
||||
MESSAGE_CLASS_DECLARATION
|
||||
|
||||
public:
|
||||
@ -79,6 +82,24 @@ public:
|
||||
{ }
|
||||
};
|
||||
|
||||
class DEVICES_API MsgReportDeviceArgsChange : public Message {
|
||||
MESSAGE_CLASS_DECLARATION
|
||||
|
||||
public:
|
||||
const QMap<QString, QVariant>& getDeviceArgSettings() const { return m_deviceArgSettings; }
|
||||
|
||||
static MsgReportDeviceArgsChange* create(const QMap<QString, QVariant>& deviceArgSettings) {
|
||||
return new MsgReportDeviceArgsChange(deviceArgSettings);
|
||||
}
|
||||
|
||||
private:
|
||||
QMap<QString, QVariant> m_deviceArgSettings;
|
||||
|
||||
MsgReportDeviceArgsChange(const QMap<QString, QVariant>& deviceArgSettings) :
|
||||
m_deviceArgSettings(deviceArgSettings)
|
||||
{ }
|
||||
};
|
||||
|
||||
DeviceSoapySDRShared();
|
||||
~DeviceSoapySDRShared();
|
||||
|
||||
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 28 KiB |
BIN
doc/img/SoapySDRInput_plugin1.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
doc/img/SoapySDRInput_plugin1.xcf
Normal file
BIN
doc/img/SoapySDROutput_plugin1.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
doc/img/SoapySDR_arg_bool1.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
doc/img/SoapySDR_arg_bool1.xcf
Normal file
BIN
doc/img/SoapySDR_arg_bool2.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
doc/img/SoapySDR_arg_bool2.xcf
Normal file
BIN
doc/img/SoapySDR_arg_bool3.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
doc/img/SoapySDR_arg_bool3.xcf
Normal file
BIN
doc/img/SoapySDR_arg_str.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
doc/img/SoapySDR_arg_str.xcf
Normal file
BIN
doc/img/SoapySDR_arg_strlist.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
doc/img/SoapySDR_arg_strlist.xcf
Normal file
BIN
doc/img/SoapySDR_range_discrete.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
doc/img/SoapySDR_range_discrete.xcf
Normal file
BIN
doc/img/SoapySDR_range_gain.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
doc/img/SoapySDR_range_gain.xcf
Normal file
BIN
doc/img/SoapySDR_range_list1.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
doc/img/SoapySDR_range_list1.xcf
Normal file
BIN
doc/img/SoapySDR_range_neg.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
doc/img/SoapySDR_range_neg.xcf
Normal file
BIN
doc/img/SoapySDR_range_pos.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
doc/img/SoapySDR_range_pos.xcf
Normal file
@ -1,5 +1,7 @@
|
||||
project(dsdcc)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
|
||||
set(dsdcc_SOURCES
|
||||
${LIBDSDCCSRC}/descramble.cpp
|
||||
${LIBDSDCCSRC}/dmr.cpp
|
||||
|
@ -9,12 +9,16 @@ QT += core
|
||||
TEMPLATE = lib
|
||||
TARGET = dsdcc
|
||||
|
||||
CONFIG(MSVC):DEFINES += dsdcc_EXPORTS
|
||||
|
||||
CONFIG(MINGW32):LIBDSDCCSRC = "C:\softs\dsdcc"
|
||||
CONFIG(MINGW64):LIBDSDCCSRC = "C:\softs\dsdcc"
|
||||
CONFIG(MSVC):LIBDSDCCSRC = "C:\softs\dsdcc"
|
||||
CONFIG(macx):LIBDSDCCSRC = "../../deps/dsdcc"
|
||||
|
||||
CONFIG(MINGW32):LIBMBELIBSRC = "C:\softs\mbelib"
|
||||
CONFIG(MINGW64):LIBMBELIBSRC = "C:\softs\mbelib"
|
||||
CONFIG(MSVC):LIBMBELIBSRC = "C:\softs\mbelib"
|
||||
CONFIG(macx):LIBMBELIBSRC = "../../deps/mbelib"
|
||||
|
||||
INCLUDEPATH += $$LIBDSDCCSRC
|
||||
@ -50,7 +54,8 @@ $$LIBDSDCCSRC/viterbi5.cpp\
|
||||
$$LIBDSDCCSRC/pn.cpp\
|
||||
$$LIBDSDCCSRC/mbefec.cpp\
|
||||
$$LIBDSDCCSRC/phaselock.cpp\
|
||||
$$LIBDSDCCSRC/locator.cpp
|
||||
$$LIBDSDCCSRC/locator.cpp\
|
||||
$$LIBDSDCCSRC/timeutil.cpp
|
||||
|
||||
HEADERS = $$LIBDSDCCSRC/descramble.h\
|
||||
$$LIBDSDCCSRC/dmr.h\
|
||||
@ -80,6 +85,8 @@ $$LIBDSDCCSRC/viterbi5.h\
|
||||
$$LIBDSDCCSRC/pn.h\
|
||||
$$LIBDSDCCSRC/mbefec.h\
|
||||
$$LIBDSDCCSRC/phaselock.h\
|
||||
$$LIBDSDCCSRC/locator.h
|
||||
$$LIBDSDCCSRC/locator.h\
|
||||
$$LIBDSDCCSRC/timeutil.h\
|
||||
$$LIBDSDCCSRC/export.h
|
||||
|
||||
LIBS += -L../mbelib/$${build_subdir} -lmbelib
|
||||
|
@ -102,6 +102,18 @@
|
||||
# define QRTPLIB_API
|
||||
#endif
|
||||
|
||||
/* the 'SERIALDV_API' controls the import/export of 'serialdv' symbols
|
||||
*/
|
||||
#if !defined(sdrangel_STATIC)
|
||||
# ifdef serialdv_EXPORTS
|
||||
# define SERIALDV_API __SDR_EXPORT
|
||||
# else
|
||||
# define SERIALDV_API __SDR_IMPORT
|
||||
# endif
|
||||
#else
|
||||
# define SERIALDV_API
|
||||
#endif
|
||||
|
||||
/* the 'SWG_API' controls the import/export of 'swagger' symbols
|
||||
*/
|
||||
#if !defined(sdrangel_STATIC)
|
||||
|
@ -1,15 +1,27 @@
|
||||
/*
|
||||
* fcdtraits.cpp
|
||||
*
|
||||
* Created on: Sep 5, 2015
|
||||
* Author: f4exb
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
// Copyright (C) 2015-2018 Edouard Griffiths, F4EXB //
|
||||
// //
|
||||
// This program is free software; you can redistribute it and/or modify //
|
||||
// it under the terms of the GNU General Public License as published by //
|
||||
// the Free Software Foundation as version 3 of the License, or //
|
||||
// //
|
||||
// This program is distributed in the hope that it will be useful, //
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
|
||||
// GNU General Public License V3 for more details. //
|
||||
// //
|
||||
// You should have received a copy of the GNU General Public License //
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "fcdtraits.h"
|
||||
|
||||
const char *fcd_traits<Pro>::alsaDeviceName = "hw:CARD=V10";
|
||||
const char *fcd_traits<ProPlus>::alsaDeviceName = "hw:CARD=V20";
|
||||
|
||||
const char *fcd_traits<Pro>::qtDeviceName = "FUNcube_Dongle_V1.0";
|
||||
const char *fcd_traits<ProPlus>::qtDeviceName = "FUNcube_Dongle_V2.0";
|
||||
|
||||
const char *fcd_traits<Pro>::hardwareID = "FCDPro";
|
||||
const char *fcd_traits<ProPlus>::hardwareID = "FCDPro+";
|
||||
|
||||
@ -22,8 +34,8 @@ const char *fcd_traits<ProPlus>::displayedName = "FunCube Dongle Pro+";
|
||||
const char *fcd_traits<Pro>::pluginDisplayedName = "FunCube Pro Input";
|
||||
const char *fcd_traits<ProPlus>::pluginDisplayedName = "FunCube Pro+ Input";
|
||||
|
||||
const char *fcd_traits<Pro>::pluginVersion = "4.0.0";
|
||||
const char *fcd_traits<ProPlus>::pluginVersion = "4.0.0";
|
||||
const char *fcd_traits<Pro>::pluginVersion = "4.3.0";
|
||||
const char *fcd_traits<ProPlus>::pluginVersion = "4.3.0";
|
||||
|
||||
const int64_t fcd_traits<Pro>::loLowLimitFreq = 64000000L;
|
||||
const int64_t fcd_traits<ProPlus>::loLowLimitFreq = 150000L;
|
||||
|
@ -1,9 +1,18 @@
|
||||
/*
|
||||
* fcdtraits.h
|
||||
*
|
||||
* Created on: 3 Sep 2015
|
||||
* Author: egriffiths
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
// Copyright (C) 2015-2018 Edouard Griffiths, F4EXB //
|
||||
// //
|
||||
// This program is free software; you can redistribute it and/or modify //
|
||||
// it under the terms of the GNU General Public License as published by //
|
||||
// the Free Software Foundation as version 3 of the License, or //
|
||||
// //
|
||||
// This program is distributed in the hope that it will be useful, //
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
|
||||
// GNU General Public License V3 for more details. //
|
||||
// //
|
||||
// You should have received a copy of the GNU General Public License //
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef FCDLIB_FCDTRAITS_H_
|
||||
#define FCDLIB_FCDTRAITS_H_
|
||||
@ -23,8 +32,8 @@ struct fcd_traits
|
||||
static const uint16_t productId = 0x0;
|
||||
static const int sampleRate = 48000;
|
||||
static const int convBufSize = (1<<11);
|
||||
static const int fcdBufSize = (1<<12);
|
||||
static const char *alsaDeviceName;
|
||||
static const char *qtDeviceName;
|
||||
static const char *hardwareID;
|
||||
static const char *interfaceIID;
|
||||
static const char *displayedName;
|
||||
@ -41,8 +50,8 @@ struct fcd_traits<Pro>
|
||||
static const uint16_t productId = 0xFB56;
|
||||
static const int sampleRate = 96000;
|
||||
static const int convBufSize = (1<<11);
|
||||
static const int fcdBufSize = (1<<12);
|
||||
static const char *alsaDeviceName;
|
||||
static const char *qtDeviceName;
|
||||
static const char *hardwareID;
|
||||
static const char *interfaceIID;
|
||||
static const char *displayedName;
|
||||
@ -58,9 +67,9 @@ struct fcd_traits<ProPlus>
|
||||
static const uint16_t vendorId = 0x04D8;
|
||||
static const uint16_t productId = 0xFB31;
|
||||
static const int sampleRate = 192000;
|
||||
static const int convBufSize = (1<<12);
|
||||
static const int fcdBufSize = (1<<18);
|
||||
static const int convBufSize = (1<<10);
|
||||
static const char *alsaDeviceName;
|
||||
static const char *qtDeviceName;
|
||||
static const char *hardwareID;
|
||||
static const char *interfaceIID;
|
||||
static const char *displayedName;
|
||||
|
@ -1,5 +1,7 @@
|
||||
project(httpserver)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
|
||||
set(httpserver_SOURCES
|
||||
httpglobal.cpp
|
||||
httplistener.cpp
|
||||
|
@ -17,6 +17,8 @@ QMAKE_CXXFLAGS += -std=c++11
|
||||
CONFIG(Release):build_subdir = release
|
||||
CONFIG(Debug):build_subdir = debug
|
||||
|
||||
CONFIG(MSVC):DEFINES += httpserver_EXPORTS
|
||||
|
||||
# Enable very detailed debug messages when compiling the debug version
|
||||
CONFIG(debug, debug|release) {
|
||||
DEFINES += SUPERVERBOSE
|
||||
|
@ -1,5 +1,7 @@
|
||||
project(airspy)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
|
||||
find_package(LibUSB)
|
||||
|
||||
remove_definitions(-DUSE_SSE2)
|
||||
|
@ -1,5 +1,7 @@
|
||||
project(airspyhf)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
|
||||
find_package(LibUSB)
|
||||
|
||||
set(airspyhf_SOURCES
|
||||
|
@ -1,5 +1,7 @@
|
||||
project(bladerf)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
|
||||
find_package(LibUSB)
|
||||
|
||||
add_definitions(-DBLADERF_OS_LINUX)
|
||||
|
@ -1,5 +1,7 @@
|
||||
project(hackrf)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
|
||||
find_package(LibUSB)
|
||||
|
||||
set(hackrf_SOURCES
|
||||
|
@ -1,6 +1,8 @@
|
||||
cmake_minimum_required(VERSION 2.8.7)
|
||||
project(iio)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
|
||||
set(LIBIIO_VERSION_MAJOR 0)
|
||||
set(LIBIIO_VERSION_MINOR 10)
|
||||
set(VERSION "${LIBIIO_VERSION_MAJOR}.${LIBIIO_VERSION_MINOR}")
|
||||
|
@ -1,5 +1,7 @@
|
||||
project(limesuite)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
|
||||
find_package(LibUSB)
|
||||
|
||||
set(limesuite_SOURCES
|
||||
|
@ -1,5 +1,7 @@
|
||||
project(mirisdr)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
|
||||
add_definitions(-DDETACH_KERNEL_DRIVER=ON)
|
||||
|
||||
find_package(LibUSB)
|
||||
|
@ -1,5 +1,7 @@
|
||||
project(perseus)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
|
||||
find_package(LibUSB)
|
||||
|
||||
add_definitions(-DHAVE_CONFIG_H)
|
||||
|
@ -1,5 +1,7 @@
|
||||
project(rtlsdr)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
|
||||
add_definitions(-DDETACH_KERNEL_DRIVER=ON)
|
||||
|
||||
find_package(LibUSB)
|
||||
|
161
libsoapysdr/CMakeLists.txt
Normal file
@ -0,0 +1,161 @@
|
||||
########################################################################
|
||||
# Project setup
|
||||
########################################################################
|
||||
cmake_minimum_required(VERSION 2.8.7)
|
||||
project(SoapySDR)
|
||||
enable_language(CXX)
|
||||
enable_testing()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
#set(SOAPYSDR_SOURCE_DIR "/opt/build/SoapySDR")
|
||||
########################################################################
|
||||
# gather version information
|
||||
# packagers may specify -DSOAPY_SDR_EXTVER="foo" to replace the git hash
|
||||
########################################################################
|
||||
file(READ "${SOAPYSDR_SOURCE_DIR}/Changelog.txt" changelog_txt)
|
||||
string(REGEX MATCH "Release ([0-9]+\\.[0-9]+\\.[0-9]+) \\(" CHANGELOG_MATCH "${changelog_txt}")
|
||||
if(NOT CHANGELOG_MATCH)
|
||||
message(FATAL_ERROR "Failed to extract version number from Changelog.txt")
|
||||
endif(NOT CHANGELOG_MATCH)
|
||||
set(SOAPY_SDR_LIBVER "${CMAKE_MATCH_1}")
|
||||
|
||||
if (NOT SOAPY_SDR_EXTVER)
|
||||
include(${SOAPYSDR_SOURCE_DIR}/cmake/Modules/GetGitRevisionDescription.cmake)
|
||||
get_git_head_revision(GITREFSPEC GITHASH)
|
||||
if (GITHASH)
|
||||
string(SUBSTRING "${GITHASH}" 0 8 GITHASH)
|
||||
set(SOAPY_SDR_EXTVER "g${GITHASH}")
|
||||
else (GITHASH)
|
||||
set(SOAPY_SDR_EXTVER "unknown")
|
||||
endif (GITHASH)
|
||||
endif()
|
||||
|
||||
set(SOAPY_SDR_VERSION "${SOAPY_SDR_LIBVER}-${SOAPY_SDR_EXTVER}")
|
||||
|
||||
#SOAPY_SDR_ROOT is compiled into the library to locate the install base.
|
||||
#By default, the SOAPY_SDR_ROOT is set to the CMAKE_INSTALL_PREFIX.
|
||||
#However users may overload this by specifying -DSOAPY_SDR_ROOT=<path>.
|
||||
set(SOAPY_SDR_ROOT "${CMAKE_INSTALL_PREFIX}" CACHE PATH
|
||||
"Installation root for SoapySDR::getRootPath()")
|
||||
file(TO_CMAKE_PATH "${SOAPY_SDR_ROOT}" SOAPY_SDR_ROOT)
|
||||
|
||||
#SOAPY_SDR_ROOT_ENV is the name of the environment variable
|
||||
#which tells SoapySDR where to find the root installation.
|
||||
#By default, the environment variable SOAPY_SDR_ROOT is used.
|
||||
#Example: set -DSOAPY_SDR_ROOT_ENV=SNAP for snappy packages.
|
||||
set(SOAPY_SDR_ROOT_ENV "SOAPY_SDR_ROOT" CACHE STRING
|
||||
"Environment variable for SoapySDR::getRootPath()")
|
||||
|
||||
########################################################################
|
||||
# select the release build type by default to get optimization flags
|
||||
########################################################################
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE "Release")
|
||||
message(STATUS "Build type not specified: defaulting to release.")
|
||||
endif(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "")
|
||||
|
||||
########################################################################
|
||||
# rpath setup - http://www.cmake.org/Wiki/CMake_RPATH_handling
|
||||
########################################################################
|
||||
# use, i.e. don't skip the full RPATH for the build tree
|
||||
option(CMAKE_SKIP_BUILD_RPATH "skip rpath build" FALSE)
|
||||
|
||||
# when building, don't use the install RPATH already
|
||||
# (but later on when installing)
|
||||
option(CMAKE_BUILD_WITH_INSTALL_RPATH "build with install rpath" FALSE)
|
||||
|
||||
# the RPATH to be used when installing, but only if it's not a system directory
|
||||
option(CMAKE_AUTOSET_INSTALL_RPATH TRUE)
|
||||
if(CMAKE_AUTOSET_INSTALL_RPATH)
|
||||
LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" isSystemDir)
|
||||
IF("${isSystemDir}" STREQUAL "-1")
|
||||
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}")
|
||||
ENDIF("${isSystemDir}" STREQUAL "-1")
|
||||
endif(CMAKE_AUTOSET_INSTALL_RPATH)
|
||||
|
||||
# add the automatically determined parts of the RPATH
|
||||
# which point to directories outside the build tree to the install RPATH
|
||||
option(CMAKE_INSTALL_RPATH_USE_LINK_PATH "build with automatic rpath" TRUE)
|
||||
|
||||
if(APPLE)
|
||||
set(CMAKE_MACOSX_RPATH ON)
|
||||
endif()
|
||||
|
||||
########################################################################
|
||||
# Allows in-tree module util
|
||||
########################################################################
|
||||
set(SoapySDR_DIR ${SOAPYSDR_SOURCE_DIR}/cmake/Modules)
|
||||
set(SOAPY_SDR_IN_TREE_SOURCE_DIR ${SOAPYSDR_SOURCE_DIR})
|
||||
find_package(SoapySDR NO_MODULE REQUIRED)
|
||||
include_directories(${SoapySDR_INCLUDE_DIRS}) #local include precedence
|
||||
|
||||
########################################################################
|
||||
# Install cmake helper modules
|
||||
########################################################################
|
||||
configure_file(
|
||||
${SOAPYSDR_SOURCE_DIR}/cmake/Modules/SoapySDRConfigVersion.in.cmake
|
||||
${PROJECT_BINARY_DIR}/SoapySDRConfigVersion.cmake
|
||||
@ONLY)
|
||||
set(cmake_files
|
||||
${SOAPYSDR_SOURCE_DIR}/cmake/Modules/SoapySDRConfig.cmake
|
||||
${SOAPYSDR_SOURCE_DIR}/cmake/Modules/SoapySDRUtil.cmake
|
||||
${PROJECT_BINARY_DIR}/SoapySDRConfigVersion.cmake)
|
||||
if (UNIX)
|
||||
install(FILES ${cmake_files} DESTINATION share/cmake/${PROJECT_NAME})
|
||||
elseif (WIN32)
|
||||
install(FILES ${cmake_files} DESTINATION cmake)
|
||||
endif ()
|
||||
|
||||
########################################################################
|
||||
# Install headers
|
||||
########################################################################
|
||||
#install(DIRECTORY include/SoapySDR DESTINATION include)
|
||||
|
||||
########################################################################
|
||||
# Build subdirs
|
||||
########################################################################
|
||||
add_subdirectory(${SOAPYSDR_SOURCE_DIR}/lib ${PROJECT_BINARY_DIR}/lib)
|
||||
#add_subdirectory(apps)
|
||||
#add_subdirectory(tests)
|
||||
#add_subdirectory(docs)
|
||||
|
||||
########################################################################
|
||||
# uninstall target
|
||||
########################################################################
|
||||
configure_file(
|
||||
"${SOAPYSDR_SOURCE_DIR}/cmake_uninstall.cmake.in"
|
||||
"${SOAPYSDR_SOURCE_DIR}/cmake_uninstall.cmake"
|
||||
IMMEDIATE @ONLY)
|
||||
|
||||
#only add uninstall target if this is the top project
|
||||
if(${CMAKE_PROJECT_NAME} STREQUAL ${PROJECT_NAME})
|
||||
add_custom_target(uninstall
|
||||
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
|
||||
endif()
|
||||
|
||||
#########################################################################
|
||||
# summary
|
||||
#########################################################################
|
||||
include(FeatureSummary)
|
||||
message(STATUS "")
|
||||
message(STATUS "######################################################")
|
||||
message(STATUS "## ${PROJECT_NAME} enabled features")
|
||||
message(STATUS "######################################################")
|
||||
feature_summary(WHAT ENABLED_FEATURES)
|
||||
message(STATUS "######################################################")
|
||||
message(STATUS "## ${PROJECT_NAME} disabled features")
|
||||
message(STATUS "######################################################")
|
||||
feature_summary(WHAT DISABLED_FEATURES)
|
||||
message(STATUS "SoapySDR version: v${SOAPY_SDR_VERSION}")
|
||||
message(STATUS "ABI/so version: v${SOAPY_SDR_ABI_VERSION}")
|
||||
message(STATUS "Install prefix: ${CMAKE_INSTALL_PREFIX}")
|
||||
|
||||
#add_definitions(-DQT_SHARED)
|
||||
#
|
||||
#message( STATUS "soapysdr_SOURCES: ${soapysdr_SOURCES}" )
|
||||
#
|
||||
#add_library(soapysdr SHARED
|
||||
# ${soapysdr_SOURCES}
|
||||
#)
|
||||
#
|
||||
#install(TARGETS soapysdr DESTINATION lib)
|
@ -1,5 +1,7 @@
|
||||
project(logging)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
|
||||
set(logging_SOURCES
|
||||
dualfilelogger.cpp
|
||||
loggerwithfile.cpp
|
||||
|
@ -1,5 +1,7 @@
|
||||
project(mbelib)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
|
||||
set(mbelib_SOURCES
|
||||
${LIBMBELIBSRC}/ambe3600x2400.c
|
||||
${LIBMBELIBSRC}/ambe3600x2450.c
|
||||
|
@ -9,6 +9,8 @@ QT += core
|
||||
TEMPLATE = lib
|
||||
TARGET = mbelib
|
||||
|
||||
CONFIG(MSVC):DEFINES += mbelib_EXPORTS
|
||||
|
||||
CONFIG(MINGW32):LIBMBELIBSRC = "C:\softs\mbelib"
|
||||
CONFIG(MINGW64):LIBMBELIBSRC = "C:\softs\mbelib"
|
||||
CONFIG(MSVC):LIBMBELIBSRC = "C:\softs\mbelib"
|
||||
@ -28,4 +30,5 @@ $$LIBMBELIBSRC/ambe3600x2450_const.h\
|
||||
$$LIBMBELIBSRC/ecc_const.h\
|
||||
$$LIBMBELIBSRC/imbe7200x4400_const.h\
|
||||
$$LIBMBELIBSRC/mbelib.h\
|
||||
$$LIBMBELIBSRC/export.h\
|
||||
$$LIBMBELIBSRC/mbelib_const.h
|
||||
|
@ -1,5 +1,7 @@
|
||||
project(chanalyzer)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
|
||||
set(chanalyzer_SOURCES
|
||||
chanalyzer.cpp
|
||||
chanalyzergui.cpp
|
||||
|
@ -89,8 +89,9 @@ void ChannelAnalyzer::configure(MessageQueue* messageQueue,
|
||||
messageQueue->push(cmd);
|
||||
}
|
||||
|
||||
void ChannelAnalyzer::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly __attribute__((unused)))
|
||||
void ChannelAnalyzer::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly)
|
||||
{
|
||||
(void) positiveOnly;
|
||||
fftfilt::cmplx *sideband = 0;
|
||||
Complex ci;
|
||||
|
||||
|
@ -205,7 +205,7 @@ public:
|
||||
virtual qint64 getCenterFrequency() const { return m_settings.m_frequency; }
|
||||
|
||||
virtual QByteArray serialize() const { return QByteArray(); }
|
||||
virtual bool deserialize(const QByteArray& data __attribute__((unused))) { return false; }
|
||||
virtual bool deserialize(const QByteArray& data) { (void) data; return false; }
|
||||
|
||||
static const QString m_channelIdURI;
|
||||
static const QString m_channelId;
|
||||
|
@ -25,6 +25,7 @@ INCLUDEPATH += ../../../sdrgui
|
||||
CONFIG(ANDROID):INCLUDEPATH += /opt/softs/boost_1_60_0
|
||||
CONFIG(MINGW32):INCLUDEPATH += "C:\softs\boost_1_66_0"
|
||||
CONFIG(MINGW64):INCLUDEPATH += "C:\softs\boost_1_66_0"
|
||||
CONFIG(MSVC):INCLUDEPATH += "C:\softs\boost_1_66_0"
|
||||
CONFIG(macx):INCLUDEPATH += "../../../../../boost_1_64_0"
|
||||
|
||||
CONFIG(Release):build_subdir = release
|
||||
|
@ -312,16 +312,18 @@ void ChannelAnalyzerGUI::on_rrcRolloff_valueChanged(int value)
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void ChannelAnalyzerGUI::on_BW_valueChanged(int value __attribute__((unused)))
|
||||
void ChannelAnalyzerGUI::on_BW_valueChanged(int value)
|
||||
{
|
||||
(void) value;
|
||||
setFiltersUIBoundaries();
|
||||
m_settings.m_bandwidth = ui->BW->value() * 100;
|
||||
m_settings.m_lowCutoff = ui->lowCut->value() * 100;
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void ChannelAnalyzerGUI::on_lowCut_valueChanged(int value __attribute__((unused)))
|
||||
void ChannelAnalyzerGUI::on_lowCut_valueChanged(int value)
|
||||
{
|
||||
(void) value;
|
||||
setFiltersUIBoundaries();
|
||||
m_settings.m_bandwidth = ui->BW->value() * 100;
|
||||
m_settings.m_lowCutoff = ui->lowCut->value() * 100;
|
||||
@ -351,8 +353,10 @@ void ChannelAnalyzerGUI::on_ssb_toggled(bool checked)
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void ChannelAnalyzerGUI::onWidgetRolled(QWidget* widget __attribute__((unused)), bool rollDown __attribute__((unused)))
|
||||
void ChannelAnalyzerGUI::onWidgetRolled(QWidget* widget, bool rollDown)
|
||||
{
|
||||
(void) widget;
|
||||
(void) rollDown;
|
||||
}
|
||||
|
||||
void ChannelAnalyzerGUI::onMenuDialogCalled(const QPoint& p)
|
||||
|
@ -23,7 +23,7 @@
|
||||
|
||||
const PluginDescriptor ChannelAnalyzerPlugin::m_pluginDescriptor = {
|
||||
QString("Channel Analyzer"),
|
||||
QString("4.2.4"),
|
||||
QString("4.3.0"),
|
||||
QString("(c) Edouard Griffiths, F4EXB"),
|
||||
QString("https://github.com/f4exb/sdrangel"),
|
||||
true,
|
||||
|
@ -97,8 +97,9 @@ void DaemonSink::setNbBlocksFEC(int nbBlocksFEC)
|
||||
m_nbBlocksFEC = nbBlocksFEC;
|
||||
}
|
||||
|
||||
void DaemonSink::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool firstOfBurst __attribute__((unused)))
|
||||
void DaemonSink::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool firstOfBurst)
|
||||
{
|
||||
(void) firstOfBurst;
|
||||
SampleVector::const_iterator it = begin;
|
||||
|
||||
while (it != end)
|
||||
@ -134,7 +135,10 @@ void DaemonSink::feed(const SampleVector::const_iterator& begin, const SampleVec
|
||||
superBlock.m_header.m_blockIndex = m_txBlockIndex;
|
||||
superBlock.m_header.m_sampleBytes = (SDR_RX_SAMP_SZ <= 16 ? 2 : 4);
|
||||
superBlock.m_header.m_sampleBits = SDR_RX_SAMP_SZ;
|
||||
memcpy((void *) &superBlock.m_protectedBlock, (const void *) &metaData, sizeof(SDRDaemonMetaDataFEC));
|
||||
|
||||
SDRDaemonMetaDataFEC *destMeta = (SDRDaemonMetaDataFEC *) &superBlock.m_protectedBlock;
|
||||
*destMeta = metaData;
|
||||
//memcpy((void *) &superBlock.m_protectedBlock, (const void *) &metaData, sizeof(SDRDaemonMetaDataFEC));
|
||||
|
||||
if (!(metaData == m_currentMetaFEC))
|
||||
{
|
||||
@ -238,8 +242,9 @@ void DaemonSink::stop()
|
||||
m_running = false;
|
||||
}
|
||||
|
||||
bool DaemonSink::handleMessage(const Message& cmd __attribute__((unused)))
|
||||
bool DaemonSink::handleMessage(const Message& cmd)
|
||||
{
|
||||
(void) cmd;
|
||||
if (DownChannelizer::MsgChannelizerNotification::match(cmd))
|
||||
{
|
||||
DownChannelizer::MsgChannelizerNotification& notif = (DownChannelizer::MsgChannelizerNotification&) cmd;
|
||||
@ -293,8 +298,9 @@ QByteArray DaemonSink::serialize() const
|
||||
return m_settings.serialize();
|
||||
}
|
||||
|
||||
bool DaemonSink::deserialize(const QByteArray& data __attribute__((unused)))
|
||||
bool DaemonSink::deserialize(const QByteArray& data)
|
||||
{
|
||||
(void) data;
|
||||
if (m_settings.deserialize(data))
|
||||
{
|
||||
MsgConfigureDaemonSink *msg = MsgConfigureDaemonSink::create(m_settings, true);
|
||||
@ -341,8 +347,9 @@ void DaemonSink::applySettings(const DaemonSinkSettings& settings, bool force)
|
||||
|
||||
int DaemonSink::webapiSettingsGet(
|
||||
SWGSDRangel::SWGChannelSettings& response,
|
||||
QString& errorMessage __attribute__((unused)))
|
||||
QString& errorMessage)
|
||||
{
|
||||
(void) errorMessage;
|
||||
response.setDaemonSinkSettings(new SWGSDRangel::SWGDaemonSinkSettings());
|
||||
response.getDaemonSinkSettings()->init();
|
||||
webapiFormatChannelSettings(response, m_settings);
|
||||
@ -353,8 +360,9 @@ int DaemonSink::webapiSettingsPutPatch(
|
||||
bool force,
|
||||
const QStringList& channelSettingsKeys,
|
||||
SWGSDRangel::SWGChannelSettings& response,
|
||||
QString& errorMessage __attribute__((unused)))
|
||||
QString& errorMessage)
|
||||
{
|
||||
(void) errorMessage;
|
||||
DaemonSinkSettings settings = m_settings;
|
||||
|
||||
if (channelSettingsKeys.contains("nbFECBlocks"))
|
||||
|
@ -48,8 +48,9 @@ qint64 DaemonSinkGUI::getCenterFrequency() const {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void DaemonSinkGUI::setCenterFrequency(qint64 centerFrequency __attribute__((unused)))
|
||||
void DaemonSinkGUI::setCenterFrequency(qint64 centerFrequency)
|
||||
{
|
||||
(void) centerFrequency;
|
||||
}
|
||||
|
||||
void DaemonSinkGUI::resetToDefaults()
|
||||
@ -207,8 +208,10 @@ void DaemonSinkGUI::handleSourceMessages()
|
||||
}
|
||||
}
|
||||
|
||||
void DaemonSinkGUI::onWidgetRolled(QWidget* widget __attribute__((unused)), bool rollDown __attribute__((unused)))
|
||||
void DaemonSinkGUI::onWidgetRolled(QWidget* widget, bool rollDown)
|
||||
{
|
||||
(void) widget;
|
||||
(void) rollDown;
|
||||
}
|
||||
|
||||
void DaemonSinkGUI::onMenuDialogCalled(const QPoint &p)
|
||||
@ -249,8 +252,9 @@ void DaemonSinkGUI::on_dataPort_returnPressed()
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void DaemonSinkGUI::on_dataApplyButton_clicked(bool checked __attribute__((unused)))
|
||||
void DaemonSinkGUI::on_dataApplyButton_clicked(bool checked)
|
||||
{
|
||||
(void) checked;
|
||||
m_settings.m_dataAddress = ui->dataAddress->text();
|
||||
|
||||
bool dataOk;
|
||||
|
@ -39,6 +39,7 @@ void DaemonSinkSettings::resetToDefaults()
|
||||
m_dataPort = 9090;
|
||||
m_rgbColor = QColor(140, 4, 4).rgb();
|
||||
m_title = "Daemon sink";
|
||||
m_channelMarker = nullptr;
|
||||
}
|
||||
|
||||
QByteArray DaemonSinkSettings::serialize() const
|
||||
|
@ -68,7 +68,7 @@ public slots:
|
||||
private:
|
||||
QMutex m_startWaitMutex;
|
||||
QWaitCondition m_startWaiter;
|
||||
bool m_running;
|
||||
volatile bool m_running;
|
||||
|
||||
CM256 m_cm256;
|
||||
CM256 *m_cm256p;
|
||||
|
@ -98,8 +98,9 @@ AMDemod::~AMDemod()
|
||||
delete SSBFilter;
|
||||
}
|
||||
|
||||
void AMDemod::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool firstOfBurst __attribute__((unused)))
|
||||
void AMDemod::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool firstOfBurst)
|
||||
{
|
||||
(void) firstOfBurst;
|
||||
Complex ci;
|
||||
|
||||
if (!m_running) {
|
||||
@ -502,8 +503,9 @@ bool AMDemod::deserialize(const QByteArray& data)
|
||||
|
||||
int AMDemod::webapiSettingsGet(
|
||||
SWGSDRangel::SWGChannelSettings& response,
|
||||
QString& errorMessage __attribute__((unused)))
|
||||
QString& errorMessage)
|
||||
{
|
||||
(void) errorMessage;
|
||||
response.setAmDemodSettings(new SWGSDRangel::SWGAMDemodSettings());
|
||||
response.getAmDemodSettings()->init();
|
||||
webapiFormatChannelSettings(response, m_settings);
|
||||
@ -514,8 +516,9 @@ int AMDemod::webapiSettingsPutPatch(
|
||||
bool force,
|
||||
const QStringList& channelSettingsKeys,
|
||||
SWGSDRangel::SWGChannelSettings& response,
|
||||
QString& errorMessage __attribute__((unused)))
|
||||
QString& errorMessage)
|
||||
{
|
||||
(void) errorMessage;
|
||||
AMDemodSettings settings = m_settings;
|
||||
bool frequencyOffsetChanged = false;
|
||||
|
||||
@ -584,8 +587,9 @@ int AMDemod::webapiSettingsPutPatch(
|
||||
|
||||
int AMDemod::webapiReportGet(
|
||||
SWGSDRangel::SWGChannelReport& response,
|
||||
QString& errorMessage __attribute__((unused)))
|
||||
QString& errorMessage)
|
||||
{
|
||||
(void) errorMessage;
|
||||
response.setAmDemodReport(new SWGSDRangel::SWGAMDemodReport());
|
||||
response.getAmDemodReport()->init();
|
||||
webapiFormatChannelReport(response);
|
||||
|
@ -92,8 +92,9 @@ bool AMDemodGUI::deserialize(const QByteArray& data)
|
||||
}
|
||||
}
|
||||
|
||||
bool AMDemodGUI::handleMessage(const Message& message __attribute__((unused)))
|
||||
bool AMDemodGUI::handleMessage(const Message& message)
|
||||
{
|
||||
(void) message;
|
||||
if (AMDemod::MsgConfigureAMDemod::match(message))
|
||||
{
|
||||
qDebug("AMDemodGUI::handleMessage: AMDemod::MsgConfigureAMDemod");
|
||||
@ -192,8 +193,10 @@ void AMDemodGUI::on_audioMute_toggled(bool checked)
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void AMDemodGUI::onWidgetRolled(QWidget* widget __attribute__((unused)), bool rollDown __attribute__((unused)))
|
||||
void AMDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown)
|
||||
{
|
||||
(void) widget;
|
||||
(void) rollDown;
|
||||
/*
|
||||
if((widget == ui->spectrumContainer) && (m_nfmDemod != NULL))
|
||||
m_nfmDemod->setSpectrum(m_threadedSampleSink->getMessageQueue(), rollDown);
|
||||
|
@ -1,5 +1,7 @@
|
||||
project(atv)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
|
||||
set(atv_SOURCES
|
||||
atvdemod.cpp
|
||||
atvdemodsettings.cpp
|
||||
|
@ -164,8 +164,9 @@ void ATVDemod::configureRF(
|
||||
objMessageQueue->push(msgCmd);
|
||||
}
|
||||
|
||||
void ATVDemod::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool firstOfBurst __attribute__((unused)))
|
||||
void ATVDemod::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool firstOfBurst)
|
||||
{
|
||||
(void) firstOfBurst;
|
||||
float fltI;
|
||||
float fltQ;
|
||||
Complex ci;
|
||||
|
@ -65,7 +65,8 @@ public:
|
||||
ATV_FM3, //!< Classical frequency modulation with phase derivative discriminator
|
||||
ATV_AM, //!< Classical amplitude modulation
|
||||
ATV_USB, //!< AM with vestigial lower side band (main signal is in the upper side)
|
||||
ATV_LSB //!< AM with vestigial upper side band (main signal is in the lower side)
|
||||
ATV_LSB, //!< AM with vestigial upper side band (main signal is in the lower side)
|
||||
ATV_NONE //!< No modulation just produces zeros
|
||||
};
|
||||
|
||||
struct ATVConfig
|
||||
@ -229,7 +230,7 @@ public:
|
||||
virtual qint64 getCenterFrequency() const { return m_rfRunning.m_intFrequencyOffset; }
|
||||
|
||||
virtual QByteArray serialize() const { return QByteArray(); }
|
||||
virtual bool deserialize(const QByteArray& data __attribute__((unused))) { return false; }
|
||||
virtual bool deserialize(const QByteArray& data) { (void) data; return false; }
|
||||
|
||||
void setTVScreen(TVScreen *objScreen); //!< set by the GUI
|
||||
int getSampleRate();
|
||||
|
@ -263,8 +263,10 @@ void ATVDemodGUI::handleSourceMessages()
|
||||
}
|
||||
}
|
||||
|
||||
void ATVDemodGUI::onWidgetRolled(QWidget* widget __attribute__((unused)), bool rollDown __attribute__((unused)))
|
||||
void ATVDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown)
|
||||
{
|
||||
(void) widget;
|
||||
(void) rollDown;
|
||||
}
|
||||
|
||||
ATVDemodGUI::ATVDemodGUI(PluginAPI* objPluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* objParent) :
|
||||
@ -534,32 +536,37 @@ void ATVDemodGUI::on_halfImage_clicked()
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void ATVDemodGUI::on_nbLines_currentIndexChanged(int index __attribute__((unused)))
|
||||
void ATVDemodGUI::on_nbLines_currentIndexChanged(int index)
|
||||
{
|
||||
(void) index;
|
||||
lineTimeUpdate();
|
||||
topTimeUpdate();
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void ATVDemodGUI::on_fps_currentIndexChanged(int index __attribute__((unused)))
|
||||
void ATVDemodGUI::on_fps_currentIndexChanged(int index)
|
||||
{
|
||||
(void) index;
|
||||
lineTimeUpdate();
|
||||
topTimeUpdate();
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void ATVDemodGUI::on_standard_currentIndexChanged(int index __attribute__((unused)))
|
||||
void ATVDemodGUI::on_standard_currentIndexChanged(int index)
|
||||
{
|
||||
(void) index;
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void ATVDemodGUI::on_reset_clicked(bool checked __attribute__((unused)))
|
||||
void ATVDemodGUI::on_reset_clicked(bool checked)
|
||||
{
|
||||
(void) checked;
|
||||
resetToDefaults();
|
||||
}
|
||||
|
||||
void ATVDemodGUI::on_modulation_currentIndexChanged(int index __attribute__((unused)))
|
||||
void ATVDemodGUI::on_modulation_currentIndexChanged(int index)
|
||||
{
|
||||
(void) index;
|
||||
setRFFiltersSlidersRange(m_atvDemod->getEffectiveSampleRate());
|
||||
setChannelMarkerBandwidth();
|
||||
applyRFSettings();
|
||||
@ -579,15 +586,17 @@ void ATVDemodGUI::on_rfOppBW_valueChanged(int value)
|
||||
applyRFSettings();
|
||||
}
|
||||
|
||||
void ATVDemodGUI::on_rfFiltering_toggled(bool checked __attribute__((unused)))
|
||||
void ATVDemodGUI::on_rfFiltering_toggled(bool checked)
|
||||
{
|
||||
(void) checked;
|
||||
setRFFiltersSlidersRange(m_atvDemod->getEffectiveSampleRate());
|
||||
setChannelMarkerBandwidth();
|
||||
applyRFSettings();
|
||||
}
|
||||
|
||||
void ATVDemodGUI::on_decimatorEnable_toggled(bool checked __attribute__((unused)))
|
||||
void ATVDemodGUI::on_decimatorEnable_toggled(bool checked)
|
||||
{
|
||||
(void) checked;
|
||||
setChannelMarkerBandwidth();
|
||||
applyRFSettings();
|
||||
}
|
||||
@ -610,8 +619,9 @@ void ATVDemodGUI::on_fmDeviation_valueChanged(int value)
|
||||
applyRFSettings();
|
||||
}
|
||||
|
||||
void ATVDemodGUI::on_screenTabWidget_currentChanged(int index __attribute__((unused)))
|
||||
void ATVDemodGUI::on_screenTabWidget_currentChanged(int index)
|
||||
{
|
||||
(void) index;
|
||||
applySettings();
|
||||
}
|
||||
|
||||
|
@ -27,7 +27,7 @@
|
||||
const PluginDescriptor ATVDemodPlugin::m_ptrPluginDescriptor =
|
||||
{
|
||||
QString("ATV Demodulator"),
|
||||
QString("4.2.4"),
|
||||
QString("4.3.0"),
|
||||
QString("(c) F4HKW for F4EXB / SDRAngel"),
|
||||
QString("https://github.com/f4exb/sdrangel"),
|
||||
true,
|
||||
|
@ -27,6 +27,7 @@ CONFIG(Debug):build_subdir = debug
|
||||
|
||||
CONFIG(MINGW32):INCLUDEPATH += "C:\softs\boost_1_66_0"
|
||||
CONFIG(MINGW64):INCLUDEPATH += "C:\softs\boost_1_66_0"
|
||||
CONFIG(MSVC):INCLUDEPATH += "C:\softs\boost_1_66_0"
|
||||
CONFIG(macx):INCLUDEPATH += "../../../../../boost_1_64_0"
|
||||
|
||||
SOURCES += atvdemod.cpp\
|
||||
|
@ -113,8 +113,9 @@ BFMDemod::~BFMDemod()
|
||||
delete m_rfFilter;
|
||||
}
|
||||
|
||||
void BFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool firstOfBurst __attribute__((unused)))
|
||||
void BFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool firstOfBurst)
|
||||
{
|
||||
(void) firstOfBurst;
|
||||
Complex ci, cs, cr;
|
||||
fftfilt::cmplx *rf;
|
||||
int rf_out;
|
||||
@ -538,8 +539,9 @@ bool BFMDemod::deserialize(const QByteArray& data)
|
||||
|
||||
int BFMDemod::webapiSettingsGet(
|
||||
SWGSDRangel::SWGChannelSettings& response,
|
||||
QString& errorMessage __attribute__((unused)))
|
||||
QString& errorMessage)
|
||||
{
|
||||
(void) errorMessage;
|
||||
response.setBfmDemodSettings(new SWGSDRangel::SWGBFMDemodSettings());
|
||||
response.getBfmDemodSettings()->init();
|
||||
webapiFormatChannelSettings(response, m_settings);
|
||||
@ -550,8 +552,9 @@ int BFMDemod::webapiSettingsPutPatch(
|
||||
bool force,
|
||||
const QStringList& channelSettingsKeys,
|
||||
SWGSDRangel::SWGChannelSettings& response,
|
||||
QString& errorMessage __attribute__((unused)))
|
||||
QString& errorMessage)
|
||||
{
|
||||
(void) errorMessage;
|
||||
BFMDemodSettings settings = m_settings;
|
||||
bool frequencyOffsetChanged = false;
|
||||
|
||||
@ -618,8 +621,9 @@ int BFMDemod::webapiSettingsPutPatch(
|
||||
|
||||
int BFMDemod::webapiReportGet(
|
||||
SWGSDRangel::SWGChannelReport& response,
|
||||
QString& errorMessage __attribute__((unused)))
|
||||
QString& errorMessage)
|
||||
{
|
||||
(void) errorMessage;
|
||||
response.setBfmDemodReport(new SWGSDRangel::SWGBFMDemodReport());
|
||||
response.getBfmDemodReport()->init();
|
||||
webapiFormatChannelReport(response);
|
||||
|
@ -225,8 +225,9 @@ void BFMDemodGUI::on_rds_clicked()
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void BFMDemodGUI::on_clearData_clicked(bool checked __attribute__((unused)))
|
||||
void BFMDemodGUI::on_clearData_clicked(bool checked)
|
||||
{
|
||||
(void) checked;
|
||||
if (ui->rds->isChecked())
|
||||
{
|
||||
m_bfmDemod->getRDSParser().clearAllFields();
|
||||
@ -288,26 +289,31 @@ void BFMDemodGUI::on_g14ProgServiceNames_currentIndexChanged(int _index)
|
||||
}
|
||||
}
|
||||
|
||||
void BFMDemodGUI::on_g00AltFrequenciesBox_activated(int index __attribute__((unused)))
|
||||
void BFMDemodGUI::on_g00AltFrequenciesBox_activated(int index)
|
||||
{
|
||||
(void) index;
|
||||
qint64 f = (qint64) ((ui->g00AltFrequenciesBox->currentText()).toDouble() * 1e6);
|
||||
changeFrequency(f);
|
||||
}
|
||||
|
||||
void BFMDemodGUI::on_g14MappedFrequencies_activated(int index __attribute__((unused)))
|
||||
void BFMDemodGUI::on_g14MappedFrequencies_activated(int index)
|
||||
{
|
||||
(void) index;
|
||||
qint64 f = (qint64) ((ui->g14MappedFrequencies->currentText()).toDouble() * 1e6);
|
||||
changeFrequency(f);
|
||||
}
|
||||
|
||||
void BFMDemodGUI::on_g14AltFrequencies_activated(int index __attribute__((unused)))
|
||||
void BFMDemodGUI::on_g14AltFrequencies_activated(int index)
|
||||
{
|
||||
(void) index;
|
||||
qint64 f = (qint64) ((ui->g14AltFrequencies->currentText()).toDouble() * 1e6);
|
||||
changeFrequency(f);
|
||||
}
|
||||
|
||||
void BFMDemodGUI::onWidgetRolled(QWidget* widget __attribute__((unused)), bool rollDown __attribute__((unused)))
|
||||
void BFMDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown)
|
||||
{
|
||||
(void) widget;
|
||||
(void) rollDown;
|
||||
}
|
||||
|
||||
void BFMDemodGUI::onMenuDialogCalled(const QPoint &p)
|
||||
|
@ -26,6 +26,7 @@ INCLUDEPATH += ../../../swagger/sdrangel/code/qt5/client
|
||||
CONFIG(ANDROID):INCLUDEPATH += /opt/softs/boost_1_60_0
|
||||
CONFIG(MINGW32):INCLUDEPATH += "C:\softs\boost_1_66_0"
|
||||
CONFIG(MINGW64):INCLUDEPATH += "C:\softs\boost_1_66_0"
|
||||
CONFIG(MSVC):INCLUDEPATH += "C:\softs\boost_1_66_0"
|
||||
CONFIG(macx):INCLUDEPATH += "../../../../../boost_1_64_0"
|
||||
|
||||
CONFIG(Release):build_subdir = release
|
||||
|
@ -66,8 +66,9 @@ RDSDemod::~RDSDemod()
|
||||
//delete m_socket;
|
||||
}
|
||||
|
||||
void RDSDemod::setSampleRate(int srate __attribute__((unused))) /// FIXME: fix rate for now
|
||||
void RDSDemod::setSampleRate(int srate) /// FIXME: fix rate for now
|
||||
{
|
||||
(void) srate;
|
||||
}
|
||||
|
||||
bool RDSDemod::process(Real demod, bool& bit)
|
||||
|
@ -532,20 +532,16 @@ void RDSParser::decode_type0(unsigned int *group, bool B)
|
||||
if (af_1)
|
||||
{
|
||||
// @TODO: Find proper header or STL on OSX
|
||||
#ifndef __APPLE__
|
||||
std::pair<std::_Rb_tree_const_iterator<double>, bool> res = m_g0_alt_freq.insert(af_1/1e3);
|
||||
auto res = m_g0_alt_freq.insert(af_1/1e3);
|
||||
m_g0_af_updated = m_g0_af_updated || res.second;
|
||||
#endif
|
||||
no_af += 1;
|
||||
}
|
||||
|
||||
if (af_2)
|
||||
{
|
||||
// @TODO: Find proper header or STL on OSX
|
||||
#ifndef __APPLE__
|
||||
std::pair<std::_Rb_tree_const_iterator<double>, bool> res = m_g0_alt_freq.insert(af_2/1e3);
|
||||
auto res = m_g0_alt_freq.insert(af_2/1e3);
|
||||
m_g0_af_updated = m_g0_af_updated || res.second;
|
||||
#endif
|
||||
no_af += 2;
|
||||
}
|
||||
|
||||
@ -828,19 +824,25 @@ void RDSParser::decode_type4(unsigned int *group, bool B)
|
||||
//send_message(5,time);
|
||||
}
|
||||
|
||||
void RDSParser::decode_type5(unsigned int *group __attribute__((unused)), bool B __attribute__((unused))) {
|
||||
void RDSParser::decode_type5(unsigned int *group, bool B) {
|
||||
(void) group;
|
||||
(void) B;
|
||||
qDebug() << "RDSParser::decode_type5: type5 not implemented yet";
|
||||
m_g5_updated = true;
|
||||
m_g5_count++;
|
||||
}
|
||||
|
||||
void RDSParser::decode_type6(unsigned int *group __attribute__((unused)), bool B __attribute__((unused))) {
|
||||
void RDSParser::decode_type6(unsigned int *group, bool B) {
|
||||
(void) group;
|
||||
(void) B;
|
||||
qDebug() << "RDSParser::decode_type6: type 6 not implemented yet";
|
||||
m_g6_updated = true;
|
||||
m_g6_count++;
|
||||
}
|
||||
|
||||
void RDSParser::decode_type7(unsigned int *group __attribute__((unused)), bool B __attribute__((unused))) {
|
||||
void RDSParser::decode_type7(unsigned int *group, bool B) {
|
||||
(void) group;
|
||||
(void) B;
|
||||
qDebug() << "RDSParser::decode_type7: type 7 not implemented yet";
|
||||
m_g7_updated = true;
|
||||
m_g7_count++;
|
||||
@ -971,29 +973,37 @@ void RDSParser::decode_type9(unsigned int *group, bool B){
|
||||
m_g9_count++;
|
||||
}
|
||||
|
||||
void RDSParser::decode_type10(unsigned int *group __attribute__((unused)), bool B __attribute__((unused)))
|
||||
void RDSParser::decode_type10(unsigned int *group, bool B)
|
||||
{
|
||||
(void) group;
|
||||
(void) B;
|
||||
qDebug() << "RDSParser::decode_type10: type 10 not implemented yet";
|
||||
m_g10_updated = true;
|
||||
m_g10_count++;
|
||||
}
|
||||
|
||||
void RDSParser::decode_type11(unsigned int *group __attribute__((unused)), bool B __attribute__((unused)))
|
||||
void RDSParser::decode_type11(unsigned int *group, bool B)
|
||||
{
|
||||
(void) group;
|
||||
(void) B;
|
||||
qDebug() << "RDSParser::decode_type11: type 11 not implemented yet";
|
||||
m_g11_updated = true;
|
||||
m_g11_count++;
|
||||
}
|
||||
|
||||
void RDSParser::decode_type12(unsigned int *group __attribute__((unused)), bool B __attribute__((unused)))
|
||||
void RDSParser::decode_type12(unsigned int *group, bool B)
|
||||
{
|
||||
(void) group;
|
||||
(void) B;
|
||||
qDebug() << "RDSParser::decode_type12: type 12 not implemented yet";
|
||||
m_g12_updated = true;
|
||||
m_g12_count++;
|
||||
}
|
||||
|
||||
void RDSParser::decode_type13(unsigned int *group __attribute__((unused)), bool B __attribute__((unused)))
|
||||
void RDSParser::decode_type13(unsigned int *group, bool B)
|
||||
{
|
||||
(void) group;
|
||||
(void) B;
|
||||
qDebug() << "RDSParser::decode_type13: type 13 not implemented yet";
|
||||
m_g13_updated = true;
|
||||
m_g13_count++;
|
||||
@ -1180,8 +1190,10 @@ void RDSParser::decode_type14(unsigned int *group, bool B)
|
||||
}*/
|
||||
}
|
||||
|
||||
void RDSParser::decode_type15(unsigned int *group __attribute__((unused)), bool B __attribute__((unused)))
|
||||
void RDSParser::decode_type15(unsigned int *group, bool B)
|
||||
{
|
||||
(void) group;
|
||||
(void) B;
|
||||
qDebug() << "RDSParser::decode_type5: type 15 not implemented yet";
|
||||
m_g15_updated = true;
|
||||
m_g15_count++;
|
||||
|
@ -1,5 +1,7 @@
|
||||
project(datv)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
|
||||
set(datv_SOURCES
|
||||
datvdemod.cpp
|
||||
datvdemodgui.cpp
|
||||
|
@ -19,7 +19,6 @@
|
||||
#ifndef DATVCONSTELLATION_H
|
||||
#define DATVCONSTELLATION_H
|
||||
|
||||
#include <sys/time.h>
|
||||
#include <vector>
|
||||
|
||||
#include "leansdr/framework.h"
|
||||
@ -68,15 +67,11 @@ template<typename T> struct datvconstellation: runnable
|
||||
complex<T> *p = in.rd(), *pend = p + pixels_per_frame;
|
||||
|
||||
for (; p < pend; ++p)
|
||||
{
|
||||
if (m_objDATVScreen != 0)
|
||||
{
|
||||
m_objDATVScreen->selectRow(256 * (p->re - xymin) / (xymax - xymin));
|
||||
m_objDATVScreen->setDataColor(256 - 256 * ((p->im - xymin) / (xymax - xymin)), 255, 0, 255);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (cstln && (*cstln))
|
||||
{
|
||||
// Plot constellation points
|
||||
|