mirror of
https://github.com/AlexandreRouma/SDRPlusPlus.git
synced 2025-02-02 21:04:45 +01:00
Bugfix
This commit is contained in:
parent
604a559b54
commit
2a6c742a51
1
.gitignore
vendored
1
.gitignore
vendored
@ -11,3 +11,4 @@ build/
|
|||||||
root_dev/
|
root_dev/
|
||||||
Folder.DotSettings.user
|
Folder.DotSettings.user
|
||||||
CMakeSettings.json
|
CMakeSettings.json
|
||||||
|
poggers_decoder
|
@ -32,9 +32,16 @@ void ConfigManager::load(json def, bool lock) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
std::ifstream file(path.c_str());
|
std::ifstream file(path.c_str());
|
||||||
file >> conf;
|
file >> conf;
|
||||||
file.close();
|
file.close();
|
||||||
|
}
|
||||||
|
catch (std::exception e) {
|
||||||
|
spdlog::error("Config file '{0}' is corrupted, resetting it", path);
|
||||||
|
conf = def;
|
||||||
|
save(false);
|
||||||
|
}
|
||||||
if (lock) { mtx.unlock(); }
|
if (lock) { mtx.unlock(); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ namespace dsp {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_in->flush();
|
_in->flush();
|
||||||
if (!out.swap(outCount)) { return -1; }
|
if (outCount > 0 && !out.swap(outCount)) { return -1; }
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -217,7 +217,7 @@ namespace dsp {
|
|||||||
memcpy(delay, &_in->readBuf[count - 7], 7 * sizeof(T));
|
memcpy(delay, &_in->readBuf[count - 7], 7 * sizeof(T));
|
||||||
|
|
||||||
_in->flush();
|
_in->flush();
|
||||||
if (!out.swap(outCount)) { return -1; }
|
if (outCount > 0 && !out.swap(outCount)) { return -1; }
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ namespace dsp {
|
|||||||
if (bitsRead >= _frameLen) {
|
if (bitsRead >= _frameLen) {
|
||||||
if (!out.swap((bitsRead / 8) + ((bitsRead % 8) > 0))) { return -1; }
|
if (!out.swap((bitsRead / 8) + ((bitsRead % 8) > 0))) { return -1; }
|
||||||
bitsRead = -1;
|
bitsRead = -1;
|
||||||
nextBitIsStartOfFrame = true;
|
if (allowSequential) { nextBitIsStartOfFrame = true; }
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
@ -106,6 +106,8 @@ namespace dsp {
|
|||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool allowSequential = true;
|
||||||
|
|
||||||
stream<uint8_t> out;
|
stream<uint8_t> out;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -396,6 +396,11 @@ namespace dsp {
|
|||||||
generic_hier_block<MSKDemod>::_block_init = true;
|
generic_hier_block<MSKDemod>::_block_init = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setInput(stream<complex_t>* input) {
|
||||||
|
assert((generic_hier_block<MSKDemod>::_block_init));
|
||||||
|
demod.setInput(input);
|
||||||
|
}
|
||||||
|
|
||||||
void setSampleRate(float sampleRate) {
|
void setSampleRate(float sampleRate) {
|
||||||
assert(generic_hier_block<MSKDemod>::_block_init);
|
assert(generic_hier_block<MSKDemod>::_block_init);
|
||||||
generic_hier_block<MSKDemod>::tempStop();
|
generic_hier_block<MSKDemod>::tempStop();
|
||||||
|
@ -1,9 +1,17 @@
|
|||||||
#include <gui/widgets/symbol_diagram.h>
|
#include <gui/widgets/symbol_diagram.h>
|
||||||
|
|
||||||
namespace ImGui {
|
namespace ImGui {
|
||||||
SymbolDiagram::SymbolDiagram(float scale) {
|
SymbolDiagram::SymbolDiagram(float scale, int count) {
|
||||||
_scale = scale;
|
_scale = scale;
|
||||||
memset(buffer, 0, 1024 * sizeof(float));
|
sampleCount = count;
|
||||||
|
|
||||||
|
buffer = new float[count];
|
||||||
|
|
||||||
|
memset(buffer, 0, sampleCount * sizeof(float));
|
||||||
|
}
|
||||||
|
|
||||||
|
SymbolDiagram::~SymbolDiagram() {
|
||||||
|
delete[] buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SymbolDiagram::draw(const ImVec2& size_arg) {
|
void SymbolDiagram::draw(const ImVec2& size_arg) {
|
||||||
@ -23,9 +31,9 @@ namespace ImGui {
|
|||||||
|
|
||||||
window->DrawList->AddRectFilled(min, ImVec2(min.x+size.x, min.y+size.y), IM_COL32(0,0,0,255));
|
window->DrawList->AddRectFilled(min, ImVec2(min.x+size.x, min.y+size.y), IM_COL32(0,0,0,255));
|
||||||
ImU32 col = ImGui::GetColorU32(ImGuiCol_CheckMark, 0.7f);
|
ImU32 col = ImGui::GetColorU32(ImGuiCol_CheckMark, 0.7f);
|
||||||
float increment = size.x / 1024.0f;
|
float increment = size.x / (float)sampleCount;
|
||||||
float val;
|
float val;
|
||||||
for (int i = 0; i < 1024; i++) {
|
for (int i = 0; i < sampleCount; i++) {
|
||||||
val = buffer[i] * _scale;
|
val = buffer[i] * _scale;
|
||||||
if (val > 1.0f || val < -1.0f) { continue; }
|
if (val > 1.0f || val < -1.0f) { continue; }
|
||||||
window->DrawList->AddCircleFilled(ImVec2(((float)i * increment) + min.x, ((val + 1) * (size.y*0.5f)) + min.y), 2, col);
|
window->DrawList->AddCircleFilled(ImVec2(((float)i * increment) + min.x, ((val + 1) * (size.y*0.5f)) + min.y), 2, col);
|
||||||
|
@ -8,7 +8,8 @@
|
|||||||
namespace ImGui {
|
namespace ImGui {
|
||||||
class SymbolDiagram {
|
class SymbolDiagram {
|
||||||
public:
|
public:
|
||||||
SymbolDiagram(float _scale = 1.0f);
|
SymbolDiagram(float _scale = 1.0f, int count = 1024);
|
||||||
|
~SymbolDiagram();
|
||||||
|
|
||||||
void draw(const ImVec2& size_arg = ImVec2(0, 0));
|
void draw(const ImVec2& size_arg = ImVec2(0, 0));
|
||||||
|
|
||||||
@ -18,8 +19,9 @@ namespace ImGui {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
std::mutex bufferMtx;
|
std::mutex bufferMtx;
|
||||||
float buffer[1024];
|
float* buffer;
|
||||||
float _scale;
|
float _scale;
|
||||||
|
int sampleCount = 0;
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
@ -682,6 +682,7 @@ namespace ImGui {
|
|||||||
|
|
||||||
if (waterfallVisible) {
|
if (waterfallVisible) {
|
||||||
FFTAreaHeight = std::min<int>(FFTAreaHeight, widgetSize.y - 50);
|
FFTAreaHeight = std::min<int>(FFTAreaHeight, widgetSize.y - 50);
|
||||||
|
newFFTAreaHeight = FFTAreaHeight;
|
||||||
fftHeight = FFTAreaHeight - 50;
|
fftHeight = FFTAreaHeight - 50;
|
||||||
waterfallHeight = widgetSize.y - fftHeight - 52;
|
waterfallHeight = widgetSize.y - fftHeight - 52;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user