mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-15 12:51:49 -05:00
BladeRF output: set FIFO size to 0.25s or 75 kS whichever is larger (300kS/s knee) except when decimating by 32 where a fixed 150 kS FIFO is used
This commit is contained in:
parent
5829519116
commit
6522f62326
@ -3,12 +3,14 @@ project(bladerfdevice)
|
|||||||
set(bladerfdevice_SOURCES
|
set(bladerfdevice_SOURCES
|
||||||
devicebladerf.cpp
|
devicebladerf.cpp
|
||||||
devicebladerfvalues.cpp
|
devicebladerfvalues.cpp
|
||||||
|
devicebladerfshared.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
set(bladerfdevice_HEADERS
|
set(bladerfdevice_HEADERS
|
||||||
devicebladerf.h
|
devicebladerf.h
|
||||||
devicebladerfvalues.h
|
devicebladerfvalues.h
|
||||||
devicebladerfparam.h
|
devicebladerfparam.h
|
||||||
|
devicebladerfshared.h
|
||||||
)
|
)
|
||||||
|
|
||||||
if (BUILD_DEBIAN)
|
if (BUILD_DEBIAN)
|
||||||
|
21
devices/bladerf/devicebladerfshared.cpp
Normal file
21
devices/bladerf/devicebladerfshared.cpp
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
///////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Copyright (C) 2017 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 "devicebladerfshared.h"
|
||||||
|
|
||||||
|
const float DeviceBladeRFShared::m_sampleFifoLengthInSeconds = 0.25;
|
||||||
|
const int DeviceBladeRFShared::m_sampleFifoMinSize = 75000; // 300 kS/s knee
|
||||||
|
const int DeviceBladeRFShared::m_sampleFifoMinSize32 = 150000; // Fixed for interpolation by 32
|
31
devices/bladerf/devicebladerfshared.h
Normal file
31
devices/bladerf/devicebladerfshared.h
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
///////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Copyright (C) 2017 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 DEVICES_BLADERF_DEVICEHACKRFSHARED_H_
|
||||||
|
#define DEVICES_BLADERF_DEVICEHACKRFSHARED_H_
|
||||||
|
|
||||||
|
#include "util/message.h"
|
||||||
|
|
||||||
|
class DeviceBladeRFShared
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static const float m_sampleFifoLengthInSeconds;
|
||||||
|
static const int m_sampleFifoMinSize;
|
||||||
|
static const int m_sampleFifoMinSize32;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* DEVICES_BLADERF_DEVICEHACKRFSHARED_H_ */
|
@ -45,7 +45,8 @@ CONFIG(Release):build_subdir = release
|
|||||||
CONFIG(Debug):build_subdir = debug
|
CONFIG(Debug):build_subdir = debug
|
||||||
|
|
||||||
!macx:SOURCES += bladerf/devicebladerf.cpp\
|
!macx:SOURCES += bladerf/devicebladerf.cpp\
|
||||||
bladerf/devicebladerfvalues.cpp
|
bladerf/devicebladerfvalues.cpp\
|
||||||
|
bladerf/devicebladerfshared.cpp
|
||||||
|
|
||||||
SOURCES += hackrf/devicehackrf.cpp\
|
SOURCES += hackrf/devicehackrf.cpp\
|
||||||
hackrf/devicehackrfvalues.cpp\
|
hackrf/devicehackrfvalues.cpp\
|
||||||
@ -57,7 +58,8 @@ CONFIG(MINGW64)SOURCES += limesdr/devicelimesdr.cpp\
|
|||||||
|
|
||||||
!macx:HEADERS -= bladerf/devicebladerf.h\
|
!macx:HEADERS -= bladerf/devicebladerf.h\
|
||||||
bladerf/devicebladerfparam.h\
|
bladerf/devicebladerfparam.h\
|
||||||
bladerf/devicebladerfvalues.h
|
bladerf/devicebladerfvalues.h\
|
||||||
|
bladerf/devicebladerfshared.h
|
||||||
|
|
||||||
HEADERS += hackrf/devicehackrf.h\
|
HEADERS += hackrf/devicehackrf.h\
|
||||||
hackrf/devicehackrfparam.h\
|
hackrf/devicehackrfparam.h\
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include "dsp/dspengine.h"
|
#include "dsp/dspengine.h"
|
||||||
#include "device/devicesinkapi.h"
|
#include "device/devicesinkapi.h"
|
||||||
#include "device/devicesourceapi.h"
|
#include "device/devicesourceapi.h"
|
||||||
|
#include "bladerf/devicebladerfshared.h"
|
||||||
|
|
||||||
#include "bladerfoutput.h"
|
#include "bladerfoutput.h"
|
||||||
#include "bladerfoutputgui.h"
|
#include "bladerfoutputgui.h"
|
||||||
@ -243,10 +244,20 @@ bool BladerfOutput::applySettings(const BladeRFOutputSettings& settings, bool fo
|
|||||||
|
|
||||||
if ((m_settings.m_devSampleRate != settings.m_devSampleRate) || (m_settings.m_log2Interp != settings.m_log2Interp) || force)
|
if ((m_settings.m_devSampleRate != settings.m_devSampleRate) || (m_settings.m_log2Interp != settings.m_log2Interp) || force)
|
||||||
{
|
{
|
||||||
// FIFO size:
|
int fifoSize;
|
||||||
// 1 s length up to interpolation by 16
|
|
||||||
// 2 s for interpolation by 32
|
if (settings.m_log2Interp == 5)
|
||||||
m_sampleSourceFifo.resize(settings.m_devSampleRate/(1<<(settings.m_log2Interp <= 4 ? settings.m_log2Interp : 4)));
|
{
|
||||||
|
fifoSize = DeviceBladeRFShared::m_sampleFifoMinSize32;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fifoSize = std::max(
|
||||||
|
(int) ((settings.m_devSampleRate/(1<<settings.m_log2Interp)) * DeviceBladeRFShared::m_sampleFifoLengthInSeconds),
|
||||||
|
DeviceBladeRFShared::m_sampleFifoMinSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
m_sampleSourceFifo.resize(fifoSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((m_settings.m_devSampleRate != settings.m_devSampleRate) || force)
|
if ((m_settings.m_devSampleRate != settings.m_devSampleRate) || force)
|
||||||
|
Loading…
Reference in New Issue
Block a user