├── Makefile ├── README.md ├── scripts └── launch_hackrf.sh └── sdr ├── devices └── captivation.HackRFOne │ ├── .HackRFOne.wavedev │ ├── .cproject │ ├── .md5sums │ ├── .project │ ├── .pydevproject │ ├── .settings │ ├── gov.redhawk.ide.sdr.ui.prefs │ ├── language.settings.xml │ └── org.eclipse.cdt.core.prefs │ ├── HackRFOne.prf.xml │ ├── HackRFOne.scd.xml │ ├── HackRFOne.spd.xml │ ├── build.sh │ ├── captivation.HackRFOne.spec │ ├── cpp │ ├── .gitignore │ ├── .md5sums │ ├── HackRFConstants.h │ ├── HackRFOne.cpp │ ├── HackRFOne.h │ ├── HackRFOne_base.cpp │ ├── HackRFOne_base.h │ ├── Makefile.am │ ├── Makefile.am.ide │ ├── build.sh │ ├── configure.ac │ ├── main.cpp │ ├── reconf │ ├── struct_props.h │ └── template_impl.cpp │ └── tests │ ├── .md5sums │ └── test_HackRFOne.py ├── libraries └── captivation.libhackrf │ ├── .cproject │ ├── .libhackrf.wavedev │ ├── .md5sums │ ├── .project │ ├── .pydevproject │ ├── .settings │ ├── gov.redhawk.ide.sdr.ui.prefs │ ├── language.settings.xml │ └── org.eclipse.cdt.core.prefs │ ├── build.sh │ ├── captivation.libhackrf.spec │ ├── cpp │ ├── .gitignore │ ├── .md5sums │ ├── Makefile │ ├── Makefile.am │ ├── Makefile.am.ide │ ├── build.sh │ ├── captivation.libhackrf.pc.in │ ├── configure.ac │ ├── libhackrf │ │ ├── 53-hackrf.rules │ │ ├── 53-hackrf.rules.in │ │ ├── CMakeLists.txt │ │ ├── libhackrf.pc.in │ │ └── src │ │ │ ├── CMakeLists.txt │ │ │ ├── hackrf.c │ │ │ └── hackrf.h │ └── reconf │ └── libhackrf.spd.xml └── nodes └── captivation.HackRFNode ├── .project ├── DeviceManager.dcd.xml └── DeviceManager.dcd_GDiagram /Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: all install clean distclean check 2 | 3 | all: 4 | (cd sdr/libraries/captivation.libhackrf/cpp && ./reconf; ./configure; make -j2) 5 | (cd sdr/devices/captivation.HackRFOne/cpp && ./reconf; ./configure; make -j2) 6 | 7 | install: 8 | (cd sdr/libraries/captivation.libhackrf/cpp && ./reconf; ./configure; make install -j2) 9 | (cd sdr/devices/captivation.HackRFOne/cpp && ./reconf; ./configure; make install -j2) 10 | mkdir -p /var/redhawk/sdr/dev/nodes/captivation/ 11 | cp -r sdr/nodes/captivation.HackRFNode /var/redhawk/sdr/dev/nodes/captivation/HackRFNode 12 | 13 | clean: 14 | (cd sdr/libraries/captivation.libhackrf/cpp && make clean) 15 | (cd sdr/devices/captivation.HackRFOne/cpp && make clean) 16 | 17 | distclean: 18 | (cd sdr/libraries/captivation.libhackrf/cpp && make distclean) 19 | (cd sdr/devices/captivation.HackRFOne/cpp && make distclean) 20 | 21 | check: 22 | @echo "Warn: 'sudo' permissions may be necessary for device to access USB" 23 | ./scripts/launch_hackrf.sh 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # redhawk-hackrf 2 | Drivers for interfacing HackRF radios with REDHAWK 3 | 4 | # Contents 5 | * REDHAWK Softpkg Dependency (captivation.libhackrf) 6 | * REDHAWK Device (captivation.HackRFOne) 7 | * REDHAWK Node (captivation.HackRFNode) 8 | 9 | # Instructions 10 | To install into standard SDRROOT directory: 11 | ```bash 12 | make install 13 | ``` 14 | To clean project: 15 | ```bash 16 | make distclean 17 | ``` 18 | 19 | To run the HackRF device: 20 | ```bash 21 | # Launch REDHAWK domain (if necessary) 22 | nodeBooter -D& 23 | 24 | # Launch node containing HackRF device 25 | sudo make check 26 | ``` 27 | -------------------------------------------------------------------------------- /scripts/launch_hackrf.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | nodeBooter=/usr/local/redhawk/core/bin/nodeBooter 3 | node=/var/redhawk/sdr/dev/nodes/captivation/HackRFNode/DeviceManager.dcd.xml 4 | 5 | $nodeBooter -d $node 6 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/.HackRFOne.wavedev: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/.cproject: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 35 | 36 | 37 | 38 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 104 | 105 | 106 | 107 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/.md5sums: -------------------------------------------------------------------------------- 1 | 48e0d785b68c3add60afe0f1c121cb16 build.sh 2 | db4b2046224cd6a2186a7702b064cf8c captivation.HackRFOne.spec 3 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | captivation.HackRFOne 4 | 5 | 6 | 7 | 8 | 9 | gov.redhawk.ide.codegen.jet.cplusplus.builder 10 | 11 | 12 | 13 | 14 | org.eclipse.cdt.managedbuilder.core.genmakebuilder 15 | clean,full,incremental, 16 | 17 | 18 | 19 | 20 | gov.redhawk.ide.builders.scaproject 21 | 22 | 23 | 24 | 25 | org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder 26 | full,incremental, 27 | 28 | 29 | 30 | 31 | 32 | gov.redhawk.ide.natures.scaproject 33 | org.python.pydev.pythonNature 34 | gov.redhawk.ide.natures.sca.component 35 | gov.redhawk.ide.codgen.natures.frontend 36 | org.eclipse.cdt.core.cnature 37 | org.eclipse.cdt.core.ccnature 38 | org.eclipse.cdt.managedbuilder.core.managedBuildNature 39 | org.eclipse.cdt.managedbuilder.core.ScannerConfigNature 40 | 41 | 42 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/.pydevproject: -------------------------------------------------------------------------------- 1 | 2 | 3 | Default 4 | python 2.7 5 | 6 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/.settings/gov.redhawk.ide.sdr.ui.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | useBuild.sh=true 3 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/.settings/language.settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/.settings/org.eclipse.cdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | environment/project/cdt.managedbuild.config.gnu.exe.debug.1130348376/OSSIEHOME/delimiter=\: 3 | environment/project/cdt.managedbuild.config.gnu.exe.debug.1130348376/OSSIEHOME/operation=replace 4 | environment/project/cdt.managedbuild.config.gnu.exe.debug.1130348376/OSSIEHOME/value=${OssieHome} 5 | environment/project/cdt.managedbuild.config.gnu.exe.debug.1130348376/V/delimiter=\: 6 | environment/project/cdt.managedbuild.config.gnu.exe.debug.1130348376/V/operation=replace 7 | environment/project/cdt.managedbuild.config.gnu.exe.debug.1130348376/V/value=1 8 | environment/project/cdt.managedbuild.config.gnu.exe.debug.1130348376/append=true 9 | environment/project/cdt.managedbuild.config.gnu.exe.debug.1130348376/appendContributed=true 10 | environment/project/cdt.managedbuild.config.gnu.exe.release.784691789/OSSIEHOME/delimiter=\: 11 | environment/project/cdt.managedbuild.config.gnu.exe.release.784691789/OSSIEHOME/operation=replace 12 | environment/project/cdt.managedbuild.config.gnu.exe.release.784691789/OSSIEHOME/value=${OssieHome} 13 | environment/project/cdt.managedbuild.config.gnu.exe.release.784691789/V/delimiter=\: 14 | environment/project/cdt.managedbuild.config.gnu.exe.release.784691789/V/operation=replace 15 | environment/project/cdt.managedbuild.config.gnu.exe.release.784691789/V/value=1 16 | environment/project/cdt.managedbuild.config.gnu.exe.release.784691789/append=true 17 | environment/project/cdt.managedbuild.config.gnu.exe.release.784691789/appendContributed=true 18 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/HackRFOne.prf.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | This specifies the device kind 6 | FRONTEND::TUNER 7 | 8 | 9 | 10 | 11 | This specifies the specific device 12 | 13 | 14 | 15 | 16 | Status of each tuner, including entries for both allocated and un-allocated tuners. Each entry represents a single tuner. 17 | 18 | 19 | Comma separated list of current Allocation IDs. 20 | 21 | 22 | Available bandwidth (Hz) in range (XX-YY) or csv (X,Y,Z) format. Do not put units in field. 23 | Hz 24 | 25 | 26 | Available frequencies (Hz) in range (XX-YY) or csv (X,Y,Z) format. Do not put units in field. 27 | Hz 28 | 29 | 30 | Available gain (dB) in range (XX-YY) or csv (X,Y,Z) format. Do not put units in field. 31 | dB 32 | 33 | 34 | Available sample_rate (sps) in range (XX-YY) or csv (X,Y,Z) format. Do not put units in field. 35 | sps 36 | 37 | 38 | Current bandwidth in Hz 39 | Hz 40 | 41 | 42 | Current center frequency in Hz. 43 | Hz 44 | 45 | 46 | Indicates if tuner is enabled, in reference to the output state of the tuner. 47 | 48 | 49 | Current gain in dB. 50 | dB 51 | 52 | 53 | Unique ID that specifies a group of Device. 54 | 55 | 56 | Specifies a certain RF flow to allocate against. 57 | 58 | 59 | Current sample rate in samples per second. 60 | sps 61 | 62 | 63 | True if scan mode is enabled. False if Manual Tune is enabled 64 | 65 | 66 | True if scan is supported 67 | 68 | 69 | Example Tuner Types: TX, RX, CHANNELIZER, DDC, RX_DIGITIZER, RX_DIGTIZIER_CHANNELIZER 70 | 71 | 72 | 73 | 74 | 75 | Frontend Interfaces v2 listener allocation structure 76 | 77 | 78 | 79 | 80 | 81 | Frontend Interfaces v2 main allocation structure 82 | 83 | Example Tuner Types: TX, RX, CHANNELIZER, DDC, RX_DIGITIZER, RX_DIGTIZIER_CHANNELIZER 84 | 85 | 86 | The allocation_id set by the caller. Used by the caller to reference the allocation uniquely 87 | 88 | 89 | Requested center frequency 90 | Hz 91 | 92 | 93 | Requested bandwidth (+/- the tolerance) 94 | Hz 95 | 96 | 97 | Allowable Percent above requested bandwidth (ie - 100 would be up to twice) 98 | percent 99 | 100 | 101 | Requested sample rate (+/- the tolerance). This can be ignored for such devices as analog tuners 102 | Hz 103 | 104 | 105 | Allowable Percent above requested sample rate (ie - 100 would be up to twice) 106 | percent 107 | 108 | 109 | True: Has control over the device to make changes 110 | False: Does not need control and can just attach to any currently tasked device that satisfies the parameters (essentually a listener) 111 | 112 | 113 | Unique identifier that specifies the group a device must be in. Must match group_id on the device 114 | 115 | 116 | Optional. Specifies the RF flow of a specific input source to allocate against. If left empty, it will match all FrontEnd devices. 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/HackRFOne.scd.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 2.2 5 | 6 | device 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/HackRFOne.spd.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | null 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | The implementation contains descriptive information about the template for a software resource. 16 | 17 | 18 | cpp/HackRFOne 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ "$1" = "rpm" ]; then 4 | # A very simplistic RPM build scenario 5 | if [ -e captivation.HackRFOne.spec ]; then 6 | mydir=`dirname $0` 7 | tmpdir=`mktemp -d` 8 | cp -r ${mydir} ${tmpdir}/captivation.HackRFOne-1.0.0 9 | tar czf ${tmpdir}/captivation.HackRFOne-1.0.0.tar.gz --exclude=".svn" --exclude=".git" -C ${tmpdir} captivation.HackRFOne-1.0.0 10 | rpmbuild -ta ${tmpdir}/captivation.HackRFOne-1.0.0.tar.gz 11 | rm -rf $tmpdir 12 | else 13 | echo "Missing RPM spec file in" `pwd` 14 | exit 1 15 | fi 16 | else 17 | for impl in cpp ; do 18 | if [ ! -d "$impl" ]; then 19 | echo "Directory '$impl' does not exist...continuing" 20 | continue 21 | fi 22 | cd $impl 23 | if [ -e build.sh ]; then 24 | if [ $# == 1 ]; then 25 | if [ $1 == 'clean' ]; then 26 | rm -f Makefile 27 | rm -f config.* 28 | ./build.sh distclean 29 | else 30 | ./build.sh $* 31 | fi 32 | else 33 | ./build.sh $* 34 | fi 35 | elif [ -e Makefile ] && [ Makefile.am -ot Makefile ]; then 36 | make $* 37 | elif [ -e reconf ]; then 38 | ./reconf && ./configure && make $* 39 | else 40 | echo "No build.sh found for $impl" 41 | fi 42 | retval=$? 43 | if [ $retval != '0' ]; then 44 | exit $retval 45 | fi 46 | cd - 47 | done 48 | fi 49 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/captivation.HackRFOne.spec: -------------------------------------------------------------------------------- 1 | # By default, the RPM will install to the standard REDHAWK SDR root location (/var/redhawk/sdr) 2 | # You can override this at install time using --prefix /new/sdr/root when invoking rpm (preferred method, if you must) 3 | %{!?_sdrroot: %global _sdrroot /var/redhawk/sdr} 4 | %define _prefix %{_sdrroot} 5 | Prefix: %{_prefix} 6 | 7 | # Point install paths to locations within our target SDR root 8 | %define _sysconfdir %{_prefix}/etc 9 | %define _localstatedir %{_prefix}/var 10 | %define _mandir %{_prefix}/man 11 | %define _infodir %{_prefix}/info 12 | 13 | Name: captivation.HackRFOne 14 | Version: 1.0.0 15 | Release: 1%{?dist} 16 | Summary: Device %{name} 17 | 18 | Group: REDHAWK/Devices 19 | License: None 20 | Source0: %{name}-%{version}.tar.gz 21 | BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) 22 | 23 | BuildRequires: redhawk-devel >= 2.0 24 | Requires: redhawk >= 2.0 25 | 26 | BuildRequires: captivation.libhackrf-devel 27 | Requires: captivation.libhackrf 28 | 29 | # Interface requirements 30 | BuildRequires: frontendInterfaces >= 2.2 bulkioInterfaces >= 2.0 31 | Requires: frontendInterfaces >= 2.2 bulkioInterfaces >= 2.0 32 | 33 | 34 | %description 35 | Device %{name} 36 | * Commit: __REVISION__ 37 | * Source Date/Time: __DATETIME__ 38 | 39 | 40 | %prep 41 | %setup -q 42 | 43 | 44 | %build 45 | # Implementation cpp 46 | pushd cpp 47 | ./reconf 48 | %define _bindir %{_prefix}/dev/devices/captivation/HackRFOne/cpp 49 | %configure 50 | make %{?_smp_mflags} 51 | popd 52 | 53 | 54 | %install 55 | rm -rf $RPM_BUILD_ROOT 56 | # Implementation cpp 57 | pushd cpp 58 | %define _bindir %{_prefix}/dev/devices/captivation/HackRFOne/cpp 59 | make install DESTDIR=$RPM_BUILD_ROOT 60 | popd 61 | 62 | 63 | %clean 64 | rm -rf $RPM_BUILD_ROOT 65 | 66 | 67 | %files 68 | %defattr(-,redhawk,redhawk,-) 69 | %dir %{_sdrroot}/dev/devices/captivation 70 | %dir %{_sdrroot}/dev/devices/captivation/HackRFOne 71 | %{_prefix}/dev/devices/captivation/HackRFOne/HackRFOne.scd.xml 72 | %{_prefix}/dev/devices/captivation/HackRFOne/HackRFOne.prf.xml 73 | %{_prefix}/dev/devices/captivation/HackRFOne/HackRFOne.spd.xml 74 | %{_prefix}/dev/devices/captivation/HackRFOne/cpp 75 | 76 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/cpp/.gitignore: -------------------------------------------------------------------------------- 1 | HackRFOne 2 | *.o 3 | .deps/ 4 | HackRFOne-HackRFOne_base.o 5 | HackRFOne-main.o 6 | HackRFOne-template_impl.o 7 | Makefile 8 | Makefile.in 9 | aclocal.m4 10 | autom4te.cache/ 11 | config.* 12 | configure 13 | depcomp 14 | install-sh 15 | missing 16 | 17 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/cpp/.md5sums: -------------------------------------------------------------------------------- 1 | bc563dc002cd63b50fd4ee21253f1d98 HackRFOne.h 2 | ccd1449af068f17b42c0937bec34188f main.cpp 3 | 8bfcd22353c3a57fee561ad86ee2a56b reconf 4 | f90bcb77e881a6ea6c126aa5ee813fbb HackRFOne_base.h 5 | 771e7a2f20c76bc105ea60115a9ba4e1 HackRFOne.cpp 6 | 3794d396cf0a13810b91e7ae16e1bdf1 template_impl.cpp 7 | f80f85507224bfced26c68246c0ae7af HackRFOne_base.cpp 8 | e7f3eb8764e153ff98c318248d1bada2 configure.ac 9 | 02a7327e292c17a228bb4b71c121ec1d Makefile.am 10 | a2720ae19df058fd5002c30c4dd3de51 struct_props.h 11 | 3fb287826e814201ffee1673e7495faf Makefile.am.ide 12 | 2b2faa5cfc83438427491f4be5d6ee59 build.sh 13 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/cpp/HackRFConstants.h: -------------------------------------------------------------------------------- 1 | /* 2 | * HackRFConstants.h 3 | * 4 | * Created on: Nov 17, 2017 5 | * Author: daniel.barbalato 6 | */ 7 | 8 | #ifndef HACKRFCONSTANTS_H_ 9 | #define HACKRFCONSTANTS_H_ 10 | 11 | #include 12 | 13 | namespace HackRFConstants { 14 | 15 | struct One { 16 | static const float DEFAULT_LNA_GAIN = 16.0; 17 | static const float DEFAULT_VGA_GAIN = 16.0; 18 | 19 | static const double MIN_RF_FREQ = 0.0; 20 | static const double MAX_RF_FREQ = 7250.0e6; 21 | static const double FILTER_BW_MIN = 1.75e6; 22 | static const double FILTER_BW_MAX = 28.0e6; 23 | 24 | static const double LNA_STEP_SIZE = 8.0; 25 | static const double RX_VGA_STEP_SIZE = 2.0; 26 | static const double TX_VGA_STEP_SIZE = 1.0; 27 | 28 | static const double FILTER_BW_VALUES[]; 29 | static const double SAMPLE_RATE_VALUES[]; 30 | static const double LNA_GAIN_VALUES[]; 31 | static const double RX_VGA_GAIN_VALUES[]; 32 | static const double TX_VGA_GAIN_VALUES[]; 33 | 34 | static const std::vector ALLOWED_BW_FILTERS; 35 | static const std::vector ALLOWED_SAMPLE_RATES; 36 | static const std::vector ALLOWED_LNA_GAIN_VALUES; 37 | static const std::vector ALLOWED_RX_VGA_VALUES; 38 | static const std::vector ALLOWED_TX_VGA_VALUES; 39 | }; 40 | 41 | const double One::FILTER_BW_VALUES[] = {1.75e6, 2.5e6, 3.5e6, 5.0e6, 5.5e6, 6.0e6, 7.0e6, 8.0e6, 42 | 9.0e6, 10.0e6, 12.0e6, 14.0e6, 15.0e6, 20.0e6, 24.0e6, 28.0e6}; 43 | const double One::SAMPLE_RATE_VALUES[] = {4.0e6, 8.0e6, 10.0e6, 12.5e6, 16.0e6, 20.0e6}; 44 | const double One::LNA_GAIN_VALUES[] = {0.0, 8.0, 16.0, 24.0, 32.0, 40.0}; 45 | const double One::RX_VGA_GAIN_VALUES[] = { 0.0, 2.0, 4.0, 6.0, 8.0, 10.0, 12.0, 14.0, 46 | 16.0, 18.0, 20.0, 22.0, 24.0, 26.0, 28.0, 30.0, 47 | 32.0, 34.0, 36.0, 38.0, 40.0, 42.0, 44.0, 46.0, 48 | 48.0, 50.0, 52.0, 54.0, 56.0, 58.0, 60.0, 62.0}; 49 | const double One::TX_VGA_GAIN_VALUES[] = { 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 50 | 10.0, 11,0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 51 | 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 52 | 30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 53 | 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0}; 54 | 55 | const std::vector One::ALLOWED_BW_FILTERS = std::vector(FILTER_BW_VALUES, FILTER_BW_VALUES+16); 56 | const std::vector One::ALLOWED_SAMPLE_RATES = std::vector(SAMPLE_RATE_VALUES, SAMPLE_RATE_VALUES+6); 57 | const std::vector One::ALLOWED_LNA_GAIN_VALUES = std::vector(LNA_GAIN_VALUES, LNA_GAIN_VALUES+6); 58 | const std::vector One::ALLOWED_RX_VGA_VALUES = std::vector(RX_VGA_GAIN_VALUES, RX_VGA_GAIN_VALUES+32); 59 | const std::vector One::ALLOWED_TX_VGA_VALUES = std::vector(TX_VGA_GAIN_VALUES, TX_VGA_GAIN_VALUES+48); 60 | 61 | }; // End HackRFConstants namespace 62 | 63 | #endif /* HACKRFCONSTANTS_H_ */ 64 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/cpp/HackRFOne.h: -------------------------------------------------------------------------------- 1 | #ifndef HACKRFONE_I_IMPL_H 2 | #define HACKRFONE_I_IMPL_H 3 | 4 | #include 5 | 6 | #include "HackRFOne_base.h" 7 | 8 | class HackRFOne_i : public HackRFOne_base 9 | { 10 | ENABLE_LOGGING 11 | 12 | public: 13 | HackRFOne_i(char *devMgr_ior, char *id, char *lbl, char *sftwrPrfl); 14 | HackRFOne_i(char *devMgr_ior, char *id, char *lbl, char *sftwrPrfl, char *compDev); 15 | HackRFOne_i(char *devMgr_ior, char *id, char *lbl, char *sftwrPrfl, CF::Properties capacities); 16 | HackRFOne_i(char *devMgr_ior, char *id, char *lbl, char *sftwrPrfl, CF::Properties capacities, char *compDev); 17 | ~HackRFOne_i(); 18 | 19 | void constructor(); 20 | 21 | bool reset(); 22 | 23 | bool resetDriver(); 24 | 25 | void resetStream(frontend_tuner_status_struct_struct& fts); 26 | 27 | void addChannels(size_t num, const std::string& tunerType); 28 | 29 | int serviceFunction(); 30 | 31 | int pushData(); 32 | 33 | int hackrfRXCallback(hackrf_transfer* transfer); 34 | 35 | bool updateHackRFSampleRate(frontend_tuner_status_struct_struct &fts, double sampleRate, double tolerance); 36 | 37 | bool updateHackRFBandwidth(frontend_tuner_status_struct_struct &fts, double bandwidth, double tolerance); 38 | 39 | bool updateHackRFFrequency(frontend_tuner_status_struct_struct &fts, double freq, double tolerance); 40 | 41 | bool updateHackRFGainRX(frontend_tuner_status_struct_struct &fts, double gain, double tolerance); 42 | 43 | bool updateHackRFGainTX(frontend_tuner_status_struct_struct &fts, double gain, double tolerance); 44 | 45 | protected: 46 | std::string getTunerType(const std::string& allocation_id); 47 | bool getTunerDeviceControl(const std::string& allocation_id); 48 | std::string getTunerGroupId(const std::string& allocation_id); 49 | std::string getTunerRfFlowId(const std::string& allocation_id); 50 | double getTunerCenterFrequency(const std::string& allocation_id); 51 | void setTunerCenterFrequency(const std::string& allocation_id, double freq); 52 | double getTunerBandwidth(const std::string& allocation_id); 53 | void setTunerBandwidth(const std::string& allocation_id, double bw); 54 | bool getTunerAgcEnable(const std::string& allocation_id); 55 | void setTunerAgcEnable(const std::string& allocation_id, bool enable); 56 | float getTunerGain(const std::string& allocation_id); 57 | void setTunerGain(const std::string& allocation_id, float gain); 58 | long getTunerReferenceSource(const std::string& allocation_id); 59 | void setTunerReferenceSource(const std::string& allocation_id, long source); 60 | bool getTunerEnable(const std::string& allocation_id); 61 | void setTunerEnable(const std::string& allocation_id, bool enable); 62 | double getTunerOutputSampleRate(const std::string& allocation_id); 63 | void setTunerOutputSampleRate(const std::string& allocation_id, double sr); 64 | std::string get_rf_flow_id(const std::string& port_name); 65 | void set_rf_flow_id(const std::string& port_name, const std::string& id); 66 | frontend::RFInfoPkt get_rfinfo_pkt(const std::string& port_name); 67 | void set_rfinfo_pkt(const std::string& port_name, const frontend::RFInfoPkt& pkt); 68 | 69 | private: 70 | 71 | //! Pointer to the initialized HackRF device controller 72 | hackrf_device* _device; 73 | 74 | BULKIO::PrecisionUTCTime _timestamp; 75 | 76 | BULKIO::StreamSRI _currentSRI; 77 | 78 | bulkio::OutOctetStream _currentStream; 79 | 80 | std::vector< std::vector > _buffers; 81 | 82 | std::deque< std::vector* > _availableBuffers; 83 | 84 | std::deque< std::pair*, BULKIO::PrecisionUTCTime> > _filledBuffers; 85 | 86 | boost::mutex _availableLock; 87 | 88 | boost::mutex _filledLock; 89 | 90 | BULKIO::StreamSRI createSRI(std::string &stream_id, frontend_tuner_status_struct_struct &frontend_status, double collector_frequency = -1.0); 91 | 92 | std::string errorString(const std::string& message, int status); 93 | 94 | template 95 | bool withinBounds(T& value, T min, T max, double tolerance=0.0) { 96 | T delta = static_cast(value * (tolerance / 100.0)); 97 | // Only adding tolerance-deltas to avoid negative unsigned types 98 | if (((value+delta) >= min) && (value <= (max+delta))) { 99 | value = std::max(std::min(value, max), min); 100 | return true; 101 | } 102 | return false; 103 | } 104 | 105 | template 106 | bool withinBounds(T& value, double tolerance, std::vector values) { 107 | // Find the nearest value in the set 108 | T closestValue = findNearest(value, values); 109 | 110 | // Perform closest-value checks using doubles (for std::fabs) 111 | double closestDouble = static_cast(closestValue); 112 | double valueDouble = static_cast(value); 113 | double maxDelta = valueDouble * (tolerance / 100.0); 114 | 115 | // Check if closest value is within tolerance 116 | if (std::fabs(closestDouble-valueDouble) >= maxDelta) { 117 | return false; 118 | } 119 | 120 | value = closestValue; 121 | return true; 122 | } 123 | 124 | template 125 | T1 findNearest(T1 value, std::vector vals) { 126 | assert(vals.empty() == false); 127 | 128 | // Only one value in set - That value is the closest 129 | if (vals.size() == 1) return vals[0]; 130 | 131 | // Sort values for faster minimum detection 132 | std::sort(vals.begin(), vals.end()); 133 | 134 | // Perform closest-value checks using doubles (for std::fabs) 135 | double doubleValue = static_cast(value); 136 | 137 | // Initial iterative parameters with the first 138 | T1 bestValue = static_cast(vals[0]); 139 | double lowestDelta = std::fabs(doubleValue - bestValue); 140 | 141 | // Iterate through remaining data points to find nearest 142 | for (size_t i = 1; i < vals.size(); i++) { 143 | double v = static_cast(vals[i]); 144 | double delta = std::fabs(doubleValue - v); 145 | if (delta < lowestDelta) { 146 | bestValue = static_cast(vals[i]); 147 | lowestDelta = delta; 148 | } else { 149 | // Since the values are sorted, any increase in error means 150 | // the closest value was found on the previous iteration 151 | break; 152 | } 153 | } 154 | return bestValue; 155 | } 156 | 157 | 158 | //////////////////////////////////////// 159 | // Required device specific functions // -- to be implemented by device developer 160 | //////////////////////////////////////// 161 | 162 | // these are pure virtual, must be implemented here 163 | void deviceEnable(frontend_tuner_status_struct_struct &fts, size_t tuner_id); 164 | void deviceDisable(frontend_tuner_status_struct_struct &fts, size_t tuner_id); 165 | bool deviceSetTuning(const frontend::frontend_tuner_allocation_struct &request, frontend_tuner_status_struct_struct &fts, size_t tuner_id); 166 | bool deviceDeleteTuning(frontend_tuner_status_struct_struct &fts, size_t tuner_id); 167 | 168 | }; 169 | 170 | #endif // HACKRFONE_I_IMPL_H 171 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/cpp/HackRFOne_base.cpp: -------------------------------------------------------------------------------- 1 | #include "HackRFOne_base.h" 2 | 3 | /******************************************************************************************* 4 | 5 | AUTO-GENERATED CODE. DO NOT MODIFY 6 | 7 | The following class functions are for the base class for the device class. To 8 | customize any of these functions, do not modify them here. Instead, overload them 9 | on the child class 10 | 11 | ******************************************************************************************/ 12 | 13 | HackRFOne_base::HackRFOne_base(char *devMgr_ior, char *id, char *lbl, char *sftwrPrfl) : 14 | frontend::FrontendTunerDevice(devMgr_ior, id, lbl, sftwrPrfl), 15 | ThreadedComponent() 16 | { 17 | construct(); 18 | } 19 | 20 | HackRFOne_base::HackRFOne_base(char *devMgr_ior, char *id, char *lbl, char *sftwrPrfl, char *compDev) : 21 | frontend::FrontendTunerDevice(devMgr_ior, id, lbl, sftwrPrfl, compDev), 22 | ThreadedComponent() 23 | { 24 | construct(); 25 | } 26 | 27 | HackRFOne_base::HackRFOne_base(char *devMgr_ior, char *id, char *lbl, char *sftwrPrfl, CF::Properties capacities) : 28 | frontend::FrontendTunerDevice(devMgr_ior, id, lbl, sftwrPrfl, capacities), 29 | ThreadedComponent() 30 | { 31 | construct(); 32 | } 33 | 34 | HackRFOne_base::HackRFOne_base(char *devMgr_ior, char *id, char *lbl, char *sftwrPrfl, CF::Properties capacities, char *compDev) : 35 | frontend::FrontendTunerDevice(devMgr_ior, id, lbl, sftwrPrfl, capacities, compDev), 36 | ThreadedComponent() 37 | { 38 | construct(); 39 | } 40 | 41 | HackRFOne_base::~HackRFOne_base() 42 | { 43 | delete RFInfo_in; 44 | RFInfo_in = 0; 45 | delete DigitalTuner_in; 46 | DigitalTuner_in = 0; 47 | delete dataOctetTX_in; 48 | dataOctetTX_in = 0; 49 | delete dataOctet_out; 50 | dataOctet_out = 0; 51 | delete RFInfoTX_out; 52 | RFInfoTX_out = 0; 53 | } 54 | 55 | void HackRFOne_base::construct() 56 | { 57 | loadProperties(); 58 | 59 | RFInfo_in = new frontend::InRFInfoPort("RFInfo_in", this); 60 | addPort("RFInfo_in", RFInfo_in); 61 | DigitalTuner_in = new frontend::InDigitalTunerPort("DigitalTuner_in", this); 62 | addPort("DigitalTuner_in", DigitalTuner_in); 63 | dataOctetTX_in = new bulkio::InOctetPort("dataOctetTX_in"); 64 | addPort("dataOctetTX_in", dataOctetTX_in); 65 | dataOctet_out = new bulkio::OutOctetPort("dataOctet_out"); 66 | addPort("dataOctet_out", dataOctet_out); 67 | RFInfoTX_out = new frontend::OutRFInfoPort("RFInfoTX_out"); 68 | addPort("RFInfoTX_out", RFInfoTX_out); 69 | 70 | this->addPropertyListener(connectionTable, this, &HackRFOne_base::connectionTableChanged); 71 | 72 | } 73 | 74 | /******************************************************************************************* 75 | Framework-level functions 76 | These functions are generally called by the framework to perform housekeeping. 77 | *******************************************************************************************/ 78 | void HackRFOne_base::start() throw (CORBA::SystemException, CF::Resource::StartError) 79 | { 80 | frontend::FrontendTunerDevice::start(); 81 | ThreadedComponent::startThread(); 82 | } 83 | 84 | void HackRFOne_base::stop() throw (CORBA::SystemException, CF::Resource::StopError) 85 | { 86 | frontend::FrontendTunerDevice::stop(); 87 | if (!ThreadedComponent::stopThread()) { 88 | throw CF::Resource::StopError(CF::CF_NOTSET, "Processing thread did not die"); 89 | } 90 | } 91 | 92 | void HackRFOne_base::releaseObject() throw (CORBA::SystemException, CF::LifeCycle::ReleaseError) 93 | { 94 | // This function clears the device running condition so main shuts down everything 95 | try { 96 | stop(); 97 | } catch (CF::Resource::StopError& ex) { 98 | // TODO - this should probably be logged instead of ignored 99 | } 100 | 101 | frontend::FrontendTunerDevice::releaseObject(); 102 | } 103 | 104 | void HackRFOne_base::connectionTableChanged(const std::vector* oldValue, const std::vector* newValue) 105 | { 106 | dataOctet_out->updateConnectionFilter(*newValue); 107 | } 108 | 109 | void HackRFOne_base::loadProperties() 110 | { 111 | device_kind = "FRONTEND::TUNER"; 112 | frontend_listener_allocation = frontend::frontend_listener_allocation_struct(); 113 | frontend_tuner_allocation = frontend::frontend_tuner_allocation_struct(); 114 | addProperty(connectionTable, 115 | "connectionTable", 116 | "", 117 | "readonly", 118 | "", 119 | "external", 120 | "property"); 121 | 122 | } 123 | 124 | /* This sets the number of entries in the frontend_tuner_status struct sequence property 125 | * as well as the tuner_allocation_ids vector. Call this function during initialization 126 | */ 127 | void HackRFOne_base::setNumChannels(size_t num) 128 | { 129 | this->setNumChannels(num, "RX_DIGITIZER"); 130 | } 131 | /* This sets the number of entries in the frontend_tuner_status struct sequence property 132 | * as well as the tuner_allocation_ids vector. Call this function during initialization 133 | */ 134 | 135 | void HackRFOne_base::setNumChannels(size_t num, std::string tuner_type) 136 | { 137 | frontend_tuner_status.clear(); 138 | frontend_tuner_status.resize(num); 139 | tuner_allocation_ids.clear(); 140 | tuner_allocation_ids.resize(num); 141 | for (std::vector::iterator iter=frontend_tuner_status.begin(); iter!=frontend_tuner_status.end(); iter++) { 142 | iter->enabled = false; 143 | iter->tuner_type = tuner_type; 144 | } 145 | } 146 | 147 | void HackRFOne_base::frontendTunerStatusChanged(const std::vector* oldValue, const std::vector* newValue) 148 | { 149 | this->tuner_allocation_ids.resize(this->frontend_tuner_status.size()); 150 | } 151 | 152 | CF::Properties* HackRFOne_base::getTunerStatus(const std::string& allocation_id) 153 | { 154 | CF::Properties* tmpVal = new CF::Properties(); 155 | long tuner_id = getTunerMapping(allocation_id); 156 | if (tuner_id < 0) 157 | throw FRONTEND::FrontendException(("ERROR: ID: " + std::string(allocation_id) + " IS NOT ASSOCIATED WITH ANY TUNER!").c_str()); 158 | CORBA::Any prop; 159 | prop <<= *(static_cast(&this->frontend_tuner_status[tuner_id])); 160 | prop >>= tmpVal; 161 | 162 | CF::Properties_var tmp = new CF::Properties(*tmpVal); 163 | return tmp._retn(); 164 | } 165 | 166 | void HackRFOne_base::assignListener(const std::string& listen_alloc_id, const std::string& allocation_id) 167 | { 168 | // find control allocation_id 169 | std::string existing_alloc_id = allocation_id; 170 | std::map::iterator existing_listener; 171 | while ((existing_listener=listeners.find(existing_alloc_id)) != listeners.end()) 172 | existing_alloc_id = existing_listener->second; 173 | listeners[listen_alloc_id] = existing_alloc_id; 174 | 175 | std::vector old_table = connectionTable; 176 | std::vector new_entries; 177 | for (std::vector::iterator entry=connectionTable.begin();entry!=connectionTable.end();entry++) { 178 | if (entry->connection_id == existing_alloc_id) { 179 | connection_descriptor_struct tmp; 180 | tmp.connection_id = listen_alloc_id; 181 | tmp.stream_id = entry->stream_id; 182 | tmp.port_name = entry->port_name; 183 | new_entries.push_back(tmp); 184 | } 185 | } 186 | for (std::vector::iterator new_entry=new_entries.begin();new_entry!=new_entries.end();new_entry++) { 187 | bool foundEntry = false; 188 | for (std::vector::iterator entry=connectionTable.begin();entry!=connectionTable.end();entry++) { 189 | if (entry == new_entry) { 190 | foundEntry = true; 191 | break; 192 | } 193 | } 194 | if (!foundEntry) { 195 | connectionTable.push_back(*new_entry); 196 | } 197 | } 198 | connectionTableChanged(&old_table, &connectionTable); 199 | } 200 | 201 | void HackRFOne_base::removeListener(const std::string& listen_alloc_id) 202 | { 203 | if (listeners.find(listen_alloc_id) != listeners.end()) { 204 | listeners.erase(listen_alloc_id); 205 | } 206 | std::vector old_table = this->connectionTable; 207 | std::vector::iterator entry = this->connectionTable.begin(); 208 | while (entry != this->connectionTable.end()) { 209 | if (entry->connection_id == listen_alloc_id) { 210 | entry = this->connectionTable.erase(entry); 211 | } else { 212 | entry++; 213 | } 214 | } 215 | ExtendedCF::UsesConnectionSequence_var tmp; 216 | // Check to see if port "dataOctet_out" has a connection for this listener 217 | tmp = this->dataOctet_out->connections(); 218 | for (unsigned int i=0; ilength(); i++) { 219 | const char* connection_id = tmp[i].connectionId; 220 | if (connection_id == listen_alloc_id) { 221 | this->dataOctet_out->disconnectPort(connection_id); 222 | } 223 | } 224 | this->connectionTableChanged(&old_table, &this->connectionTable); 225 | } 226 | 227 | void HackRFOne_base::removeAllocationIdRouting(const size_t tuner_id) { 228 | std::string allocation_id = getControlAllocationId(tuner_id); 229 | std::vector old_table = this->connectionTable; 230 | std::vector::iterator itr = this->connectionTable.begin(); 231 | while (itr != this->connectionTable.end()) { 232 | if (itr->connection_id == allocation_id) { 233 | itr = this->connectionTable.erase(itr); 234 | continue; 235 | } 236 | itr++; 237 | } 238 | for (std::map::iterator listener=listeners.begin();listener!=listeners.end();listener++) { 239 | if (listener->second == allocation_id) { 240 | std::vector::iterator itr = this->connectionTable.begin(); 241 | while (itr != this->connectionTable.end()) { 242 | if (itr->connection_id == listener->first) { 243 | itr = this->connectionTable.erase(itr); 244 | continue; 245 | } 246 | itr++; 247 | } 248 | } 249 | } 250 | this->connectionTableChanged(&old_table, &this->connectionTable); 251 | } 252 | 253 | void HackRFOne_base::removeStreamIdRouting(const std::string stream_id, const std::string allocation_id) { 254 | std::vector old_table = this->connectionTable; 255 | std::vector::iterator itr = this->connectionTable.begin(); 256 | while (itr != this->connectionTable.end()) { 257 | if (allocation_id == "") { 258 | if (itr->stream_id == stream_id) { 259 | itr = this->connectionTable.erase(itr); 260 | continue; 261 | } 262 | } else { 263 | if ((itr->stream_id == stream_id) and (itr->connection_id == allocation_id)) { 264 | itr = this->connectionTable.erase(itr); 265 | continue; 266 | } 267 | } 268 | itr++; 269 | } 270 | for (std::map::iterator listener=listeners.begin();listener!=listeners.end();listener++) { 271 | if (listener->second == allocation_id) { 272 | std::vector::iterator itr = this->connectionTable.begin(); 273 | while (itr != this->connectionTable.end()) { 274 | if ((itr->connection_id == listener->first) and (itr->stream_id == stream_id)) { 275 | itr = this->connectionTable.erase(itr); 276 | continue; 277 | } 278 | itr++; 279 | } 280 | } 281 | } 282 | this->connectionTableChanged(&old_table, &this->connectionTable); 283 | } 284 | 285 | void HackRFOne_base::matchAllocationIdToStreamId(const std::string allocation_id, const std::string stream_id, const std::string port_name) { 286 | if (port_name != "") { 287 | for (std::vector::iterator prop_itr = this->connectionTable.begin(); prop_itr!=this->connectionTable.end(); prop_itr++) { 288 | if ((*prop_itr).port_name != port_name) 289 | continue; 290 | if ((*prop_itr).stream_id != stream_id) 291 | continue; 292 | if ((*prop_itr).connection_id != allocation_id) 293 | continue; 294 | // all three match. This is a repeat 295 | return; 296 | } 297 | std::vector old_table = this->connectionTable; 298 | connection_descriptor_struct tmp; 299 | tmp.connection_id = allocation_id; 300 | tmp.port_name = port_name; 301 | tmp.stream_id = stream_id; 302 | this->connectionTable.push_back(tmp); 303 | this->connectionTableChanged(&old_table, &this->connectionTable); 304 | return; 305 | } 306 | std::vector old_table = this->connectionTable; 307 | connection_descriptor_struct tmp; 308 | tmp.connection_id = allocation_id; 309 | tmp.port_name = "dataOctet_out"; 310 | tmp.stream_id = stream_id; 311 | this->connectionTable.push_back(tmp); 312 | this->connectionTableChanged(&old_table, &this->connectionTable); 313 | } 314 | 315 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/cpp/HackRFOne_base.h: -------------------------------------------------------------------------------- 1 | #ifndef HACKRFONE_BASE_IMPL_BASE_H 2 | #define HACKRFONE_BASE_IMPL_BASE_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | #include 10 | #include "struct_props.h" 11 | 12 | #define BOOL_VALUE_HERE 0 13 | 14 | class HackRFOne_base : public frontend::FrontendTunerDevice, public virtual frontend::digital_tuner_delegation, public virtual frontend::rfinfo_delegation, protected ThreadedComponent 15 | { 16 | public: 17 | HackRFOne_base(char *devMgr_ior, char *id, char *lbl, char *sftwrPrfl); 18 | HackRFOne_base(char *devMgr_ior, char *id, char *lbl, char *sftwrPrfl, char *compDev); 19 | HackRFOne_base(char *devMgr_ior, char *id, char *lbl, char *sftwrPrfl, CF::Properties capacities); 20 | HackRFOne_base(char *devMgr_ior, char *id, char *lbl, char *sftwrPrfl, CF::Properties capacities, char *compDev); 21 | ~HackRFOne_base(); 22 | 23 | void start() throw (CF::Resource::StartError, CORBA::SystemException); 24 | 25 | void stop() throw (CF::Resource::StopError, CORBA::SystemException); 26 | 27 | void releaseObject() throw (CF::LifeCycle::ReleaseError, CORBA::SystemException); 28 | 29 | void loadProperties(); 30 | void matchAllocationIdToStreamId(const std::string allocation_id, const std::string stream_id, const std::string port_name=""); 31 | void removeAllocationIdRouting(const size_t tuner_id); 32 | void removeStreamIdRouting(const std::string stream_id, const std::string allocation_id=""); 33 | 34 | virtual CF::Properties* getTunerStatus(const std::string& allocation_id); 35 | virtual void assignListener(const std::string& listen_alloc_id, const std::string& allocation_id); 36 | virtual void removeListener(const std::string& listen_alloc_id); 37 | void frontendTunerStatusChanged(const std::vector* oldValue, const std::vector* newValue); 38 | 39 | protected: 40 | void connectionTableChanged(const std::vector* oldValue, const std::vector* newValue); 41 | 42 | // Member variables exposed as properties 43 | /// Property: connectionTable 44 | std::vector connectionTable; 45 | 46 | // Ports 47 | /// Port: RFInfo_in 48 | frontend::InRFInfoPort *RFInfo_in; 49 | /// Port: DigitalTuner_in 50 | frontend::InDigitalTunerPort *DigitalTuner_in; 51 | /// Port: dataOctetTX_in 52 | bulkio::InOctetPort *dataOctetTX_in; 53 | /// Port: dataOctet_out 54 | bulkio::OutOctetPort *dataOctet_out; 55 | /// Port: RFInfoTX_out 56 | frontend::OutRFInfoPort *RFInfoTX_out; 57 | 58 | std::map listeners; 59 | 60 | virtual void setNumChannels(size_t num); 61 | virtual void setNumChannels(size_t num, std::string tuner_type); 62 | 63 | private: 64 | void construct(); 65 | }; 66 | #endif // HACKRFONE_BASE_IMPL_BASE_H 67 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/cpp/Makefile.am: -------------------------------------------------------------------------------- 1 | ossieName = captivation.HackRFOne 2 | bindir = $(prefix)/dev/devices/captivation/HackRFOne/cpp/ 3 | bin_PROGRAMS = HackRFOne 4 | 5 | xmldir = $(prefix)/dev/devices/captivation/HackRFOne/ 6 | dist_xml_DATA = ../HackRFOne.scd.xml ../HackRFOne.prf.xml ../HackRFOne.spd.xml 7 | ACLOCAL_AMFLAGS = -I m4 -I${OSSIEHOME}/share/aclocal/ossie 8 | AUTOMAKE_OPTIONS = subdir-objects 9 | 10 | 11 | 12 | distclean-local: 13 | rm -rf m4 14 | rm -f config.* 15 | rm -rf autom4te.cache 16 | rm -f acinclude.m4 17 | rm -f aclocal.m4 18 | rm -f configure 19 | rm -f depcomp 20 | rm -f install-sh 21 | rm -f ltmain.sh 22 | rm -f Makefile.in 23 | rm -f missing 24 | rm -rf .deps 25 | 26 | 27 | # Sources, libraries and library directories are auto-included from a file 28 | # generated by the REDHAWK IDE. You can remove/modify the following lines if 29 | # you wish to manually control these options. 30 | include $(srcdir)/Makefile.am.ide 31 | HackRFOne_SOURCES = $(redhawk_SOURCES_auto) 32 | HackRFOne_LDADD = $(SOFTPKG_LIBS) $(PROJECTDEPS_LIBS) $(BOOST_LDFLAGS) $(BOOST_THREAD_LIB) $(BOOST_REGEX_LIB) $(BOOST_SYSTEM_LIB) $(INTERFACEDEPS_LIBS) $(redhawk_LDADD_auto) 33 | HackRFOne_CXXFLAGS = -Wall $(SOFTPKG_CFLAGS) $(PROJECTDEPS_CFLAGS) $(BOOST_CPPFLAGS) $(INTERFACEDEPS_CFLAGS) $(redhawk_INCLUDES_auto) 34 | HackRFOne_LDFLAGS = -Wall $(redhawk_LDFLAGS_auto) 35 | 36 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/cpp/Makefile.am.ide: -------------------------------------------------------------------------------- 1 | # This file is regularly auto-generated by the REDHAWK IDE. Do not modify! 2 | # Files can be excluded by right-clicking on the file in the project explorer 3 | # and choosing Resource Configurations -> Exclude from build. Re-include files 4 | # by opening the Properties dialog of your project and choosing C/C++ Build -> 5 | # Tool Chain Editor, and un-checking "Exclude resource from build " 6 | redhawk_SOURCES_auto = HackRFConstants.h 7 | redhawk_SOURCES_auto += HackRFOne.cpp 8 | redhawk_SOURCES_auto += HackRFOne.h 9 | redhawk_SOURCES_auto += HackRFOne_base.cpp 10 | redhawk_SOURCES_auto += HackRFOne_base.h 11 | redhawk_SOURCES_auto += main.cpp 12 | redhawk_SOURCES_auto += struct_props.h 13 | redhawk_SOURCES_auto += template_impl.cpp 14 | redhawk_INCLUDES_auto = -I/var/redhawk/sdr/dom/deps/captivation/libhackrf/include 15 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/cpp/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Create the Makefile if necessary 4 | if [ ! -e Makefile ]; then 5 | ./reconf 6 | ./configure 7 | fi 8 | 9 | if [ $# == 1 ]; then 10 | if [ $1 == 'clean' ]; then 11 | make distclean 12 | else 13 | make -j $* 14 | fi 15 | else 16 | make -j $* 17 | fi 18 | 19 | exit $? 20 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/cpp/configure.ac: -------------------------------------------------------------------------------- 1 | AC_INIT(captivation.HackRFOne, 1.0.0) 2 | AM_INIT_AUTOMAKE([nostdinc foreign]) 3 | AC_CONFIG_MACRO_DIR([m4]) 4 | 5 | AC_PROG_CC 6 | AC_PROG_CXX 7 | AC_PROG_INSTALL 8 | 9 | AC_CORBA_ORB 10 | OSSIE_CHECK_OSSIE 11 | OSSIE_SDRROOT_AS_PREFIX 12 | 13 | m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) 14 | 15 | # Dependencies 16 | PKG_CHECK_MODULES([PROJECTDEPS], [ossie >= 2.0 omniORB4 >= 4.1.0]) 17 | PKG_CHECK_MODULES([INTERFACEDEPS], [frontend >= 2.2, bulkio >= 2.0]) 18 | RH_SOFTPKG_CXX([/deps/captivation/libhackrf/libhackrf.spd.xml]) 19 | OSSIE_ENABLE_LOG4CXX 20 | AX_BOOST_BASE([1.41]) 21 | AX_BOOST_SYSTEM 22 | AX_BOOST_THREAD 23 | AX_BOOST_REGEX 24 | 25 | AC_CONFIG_FILES([Makefile]) 26 | AC_OUTPUT 27 | 28 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/cpp/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include "ossie/ossieSupport.h" 3 | 4 | #include "HackRFOne.h" 5 | 6 | HackRFOne_i *devicePtr; 7 | 8 | void signal_catcher(int sig) 9 | { 10 | // IMPORTANT Don't call exit(...) in this function 11 | // issue all CORBA calls that you need for cleanup here before calling ORB shutdown 12 | if (devicePtr) { 13 | devicePtr->halt(); 14 | } 15 | } 16 | int main(int argc, char* argv[]) 17 | { 18 | struct sigaction sa; 19 | sa.sa_handler = signal_catcher; 20 | sa.sa_flags = 0; 21 | devicePtr = 0; 22 | 23 | Device_impl::start_device(&devicePtr, sa, argc, argv); 24 | return 0; 25 | } 26 | 27 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/cpp/reconf: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | rm -f config.cache 4 | [ -d m4 ] || mkdir m4 5 | autoreconf -i 6 | 7 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/cpp/struct_props.h: -------------------------------------------------------------------------------- 1 | #ifndef STRUCTPROPS_H 2 | #define STRUCTPROPS_H 3 | 4 | /******************************************************************************************* 5 | 6 | AUTO-GENERATED CODE. DO NOT MODIFY 7 | 8 | *******************************************************************************************/ 9 | 10 | #include 11 | #include 12 | #include 13 | #include 14 | typedef bulkio::connection_descriptor_struct connection_descriptor_struct; 15 | 16 | #include 17 | 18 | struct frontend_tuner_status_struct_struct : public frontend::default_frontend_tuner_status_struct_struct { 19 | frontend_tuner_status_struct_struct () : frontend::default_frontend_tuner_status_struct_struct() 20 | { 21 | }; 22 | 23 | static std::string getId() { 24 | return std::string("FRONTEND::tuner_status_struct"); 25 | }; 26 | 27 | std::string available_bandwidth; 28 | std::string available_frequency; 29 | std::string available_gain; 30 | std::string available_sample_rate; 31 | double gain; 32 | bool scan_mode_enabled; 33 | bool supports_scan; 34 | }; 35 | 36 | inline bool operator>>= (const CORBA::Any& a, frontend_tuner_status_struct_struct& s) { 37 | CF::Properties* temp; 38 | if (!(a >>= temp)) return false; 39 | const redhawk::PropertyMap& props = redhawk::PropertyMap::cast(*temp); 40 | if (props.contains("FRONTEND::tuner_status::allocation_id_csv")) { 41 | if (!(props["FRONTEND::tuner_status::allocation_id_csv"] >>= s.allocation_id_csv)) return false; 42 | } 43 | if (props.contains("FRONTEND::tuner_status::available_bandwidth")) { 44 | if (!(props["FRONTEND::tuner_status::available_bandwidth"] >>= s.available_bandwidth)) return false; 45 | } 46 | if (props.contains("FRONTEND::tuner_status::available_frequency")) { 47 | if (!(props["FRONTEND::tuner_status::available_frequency"] >>= s.available_frequency)) return false; 48 | } 49 | if (props.contains("FRONTEND::tuner_status::available_gain")) { 50 | if (!(props["FRONTEND::tuner_status::available_gain"] >>= s.available_gain)) return false; 51 | } 52 | if (props.contains("FRONTEND::tuner_status::available_sample_rate")) { 53 | if (!(props["FRONTEND::tuner_status::available_sample_rate"] >>= s.available_sample_rate)) return false; 54 | } 55 | if (props.contains("FRONTEND::tuner_status::bandwidth")) { 56 | if (!(props["FRONTEND::tuner_status::bandwidth"] >>= s.bandwidth)) return false; 57 | } 58 | if (props.contains("FRONTEND::tuner_status::center_frequency")) { 59 | if (!(props["FRONTEND::tuner_status::center_frequency"] >>= s.center_frequency)) return false; 60 | } 61 | if (props.contains("FRONTEND::tuner_status::enabled")) { 62 | if (!(props["FRONTEND::tuner_status::enabled"] >>= s.enabled)) return false; 63 | } 64 | if (props.contains("FRONTEND::tuner_status::gain")) { 65 | if (!(props["FRONTEND::tuner_status::gain"] >>= s.gain)) return false; 66 | } 67 | if (props.contains("FRONTEND::tuner_status::group_id")) { 68 | if (!(props["FRONTEND::tuner_status::group_id"] >>= s.group_id)) return false; 69 | } 70 | if (props.contains("FRONTEND::tuner_status::rf_flow_id")) { 71 | if (!(props["FRONTEND::tuner_status::rf_flow_id"] >>= s.rf_flow_id)) return false; 72 | } 73 | if (props.contains("FRONTEND::tuner_status::sample_rate")) { 74 | if (!(props["FRONTEND::tuner_status::sample_rate"] >>= s.sample_rate)) return false; 75 | } 76 | if (props.contains("FRONTEND::tuner_status::scan_mode_enabled")) { 77 | if (!(props["FRONTEND::tuner_status::scan_mode_enabled"] >>= s.scan_mode_enabled)) return false; 78 | } 79 | if (props.contains("FRONTEND::tuner_status::supports_scan")) { 80 | if (!(props["FRONTEND::tuner_status::supports_scan"] >>= s.supports_scan)) return false; 81 | } 82 | if (props.contains("FRONTEND::tuner_status::tuner_type")) { 83 | if (!(props["FRONTEND::tuner_status::tuner_type"] >>= s.tuner_type)) return false; 84 | } 85 | return true; 86 | } 87 | 88 | inline void operator<<= (CORBA::Any& a, const frontend_tuner_status_struct_struct& s) { 89 | redhawk::PropertyMap props; 90 | 91 | props["FRONTEND::tuner_status::allocation_id_csv"] = s.allocation_id_csv; 92 | 93 | props["FRONTEND::tuner_status::available_bandwidth"] = s.available_bandwidth; 94 | 95 | props["FRONTEND::tuner_status::available_frequency"] = s.available_frequency; 96 | 97 | props["FRONTEND::tuner_status::available_gain"] = s.available_gain; 98 | 99 | props["FRONTEND::tuner_status::available_sample_rate"] = s.available_sample_rate; 100 | 101 | props["FRONTEND::tuner_status::bandwidth"] = s.bandwidth; 102 | 103 | props["FRONTEND::tuner_status::center_frequency"] = s.center_frequency; 104 | 105 | props["FRONTEND::tuner_status::enabled"] = s.enabled; 106 | 107 | props["FRONTEND::tuner_status::gain"] = s.gain; 108 | 109 | props["FRONTEND::tuner_status::group_id"] = s.group_id; 110 | 111 | props["FRONTEND::tuner_status::rf_flow_id"] = s.rf_flow_id; 112 | 113 | props["FRONTEND::tuner_status::sample_rate"] = s.sample_rate; 114 | 115 | props["FRONTEND::tuner_status::scan_mode_enabled"] = s.scan_mode_enabled; 116 | 117 | props["FRONTEND::tuner_status::supports_scan"] = s.supports_scan; 118 | 119 | props["FRONTEND::tuner_status::tuner_type"] = s.tuner_type; 120 | a <<= props; 121 | } 122 | 123 | inline bool operator== (const frontend_tuner_status_struct_struct& s1, const frontend_tuner_status_struct_struct& s2) { 124 | if (s1.allocation_id_csv!=s2.allocation_id_csv) 125 | return false; 126 | if (s1.available_bandwidth!=s2.available_bandwidth) 127 | return false; 128 | if (s1.available_frequency!=s2.available_frequency) 129 | return false; 130 | if (s1.available_gain!=s2.available_gain) 131 | return false; 132 | if (s1.available_sample_rate!=s2.available_sample_rate) 133 | return false; 134 | if (s1.bandwidth!=s2.bandwidth) 135 | return false; 136 | if (s1.center_frequency!=s2.center_frequency) 137 | return false; 138 | if (s1.enabled!=s2.enabled) 139 | return false; 140 | if (s1.gain!=s2.gain) 141 | return false; 142 | if (s1.group_id!=s2.group_id) 143 | return false; 144 | if (s1.rf_flow_id!=s2.rf_flow_id) 145 | return false; 146 | if (s1.sample_rate!=s2.sample_rate) 147 | return false; 148 | if (s1.scan_mode_enabled!=s2.scan_mode_enabled) 149 | return false; 150 | if (s1.supports_scan!=s2.supports_scan) 151 | return false; 152 | if (s1.tuner_type!=s2.tuner_type) 153 | return false; 154 | return true; 155 | } 156 | 157 | inline bool operator!= (const frontend_tuner_status_struct_struct& s1, const frontend_tuner_status_struct_struct& s2) { 158 | return !(s1==s2); 159 | } 160 | 161 | #endif // STRUCTPROPS_H 162 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/cpp/template_impl.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * necessary to allow FrontendTunerDevice template class to be split 3 | * into separate header and implementation files (.h and .cpp) 4 | */ 5 | 6 | #include "struct_props.h" 7 | #include 8 | 9 | template class frontend::FrontendTunerDevice; 10 | 11 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/tests/.md5sums: -------------------------------------------------------------------------------- 1 | f6381b5e063f45c217dd79e1a00b32c0 test_HackRFOne.py 2 | -------------------------------------------------------------------------------- /sdr/devices/captivation.HackRFOne/tests/test_HackRFOne.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import ossie.utils.testing 4 | from ossie.utils import sb 5 | 6 | class DeviceTests(ossie.utils.testing.RHTestCase): 7 | # Path to the SPD file, relative to this file. This must be set in order to 8 | # launch the device. 9 | SPD_FILE = '../HackRFOne.spd.xml' 10 | 11 | # setUp is run before every function preceded by "test" is executed 12 | # tearDown is run after every function preceded by "test" is executed 13 | 14 | # self.comp is a device using the sandbox API 15 | # to create a data source, the package sb contains data sources like DataSource or FileSource 16 | # to create a data sink, there are sinks like DataSink and FileSink 17 | # to connect the component to get data from a file, process it, and write the output to a file, use the following syntax: 18 | # src = sb.FileSource('myfile.dat') 19 | # snk = sb.DataSink() 20 | # src.connect(self.comp) 21 | # self.comp.connect(snk) 22 | # sb.start() 23 | # 24 | # components/sources/sinks need to be started. Individual components or elements can be started 25 | # src.start() 26 | # self.comp.start() 27 | # 28 | # every component/elements in the sandbox can be started 29 | # sb.start() 30 | 31 | def setUp(self): 32 | # Launch the device, using the selected implementation 33 | self.comp = sb.launch(self.spd_file, impl=self.impl) 34 | 35 | def tearDown(self): 36 | # Clean up all sandbox artifacts created during test 37 | sb.release() 38 | 39 | def testBasicBehavior(self): 40 | ####################################################################### 41 | # Make sure start and stop can be called without throwing exceptions 42 | self.comp.start() 43 | self.comp.stop() 44 | 45 | if __name__ == "__main__": 46 | ossie.utils.testing.main() # By default tests all implementations 47 | -------------------------------------------------------------------------------- /sdr/libraries/captivation.libhackrf/.cproject: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 34 | 35 | 36 | 37 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 94 | 95 | 96 | 97 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | -------------------------------------------------------------------------------- /sdr/libraries/captivation.libhackrf/.libhackrf.wavedev: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /sdr/libraries/captivation.libhackrf/.md5sums: -------------------------------------------------------------------------------- 1 | 9dab84201e28fddf011cf3756adc2651 captivation.libhackrf.spec 2 | 2964ca559ca969aa1bca66658c3361c4 build.sh 3 | -------------------------------------------------------------------------------- /sdr/libraries/captivation.libhackrf/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | captivation.libhackrf 4 | 5 | 6 | 7 | 8 | 9 | gov.redhawk.ide.codegen.jet.cplusplus.builder 10 | 11 | 12 | 13 | 14 | org.eclipse.cdt.managedbuilder.core.genmakebuilder 15 | clean,full,incremental, 16 | 17 | 18 | 19 | 20 | gov.redhawk.ide.builders.scaproject 21 | 22 | 23 | 24 | 25 | org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder 26 | full,incremental, 27 | 28 | 29 | 30 | 31 | 32 | gov.redhawk.ide.natures.scaproject 33 | org.python.pydev.pythonNature 34 | gov.redhawk.ide.natures.sca.component 35 | org.eclipse.cdt.core.cnature 36 | org.eclipse.cdt.core.ccnature 37 | org.eclipse.cdt.managedbuilder.core.managedBuildNature 38 | org.eclipse.cdt.managedbuilder.core.ScannerConfigNature 39 | 40 | 41 | -------------------------------------------------------------------------------- /sdr/libraries/captivation.libhackrf/.pydevproject: -------------------------------------------------------------------------------- 1 | 2 | 3 | Default 4 | python 2.7 5 | 6 | -------------------------------------------------------------------------------- /sdr/libraries/captivation.libhackrf/.settings/gov.redhawk.ide.sdr.ui.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | useBuild.sh=true 3 | -------------------------------------------------------------------------------- /sdr/libraries/captivation.libhackrf/.settings/language.settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /sdr/libraries/captivation.libhackrf/.settings/org.eclipse.cdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | environment/project/cdt.managedbuild.config.gnu.exe.debug.407461852/OSSIEHOME/delimiter=\: 3 | environment/project/cdt.managedbuild.config.gnu.exe.debug.407461852/OSSIEHOME/operation=replace 4 | environment/project/cdt.managedbuild.config.gnu.exe.debug.407461852/OSSIEHOME/value=${OssieHome} 5 | environment/project/cdt.managedbuild.config.gnu.exe.debug.407461852/V/delimiter=\: 6 | environment/project/cdt.managedbuild.config.gnu.exe.debug.407461852/V/operation=replace 7 | environment/project/cdt.managedbuild.config.gnu.exe.debug.407461852/V/value=1 8 | environment/project/cdt.managedbuild.config.gnu.exe.debug.407461852/append=true 9 | environment/project/cdt.managedbuild.config.gnu.exe.debug.407461852/appendContributed=true 10 | environment/project/cdt.managedbuild.config.gnu.exe.release.1491686476/OSSIEHOME/delimiter=\: 11 | environment/project/cdt.managedbuild.config.gnu.exe.release.1491686476/OSSIEHOME/operation=replace 12 | environment/project/cdt.managedbuild.config.gnu.exe.release.1491686476/OSSIEHOME/value=${OssieHome} 13 | environment/project/cdt.managedbuild.config.gnu.exe.release.1491686476/V/delimiter=\: 14 | environment/project/cdt.managedbuild.config.gnu.exe.release.1491686476/V/operation=replace 15 | environment/project/cdt.managedbuild.config.gnu.exe.release.1491686476/V/value=1 16 | environment/project/cdt.managedbuild.config.gnu.exe.release.1491686476/append=true 17 | environment/project/cdt.managedbuild.config.gnu.exe.release.1491686476/appendContributed=true 18 | -------------------------------------------------------------------------------- /sdr/libraries/captivation.libhackrf/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ "$1" = "rpm" ]; then 4 | # A very simplistic RPM build scenario 5 | if [ -e captivation.libhackrf.spec ]; then 6 | mydir=`dirname $0` 7 | tmpdir=`mktemp -d` 8 | cp -r ${mydir} ${tmpdir}/captivation.libhackrf-1.0.0 9 | tar czf ${tmpdir}/captivation.libhackrf-1.0.0.tar.gz --exclude=".svn" --exclude=".git" -C ${tmpdir} captivation.libhackrf-1.0.0 10 | rpmbuild -ta ${tmpdir}/captivation.libhackrf-1.0.0.tar.gz 11 | rm -rf $tmpdir 12 | else 13 | echo "Missing RPM spec file in" `pwd` 14 | exit 1 15 | fi 16 | else 17 | for impl in cpp ; do 18 | cd $impl 19 | if [ -e build.sh ]; then 20 | if [ $# == 1 ]; then 21 | if [ $1 == 'clean' ]; then 22 | rm -f Makefile 23 | rm -f config.* 24 | ./build.sh distclean 25 | else 26 | ./build.sh $* 27 | fi 28 | else 29 | ./build.sh $* 30 | fi 31 | elif [ -e Makefile ] && [ Makefile.am -ot Makefile ]; then 32 | make $* 33 | elif [ -e reconf ]; then 34 | ./reconf && ./configure && make $* 35 | else 36 | echo "No build.sh found for $impl" 37 | fi 38 | retval=$? 39 | if [ $retval != '0' ]; then 40 | exit $retval 41 | fi 42 | cd - 43 | done 44 | fi 45 | -------------------------------------------------------------------------------- /sdr/libraries/captivation.libhackrf/captivation.libhackrf.spec: -------------------------------------------------------------------------------- 1 | # By default, the RPM will install to the standard REDHAWK SDR root location (/var/redhawk/sdr) 2 | %{!?_sdrroot: %global _sdrroot /var/redhawk/sdr} 3 | %define _prefix %{_sdrroot}/dom/deps/captivation/libhackrf 4 | 5 | # Point install paths to locations within our target SDR root 6 | %define _libdir %{_prefix}/cpp/lib 7 | %define _sysconfdir %{_prefix}/etc 8 | %define _localstatedir %{_prefix}/var 9 | %define _mandir %{_prefix}/man 10 | %define _infodir %{_prefix}/info 11 | 12 | Name: captivation.libhackrf 13 | Version: 1.0.0 14 | Release: 1%{?dist} 15 | Summary: Shared package %{name} 16 | 17 | Group: REDHAWK/Shared Packages 18 | License: None 19 | Source0: %{name}-%{version}.tar.gz 20 | BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) 21 | 22 | BuildRequires: redhawk-devel >= 2.0 23 | BuildRequires: autoconf automake libtool 24 | 25 | 26 | 27 | %description 28 | Shared package %{name} 29 | 30 | %package devel 31 | Summary: Shared package %{name} 32 | Group: REDHAWK/Shared Packages 33 | Requires: %{name} = %{version}-%{release} 34 | 35 | %description devel 36 | Libraries and header files for shared package %{name} 37 | 38 | %prep 39 | %setup -q 40 | 41 | 42 | %build 43 | # Implementation cpp 44 | pushd cpp 45 | ./reconf 46 | %configure --with-sdr=%{_sdrroot} 47 | make %{?_smp_mflags} 48 | popd 49 | 50 | 51 | %install 52 | rm -rf $RPM_BUILD_ROOT 53 | # Implementation cpp 54 | pushd cpp 55 | make install DESTDIR=$RPM_BUILD_ROOT 56 | popd 57 | 58 | 59 | %clean 60 | rm -rf $RPM_BUILD_ROOT 61 | 62 | %files 63 | %defattr(-,redhawk,redhawk,-) 64 | %dir %{_sdrroot}/dom/deps/captivation 65 | %dir %{_sdrroot}/dom/deps/captivation/libhackrf 66 | %{_prefix}/libhackrf.spd.xml 67 | %{_prefix}/cpp 68 | %exclude %{_libdir}/liblibhackrf.la 69 | %exclude %{_libdir}/liblibhackrf.so 70 | %exclude %{_libdir}/pkgconfig 71 | 72 | %files devel 73 | %defattr(-,redhawk,redhawk,-) 74 | %{_libdir}/liblibhackrf.la 75 | %{_libdir}/liblibhackrf.so 76 | %{_libdir}/pkgconfig 77 | %{_prefix}/include 78 | 79 | -------------------------------------------------------------------------------- /sdr/libraries/captivation.libhackrf/cpp/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | autom4te.cache 3 | m4 4 | aclocal.m4 5 | config.* 6 | configure 7 | depcomp 8 | install-sh 9 | libtool 10 | ltmain.sh 11 | Makefile.in 12 | missing 13 | 14 | 15 | captivation.libhackrf.pc 16 | .libs 17 | *.la 18 | *.lo 19 | 20 | libhackrf/src/.deps 21 | .dirstamp 22 | -------------------------------------------------------------------------------- /sdr/libraries/captivation.libhackrf/cpp/.md5sums: -------------------------------------------------------------------------------- 1 | 9e9c9bf983917046a119f512aa371a0c src/libhackrf.cpp 2 | ee8eaad7da1d4af25d204785c96600e6 include/libhackrf.h 3 | 8bfcd22353c3a57fee561ad86ee2a56b reconf 4 | 55c4cf11c077c57be20a81bd95548d10 configure.ac 5 | 8f79a5c9bfb27235ddbbaf19bc11f3b2 Makefile.am 6 | b2c5cac350738b09c35faf2916cf29c1 Makefile.am.ide 7 | 2b2faa5cfc83438427491f4be5d6ee59 build.sh 8 | 8ea7fc82e27e3d7ac6cb378d9434e537 captivation.libhackrf.pc.in 9 | -------------------------------------------------------------------------------- /sdr/libraries/captivation.libhackrf/cpp/Makefile: -------------------------------------------------------------------------------- 1 | # Makefile.in generated by automake 1.13.4 from Makefile.am. 2 | # Makefile. Generated from Makefile.in by configure. 3 | 4 | # Copyright (C) 1994-2013 Free Software Foundation, Inc. 5 | 6 | # This Makefile.in is free software; the Free Software Foundation 7 | # gives unlimited permission to copy and/or distribute it, 8 | # with or without modifications, as long as this notice is preserved. 9 | 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY, to the extent permitted by law; without 12 | # even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | # PARTICULAR PURPOSE. 14 | 15 | 16 | 17 | 18 | 19 | 20 | am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' 21 | am__make_running_with_option = \ 22 | case $${target_option-} in \ 23 | ?) ;; \ 24 | *) echo "am__make_running_with_option: internal error: invalid" \ 25 | "target option '$${target_option-}' specified" >&2; \ 26 | exit 1;; \ 27 | esac; \ 28 | has_opt=no; \ 29 | sane_makeflags=$$MAKEFLAGS; \ 30 | if $(am__is_gnu_make); then \ 31 | sane_makeflags=$$MFLAGS; \ 32 | else \ 33 | case $$MAKEFLAGS in \ 34 | *\\[\ \ ]*) \ 35 | bs=\\; \ 36 | sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ 37 | | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ 38 | esac; \ 39 | fi; \ 40 | skip_next=no; \ 41 | strip_trailopt () \ 42 | { \ 43 | flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ 44 | }; \ 45 | for flg in $$sane_makeflags; do \ 46 | test $$skip_next = yes && { skip_next=no; continue; }; \ 47 | case $$flg in \ 48 | *=*|--*) continue;; \ 49 | -*I) strip_trailopt 'I'; skip_next=yes;; \ 50 | -*I?*) strip_trailopt 'I';; \ 51 | -*O) strip_trailopt 'O'; skip_next=yes;; \ 52 | -*O?*) strip_trailopt 'O';; \ 53 | -*l) strip_trailopt 'l'; skip_next=yes;; \ 54 | -*l?*) strip_trailopt 'l';; \ 55 | -[dEDm]) skip_next=yes;; \ 56 | -[JT]) skip_next=yes;; \ 57 | esac; \ 58 | case $$flg in \ 59 | *$$target_option*) has_opt=yes; break;; \ 60 | esac; \ 61 | done; \ 62 | test $$has_opt = yes 63 | am__make_dryrun = (target_option=n; $(am__make_running_with_option)) 64 | am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) 65 | pkgdatadir = $(datadir)/captivation-libhackrf 66 | pkgincludedir = $(includedir)/captivation-libhackrf 67 | pkglibdir = $(libdir)/captivation-libhackrf 68 | pkglibexecdir = $(libexecdir)/captivation-libhackrf 69 | am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd 70 | install_sh_DATA = $(install_sh) -c -m 644 71 | install_sh_PROGRAM = $(install_sh) -c 72 | install_sh_SCRIPT = $(install_sh) -c 73 | INSTALL_HEADER = $(INSTALL_DATA) 74 | transform = $(program_transform_name) 75 | NORMAL_INSTALL = : 76 | PRE_INSTALL = : 77 | POST_INSTALL = : 78 | NORMAL_UNINSTALL = : 79 | PRE_UNINSTALL = : 80 | POST_UNINSTALL = : 81 | build_triplet = x86_64-unknown-linux-gnu 82 | host_triplet = x86_64-unknown-linux-gnu 83 | DIST_COMMON = $(srcdir)/Makefile.am.ide $(srcdir)/Makefile.in \ 84 | $(srcdir)/Makefile.am $(top_srcdir)/configure \ 85 | $(am__configure_deps) $(srcdir)/captivation.libhackrf.pc.in \ 86 | depcomp $(dist_xml_DATA) $(include_HEADERS) config.guess \ 87 | config.sub install-sh missing ltmain.sh 88 | subdir = . 89 | ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 90 | am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ 91 | $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ 92 | $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ 93 | $(top_srcdir)/configure.ac 94 | am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ 95 | $(ACLOCAL_M4) 96 | am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ 97 | configure.lineno config.status.lineno 98 | mkinstalldirs = $(install_sh) -d 99 | CONFIG_CLEAN_FILES = captivation.libhackrf.pc 100 | CONFIG_CLEAN_VPATH_FILES = 101 | am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; 102 | am__vpath_adj = case $$p in \ 103 | $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ 104 | *) f=$$p;; \ 105 | esac; 106 | am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; 107 | am__install_max = 40 108 | am__nobase_strip_setup = \ 109 | srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` 110 | am__nobase_strip = \ 111 | for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" 112 | am__nobase_list = $(am__nobase_strip_setup); \ 113 | for p in $$list; do echo "$$p $$p"; done | \ 114 | sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ 115 | $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ 116 | if (++n[$$2] == $(am__install_max)) \ 117 | { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ 118 | END { for (dir in files) print dir, files[dir] }' 119 | am__base_list = \ 120 | sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ 121 | sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' 122 | am__uninstall_files_from_dir = { \ 123 | test -z "$$files" \ 124 | || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ 125 | || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ 126 | $(am__cd) "$$dir" && rm -f $$files; }; \ 127 | } 128 | am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(xmldir)" \ 129 | "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)" 130 | LTLIBRARIES = $(lib_LTLIBRARIES) 131 | am__DEPENDENCIES_1 = 132 | libhackrf_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ 133 | $(am__DEPENDENCIES_1) 134 | am__dirstamp = $(am__leading_dot)dirstamp 135 | am__objects_1 = libhackrf/src/libhackrf_la-hackrf.lo 136 | am_libhackrf_la_OBJECTS = $(am__objects_1) 137 | libhackrf_la_OBJECTS = $(am_libhackrf_la_OBJECTS) 138 | AM_V_lt = $(am__v_lt_$(V)) 139 | am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) 140 | am__v_lt_0 = --silent 141 | am__v_lt_1 = 142 | AM_V_P = $(am__v_P_$(V)) 143 | am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) 144 | am__v_P_0 = false 145 | am__v_P_1 = : 146 | AM_V_GEN = $(am__v_GEN_$(V)) 147 | am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) 148 | am__v_GEN_0 = @echo " GEN " $@; 149 | am__v_GEN_1 = 150 | AM_V_at = $(am__v_at_$(V)) 151 | am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) 152 | am__v_at_0 = @ 153 | am__v_at_1 = 154 | DEFAULT_INCLUDES = 155 | depcomp = $(SHELL) $(top_srcdir)/depcomp 156 | am__depfiles_maybe = depfiles 157 | am__mv = mv -f 158 | COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ 159 | $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) 160 | LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ 161 | $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ 162 | $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ 163 | $(AM_CFLAGS) $(CFLAGS) 164 | AM_V_CC = $(am__v_CC_$(V)) 165 | am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) 166 | am__v_CC_0 = @echo " CC " $@; 167 | am__v_CC_1 = 168 | CCLD = $(CC) 169 | LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ 170 | $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ 171 | $(AM_LDFLAGS) $(LDFLAGS) -o $@ 172 | AM_V_CCLD = $(am__v_CCLD_$(V)) 173 | am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) 174 | am__v_CCLD_0 = @echo " CCLD " $@; 175 | am__v_CCLD_1 = 176 | SOURCES = $(libhackrf_la_SOURCES) 177 | DIST_SOURCES = $(libhackrf_la_SOURCES) 178 | am__can_run_installinfo = \ 179 | case $$AM_UPDATE_INFO_DIR in \ 180 | n|no|NO) false;; \ 181 | *) (install-info --version) >/dev/null 2>&1;; \ 182 | esac 183 | DATA = $(dist_xml_DATA) $(pkgconfig_DATA) 184 | HEADERS = $(include_HEADERS) 185 | am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) 186 | # Read a list of newline-separated strings from the standard input, 187 | # and print each of them once, without duplicates. Input order is 188 | # *not* preserved. 189 | am__uniquify_input = $(AWK) '\ 190 | BEGIN { nonempty = 0; } \ 191 | { items[$$0] = 1; nonempty = 1; } \ 192 | END { if (nonempty) { for (i in items) print i; }; } \ 193 | ' 194 | # Make sure the list of sources is unique. This is necessary because, 195 | # e.g., the same source file might be shared among _SOURCES variables 196 | # for different programs/libraries. 197 | am__define_uniq_tagged_files = \ 198 | list='$(am__tagged_files)'; \ 199 | unique=`for i in $$list; do \ 200 | if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ 201 | done | $(am__uniquify_input)` 202 | ETAGS = etags 203 | CTAGS = ctags 204 | CSCOPE = cscope 205 | AM_RECURSIVE_TARGETS = cscope 206 | DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 207 | distdir = $(PACKAGE)-$(VERSION) 208 | top_distdir = $(distdir) 209 | am__remove_distdir = \ 210 | if test -d "$(distdir)"; then \ 211 | find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ 212 | && rm -rf "$(distdir)" \ 213 | || { sleep 5 && rm -rf "$(distdir)"; }; \ 214 | else :; fi 215 | am__post_remove_distdir = $(am__remove_distdir) 216 | DIST_ARCHIVES = $(distdir).tar.gz 217 | GZIP_ENV = --best 218 | DIST_TARGETS = dist-gzip 219 | distuninstallcheck_listfiles = find . -type f -print 220 | am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ 221 | | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' 222 | distcleancheck_listfiles = find . -type f -print 223 | ACLOCAL = ${SHELL} /home/daniel.barbalato/dev/redhawk-hackrf/sdr/libraries/captivation.libhackrf/cpp/missing aclocal-1.13 224 | AMTAR = $${TAR-tar} 225 | AM_DEFAULT_VERBOSITY = 0 226 | AR = ar 227 | AUTOCONF = ${SHELL} /home/daniel.barbalato/dev/redhawk-hackrf/sdr/libraries/captivation.libhackrf/cpp/missing autoconf 228 | AUTOHEADER = ${SHELL} /home/daniel.barbalato/dev/redhawk-hackrf/sdr/libraries/captivation.libhackrf/cpp/missing autoheader 229 | AUTOMAKE = ${SHELL} /home/daniel.barbalato/dev/redhawk-hackrf/sdr/libraries/captivation.libhackrf/cpp/missing automake-1.13 230 | AWK = gawk 231 | BOOST_CPPFLAGS = -pthread -I/usr/include 232 | BOOST_LDFLAGS = -L/usr/lib64 233 | BOOST_REGEX_LIB = -lboost_regex-mt 234 | BOOST_SYSTEM_LIB = -lboost_system 235 | BOOST_THREAD_LIB = -lboost_thread 236 | CC = gcc 237 | CCDEPMODE = depmode=gcc3 238 | CFLAGS = -g -O2 239 | CORBA_ORB = omniORB4 240 | CPP = gcc -E 241 | CPPFLAGS = 242 | CXX = g++ 243 | CXXCPP = g++ -E 244 | CXXDEPMODE = depmode=gcc3 245 | CXXFLAGS = -g -O2 246 | CYGPATH_W = echo 247 | DEFS = -DPACKAGE_NAME=\"captivation.libhackrf\" -DPACKAGE_TARNAME=\"captivation-libhackrf\" -DPACKAGE_VERSION=\"1.0.0\" -DPACKAGE_STRING=\"captivation.libhackrf\ 1.0.0\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"captivation-libhackrf\" -DVERSION=\"1.0.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DHAVE_OMNIORB4=1 -DHAVE_LOG4CXX=1 -DRH_LOGGER=1 -DHAVE_BOOST=1 -DHAVE_BOOST_SYSTEM=1 -DHAVE_BOOST_THREAD=1 -DHAVE_BOOST_REGEX=1 248 | DEPDIR = .deps 249 | DLLTOOL = false 250 | DSYMUTIL = 251 | DUMPBIN = 252 | ECHO_C = 253 | ECHO_N = -n 254 | ECHO_T = 255 | EGREP = /usr/bin/grep -E 256 | EXEEXT = 257 | FGREP = /usr/bin/grep -F 258 | GREP = /usr/bin/grep 259 | HAVE_LOG4CXX = -DHAVE_LOG4CXX=1 260 | INSTALL = /usr/bin/install -c 261 | INSTALL_DATA = ${INSTALL} -m 644 262 | INSTALL_PROGRAM = ${INSTALL} 263 | INSTALL_SCRIPT = ${INSTALL} 264 | INSTALL_STRIP_PROGRAM = $(install_sh) -c -s 265 | LD = /usr/bin/ld -m elf_x86_64 266 | LDFLAGS = 267 | LIBOBJS = 268 | LIBS = -llog4cxx 269 | LIBTOOL = $(SHELL) $(top_builddir)/libtool 270 | LIBUSB_CFLAGS = -I/usr/include/libusb-1.0 271 | LIBUSB_LIBS = -lusb-1.0 272 | LIPO = 273 | LN_S = ln -s 274 | LOG4CXX_CFLAGS = 275 | LOG4CXX_LIBS = -llog4cxx 276 | LTLIBOBJS = 277 | MAKEINFO = ${SHELL} /home/daniel.barbalato/dev/redhawk-hackrf/sdr/libraries/captivation.libhackrf/cpp/missing makeinfo 278 | MANIFEST_TOOL = : 279 | MKDIR_P = /usr/bin/mkdir -p 280 | NM = /usr/bin/nm -B 281 | NMEDIT = 282 | OBJDUMP = objdump 283 | OBJEXT = o 284 | OSSIE_HOME = /usr/local/redhawk/core 285 | OTOOL = 286 | OTOOL64 = 287 | PACKAGE = captivation-libhackrf 288 | PACKAGE_BUGREPORT = 289 | PACKAGE_NAME = captivation.libhackrf 290 | PACKAGE_STRING = captivation.libhackrf 1.0.0 291 | PACKAGE_TARNAME = captivation-libhackrf 292 | PACKAGE_URL = 293 | PACKAGE_VERSION = 1.0.0 294 | PATH_SEPARATOR = : 295 | PKG_CONFIG = /usr/bin/pkg-config 296 | RANLIB = ranlib 297 | REDHAWK_CFLAGS = -D__x86_64__ -D__linux__ -D__OSVERSION__=2 -DENABLE_EVENTS=1 -I/usr/local/redhawk/core/include -I/usr/local/redhawk/core/include/ossie -I/usr/local/redhawk/core/share/idl 298 | REDHAWK_LIBS = -L/usr/local/redhawk/core/lib64 -lossiecf -lossieidl -lCOS4 -lomniDynamic4 -lomniORB4 -lomnithread 299 | SDR_ROOT = /var/redhawk/sdr 300 | SED = /usr/bin/sed 301 | SET_MAKE = 302 | SHELL = /bin/sh 303 | STRIP = strip 304 | VERSION = 1.0.0 305 | WITH_LOG4CXX = yes 306 | abs_builddir = /home/daniel.barbalato/dev/redhawk-hackrf/sdr/libraries/captivation.libhackrf/cpp 307 | abs_srcdir = /home/daniel.barbalato/dev/redhawk-hackrf/sdr/libraries/captivation.libhackrf/cpp 308 | abs_top_builddir = /home/daniel.barbalato/dev/redhawk-hackrf/sdr/libraries/captivation.libhackrf/cpp 309 | abs_top_srcdir = /home/daniel.barbalato/dev/redhawk-hackrf/sdr/libraries/captivation.libhackrf/cpp 310 | ac_ct_AR = ar 311 | ac_ct_CC = gcc 312 | ac_ct_CXX = g++ 313 | ac_ct_DUMPBIN = 314 | am__include = include 315 | am__leading_dot = . 316 | am__quote = 317 | am__tar = $${TAR-tar} chof - "$$tardir" 318 | am__untar = $${TAR-tar} xf - 319 | bindir = ${exec_prefix}/bin 320 | build = x86_64-unknown-linux-gnu 321 | build_alias = 322 | build_cpu = x86_64 323 | build_os = linux-gnu 324 | build_vendor = unknown 325 | builddir = . 326 | datadir = ${datarootdir} 327 | datarootdir = ${prefix}/share 328 | docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} 329 | dvidir = ${docdir} 330 | exec_prefix = ${prefix}/cpp 331 | host = x86_64-unknown-linux-gnu 332 | host_alias = 333 | host_cpu = x86_64 334 | host_os = linux-gnu 335 | host_vendor = unknown 336 | htmldir = ${docdir} 337 | includedir = ${prefix}/include 338 | infodir = ${datarootdir}/info 339 | install_sh = ${SHELL} /home/daniel.barbalato/dev/redhawk-hackrf/sdr/libraries/captivation.libhackrf/cpp/install-sh 340 | libdir = ${exec_prefix}/lib 341 | libexecdir = ${exec_prefix}/libexec 342 | localedir = ${datarootdir}/locale 343 | localstatedir = ${prefix}/var 344 | mandir = ${datarootdir}/man 345 | mkdir_p = $(MKDIR_P) 346 | oldincludedir = /usr/include 347 | pdfdir = ${docdir} 348 | prefix = /var/redhawk/sdr/dom/deps/captivation/libhackrf 349 | program_transform_name = s,x,x, 350 | psdir = ${docdir} 351 | sbindir = ${exec_prefix}/sbin 352 | sharedstatedir = ${prefix}/com 353 | srcdir = . 354 | sysconfdir = ${prefix}/etc 355 | target_alias = 356 | top_build_prefix = 357 | top_builddir = . 358 | top_srcdir = . 359 | ACLOCAL_AMFLAGS = -I m4 -I${OSSIEHOME}/share/aclocal/ossie 360 | AUTOMAKE_OPTIONS = subdir-objects 361 | lib_LTLIBRARIES = libhackrf.la 362 | pkgconfigdir = $(libdir)/pkgconfig 363 | pkgconfig_DATA = captivation.libhackrf.pc 364 | xmldir = $(prefix) 365 | dist_xml_DATA = ../libhackrf.spd.xml 366 | 367 | # This file is regularly auto-generated by the REDHAWK IDE. Do not modify! 368 | # Files can be excluded by right-clicking on the file in the project explorer 369 | # and choosing Resource Configurations -> Exclude from build. Re-include files 370 | # by opening the Properties dialog of your project and choosing C/C++ Build -> 371 | # Tool Chain Editor, and un-checking "Exclude resource from build " 372 | redhawk_SOURCES_auto = libhackrf/src/hackrf.c libhackrf/src/hackrf.h 373 | 374 | # Sources, libraries and library directories are auto-included from a file 375 | # generated by the REDHAWK IDE. You can remove/modify the following lines if 376 | # you wish to manually control these options. 377 | libhackrf_la_SOURCES = $(redhawk_SOURCES_auto) 378 | libhackrf_la_LIBADD = $(SOFTPKG_LIBS) $(REDHAWK_LIBS) $(LIBUSB_LIBS) 379 | libhackrf_la_CPPFLAGS = -I $(srcdir)/include $(SOFTPKG_CFLAGS) $(REDHAWK_CFLAGS) $(LIBUSB_CFLAGS) $(BOOST_CPPFLAGS) 380 | libhackrf_la_CXXFLAGS = -Wall 381 | include_HEADERS = $(redhawk_HEADERS_auto) 382 | all: all-am 383 | 384 | .SUFFIXES: 385 | .SUFFIXES: .c .lo .o .obj 386 | am--refresh: Makefile 387 | @: 388 | $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/Makefile.am.ide $(am__configure_deps) 389 | @for dep in $?; do \ 390 | case '$(am__configure_deps)' in \ 391 | *$$dep*) \ 392 | echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ 393 | $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ 394 | && exit 0; \ 395 | exit 1;; \ 396 | esac; \ 397 | done; \ 398 | echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ 399 | $(am__cd) $(top_srcdir) && \ 400 | $(AUTOMAKE) --foreign Makefile 401 | .PRECIOUS: Makefile 402 | Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status 403 | @case '$?' in \ 404 | *config.status*) \ 405 | echo ' $(SHELL) ./config.status'; \ 406 | $(SHELL) ./config.status;; \ 407 | *) \ 408 | echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ 409 | cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ 410 | esac; 411 | $(srcdir)/Makefile.am.ide: 412 | 413 | $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) 414 | $(SHELL) ./config.status --recheck 415 | 416 | $(top_srcdir)/configure: $(am__configure_deps) 417 | $(am__cd) $(srcdir) && $(AUTOCONF) 418 | $(ACLOCAL_M4): $(am__aclocal_m4_deps) 419 | $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) 420 | $(am__aclocal_m4_deps): 421 | captivation.libhackrf.pc: $(top_builddir)/config.status $(srcdir)/captivation.libhackrf.pc.in 422 | cd $(top_builddir) && $(SHELL) ./config.status $@ 423 | 424 | install-libLTLIBRARIES: $(lib_LTLIBRARIES) 425 | @$(NORMAL_INSTALL) 426 | @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ 427 | list2=; for p in $$list; do \ 428 | if test -f $$p; then \ 429 | list2="$$list2 $$p"; \ 430 | else :; fi; \ 431 | done; \ 432 | test -z "$$list2" || { \ 433 | echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ 434 | $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ 435 | echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ 436 | $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ 437 | } 438 | 439 | uninstall-libLTLIBRARIES: 440 | @$(NORMAL_UNINSTALL) 441 | @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ 442 | for p in $$list; do \ 443 | $(am__strip_dir) \ 444 | echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ 445 | $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ 446 | done 447 | 448 | clean-libLTLIBRARIES: 449 | -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) 450 | @list='$(lib_LTLIBRARIES)'; \ 451 | locs=`for p in $$list; do echo $$p; done | \ 452 | sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ 453 | sort -u`; \ 454 | test -z "$$locs" || { \ 455 | echo rm -f $${locs}; \ 456 | rm -f $${locs}; \ 457 | } 458 | libhackrf/src/$(am__dirstamp): 459 | @$(MKDIR_P) libhackrf/src 460 | @: > libhackrf/src/$(am__dirstamp) 461 | libhackrf/src/$(DEPDIR)/$(am__dirstamp): 462 | @$(MKDIR_P) libhackrf/src/$(DEPDIR) 463 | @: > libhackrf/src/$(DEPDIR)/$(am__dirstamp) 464 | libhackrf/src/libhackrf_la-hackrf.lo: libhackrf/src/$(am__dirstamp) \ 465 | libhackrf/src/$(DEPDIR)/$(am__dirstamp) 466 | 467 | libhackrf.la: $(libhackrf_la_OBJECTS) $(libhackrf_la_DEPENDENCIES) $(EXTRA_libhackrf_la_DEPENDENCIES) 468 | $(AM_V_CCLD)$(LINK) -rpath $(libdir) $(libhackrf_la_OBJECTS) $(libhackrf_la_LIBADD) $(LIBS) 469 | 470 | mostlyclean-compile: 471 | -rm -f *.$(OBJEXT) 472 | -rm -f libhackrf/src/*.$(OBJEXT) 473 | -rm -f libhackrf/src/*.lo 474 | 475 | distclean-compile: 476 | -rm -f *.tab.c 477 | 478 | include libhackrf/src/$(DEPDIR)/libhackrf_la-hackrf.Plo 479 | 480 | .c.o: 481 | $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ 482 | $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ 483 | $(am__mv) $$depbase.Tpo $$depbase.Po 484 | # $(AM_V_CC)source='$<' object='$@' libtool=no \ 485 | # DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ 486 | # $(AM_V_CC_no)$(COMPILE) -c -o $@ $< 487 | 488 | .c.obj: 489 | $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ 490 | $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ 491 | $(am__mv) $$depbase.Tpo $$depbase.Po 492 | # $(AM_V_CC)source='$<' object='$@' libtool=no \ 493 | # DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ 494 | # $(AM_V_CC_no)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` 495 | 496 | .c.lo: 497 | $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ 498 | $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ 499 | $(am__mv) $$depbase.Tpo $$depbase.Plo 500 | # $(AM_V_CC)source='$<' object='$@' libtool=yes \ 501 | # DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ 502 | # $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< 503 | 504 | libhackrf/src/libhackrf_la-hackrf.lo: libhackrf/src/hackrf.c 505 | $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhackrf_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhackrf/src/libhackrf_la-hackrf.lo -MD -MP -MF libhackrf/src/$(DEPDIR)/libhackrf_la-hackrf.Tpo -c -o libhackrf/src/libhackrf_la-hackrf.lo `test -f 'libhackrf/src/hackrf.c' || echo '$(srcdir)/'`libhackrf/src/hackrf.c 506 | $(AM_V_at)$(am__mv) libhackrf/src/$(DEPDIR)/libhackrf_la-hackrf.Tpo libhackrf/src/$(DEPDIR)/libhackrf_la-hackrf.Plo 507 | # $(AM_V_CC)source='libhackrf/src/hackrf.c' object='libhackrf/src/libhackrf_la-hackrf.lo' libtool=yes \ 508 | # DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ 509 | # $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhackrf_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhackrf/src/libhackrf_la-hackrf.lo `test -f 'libhackrf/src/hackrf.c' || echo '$(srcdir)/'`libhackrf/src/hackrf.c 510 | 511 | mostlyclean-libtool: 512 | -rm -f *.lo 513 | 514 | clean-libtool: 515 | -rm -rf .libs _libs 516 | -rm -rf libhackrf/src/.libs libhackrf/src/_libs 517 | 518 | distclean-libtool: 519 | -rm -f libtool config.lt 520 | install-dist_xmlDATA: $(dist_xml_DATA) 521 | @$(NORMAL_INSTALL) 522 | @list='$(dist_xml_DATA)'; test -n "$(xmldir)" || list=; \ 523 | if test -n "$$list"; then \ 524 | echo " $(MKDIR_P) '$(DESTDIR)$(xmldir)'"; \ 525 | $(MKDIR_P) "$(DESTDIR)$(xmldir)" || exit 1; \ 526 | fi; \ 527 | for p in $$list; do \ 528 | if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ 529 | echo "$$d$$p"; \ 530 | done | $(am__base_list) | \ 531 | while read files; do \ 532 | echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(xmldir)'"; \ 533 | $(INSTALL_DATA) $$files "$(DESTDIR)$(xmldir)" || exit $$?; \ 534 | done 535 | 536 | uninstall-dist_xmlDATA: 537 | @$(NORMAL_UNINSTALL) 538 | @list='$(dist_xml_DATA)'; test -n "$(xmldir)" || list=; \ 539 | files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ 540 | dir='$(DESTDIR)$(xmldir)'; $(am__uninstall_files_from_dir) 541 | install-pkgconfigDATA: $(pkgconfig_DATA) 542 | @$(NORMAL_INSTALL) 543 | @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ 544 | if test -n "$$list"; then \ 545 | echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ 546 | $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ 547 | fi; \ 548 | for p in $$list; do \ 549 | if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ 550 | echo "$$d$$p"; \ 551 | done | $(am__base_list) | \ 552 | while read files; do \ 553 | echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ 554 | $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ 555 | done 556 | 557 | uninstall-pkgconfigDATA: 558 | @$(NORMAL_UNINSTALL) 559 | @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ 560 | files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ 561 | dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) 562 | install-includeHEADERS: $(include_HEADERS) 563 | @$(NORMAL_INSTALL) 564 | @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ 565 | if test -n "$$list"; then \ 566 | echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ 567 | $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ 568 | fi; \ 569 | for p in $$list; do \ 570 | if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ 571 | echo "$$d$$p"; \ 572 | done | $(am__base_list) | \ 573 | while read files; do \ 574 | echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ 575 | $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ 576 | done 577 | 578 | uninstall-includeHEADERS: 579 | @$(NORMAL_UNINSTALL) 580 | @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ 581 | files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ 582 | dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) 583 | 584 | ID: $(am__tagged_files) 585 | $(am__define_uniq_tagged_files); mkid -fID $$unique 586 | tags: tags-am 587 | TAGS: tags 588 | 589 | tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 590 | set x; \ 591 | here=`pwd`; \ 592 | $(am__define_uniq_tagged_files); \ 593 | shift; \ 594 | if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ 595 | test -n "$$unique" || unique=$$empty_fix; \ 596 | if test $$# -gt 0; then \ 597 | $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ 598 | "$$@" $$unique; \ 599 | else \ 600 | $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ 601 | $$unique; \ 602 | fi; \ 603 | fi 604 | ctags: ctags-am 605 | 606 | CTAGS: ctags 607 | ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) 608 | $(am__define_uniq_tagged_files); \ 609 | test -z "$(CTAGS_ARGS)$$unique" \ 610 | || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ 611 | $$unique 612 | 613 | GTAGS: 614 | here=`$(am__cd) $(top_builddir) && pwd` \ 615 | && $(am__cd) $(top_srcdir) \ 616 | && gtags -i $(GTAGS_ARGS) "$$here" 617 | cscope: cscope.files 618 | test ! -s cscope.files \ 619 | || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) 620 | clean-cscope: 621 | -rm -f cscope.files 622 | cscope.files: clean-cscope cscopelist 623 | cscopelist: cscopelist-am 624 | 625 | cscopelist-am: $(am__tagged_files) 626 | list='$(am__tagged_files)'; \ 627 | case "$(srcdir)" in \ 628 | [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ 629 | *) sdir=$(subdir)/$(srcdir) ;; \ 630 | esac; \ 631 | for i in $$list; do \ 632 | if test -f "$$i"; then \ 633 | echo "$(subdir)/$$i"; \ 634 | else \ 635 | echo "$$sdir/$$i"; \ 636 | fi; \ 637 | done >> $(top_builddir)/cscope.files 638 | 639 | distclean-tags: 640 | -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags 641 | -rm -f cscope.out cscope.in.out cscope.po.out cscope.files 642 | 643 | distdir: $(DISTFILES) 644 | $(am__remove_distdir) 645 | test -d "$(distdir)" || mkdir "$(distdir)" 646 | @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ 647 | topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ 648 | list='$(DISTFILES)'; \ 649 | dist_files=`for file in $$list; do echo $$file; done | \ 650 | sed -e "s|^$$srcdirstrip/||;t" \ 651 | -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ 652 | case $$dist_files in \ 653 | */*) $(MKDIR_P) `echo "$$dist_files" | \ 654 | sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ 655 | sort -u` ;; \ 656 | esac; \ 657 | for file in $$dist_files; do \ 658 | if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ 659 | if test -d $$d/$$file; then \ 660 | dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ 661 | if test -d "$(distdir)/$$file"; then \ 662 | find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ 663 | fi; \ 664 | if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ 665 | cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ 666 | find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ 667 | fi; \ 668 | cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ 669 | else \ 670 | test -f "$(distdir)/$$file" \ 671 | || cp -p $$d/$$file "$(distdir)/$$file" \ 672 | || exit 1; \ 673 | fi; \ 674 | done 675 | -test -n "$(am__skip_mode_fix)" \ 676 | || find "$(distdir)" -type d ! -perm -755 \ 677 | -exec chmod u+rwx,go+rx {} \; -o \ 678 | ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ 679 | ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ 680 | ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ 681 | || chmod -R a+r "$(distdir)" 682 | dist-gzip: distdir 683 | tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz 684 | $(am__post_remove_distdir) 685 | 686 | dist-bzip2: distdir 687 | tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 688 | $(am__post_remove_distdir) 689 | 690 | dist-lzip: distdir 691 | tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz 692 | $(am__post_remove_distdir) 693 | 694 | dist-xz: distdir 695 | tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz 696 | $(am__post_remove_distdir) 697 | 698 | dist-tarZ: distdir 699 | tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z 700 | $(am__post_remove_distdir) 701 | 702 | dist-shar: distdir 703 | shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz 704 | $(am__post_remove_distdir) 705 | 706 | dist-zip: distdir 707 | -rm -f $(distdir).zip 708 | zip -rq $(distdir).zip $(distdir) 709 | $(am__post_remove_distdir) 710 | 711 | dist dist-all: 712 | $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' 713 | $(am__post_remove_distdir) 714 | 715 | # This target untars the dist file and tries a VPATH configuration. Then 716 | # it guarantees that the distribution is self-contained by making another 717 | # tarfile. 718 | distcheck: dist 719 | case '$(DIST_ARCHIVES)' in \ 720 | *.tar.gz*) \ 721 | GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ 722 | *.tar.bz2*) \ 723 | bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ 724 | *.tar.lz*) \ 725 | lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ 726 | *.tar.xz*) \ 727 | xz -dc $(distdir).tar.xz | $(am__untar) ;;\ 728 | *.tar.Z*) \ 729 | uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ 730 | *.shar.gz*) \ 731 | GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ 732 | *.zip*) \ 733 | unzip $(distdir).zip ;;\ 734 | esac 735 | chmod -R a-w $(distdir) 736 | chmod u+w $(distdir) 737 | mkdir $(distdir)/_build $(distdir)/_inst 738 | chmod a-w $(distdir) 739 | test -d $(distdir)/_build || exit 0; \ 740 | dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ 741 | && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ 742 | && am__cwd=`pwd` \ 743 | && $(am__cd) $(distdir)/_build \ 744 | && ../configure --srcdir=.. --prefix="$$dc_install_base" \ 745 | $(AM_DISTCHECK_CONFIGURE_FLAGS) \ 746 | $(DISTCHECK_CONFIGURE_FLAGS) \ 747 | && $(MAKE) $(AM_MAKEFLAGS) \ 748 | && $(MAKE) $(AM_MAKEFLAGS) dvi \ 749 | && $(MAKE) $(AM_MAKEFLAGS) check \ 750 | && $(MAKE) $(AM_MAKEFLAGS) install \ 751 | && $(MAKE) $(AM_MAKEFLAGS) installcheck \ 752 | && $(MAKE) $(AM_MAKEFLAGS) uninstall \ 753 | && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ 754 | distuninstallcheck \ 755 | && chmod -R a-w "$$dc_install_base" \ 756 | && ({ \ 757 | (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ 758 | && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ 759 | && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ 760 | && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ 761 | distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ 762 | } || { rm -rf "$$dc_destdir"; exit 1; }) \ 763 | && rm -rf "$$dc_destdir" \ 764 | && $(MAKE) $(AM_MAKEFLAGS) dist \ 765 | && rm -rf $(DIST_ARCHIVES) \ 766 | && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ 767 | && cd "$$am__cwd" \ 768 | || exit 1 769 | $(am__post_remove_distdir) 770 | @(echo "$(distdir) archives ready for distribution: "; \ 771 | list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ 772 | sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' 773 | distuninstallcheck: 774 | @test -n '$(distuninstallcheck_dir)' || { \ 775 | echo 'ERROR: trying to run $@ with an empty' \ 776 | '$$(distuninstallcheck_dir)' >&2; \ 777 | exit 1; \ 778 | }; \ 779 | $(am__cd) '$(distuninstallcheck_dir)' || { \ 780 | echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ 781 | exit 1; \ 782 | }; \ 783 | test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ 784 | || { echo "ERROR: files left after uninstall:" ; \ 785 | if test -n "$(DESTDIR)"; then \ 786 | echo " (check DESTDIR support)"; \ 787 | fi ; \ 788 | $(distuninstallcheck_listfiles) ; \ 789 | exit 1; } >&2 790 | distcleancheck: distclean 791 | @if test '$(srcdir)' = . ; then \ 792 | echo "ERROR: distcleancheck can only run from a VPATH build" ; \ 793 | exit 1 ; \ 794 | fi 795 | @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ 796 | || { echo "ERROR: files left in build directory after distclean:" ; \ 797 | $(distcleancheck_listfiles) ; \ 798 | exit 1; } >&2 799 | check-am: all-am 800 | check: check-am 801 | all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) 802 | installdirs: 803 | for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(xmldir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"; do \ 804 | test -z "$$dir" || $(MKDIR_P) "$$dir"; \ 805 | done 806 | install: install-am 807 | install-exec: install-exec-am 808 | install-data: install-data-am 809 | uninstall: uninstall-am 810 | 811 | install-am: all-am 812 | @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am 813 | 814 | installcheck: installcheck-am 815 | install-strip: 816 | if test -z '$(STRIP)'; then \ 817 | $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ 818 | install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ 819 | install; \ 820 | else \ 821 | $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ 822 | install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ 823 | "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ 824 | fi 825 | mostlyclean-generic: 826 | 827 | clean-generic: 828 | 829 | distclean-generic: 830 | -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) 831 | -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) 832 | -rm -f libhackrf/src/$(DEPDIR)/$(am__dirstamp) 833 | -rm -f libhackrf/src/$(am__dirstamp) 834 | 835 | maintainer-clean-generic: 836 | @echo "This command is intended for maintainers to use" 837 | @echo "it deletes files that may require special tools to rebuild." 838 | clean: clean-am 839 | 840 | clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ 841 | mostlyclean-am 842 | 843 | distclean: distclean-am 844 | -rm -f $(am__CONFIG_DISTCLEAN_FILES) 845 | -rm -rf libhackrf/src/$(DEPDIR) 846 | -rm -f Makefile 847 | distclean-am: clean-am distclean-compile distclean-generic \ 848 | distclean-libtool distclean-local distclean-tags 849 | 850 | dvi: dvi-am 851 | 852 | dvi-am: 853 | 854 | html: html-am 855 | 856 | html-am: 857 | 858 | info: info-am 859 | 860 | info-am: 861 | 862 | install-data-am: install-dist_xmlDATA install-includeHEADERS \ 863 | install-pkgconfigDATA 864 | 865 | install-dvi: install-dvi-am 866 | 867 | install-dvi-am: 868 | 869 | install-exec-am: install-libLTLIBRARIES 870 | 871 | install-html: install-html-am 872 | 873 | install-html-am: 874 | 875 | install-info: install-info-am 876 | 877 | install-info-am: 878 | 879 | install-man: 880 | 881 | install-pdf: install-pdf-am 882 | 883 | install-pdf-am: 884 | 885 | install-ps: install-ps-am 886 | 887 | install-ps-am: 888 | 889 | installcheck-am: 890 | 891 | maintainer-clean: maintainer-clean-am 892 | -rm -f $(am__CONFIG_DISTCLEAN_FILES) 893 | -rm -rf $(top_srcdir)/autom4te.cache 894 | -rm -rf libhackrf/src/$(DEPDIR) 895 | -rm -f Makefile 896 | maintainer-clean-am: distclean-am maintainer-clean-generic 897 | 898 | mostlyclean: mostlyclean-am 899 | 900 | mostlyclean-am: mostlyclean-compile mostlyclean-generic \ 901 | mostlyclean-libtool 902 | 903 | pdf: pdf-am 904 | 905 | pdf-am: 906 | 907 | ps: ps-am 908 | 909 | ps-am: 910 | 911 | uninstall-am: uninstall-dist_xmlDATA uninstall-includeHEADERS \ 912 | uninstall-libLTLIBRARIES uninstall-pkgconfigDATA 913 | 914 | .MAKE: install-am install-strip 915 | 916 | .PHONY: CTAGS GTAGS TAGS all all-am am--refresh check check-am clean \ 917 | clean-cscope clean-generic clean-libLTLIBRARIES clean-libtool \ 918 | cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ 919 | dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ 920 | distcheck distclean distclean-compile distclean-generic \ 921 | distclean-libtool distclean-local distclean-tags \ 922 | distcleancheck distdir distuninstallcheck dvi dvi-am html \ 923 | html-am info info-am install install-am install-data \ 924 | install-data-am install-dist_xmlDATA install-dvi \ 925 | install-dvi-am install-exec install-exec-am install-html \ 926 | install-html-am install-includeHEADERS install-info \ 927 | install-info-am install-libLTLIBRARIES install-man install-pdf \ 928 | install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ 929 | install-strip installcheck installcheck-am installdirs \ 930 | maintainer-clean maintainer-clean-generic mostlyclean \ 931 | mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ 932 | pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ 933 | uninstall-dist_xmlDATA uninstall-includeHEADERS \ 934 | uninstall-libLTLIBRARIES uninstall-pkgconfigDATA 935 | 936 | 937 | distclean-local: 938 | rm -rf autom4te.cache 939 | rm -rf m4 940 | rm -f aclocal.m4 941 | rm -f config.* 942 | rm -f configure 943 | rm -f depcomp 944 | rm -f install-sh 945 | rm -f ltmain.sh 946 | rm -f Makefile.in 947 | rm -f missing 948 | 949 | redhawk_HEADERS_auto ?= $(filter include/%,$(redhawk_SOURCES_auto)) 950 | 951 | # Tell versions [3.59,3.63) of GNU make to not export all variables. 952 | # Otherwise a system limit (for SysV at least) may be exceeded. 953 | .NOEXPORT: 954 | -------------------------------------------------------------------------------- /sdr/libraries/captivation.libhackrf/cpp/Makefile.am: -------------------------------------------------------------------------------- 1 | ACLOCAL_AMFLAGS = -I m4 -I${OSSIEHOME}/share/aclocal/ossie 2 | AUTOMAKE_OPTIONS = subdir-objects 3 | 4 | lib_LTLIBRARIES = libhackrf.la 5 | 6 | pkgconfigdir = $(libdir)/pkgconfig 7 | pkgconfig_DATA = captivation.libhackrf.pc 8 | 9 | xmldir = $(prefix) 10 | dist_xml_DATA = ../libhackrf.spd.xml 11 | 12 | distclean-local: 13 | rm -rf autom4te.cache 14 | rm -rf m4 15 | rm -f aclocal.m4 16 | rm -f config.* 17 | rm -f configure 18 | rm -f depcomp 19 | rm -f install-sh 20 | rm -f ltmain.sh 21 | rm -f Makefile.in 22 | rm -f missing 23 | 24 | # Sources, libraries and library directories are auto-included from a file 25 | # generated by the REDHAWK IDE. You can remove/modify the following lines if 26 | # you wish to manually control these options. 27 | include $(srcdir)/Makefile.am.ide 28 | libhackrf_la_SOURCES = $(redhawk_SOURCES_auto) 29 | libhackrf_la_LIBADD = $(SOFTPKG_LIBS) $(REDHAWK_LIBS) $(LIBUSB_LIBS) 30 | libhackrf_la_CPPFLAGS = -I $(srcdir)/include $(SOFTPKG_CFLAGS) $(REDHAWK_CFLAGS) $(LIBUSB_CFLAGS) $(BOOST_CPPFLAGS) 31 | libhackrf_la_CXXFLAGS = -Wall 32 | 33 | redhawk_HEADERS_auto ?= $(filter include/%,$(redhawk_SOURCES_auto)) 34 | include_HEADERS = $(redhawk_HEADERS_auto) 35 | -------------------------------------------------------------------------------- /sdr/libraries/captivation.libhackrf/cpp/Makefile.am.ide: -------------------------------------------------------------------------------- 1 | # This file is regularly auto-generated by the REDHAWK IDE. Do not modify! 2 | # Files can be excluded by right-clicking on the file in the project explorer 3 | # and choosing Resource Configurations -> Exclude from build. Re-include files 4 | # by opening the Properties dialog of your project and choosing C/C++ Build -> 5 | # Tool Chain Editor, and un-checking "Exclude resource from build " 6 | redhawk_SOURCES_auto = libhackrf/src/hackrf.c 7 | redhawk_SOURCES_auto += libhackrf/src/hackrf.h 8 | -------------------------------------------------------------------------------- /sdr/libraries/captivation.libhackrf/cpp/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Create the Makefile if necessary 4 | if [ ! -e Makefile ]; then 5 | ./reconf 6 | ./configure 7 | fi 8 | 9 | if [ $# == 1 ]; then 10 | if [ $1 == 'clean' ]; then 11 | make distclean 12 | else 13 | make -j $* 14 | fi 15 | else 16 | make -j $* 17 | fi 18 | 19 | exit $? 20 | -------------------------------------------------------------------------------- /sdr/libraries/captivation.libhackrf/cpp/captivation.libhackrf.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | includedir=@includedir@ 5 | 6 | Name: captivation.libhackrf 7 | Description: HackRF library wrapped for REDHAWK 8 | Version: @VERSION@ 9 | Cflags: -I${includedir} -I${includedir}/libhackrf -I/usr/include/libusb-1.0 10 | Libs: -L${libdir} -lhackrf 11 | Libs.private: 12 | -------------------------------------------------------------------------------- /sdr/libraries/captivation.libhackrf/cpp/configure.ac: -------------------------------------------------------------------------------- 1 | AC_INIT(captivation.libhackrf, 1.0.0) 2 | AM_INIT_AUTOMAKE([nostdinc foreign]) 3 | AC_CONFIG_MACRO_DIR([m4]) 4 | 5 | AC_PROG_CC 6 | AC_PROG_CXX 7 | AC_PROG_INSTALL 8 | LT_INIT([disable-static]) 9 | 10 | AC_CORBA_ORB 11 | OSSIE_CHECK_OSSIE 12 | RH_SOFTPKG_PREFIX([captivation.libhackrf],[cpp]) 13 | 14 | m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) 15 | 16 | # Dependencies 17 | PKG_CHECK_MODULES([REDHAWK], [ossie >= 2.0]) 18 | PKG_CHECK_MODULES([LIBUSB], [libusb-1.0 >= 0.27.1]) 19 | OSSIE_ENABLE_LOG4CXX 20 | AX_BOOST_BASE([1.41]) 21 | AX_BOOST_SYSTEM 22 | AX_BOOST_THREAD 23 | AX_BOOST_REGEX 24 | 25 | AC_CONFIG_FILES([Makefile captivation.libhackrf.pc]) 26 | AC_OUTPUT 27 | -------------------------------------------------------------------------------- /sdr/libraries/captivation.libhackrf/cpp/libhackrf/53-hackrf.rules: -------------------------------------------------------------------------------- 1 | ATTR{idVendor}=="1d50", ATTR{idProduct}=="604b", SYMLINK+="hackrf-jawbreaker-%k", MODE="660", GROUP="plugdev" 2 | ATTR{idVendor}=="1d50", ATTR{idProduct}=="6089", SYMLINK+="hackrf-one-%k", MODE="660", GROUP="plugdev" 3 | ATTR{idVendor}=="1d50", ATTR{idProduct}=="cc15", SYMLINK+="rad1o-%k", MODE="660", GROUP="plugdev" 4 | ATTR{idVendor}=="1fc9", ATTR{idProduct}=="000c", SYMLINK+="nxp-dfu-%k", MODE="660", GROUP="plugdev" 5 | -------------------------------------------------------------------------------- /sdr/libraries/captivation.libhackrf/cpp/libhackrf/53-hackrf.rules.in: -------------------------------------------------------------------------------- 1 | # HackRF Jawbreaker 2 | ATTR{idVendor}=="1d50", ATTR{idProduct}=="604b", SYMLINK+="hackrf-jawbreaker-%k", MODE="660", GROUP="@HACKRF_GROUP@" 3 | # HackRF One 4 | ATTR{idVendor}=="1d50", ATTR{idProduct}=="6089", SYMLINK+="hackrf-one-%k", MODE="660", GROUP="@HACKRF_GROUP@" 5 | # rad1o 6 | ATTR{idVendor}=="1d50", ATTR{idProduct}=="cc15", SYMLINK+="rad1o-%k", MODE="660", GROUP="@HACKRF_GROUP@" 7 | # NXP Semiconductors DFU mode (HackRF and rad1o) 8 | ATTR{idVendor}=="1fc9", ATTR{idProduct}=="000c", SYMLINK+="nxp-dfu-%k", MODE="660", GROUP="@HACKRF_GROUP@" 9 | # rad1o "full flash" mode 10 | KERNEL=="sd?", SUBSYSTEM=="block", ENV{ID_VENDOR_ID}=="1fc9", ENV{ID_MODEL_ID}=="0042", SYMLINK+="rad1o-flash-%k", MODE="660", GROUP="@HACKRF_GROUP@" 11 | # rad1o flash disk 12 | KERNEL=="sd?", SUBSYSTEM=="block", ENV{ID_VENDOR_ID}=="1fc9", ENV{ID_MODEL_ID}=="0082", SYMLINK+="rad1o-msc-%k", MODE="660", GROUP="@HACKRF_GROUP@" 13 | # 14 | -------------------------------------------------------------------------------- /sdr/libraries/captivation.libhackrf/cpp/libhackrf/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright 2012 Jared Boone 2 | # Copyright 2013 Benjamin Vernoux 3 | # 4 | # This file is part of HackRF. 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 2, or (at your option) 9 | # any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program; see the file COPYING. If not, write to 18 | # the Free Software Foundation, Inc., 51 Franklin Street, 19 | # Boston, MA 02110-1301, USA. 20 | # 21 | 22 | # Based heavily upon the libftdi cmake setup. 23 | 24 | cmake_minimum_required(VERSION 2.8) 25 | project(libhackrf C) 26 | set(MAJOR_VERSION 0) 27 | set(MINOR_VERSION 5) 28 | set(PACKAGE libhackrf) 29 | set(VERSION_STRING ${MAJOR_VERSION}.${MINOR_VERSION}) 30 | set(VERSION ${VERSION_STRING}) 31 | add_definitions(-DLIBRARY_VERSION="${VERSION_STRING}") 32 | include(${PROJECT_SOURCE_DIR}/../cmake/set_release.cmake) 33 | add_definitions(-DLIBRARY_RELEASE="${RELEASE}") 34 | set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/../cmake/modules) 35 | 36 | if(MSVC) 37 | set(THREADS_USE_PTHREADS_WIN32 true) 38 | else() 39 | add_definitions(-Wall) 40 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu90") 41 | 42 | INCLUDE(TestBigEndian) 43 | TEST_BIG_ENDIAN(BIGENDIAN) 44 | if(${BIGENDIAN}) 45 | add_definitions(-DHACKRF_BIG_ENDIAN) 46 | endif(${BIGENDIAN}) 47 | endif() 48 | find_package(USB1 REQUIRED) 49 | find_package(Threads REQUIRED) 50 | 51 | include_directories(${LIBUSB_INCLUDE_DIR} ${THREADS_PTHREADS_INCLUDE_DIR}) 52 | 53 | add_subdirectory(src) 54 | 55 | ######################################################################## 56 | # Create Pkg Config File 57 | ######################################################################## 58 | FOREACH(inc ${LIBUSB_INCLUDE_DIR}) 59 | LIST(APPEND HACKRF_PC_CFLAGS "-I${inc}") 60 | ENDFOREACH(inc) 61 | 62 | # use space-separation format for the pc file 63 | STRING(REPLACE ";" " " HACKRF_PC_CFLAGS "${HACKRF_PC_CFLAGS}") 64 | STRING(REPLACE ";" " " HACKRF_PC_LIBS "${HACKRF_PC_LIBS}") 65 | 66 | # unset these vars to avoid hard-coded paths to cross environment 67 | IF(CMAKE_CROSSCOMPILING) 68 | UNSET(HACKRF_PC_CFLAGS) 69 | UNSET(HACKRF_PC_LIBS) 70 | ENDIF(CMAKE_CROSSCOMPILING) 71 | 72 | set(prefix ${CMAKE_INSTALL_PREFIX}) 73 | set(exec_prefix \${prefix}) 74 | set(libdir \${exec_prefix}/lib${LIB_SUFFIX}) 75 | set(includedir \${prefix}/include) 76 | set(libpkgdata lib${LIB_SUFFIX}) 77 | 78 | if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") 79 | set(libpkgdata "libdata") 80 | endif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") 81 | 82 | CONFIGURE_FILE( 83 | ${CMAKE_CURRENT_SOURCE_DIR}/libhackrf.pc.in 84 | ${CMAKE_CURRENT_BINARY_DIR}/libhackrf.pc 85 | @ONLY) 86 | 87 | INSTALL( 88 | FILES ${CMAKE_CURRENT_BINARY_DIR}/libhackrf.pc 89 | DESTINATION ${libpkgdata}/pkgconfig 90 | ) 91 | 92 | ######################################################################## 93 | # Create Pkg Config File 94 | ######################################################################## 95 | 96 | if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") 97 | SET(SYSTEM_IS_LINUX TRUE) 98 | SET(UDEV_OPTION_DEFAULT ON) 99 | else() 100 | SET(SYSTEM_IS_LINUX FALSE) 101 | SET(UDEV_OPTION_DEFAULT OFF) 102 | endif() 103 | 104 | option(INSTALL_UDEV_RULES 105 | "Install udev rules for the HackRF" 106 | ${UDEV_OPTION_DEFAULT} 107 | ) 108 | 109 | set(UDEV_RULES_PATH 110 | "/etc/udev/rules.d" 111 | CACHE STRING 112 | "Target directory for udev rule installation. Ensure you have permissions to write to this directory." 113 | ) 114 | 115 | if(SYSTEM_IS_LINUX) 116 | if(INSTALL_UDEV_RULES) 117 | if(NOT DEFINED UDEV_RULES_GROUP) 118 | foreach(group usb plugdev) 119 | execute_process(COMMAND "getent" group "${group}" 120 | RESULT_VARIABLE _GETENT_RESULT 121 | OUTPUT_QUIET 122 | ERROR_QUIET) 123 | if(NOT _GETENT_RESULT) 124 | message(STATUS "Setting udev rule group to - ${group}") 125 | set(UDEV_RULES_GROUP ${group}) 126 | break() 127 | endif(NOT _GETENT_RESULT) 128 | endforeach(group) 129 | endif(NOT DEFINED UDEV_RULES_GROUP) 130 | if(DEFINED UDEV_RULES_GROUP) 131 | set(HACKRF_GROUP "${UDEV_RULES_GROUP}" 132 | CACHE STRING "Group to associate HackRF devices with in udev rules") 133 | configure_file(${CMAKE_CURRENT_SOURCE_DIR}/53-hackrf.rules.in 134 | ${CMAKE_CURRENT_BINARY_DIR}/53-hackrf.rules 135 | @ONLY 136 | ) 137 | message(STATUS "HackRF udev rules will be installed to '${UDEV_RULES_PATH}' upon running 'make install'") 138 | install(FILES ${CMAKE_CURRENT_BINARY_DIR}/53-hackrf.rules 139 | DESTINATION ${UDEV_RULES_PATH} 140 | COMPONENT "udev_rules") 141 | else(UDEV_RULES_GROUP) 142 | message(STATUS "HackRF udev rules will not be installed because no suitable group was found") 143 | message(STATUS "A group can be specified with -DUDEV_RULES_GROUP=") 144 | endif(DEFINED UDEV_RULES_GROUP) 145 | else(INSTALL_UDEV_RULES) 146 | message(STATUS 147 | "HackRF udev rules will not be installed because INSTALL_UDEV_RULES=OFF" 148 | ) 149 | endif(INSTALL_UDEV_RULES) 150 | else(SYSTEM_IS_LINUX) 151 | if(INSTALL_UDEV_RULES) 152 | message(STATUS "udev rules not supported on this platform. Hide this message via -DINSTALL_UDEV_RULES=Off") 153 | endif(INSTALL_UDEV_RULES) 154 | endif(SYSTEM_IS_LINUX) 155 | 156 | ######################################################################## 157 | # Create uninstall target 158 | ######################################################################## 159 | if(NOT HackRF_SOURCE_DIR) 160 | configure_file( 161 | ${PROJECT_SOURCE_DIR}/../cmake/cmake_uninstall.cmake.in 162 | ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake 163 | @ONLY) 164 | 165 | add_custom_target(uninstall 166 | ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake 167 | ) 168 | endif() 169 | -------------------------------------------------------------------------------- /sdr/libraries/captivation.libhackrf/cpp/libhackrf/libhackrf.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | includedir=@includedir@ 5 | 6 | Name: HackRF Library 7 | Description: C Utility Library 8 | Version: @VERSION@ 9 | Cflags: -I${includedir} -I${includedir}/libhackrf -I/usr/include/libusb-1.0 10 | Libs: -L${libdir} -lhackrf 11 | -------------------------------------------------------------------------------- /sdr/libraries/captivation.libhackrf/cpp/libhackrf/src/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2012, Jared Boone 3 | # Copyright (c) 2013, Benjamin Vernoux 4 | # Copyright (c) 2013, Michael Ossmann 5 | # 6 | # All rights reserved. 7 | # 8 | # Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 9 | # 10 | # Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 11 | # Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # Neither the name of Great Scott Gadgets nor the names of its contributors may be used to endorse or promote products derived from this software 14 | # without specific prior written permission. 15 | # 16 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 17 | # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 18 | # IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 19 | # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20 | # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 21 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 22 | # 23 | # Based heavily upon the libftdi cmake setup. 24 | 25 | # Targets 26 | set(c_sources ${CMAKE_CURRENT_SOURCE_DIR}/hackrf.c CACHE INTERNAL "List of C sources") 27 | set(c_headers ${CMAKE_CURRENT_SOURCE_DIR}/hackrf.h CACHE INTERNAL "List of C headers") 28 | 29 | # Dynamic library 30 | add_library(hackrf SHARED ${c_sources}) 31 | set_target_properties(hackrf PROPERTIES VERSION ${MAJOR_VERSION}.${MINOR_VERSION}.0 SOVERSION 0) 32 | 33 | # Static library 34 | add_library(hackrf-static STATIC ${c_sources}) 35 | if(MSVC) 36 | set_target_properties(hackrf-static PROPERTIES OUTPUT_NAME "hackrf_static") 37 | else() 38 | set_target_properties(hackrf-static PROPERTIES OUTPUT_NAME "hackrf") 39 | endif() 40 | 41 | set_target_properties(hackrf PROPERTIES CLEAN_DIRECT_OUTPUT 1) 42 | set_target_properties(hackrf-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) 43 | 44 | # Dependencies 45 | target_link_libraries(hackrf ${LIBUSB_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}) 46 | 47 | # For cygwin just force UNIX OFF and WIN32 ON 48 | if( ${CYGWIN} ) 49 | SET(UNIX OFF) 50 | SET(WIN32 ON) 51 | endif( ${CYGWIN} ) 52 | 53 | if( ${UNIX} ) 54 | install(TARGETS hackrf 55 | LIBRARY DESTINATION lib${LIB_SUFFIX} 56 | COMPONENT sharedlibs 57 | ) 58 | install(TARGETS hackrf-static 59 | ARCHIVE DESTINATION lib${LIB_SUFFIX} 60 | COMPONENT staticlibs 61 | ) 62 | install(FILES ${c_headers} 63 | DESTINATION include/${PROJECT_NAME} 64 | COMPONENT headers 65 | ) 66 | endif( ${UNIX} ) 67 | 68 | if( ${WIN32} ) 69 | install(TARGETS hackrf 70 | DESTINATION bin 71 | COMPONENT sharedlibs 72 | ) 73 | install(TARGETS hackrf-static 74 | DESTINATION bin 75 | COMPONENT staticlibs 76 | ) 77 | install(FILES ${c_headers} 78 | DESTINATION include/${PROJECT_NAME} 79 | COMPONENT headers 80 | ) 81 | endif( ${WIN32} ) 82 | -------------------------------------------------------------------------------- /sdr/libraries/captivation.libhackrf/cpp/libhackrf/src/hackrf.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2012, Jared Boone 3 | Copyright (c) 2013, Benjamin Vernoux 4 | Copyright (c) 2013, Michael Ossmann 5 | 6 | All rights reserved. 7 | 8 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 9 | 10 | Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 11 | Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | Neither the name of Great Scott Gadgets nor the names of its contributors may be used to endorse or promote products derived from this software 14 | without specific prior written permission. 15 | 16 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 17 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 18 | IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 19 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20 | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 21 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 22 | */ 23 | 24 | #ifndef __HACKRF_H__ 25 | #define __HACKRF_H__ 26 | 27 | #include 28 | 29 | #ifdef _WIN32 30 | #define ADD_EXPORTS 31 | 32 | /* You should define ADD_EXPORTS *only* when building the DLL. */ 33 | #ifdef ADD_EXPORTS 34 | #define ADDAPI __declspec(dllexport) 35 | #else 36 | #define ADDAPI __declspec(dllimport) 37 | #endif 38 | 39 | /* Define calling convention in one place, for convenience. */ 40 | #define ADDCALL __cdecl 41 | 42 | #else /* _WIN32 not defined. */ 43 | 44 | /* Define with no value on non-Windows OSes. */ 45 | #define ADDAPI 46 | #define ADDCALL 47 | 48 | #endif 49 | 50 | #define SAMPLES_PER_BLOCK 8192 51 | #define BYTES_PER_BLOCK 16384 52 | #define MAX_SWEEP_RANGES 10 53 | 54 | enum hackrf_error { 55 | HACKRF_SUCCESS = 0, 56 | HACKRF_TRUE = 1, 57 | HACKRF_ERROR_INVALID_PARAM = -2, 58 | HACKRF_ERROR_NOT_FOUND = -5, 59 | HACKRF_ERROR_BUSY = -6, 60 | HACKRF_ERROR_NO_MEM = -11, 61 | HACKRF_ERROR_LIBUSB = -1000, 62 | HACKRF_ERROR_THREAD = -1001, 63 | HACKRF_ERROR_STREAMING_THREAD_ERR = -1002, 64 | HACKRF_ERROR_STREAMING_STOPPED = -1003, 65 | HACKRF_ERROR_STREAMING_EXIT_CALLED = -1004, 66 | HACKRF_ERROR_USB_API_VERSION = -1005, 67 | HACKRF_ERROR_OTHER = -9999, 68 | }; 69 | 70 | enum hackrf_board_id { 71 | BOARD_ID_JELLYBEAN = 0, 72 | BOARD_ID_JAWBREAKER = 1, 73 | BOARD_ID_HACKRF_ONE = 2, 74 | BOARD_ID_RAD1O = 3, 75 | BOARD_ID_INVALID = 0xFF, 76 | }; 77 | 78 | enum hackrf_usb_board_id { 79 | USB_BOARD_ID_JAWBREAKER = 0x604B, 80 | USB_BOARD_ID_HACKRF_ONE = 0x6089, 81 | USB_BOARD_ID_RAD1O = 0xCC15, 82 | USB_BOARD_ID_INVALID = 0xFFFF, 83 | }; 84 | 85 | enum rf_path_filter { 86 | RF_PATH_FILTER_BYPASS = 0, 87 | RF_PATH_FILTER_LOW_PASS = 1, 88 | RF_PATH_FILTER_HIGH_PASS = 2, 89 | }; 90 | 91 | enum operacake_ports { 92 | OPERACAKE_PA1 = 0, 93 | OPERACAKE_PA2 = 1, 94 | OPERACAKE_PA3 = 2, 95 | OPERACAKE_PA4 = 3, 96 | OPERACAKE_PB1 = 4, 97 | OPERACAKE_PB2 = 5, 98 | OPERACAKE_PB3 = 6, 99 | OPERACAKE_PB4 = 7, 100 | }; 101 | 102 | enum sweep_style { 103 | LINEAR = 0, 104 | INTERLEAVED = 1, 105 | }; 106 | 107 | typedef struct hackrf_device hackrf_device; 108 | 109 | typedef struct { 110 | hackrf_device* device; 111 | uint8_t* buffer; 112 | int buffer_length; 113 | int valid_length; 114 | void* rx_ctx; 115 | void* tx_ctx; 116 | } hackrf_transfer; 117 | 118 | typedef struct { 119 | uint32_t part_id[2]; 120 | uint32_t serial_no[4]; 121 | } read_partid_serialno_t; 122 | 123 | 124 | struct hackrf_device_list { 125 | char **serial_numbers; 126 | enum hackrf_usb_board_id *usb_board_ids; 127 | int *usb_device_index; 128 | int devicecount; 129 | 130 | void **usb_devices; 131 | int usb_devicecount; 132 | }; 133 | typedef struct hackrf_device_list hackrf_device_list_t; 134 | 135 | typedef int (*hackrf_sample_block_cb_fn)(hackrf_transfer* transfer); 136 | 137 | #ifdef __cplusplus 138 | extern "C" 139 | { 140 | #endif 141 | 142 | extern ADDAPI int ADDCALL hackrf_init(); 143 | extern ADDAPI int ADDCALL hackrf_exit(); 144 | 145 | extern ADDAPI const char* ADDCALL hackrf_library_version(); 146 | extern ADDAPI const char* ADDCALL hackrf_library_release(); 147 | 148 | extern ADDAPI hackrf_device_list_t* ADDCALL hackrf_device_list(); 149 | extern ADDAPI int ADDCALL hackrf_device_list_open(hackrf_device_list_t *list, int idx, hackrf_device** device); 150 | extern ADDAPI void ADDCALL hackrf_device_list_free(hackrf_device_list_t *list); 151 | 152 | extern ADDAPI int ADDCALL hackrf_open(hackrf_device** device); 153 | extern ADDAPI int ADDCALL hackrf_open_by_serial(const char* const desired_serial_number, hackrf_device** device); 154 | extern ADDAPI int ADDCALL hackrf_close(hackrf_device* device); 155 | 156 | extern ADDAPI int ADDCALL hackrf_start_rx(hackrf_device* device, hackrf_sample_block_cb_fn callback, void* rx_ctx); 157 | extern ADDAPI int ADDCALL hackrf_stop_rx(hackrf_device* device); 158 | 159 | extern ADDAPI int ADDCALL hackrf_start_tx(hackrf_device* device, hackrf_sample_block_cb_fn callback, void* tx_ctx); 160 | extern ADDAPI int ADDCALL hackrf_stop_tx(hackrf_device* device); 161 | 162 | /* return HACKRF_TRUE if success */ 163 | extern ADDAPI int ADDCALL hackrf_is_streaming(hackrf_device* device); 164 | 165 | extern ADDAPI int ADDCALL hackrf_max2837_read(hackrf_device* device, uint8_t register_number, uint16_t* value); 166 | extern ADDAPI int ADDCALL hackrf_max2837_write(hackrf_device* device, uint8_t register_number, uint16_t value); 167 | 168 | extern ADDAPI int ADDCALL hackrf_si5351c_read(hackrf_device* device, uint16_t register_number, uint16_t* value); 169 | extern ADDAPI int ADDCALL hackrf_si5351c_write(hackrf_device* device, uint16_t register_number, uint16_t value); 170 | 171 | extern ADDAPI int ADDCALL hackrf_set_baseband_filter_bandwidth(hackrf_device* device, const uint32_t bandwidth_hz); 172 | 173 | extern ADDAPI int ADDCALL hackrf_rffc5071_read(hackrf_device* device, uint8_t register_number, uint16_t* value); 174 | extern ADDAPI int ADDCALL hackrf_rffc5071_write(hackrf_device* device, uint8_t register_number, uint16_t value); 175 | 176 | extern ADDAPI int ADDCALL hackrf_spiflash_erase(hackrf_device* device); 177 | extern ADDAPI int ADDCALL hackrf_spiflash_write(hackrf_device* device, const uint32_t address, const uint16_t length, unsigned char* const data); 178 | extern ADDAPI int ADDCALL hackrf_spiflash_read(hackrf_device* device, const uint32_t address, const uint16_t length, unsigned char* data); 179 | 180 | /* device will need to be reset after hackrf_cpld_write */ 181 | extern ADDAPI int ADDCALL hackrf_cpld_write(hackrf_device* device, 182 | unsigned char* const data, const unsigned int total_length); 183 | 184 | extern ADDAPI int ADDCALL hackrf_board_id_read(hackrf_device* device, uint8_t* value); 185 | extern ADDAPI int ADDCALL hackrf_version_string_read(hackrf_device* device, char* version, uint8_t length); 186 | extern ADDAPI int ADDCALL hackrf_usb_api_version_read(hackrf_device* device, uint16_t* version); 187 | 188 | extern ADDAPI int ADDCALL hackrf_set_freq(hackrf_device* device, const uint64_t freq_hz); 189 | extern ADDAPI int ADDCALL hackrf_set_freq_explicit(hackrf_device* device, 190 | const uint64_t if_freq_hz, const uint64_t lo_freq_hz, 191 | const enum rf_path_filter path); 192 | 193 | /* currently 8-20Mhz - either as a fraction, i.e. freq 20000000hz divider 2 -> 10Mhz or as plain old 10000000hz (double) 194 | preferred rates are 8, 10, 12.5, 16, 20Mhz due to less jitter */ 195 | extern ADDAPI int ADDCALL hackrf_set_sample_rate_manual(hackrf_device* device, const uint32_t freq_hz, const uint32_t divider); 196 | extern ADDAPI int ADDCALL hackrf_set_sample_rate(hackrf_device* device, const double freq_hz); 197 | 198 | /* external amp, bool on/off */ 199 | extern ADDAPI int ADDCALL hackrf_set_amp_enable(hackrf_device* device, const uint8_t value); 200 | 201 | extern ADDAPI int ADDCALL hackrf_board_partid_serialno_read(hackrf_device* device, read_partid_serialno_t* read_partid_serialno); 202 | 203 | /* range 0-40 step 8d, IF gain in osmosdr */ 204 | extern ADDAPI int ADDCALL hackrf_set_lna_gain(hackrf_device* device, uint32_t value); 205 | 206 | /* range 0-62 step 2db, BB gain in osmosdr */ 207 | extern ADDAPI int ADDCALL hackrf_set_vga_gain(hackrf_device* device, uint32_t value); 208 | 209 | /* range 0-47 step 1db */ 210 | extern ADDAPI int ADDCALL hackrf_set_txvga_gain(hackrf_device* device, uint32_t value); 211 | 212 | /* antenna port power control */ 213 | extern ADDAPI int ADDCALL hackrf_set_antenna_enable(hackrf_device* device, const uint8_t value); 214 | 215 | extern ADDAPI const char* ADDCALL hackrf_error_name(enum hackrf_error errcode); 216 | extern ADDAPI const char* ADDCALL hackrf_board_id_name(enum hackrf_board_id board_id); 217 | extern ADDAPI const char* ADDCALL hackrf_usb_board_id_name(enum hackrf_usb_board_id usb_board_id); 218 | extern ADDAPI const char* ADDCALL hackrf_filter_path_name(const enum rf_path_filter path); 219 | 220 | /* Compute nearest freq for bw filter (manual filter) */ 221 | extern ADDAPI uint32_t ADDCALL hackrf_compute_baseband_filter_bw_round_down_lt(const uint32_t bandwidth_hz); 222 | /* Compute best default value depending on sample rate (auto filter) */ 223 | extern ADDAPI uint32_t ADDCALL hackrf_compute_baseband_filter_bw(const uint32_t bandwidth_hz); 224 | 225 | /* All features below require USB API version 0x1002 or higher) */ 226 | 227 | /* set hardware sync mode */ 228 | extern ADDAPI int ADDCALL hackrf_set_hw_sync_mode(hackrf_device* device, const uint8_t value); 229 | 230 | /* Start sweep mode */ 231 | extern ADDAPI int ADDCALL hackrf_init_sweep(hackrf_device* device, 232 | const uint16_t* frequency_list, const int num_ranges, 233 | const uint32_t num_bytes, const uint32_t step_width, 234 | const uint32_t offset, const enum sweep_style style); 235 | 236 | /* Operacake functions */ 237 | extern ADDAPI int ADDCALL hackrf_get_operacake_boards(hackrf_device* device, uint8_t* boards); 238 | extern ADDAPI int ADDCALL hackrf_set_operacake_ports(hackrf_device* device, 239 | uint8_t address, 240 | uint8_t port_a, 241 | uint8_t port_b); 242 | 243 | extern ADDAPI int ADDCALL hackrf_reset(hackrf_device* device); 244 | 245 | extern ADDAPI int ADDCALL hackrf_set_operacake_ranges(hackrf_device* device, 246 | uint8_t* ranges, 247 | uint8_t num_ranges); 248 | 249 | #ifdef __cplusplus 250 | } // __cplusplus defined. 251 | #endif 252 | 253 | #endif /*__HACKRF_H__*/ 254 | -------------------------------------------------------------------------------- /sdr/libraries/captivation.libhackrf/cpp/reconf: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | rm -f config.cache 4 | [ -d m4 ] || mkdir m4 5 | autoreconf -i 6 | 7 | -------------------------------------------------------------------------------- /sdr/libraries/captivation.libhackrf/libhackrf.spd.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | The implementation contains descriptive information about the template for a software resource. 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /sdr/nodes/captivation.HackRFNode/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | captivation.HackRFNode 4 | 5 | 6 | 7 | 8 | 9 | gov.redhawk.ide.builders.scaproject 10 | 11 | 12 | 13 | 14 | 15 | gov.redhawk.ide.natures.scaproject 16 | gov.redhawk.ide.natures.sca.node 17 | 18 | 19 | -------------------------------------------------------------------------------- /sdr/nodes/captivation.HackRFNode/DeviceManager.dcd.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | HackRFOne_1 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /sdr/nodes/captivation.HackRFNode/DeviceManager.dcd_GDiagram: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |