mirror of
https://github.com/AlexandreRouma/SDRPlusPlus.git
synced 2025-01-24 00:34:44 +01:00
More fixes idk
This commit is contained in:
parent
0bc1bd8549
commit
4634c8187f
@ -33,7 +33,7 @@ else (MSVC)
|
|||||||
|
|
||||||
# Include it because for some reason pkgconfig doesn't look here?
|
# Include it because for some reason pkgconfig doesn't look here?
|
||||||
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||||
target_include_directories(airspy_source PUBLIC "/usr/local/include")
|
target_include_directories(airspyhf_source PUBLIC "/usr/local/include")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
endif ()
|
endif ()
|
||||||
|
@ -70,7 +70,7 @@ public:
|
|||||||
BladeRFSourceModule(std::string name) {
|
BladeRFSourceModule(std::string name) {
|
||||||
this->name = name;
|
this->name = name;
|
||||||
|
|
||||||
sampleRate = 768000.0;
|
sampleRate = 1000000.0;
|
||||||
|
|
||||||
handler.ctx = this;
|
handler.ctx = this;
|
||||||
handler.selectHandler = menuSelected;
|
handler.selectHandler = menuSelected;
|
||||||
@ -119,7 +119,8 @@ public:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < devCount; i++) {
|
for (int i = 0; i < devCount; i++) {
|
||||||
devListTxt += devInfoList[i].serial;
|
// Keep only the first 32 character of the serial number for display
|
||||||
|
devListTxt += std::string(devInfoList[i].serial).substr(0, 32);
|
||||||
devListTxt += '\0';
|
devListTxt += '\0';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -135,15 +136,14 @@ public:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Gather info about the BladeRF
|
// Gather info about the BladeRF's ranges
|
||||||
channelCount = bladerf_get_channel_count(openDev, BLADERF_RX);
|
channelCount = bladerf_get_channel_count(openDev, BLADERF_RX);
|
||||||
bladerf_get_sample_rate_range(openDev, BLADERF_CHANNEL_RX(0), &srRange);
|
bladerf_get_sample_rate_range(openDev, BLADERF_CHANNEL_RX(0), &srRange);
|
||||||
bladerf_get_bandwidth_range(openDev, BLADERF_CHANNEL_RX(0), &bwRange);
|
bladerf_get_bandwidth_range(openDev, BLADERF_CHANNEL_RX(0), &bwRange);
|
||||||
bladerf_get_gain_range(openDev, BLADERF_CHANNEL_RX(0), &gainRange);
|
bladerf_get_gain_range(openDev, BLADERF_CHANNEL_RX(0), &gainRange);
|
||||||
|
|
||||||
spdlog::warn("SR Range: {0}, {1}, {2}, {3}", srRange->min, srRange->max, srRange->step, srRange->scale);
|
srId = 1;
|
||||||
spdlog::warn("BW Range: {0}, {1}, {2}, {3}", bwRange->min, bwRange->max, bwRange->step, bwRange->scale);
|
sampleRate = sampleRates[1];
|
||||||
spdlog::warn("Gain Range: {0}, {1}, {2}, {3}", gainRange->min, gainRange->max, gainRange->step, gainRange->scale);
|
|
||||||
|
|
||||||
// TODO: Gen sample rate list automatically by detecting which version is selected
|
// TODO: Gen sample rate list automatically by detecting which version is selected
|
||||||
|
|
||||||
@ -191,28 +191,23 @@ private:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Calculate buffer size, must be a multiple of 1024
|
||||||
_this->bufferSize = _this->sampleRate / 200.0;
|
_this->bufferSize = _this->sampleRate / 200.0;
|
||||||
_this->bufferSize /= 1024;
|
_this->bufferSize /= 1024;
|
||||||
_this->bufferSize *= 1024;
|
_this->bufferSize *= 1024;
|
||||||
if (_this->bufferSize < 1024) { _this->bufferSize = 1024; }
|
if (_this->bufferSize < 1024) { _this->bufferSize = 1024; }
|
||||||
|
|
||||||
bladerf_sample_rate wantedSr = _this->sampleRate;
|
// Setup device parameters
|
||||||
bladerf_sample_rate actualSr;
|
bladerf_set_sample_rate(_this->openDev, BLADERF_CHANNEL_RX(0), _this->sampleRate, NULL);
|
||||||
bladerf_sample_rate actualBw;
|
|
||||||
bladerf_set_sample_rate(_this->openDev, BLADERF_CHANNEL_RX(0), wantedSr, &actualSr);
|
|
||||||
bladerf_set_frequency(_this->openDev, BLADERF_CHANNEL_RX(0), _this->freq);
|
bladerf_set_frequency(_this->openDev, BLADERF_CHANNEL_RX(0), _this->freq);
|
||||||
bladerf_set_bandwidth(_this->openDev, BLADERF_CHANNEL_RX(0), 56000000, &actualBw);
|
bladerf_set_bandwidth(_this->openDev, BLADERF_CHANNEL_RX(0), 56000000, NULL);
|
||||||
bladerf_set_gain_mode(_this->openDev, BLADERF_CHANNEL_RX(0), BLADERF_GAIN_MANUAL);
|
bladerf_set_gain_mode(_this->openDev, BLADERF_CHANNEL_RX(0), BLADERF_GAIN_MANUAL);
|
||||||
bladerf_set_gain(_this->openDev, BLADERF_CHANNEL_RX(0), _this->testGain);
|
bladerf_set_gain(_this->openDev, BLADERF_CHANNEL_RX(0), _this->testGain);
|
||||||
|
|
||||||
if (actualSr != wantedSr) {
|
|
||||||
spdlog::warn("Sample rate rejected: {0} vs {1}", actualSr, wantedSr);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Setup syncronous transfer
|
// Setup syncronous transfer
|
||||||
bladerf_sync_config(_this->openDev, BLADERF_RX_X1, BLADERF_FORMAT_SC16_Q11, 16, _this->bufferSize, 8, 3500);
|
bladerf_sync_config(_this->openDev, BLADERF_RX_X1, BLADERF_FORMAT_SC16_Q11, 16, _this->bufferSize, 8, 3500);
|
||||||
|
|
||||||
|
// Enable streaming
|
||||||
bladerf_enable_module(_this->openDev, BLADERF_CHANNEL_RX(0), true);
|
bladerf_enable_module(_this->openDev, BLADERF_CHANNEL_RX(0), true);
|
||||||
|
|
||||||
_this->running = true;
|
_this->running = true;
|
||||||
@ -229,11 +224,15 @@ private:
|
|||||||
_this->running = false;
|
_this->running = false;
|
||||||
_this->stream.stopWriter();
|
_this->stream.stopWriter();
|
||||||
|
|
||||||
|
// Disable streaming
|
||||||
bladerf_enable_module(_this->openDev, BLADERF_CHANNEL_RX(0), false);
|
bladerf_enable_module(_this->openDev, BLADERF_CHANNEL_RX(0), false);
|
||||||
|
|
||||||
|
// Wait for read worker to terminate
|
||||||
if (_this->workerThread.joinable()) {
|
if (_this->workerThread.joinable()) {
|
||||||
_this->workerThread.join();
|
_this->workerThread.join();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Close device
|
||||||
bladerf_close(_this->openDev);
|
bladerf_close(_this->openDev);
|
||||||
|
|
||||||
_this->stream.clearWriteStop();
|
_this->stream.clearWriteStop();
|
||||||
@ -294,12 +293,17 @@ private:
|
|||||||
void worker() {
|
void worker() {
|
||||||
int16_t* buffer = new int16_t[bufferSize * 2];
|
int16_t* buffer = new int16_t[bufferSize * 2];
|
||||||
bladerf_metadata meta;
|
bladerf_metadata meta;
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
|
// Receive from the stream and break on error
|
||||||
int ret = bladerf_sync_rx(openDev, buffer, bufferSize, &meta, 3500);
|
int ret = bladerf_sync_rx(openDev, buffer, bufferSize, &meta, 3500);
|
||||||
if (ret != 0) { printf("Error: %d\n", ret); break; }
|
if (ret != 0) { break; }
|
||||||
|
|
||||||
|
// Convert to complex float and swap buffers
|
||||||
volk_16i_s32f_convert_32f((float*)stream.writeBuf, buffer, 32768.0f, bufferSize * 2);
|
volk_16i_s32f_convert_32f((float*)stream.writeBuf, buffer, 32768.0f, bufferSize * 2);
|
||||||
if (!stream.swap(bufferSize)) { break; }
|
if (!stream.swap(bufferSize)) { break; }
|
||||||
}
|
}
|
||||||
|
|
||||||
delete[] buffer;
|
delete[] buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,10 +128,7 @@ private:
|
|||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
_this->reader->readSamples(inBuf, blockSize * 2 * sizeof(int16_t));
|
_this->reader->readSamples(inBuf, blockSize * 2 * sizeof(int16_t));
|
||||||
for (int i = 0; i < blockSize; i++) {
|
volk_16i_s32f_convert_32f((float*)_this->stream.writeBuf, inBuf, 32768.0f, blockSize * 2);
|
||||||
_this->stream.writeBuf[i].re = (float)inBuf[i * 2] / (float)0x7FFF;
|
|
||||||
_this->stream.writeBuf[i].im = (float)inBuf[(i * 2) + 1] / (float)0x7FFF;
|
|
||||||
}
|
|
||||||
if (!_this->stream.swap(blockSize)) { break; };
|
if (!_this->stream.swap(blockSize)) { break; };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user