mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-10-31 13:00:26 -04: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: | 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) |   - [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) |   - [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) |   - [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> | <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> | <h1>Notes on pulseaudio setup</h1> | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -4,6 +4,7 @@ find_package(LibUSB) | |||||||
| 
 | 
 | ||||||
| if (BUILD_DEBIAN) | if (BUILD_DEBIAN) | ||||||
|     add_subdirectory(bladerf1) |     add_subdirectory(bladerf1) | ||||||
|  |     add_subdirectory(bladerf2) | ||||||
|     add_subdirectory(hackrf) |     add_subdirectory(hackrf) | ||||||
|     add_subdirectory(limesdr) |     add_subdirectory(limesdr) | ||||||
|     add_subdirectory(perseus) |     add_subdirectory(perseus) | ||||||
| @ -12,6 +13,7 @@ else(BUILD_DEBIAN) | |||||||
|     find_package(LibBLADERF) |     find_package(LibBLADERF) | ||||||
|     if(LIBUSB_FOUND AND LIBBLADERF_FOUND) |     if(LIBUSB_FOUND AND LIBBLADERF_FOUND) | ||||||
|         add_subdirectory(bladerf1) |         add_subdirectory(bladerf1) | ||||||
|  |         add_subdirectory(bladerf2) | ||||||
|     endif(LIBUSB_FOUND AND LIBBLADERF_FOUND) |     endif(LIBUSB_FOUND AND LIBBLADERF_FOUND) | ||||||
| 
 | 
 | ||||||
|     find_package(LibHACKRF) |     find_package(LibHACKRF) | ||||||
| @ -33,5 +35,4 @@ else(BUILD_DEBIAN) | |||||||
|     if(LIBUSB_FOUND AND LIBPERSEUS_FOUND) |     if(LIBUSB_FOUND AND LIBPERSEUS_FOUND) | ||||||
|         add_subdirectory(perseus) |         add_subdirectory(perseus) | ||||||
|     endif() |     endif() | ||||||
|      |  | ||||||
| endif (BUILD_DEBIAN) | 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 | QMAKE_CXXFLAGS += -std=c++11 | ||||||
| macx:QMAKE_LFLAGS += -F/Library/Frameworks | 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(macx):LIBHACKRFSRC = "/opt/local/include" | ||||||
| CONFIG(MINGW32):LIBHACKRFSRC = "C:\softs\hackrf\host" | CONFIG(MINGW32):LIBHACKRFSRC = "C:\softs\hackrf\host" | ||||||
| CONFIG(MINGW64):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 += $$PWD | ||||||
| INCLUDEPATH += ../exports | INCLUDEPATH += ../exports | ||||||
| INCLUDEPATH += ../sdrbase | INCLUDEPATH += ../sdrbase | ||||||
| INCLUDEPATH += $$LIBBLADERFSRC |  | ||||||
| INCLUDEPATH += $$LIBHACKRFSRC | INCLUDEPATH += $$LIBHACKRFSRC | ||||||
| INCLUDEPATH += "C:\softs\boost_1_66_0" | INCLUDEPATH += "C:\softs\boost_1_66_0" | ||||||
| INCLUDEPATH += "C:\softs\libusb-1.0.20\include" | INCLUDEPATH += "C:\softs\libusb-1.0.20\include" | ||||||
| @ -55,10 +52,6 @@ INCLUDEPATH += $$LIBPERSEUSSRC | |||||||
| CONFIG(Release):build_subdir = release | CONFIG(Release):build_subdir = release | ||||||
| CONFIG(Debug):build_subdir = debug | CONFIG(Debug):build_subdir = debug | ||||||
| 
 | 
 | ||||||
| !macx:SOURCES += bladerf/devicebladerf.cpp\ |  | ||||||
|         bladerf/devicebladerfvalues.cpp\ |  | ||||||
|         bladerf/devicebladerfshared.cpp |  | ||||||
| 
 |  | ||||||
| SOURCES += hackrf/devicehackrf.cpp\ | SOURCES += hackrf/devicehackrf.cpp\ | ||||||
|         hackrf/devicehackrfvalues.cpp\ |         hackrf/devicehackrfvalues.cpp\ | ||||||
|         hackrf/devicehackrfshared.cpp |         hackrf/devicehackrfshared.cpp | ||||||
| @ -73,11 +66,6 @@ SOURCES += limesdr/devicelimesdr.cpp\ | |||||||
|         plutosdr/deviceplutosdrscan.cpp\ |         plutosdr/deviceplutosdrscan.cpp\ | ||||||
|         plutosdr/deviceplutosdrshared.cpp |         plutosdr/deviceplutosdrshared.cpp | ||||||
| 
 | 
 | ||||||
| !macx:HEADERS -= bladerf/devicebladerf.h\ |  | ||||||
|         bladerf/devicebladerfparam.h\ |  | ||||||
|         bladerf/devicebladerfvalues.h\ |  | ||||||
|         bladerf/devicebladerfshared.h |  | ||||||
| 
 |  | ||||||
| HEADERS  += hackrf/devicehackrf.h\ | HEADERS  += hackrf/devicehackrf.h\ | ||||||
|         hackrf/devicehackrfparam.h\ |         hackrf/devicehackrfparam.h\ | ||||||
|         hackrf/devicehackrfvalues.h\ |         hackrf/devicehackrfvalues.h\ | ||||||
| @ -95,7 +83,6 @@ HEADERS += plutosdr/deviceplutosdr.h\ | |||||||
| 
 | 
 | ||||||
| LIBS += -L../sdrbase/$${build_subdir} -lsdrbase | LIBS += -L../sdrbase/$${build_subdir} -lsdrbase | ||||||
| !macx { | !macx { | ||||||
|     LIBS += -L../libbladerf/$${build_subdir} -llibbladerf |  | ||||||
|     LIBS += -L../libhackrf/$${build_subdir} -llibhackrf |     LIBS += -L../libhackrf/$${build_subdir} -llibhackrf | ||||||
|     LIBS += -L../liblimesuite/$${build_subdir} -lliblimesuite |     LIBS += -L../liblimesuite/$${build_subdir} -lliblimesuite | ||||||
|     LIBS += -L../libiio/$${build_subdir} -llibiio |     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: | 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: |   - BladeRF1: one Rx and one Tx full duplex. Plugins are: | ||||||
|     - bladerfinput |     - bladerf1input | ||||||
|     - bladerfoutput |     - 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: |   - HackRF: one Rx and one Tx half duplex. Plugins are: | ||||||
|     - hackrfinput |     - hackrfinput | ||||||
|     - hackrfoutput |     - 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 |     - limesdrinput | ||||||
|     - limesdroutput |     - limesdroutput | ||||||
|      |      | ||||||
|   - PlutoSDR: one Rx and one Tx full duplex. Plugins are |   - PlutoSDR: one Rx and one Tx full duplex. Plugins are | ||||||
|     - plutosdrinput |     - plutosdrinput | ||||||
|     - plutosdroutput |     - plutosdroutput | ||||||
| 
 |  | ||||||
|   - SDRdaemon: sends or receive samples to/from device remotely through the network. Used on the Tx plugin only |  | ||||||
|     - sdrdaemonsink  |  | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user