aboutsummaryrefslogtreecommitdiffstats
path: root/Transceiver52M/DummyLoad.h
diff options
context:
space:
mode:
Diffstat (limited to 'Transceiver52M/DummyLoad.h')
-rw-r--r--Transceiver52M/DummyLoad.h132
1 files changed, 132 insertions, 0 deletions
diff --git a/Transceiver52M/DummyLoad.h b/Transceiver52M/DummyLoad.h
new file mode 100644
index 0000000..74a962d
--- /dev/null
+++ b/Transceiver52M/DummyLoad.h
@@ -0,0 +1,132 @@
+/*
+* Copyright 2008 Free Software Foundation, Inc.
+*
+* This software is distributed under the terms of the GNU Public License.
+* See the COPYING file in the main directory for details.
+*
+* This use of this software may be subject to additional restrictions.
+* See the LEGAL file in the main directory for details.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "radioDevice.h"
+
+
+#include <sys/time.h>
+#include <math.h>
+#include <string>
+#include <iostream>
+
+
+/** A class to handle a USRP rev 4, with a two RFX900 daughterboards */
+class DummyLoad: public RadioDevice {
+
+private:
+
+ double sampleRate; ///< the desired sampling rate
+ unsigned long long samplesRead; ///< number of samples read from USRP
+ unsigned long long samplesWritten; ///< number of samples sent to USRP
+
+ Mutex underrunLock;
+
+ struct timeval startTime, currTime;
+
+ TIMESTAMP currstamp;
+ short *dummyBurst;
+ int dummyBurstSz;
+ int dummyBurstCursor;
+ bool underrun;
+
+ void updateTime(void);
+
+ public:
+
+ /** Object constructor */
+ DummyLoad (double _desiredSampleRate);
+
+ int loadBurst(short *wDummyBurst, int len);
+
+ /** Instantiate the USRP */
+ bool make(bool skipRx = false);
+
+ /** Start the USRP */
+ bool start();
+
+ /** Stop the USRP */
+ bool stop();
+
+ /**
+ Read samples from the USRP.
+ @param buf preallocated buf to contain read result
+ @param len number of samples desired
+ @param overrun Set if read buffer has been overrun, e.g. data not being read fast enough
+ @param timestamp The timestamp of the first samples to be read
+ @param underrun Set if USRP does not have data to transmit, e.g. data not being sent fast enough
+ @param RSSI The received signal strength of the read result
+ @return The number of samples actually read
+ */
+ int readSamples(short *buf, int len, bool *overrun,
+ TIMESTAMP timestamp = 0xffffffff,
+ bool *underrun = NULL,
+ unsigned *RSSI = NULL);
+ /**
+ Write samples to the USRP.
+ @param buf Contains the data to be written.
+ @param len number of samples to write.
+ @param underrun Set if USRP does not have data to transmit, e.g. data not being sent fast enough
+ @param timestamp The timestamp of the first sample of the data buffer.
+ @param isControl Set if data is a control packet, e.g. a ping command
+ @return The number of samples actually written
+ */
+ int writeSamples(short *buf, int len, bool *underrun,
+ TIMESTAMP timestamp = 0xffffffff,
+ bool isControl = false);
+
+ /** Update the alignment between the read and write timestamps */
+ bool updateAlignment(TIMESTAMP timestamp);
+
+ /** Set the transmitter frequency */
+ bool setTxFreq(double wFreq);
+
+ /** Set the receiver frequency */
+ bool setRxFreq(double wFreq);
+
+ /** Returns the starting write Timestamp*/
+ TIMESTAMP initialWriteTimestamp(void) { return 20000;}
+
+ /** Returns the starting read Timestamp*/
+ TIMESTAMP initialReadTimestamp(void) { return 20000;}
+
+ /** returns the full-scale transmit amplitude **/
+ double fullScaleInputValue() {return 13500.0;}
+
+ /** returns the full-scale receive amplitude **/
+ double fullScaleOutputValue() {return 9450.0;}
+
+ /** Return internal status values */
+ inline double getTxFreq() { return 0;}
+ inline double getRxFreq() { return 0;}
+ inline double getSampleRate() {return sampleRate;}
+ inline double numberRead() { return samplesRead; }
+ inline double numberWritten() { return samplesWritten;}
+
+};
+