mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-25 17:28:50 -05:00
BladeRF: fixed devices build and add BladeRF2 device
This commit is contained in:
parent
d118ad2558
commit
57ef3a0567
@ -38,7 +38,7 @@ Since version 2 SDRangel can integrate more than one hardware device running con
|
||||
|
||||
Since version 3 transmission or signal generation is supported for BladeRF, HackRF (since version 3.1), LimeSDR (since version 3.4) and PlutoSDR (since version 3.7.8) using a sample sink plugin. These plugins are:
|
||||
|
||||
- [BladeRF output plugin](https://github.com/f4exb/sdrangel/tree/dev/plugins/samplesink/bladerfoutput)
|
||||
- [BladeRF output plugin](https://github.com/f4exb/sdrangel/tree/dev/plugins/samplesink/bladerf1output)
|
||||
- [HackRF output plugin](https://github.com/f4exb/sdrangel/tree/dev/plugins/samplesink/hackrfoutput)
|
||||
- [LimeSDR output plugin](https://github.com/f4exb/sdrangel/tree/dev/plugins/samplesink/limesdroutput)
|
||||
- [PlutoSDR output plugin](https://github.com/f4exb/sdrangel/tree/dev/plugins/samplesink/plutosdroutput)
|
||||
@ -55,7 +55,7 @@ Since version 4 the `sdrangelsrv` binary launches a server mode SDRangel instanc
|
||||
|
||||
<h2>Detached RF head server (SDRdaemon)</h2>
|
||||
|
||||
Since version 4.1 the previously separated project SDRdaemon has been modified and included in SDRangel. Another binary `sdrdaemonsrv` is provided for handling just the RF part of the SDRangel processing chain. The baseband samples are comunicated via UDP to/from a SDRangel instance. More details are provided in the server instance documentation in the `sdrdaemon` folder.
|
||||
Since version 4.1 the previously separated project SDRdaemon has been modified and included in SDRangel. The `sdrangelsrv` headless variant can be used for this purpose using the Daemon source or sink channels.
|
||||
|
||||
<h1>Notes on pulseaudio setup</h1>
|
||||
|
||||
|
@ -4,6 +4,7 @@ find_package(LibUSB)
|
||||
|
||||
if (BUILD_DEBIAN)
|
||||
add_subdirectory(bladerf1)
|
||||
add_subdirectory(bladerf2)
|
||||
add_subdirectory(hackrf)
|
||||
add_subdirectory(limesdr)
|
||||
add_subdirectory(perseus)
|
||||
@ -12,6 +13,7 @@ else(BUILD_DEBIAN)
|
||||
find_package(LibBLADERF)
|
||||
if(LIBUSB_FOUND AND LIBBLADERF_FOUND)
|
||||
add_subdirectory(bladerf1)
|
||||
add_subdirectory(bladerf2)
|
||||
endif(LIBUSB_FOUND AND LIBBLADERF_FOUND)
|
||||
|
||||
find_package(LibHACKRF)
|
||||
@ -33,5 +35,4 @@ else(BUILD_DEBIAN)
|
||||
if(LIBUSB_FOUND AND LIBPERSEUS_FOUND)
|
||||
add_subdirectory(perseus)
|
||||
endif()
|
||||
|
||||
endif (BUILD_DEBIAN)
|
||||
|
45
devices/bladerf2/CMakeLists.txt
Normal file
45
devices/bladerf2/CMakeLists.txt
Normal file
@ -0,0 +1,45 @@
|
||||
project(bladerf2device)
|
||||
|
||||
set(bladerf2device_SOURCES
|
||||
devicebladerf2.cpp
|
||||
)
|
||||
|
||||
set(bladerf2device_HEADERS
|
||||
devicebladerf2.h
|
||||
)
|
||||
|
||||
if (BUILD_DEBIAN)
|
||||
include_directories(
|
||||
.
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
${LIBBLADERFLIBSRC}/include
|
||||
${LIBBLADERFLIBSRC}/src
|
||||
)
|
||||
else (BUILD_DEBIAN)
|
||||
include_directories(
|
||||
.
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
${LIBBLADERF_INCLUDE_DIR}
|
||||
)
|
||||
endif (BUILD_DEBIAN)
|
||||
|
||||
#add_definitions(${QT_DEFINITIONS})
|
||||
#add_definitions(-DQT_SHARED)
|
||||
|
||||
add_library(bladerf2device SHARED
|
||||
${bladerf1device_SOURCES}
|
||||
)
|
||||
|
||||
if (BUILD_DEBIAN)
|
||||
target_link_libraries(bladerf2device
|
||||
bladerf
|
||||
sdrbase
|
||||
)
|
||||
else (BUILD_DEBIAN)
|
||||
target_link_libraries(bladerf2device
|
||||
${LIBBLADERF_LIBRARIES}
|
||||
sdrbase
|
||||
)
|
||||
endif (BUILD_DEBIAN)
|
||||
|
||||
install(TARGETS bladerf2device DESTINATION lib)
|
90
devices/bladerf2/devicebladerf2.cpp
Normal file
90
devices/bladerf2/devicebladerf2.cpp
Normal file
@ -0,0 +1,90 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
// Copyright (C) 2016-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 "devicebladerf2.h"
|
||||
|
||||
#include <QtGlobal>
|
||||
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
|
||||
bool DeviceBladeRF2::open_bladerf(struct bladerf **dev, const char *serial)
|
||||
{
|
||||
int fpga_loaded;
|
||||
|
||||
if ((*dev = open_bladerf_from_serial(serial)) == 0)
|
||||
{
|
||||
qCritical("DeviceBladeRF2::open_bladerf: could not open BladeRF");
|
||||
return false;
|
||||
}
|
||||
|
||||
fpga_loaded = bladerf_is_fpga_configured(*dev);
|
||||
|
||||
if (fpga_loaded < 0)
|
||||
{
|
||||
qCritical("DeviceBladeRF2::open_bladerf: failed to check FPGA state: %s",
|
||||
bladerf_strerror(fpga_loaded));
|
||||
return false;
|
||||
}
|
||||
else if (fpga_loaded == 0)
|
||||
{
|
||||
qCritical("DeviceBladeRF2::start: the device's FPGA is not loaded.");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
struct bladerf *DeviceBladeRF2::open_bladerf_from_serial(const char *serial)
|
||||
{
|
||||
int status;
|
||||
struct bladerf *dev;
|
||||
struct bladerf_devinfo info;
|
||||
|
||||
/* Initialize all fields to "don't care" wildcard values.
|
||||
*
|
||||
* Immediately passing this to bladerf_open_with_devinfo() would cause
|
||||
* libbladeRF to open any device on any available backend. */
|
||||
bladerf_init_devinfo(&info);
|
||||
|
||||
/* Specify the desired device's serial number, while leaving all other
|
||||
* fields in the info structure wildcard values */
|
||||
if (serial != 0)
|
||||
{
|
||||
strncpy(info.serial, serial, BLADERF_SERIAL_LENGTH - 1);
|
||||
info.serial[BLADERF_SERIAL_LENGTH - 1] = '\0';
|
||||
}
|
||||
|
||||
status = bladerf_open_with_devinfo(&dev, &info);
|
||||
|
||||
if (status == BLADERF_ERR_NODEV)
|
||||
{
|
||||
qCritical("DeviceBladeRF2::open_bladerf_from_serial: No devices available with serial %s", serial);
|
||||
return 0;
|
||||
}
|
||||
else if (status != 0)
|
||||
{
|
||||
qCritical("DeviceBladeRF2::open_bladerf_from_serial: Failed to open device with serial %s (%s)",
|
||||
serial, bladerf_strerror(status));
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return dev;
|
||||
}
|
||||
}
|
||||
|
||||
|
35
devices/bladerf2/devicebladerf2.h
Normal file
35
devices/bladerf2/devicebladerf2.h
Normal file
@ -0,0 +1,35 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
// Copyright (C) 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 DEVICES_BLADERF2_DEVICEBLADERF2_H_
|
||||
#define DEVICES_BLADERF2_DEVICEBLADERF2_H_
|
||||
|
||||
#include <libbladeRF.h>
|
||||
|
||||
#include "export.h"
|
||||
|
||||
class DEVICES_API DeviceBladeRF2
|
||||
{
|
||||
public:
|
||||
static bool open_bladerf(struct bladerf **dev, const char *serial);
|
||||
|
||||
private:
|
||||
static struct bladerf *open_bladerf_from_serial(const char *serial);
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif /* DEVICES_BLADERF2_DEVICEBLADERF2_H_ */
|
@ -18,8 +18,6 @@ QMAKE_CXXFLAGS += -msse4.1
|
||||
QMAKE_CXXFLAGS += -std=c++11
|
||||
macx:QMAKE_LFLAGS += -F/Library/Frameworks
|
||||
|
||||
CONFIG(MINGW32):LIBBLADERFSRC = "C:\softs\bladeRF\host\libraries\libbladeRF\include"
|
||||
CONFIG(MINGW64):LIBBLADERFSRC = "C:\softs\bladeRF\host\libraries\libbladeRF\include"
|
||||
CONFIG(macx):LIBHACKRFSRC = "/opt/local/include"
|
||||
CONFIG(MINGW32):LIBHACKRFSRC = "C:\softs\hackrf\host"
|
||||
CONFIG(MINGW64):LIBHACKRFSRC = "C:\softs\hackrf\host"
|
||||
@ -34,7 +32,6 @@ CONFIG(MINGW64):LIBIIOSRC = "C:\softs\libiio"
|
||||
INCLUDEPATH += $$PWD
|
||||
INCLUDEPATH += ../exports
|
||||
INCLUDEPATH += ../sdrbase
|
||||
INCLUDEPATH += $$LIBBLADERFSRC
|
||||
INCLUDEPATH += $$LIBHACKRFSRC
|
||||
INCLUDEPATH += "C:\softs\boost_1_66_0"
|
||||
INCLUDEPATH += "C:\softs\libusb-1.0.20\include"
|
||||
@ -55,10 +52,6 @@ INCLUDEPATH += $$LIBPERSEUSSRC
|
||||
CONFIG(Release):build_subdir = release
|
||||
CONFIG(Debug):build_subdir = debug
|
||||
|
||||
!macx:SOURCES += bladerf/devicebladerf.cpp\
|
||||
bladerf/devicebladerfvalues.cpp\
|
||||
bladerf/devicebladerfshared.cpp
|
||||
|
||||
SOURCES += hackrf/devicehackrf.cpp\
|
||||
hackrf/devicehackrfvalues.cpp\
|
||||
hackrf/devicehackrfshared.cpp
|
||||
@ -73,11 +66,6 @@ SOURCES += limesdr/devicelimesdr.cpp\
|
||||
plutosdr/deviceplutosdrscan.cpp\
|
||||
plutosdr/deviceplutosdrshared.cpp
|
||||
|
||||
!macx:HEADERS -= bladerf/devicebladerf.h\
|
||||
bladerf/devicebladerfparam.h\
|
||||
bladerf/devicebladerfvalues.h\
|
||||
bladerf/devicebladerfshared.h
|
||||
|
||||
HEADERS += hackrf/devicehackrf.h\
|
||||
hackrf/devicehackrfparam.h\
|
||||
hackrf/devicehackrfvalues.h\
|
||||
@ -95,7 +83,6 @@ HEADERS += plutosdr/deviceplutosdr.h\
|
||||
|
||||
LIBS += -L../sdrbase/$${build_subdir} -lsdrbase
|
||||
!macx {
|
||||
LIBS += -L../libbladerf/$${build_subdir} -llibbladerf
|
||||
LIBS += -L../libhackrf/$${build_subdir} -llibhackrf
|
||||
LIBS += -L../liblimesuite/$${build_subdir} -lliblimesuite
|
||||
LIBS += -L../libiio/$${build_subdir} -llibiio
|
||||
|
@ -2,21 +2,22 @@
|
||||
|
||||
This folder contains classes and methods that can be used by different plugins that work with a common physical device or via network. Thus this can be one of the following devices:
|
||||
|
||||
- BladeRF: one Rx and one Tx full duplex. Plugins are:
|
||||
- bladerfinput
|
||||
- bladerfoutput
|
||||
- BladeRF1: one Rx and one Tx full duplex. Plugins are:
|
||||
- bladerf1input
|
||||
- bladerf1output
|
||||
|
||||
- BladeRF2: 2 Rx and 2 Tx full duplex (BladeRF 2.0 micro). Plugins are:
|
||||
- bladerf2input
|
||||
- bladerf2output
|
||||
|
||||
- HackRF: one Rx and one Tx half duplex. Plugins are:
|
||||
- hackrfinput
|
||||
- hackrfoutput
|
||||
|
||||
- LimeSDR: 2 Rx and 2 Tx full duplex. Plugins are
|
||||
- LimeSDR: 2 Rx and 2 Tx full duplex (Lime-USB). 1 Rx and 1 Tx full duplex (Lime-Mini). Plugins are
|
||||
- limesdrinput
|
||||
- limesdroutput
|
||||
|
||||
- PlutoSDR: one Rx and one Tx full duplex. Plugins are
|
||||
- plutosdrinput
|
||||
- plutosdroutput
|
||||
|
||||
- SDRdaemon: sends or receive samples to/from device remotely through the network. Used on the Tx plugin only
|
||||
- sdrdaemonsink
|
Loading…
Reference in New Issue
Block a user