Add swap I/Q setting for all devices

This commit is contained in:
Charles J. Cliffe
2016-02-15 15:07:57 -05:00
parent 3f5ffc7aaa
commit 7bf0ad47c5
4 changed files with 37 additions and 16 deletions
+17 -8
View File
@@ -36,6 +36,7 @@ SDRThread::SDRThread() : IOThread(), buffers("SDRThreadBuffers") {
frequency_lock_init.store(false);
frequency_locked.store(false);
lock_freq.store(0);
iq_swap.store(false);
}
SDRThread::~SDRThread() {
@@ -194,15 +195,15 @@ void SDRThread::readStream(SDRThreadIQDataQueue* iqDataOutQueue) {
if (n_read > 0 && !terminated) {
SDRThreadIQData *dataOut = buffers.getBuffer();
// if (hasHardwareDC) {
if (iq_swap.load()) {
dataOut->data.resize(n_read);
for (int i = 0; i < n_read; i++) {
dataOut->data[i].imag = inpBuffer.data[i].real;
dataOut->data[i].real = inpBuffer.data[i].imag;
}
} else {
dataOut->data.assign(inpBuffer.data.begin(), inpBuffer.data.begin()+n_read);
// } else {
// if (dataOut->data.size() != n_read) {
// dataOut->data.resize(n_read);
// }
// iirfilt_crcf_execute_block(dcFilter, &inpBuffer.data[0], n_read, &dataOut->data[0]);
// }
}
dataOut->setRefCount(1);
dataOut->frequency = frequency.load();
@@ -484,6 +485,14 @@ bool SDRThread::getAGCMode() {
return agc_mode.load();
}
void SDRThread::setIQSwap(bool swap) {
iq_swap.store(swap);
}
bool SDRThread::getIQSwap() {
return iq_swap.load();
}
void SDRThread::setGain(std::string name, float value) {
gain_busy.lock();
gainValues[name] = value;
+4 -1
View File
@@ -76,6 +76,9 @@ public:
void setAGCMode(bool mode);
bool getAGCMode();
void setIQSwap(bool swap);
bool getIQSwap();
void setGain(std::string name, float value);
float getGain(std::string name);
@@ -108,7 +111,7 @@ protected:
std::atomic_int ppm, numElems, mtuElems, numChannels;
std::atomic_bool hasPPM, hasHardwareDC;
std::atomic_bool agc_mode, rate_changed, freq_changed, offset_changed,
ppm_changed, device_changed, agc_mode_changed, gain_value_changed, setting_value_changed, frequency_locked, frequency_lock_init;
ppm_changed, device_changed, agc_mode_changed, gain_value_changed, setting_value_changed, frequency_locked, frequency_lock_init, iq_swap;
std::mutex gain_busy;
std::map<std::string, float> gainValues;