Skip to content

Commit

Permalink
Bugfix
Browse files Browse the repository at this point in the history
  • Loading branch information
Ryzerth committed Aug 3, 2021
1 parent 604a559 commit 2a6c742
Show file tree
Hide file tree
Showing 8 changed files with 39 additions and 13 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,4 @@ build/
root_dev/
Folder.DotSettings.user
CMakeSettings.json
poggers_decoder
13 changes: 10 additions & 3 deletions core/src/config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,16 @@ void ConfigManager::load(json def, bool lock) {
return;
}

std::ifstream file(path.c_str());
file >> conf;
file.close();
try {
std::ifstream file(path.c_str());
file >> conf;
file.close();
}
catch (std::exception e) {
spdlog::error("Config file '{0}' is corrupted, resetting it", path);
conf = def;
save(false);
}
if (lock) { mtx.unlock(); }
}

Expand Down
4 changes: 2 additions & 2 deletions core/src/dsp/clock_recovery.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ namespace dsp {
}

_in->flush();
if (!out.swap(outCount)) { return -1; }
if (outCount > 0 && !out.swap(outCount)) { return -1; }
return count;
}

Expand Down Expand Up @@ -217,7 +217,7 @@ namespace dsp {
memcpy(delay, &_in->readBuf[count - 7], 7 * sizeof(T));

_in->flush();
if (!out.swap(outCount)) { return -1; }
if (outCount > 0 && !out.swap(outCount)) { return -1; }
return count;
}

Expand Down
6 changes: 4 additions & 2 deletions core/src/dsp/deframing.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ namespace dsp {
if (bitsRead >= _frameLen) {
if (!out.swap((bitsRead / 8) + ((bitsRead % 8) > 0))) { return -1; }
bitsRead = -1;
nextBitIsStartOfFrame = true;
if (allowSequential) { nextBitIsStartOfFrame = true; }
}

continue;
Expand Down Expand Up @@ -100,12 +100,14 @@ namespace dsp {
memcpy(buffer, &_in->readBuf[count - _syncLen], _syncLen);

//printf("Block processed\n");
callcount++;
callcount++;

_in->flush();
return count;
}

bool allowSequential = true;

stream<uint8_t> out;

private:
Expand Down
5 changes: 5 additions & 0 deletions core/src/dsp/demodulator.h
Original file line number Diff line number Diff line change
Expand Up @@ -396,6 +396,11 @@ namespace dsp {
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) {
assert(generic_hier_block<MSKDemod>::_block_init);
generic_hier_block<MSKDemod>::tempStop();
Expand Down
16 changes: 12 additions & 4 deletions core/src/gui/widgets/symbol_diagram.cpp
Original file line number Diff line number Diff line change
@@ -1,9 +1,17 @@
#include <gui/widgets/symbol_diagram.h>

namespace ImGui {
SymbolDiagram::SymbolDiagram(float scale) {
SymbolDiagram::SymbolDiagram(float scale, int count) {
_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) {
Expand All @@ -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));
ImU32 col = ImGui::GetColorU32(ImGuiCol_CheckMark, 0.7f);
float increment = size.x / 1024.0f;
float increment = size.x / (float)sampleCount;
float val;
for (int i = 0; i < 1024; i++) {
for (int i = 0; i < sampleCount; i++) {
val = buffer[i] * _scale;
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);
Expand Down
6 changes: 4 additions & 2 deletions core/src/gui/widgets/symbol_diagram.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
namespace ImGui {
class SymbolDiagram {
public:
SymbolDiagram(float _scale = 1.0f);
SymbolDiagram(float _scale = 1.0f, int count = 1024);
~SymbolDiagram();

void draw(const ImVec2& size_arg = ImVec2(0, 0));

Expand All @@ -18,8 +19,9 @@ namespace ImGui {

private:
std::mutex bufferMtx;
float buffer[1024];
float* buffer;
float _scale;
int sampleCount = 0;

};
}
1 change: 1 addition & 0 deletions core/src/gui/widgets/waterfall.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -682,6 +682,7 @@ namespace ImGui {

if (waterfallVisible) {
FFTAreaHeight = std::min<int>(FFTAreaHeight, widgetSize.y - 50);
newFFTAreaHeight = FFTAreaHeight;
fftHeight = FFTAreaHeight - 50;
waterfallHeight = widgetSize.y - fftHeight - 52;
}
Expand Down

0 comments on commit 2a6c742

Please sign in to comment.