dual wf display
This commit is contained in:
parent
9bee53ab49
commit
bd85526290
55
main.cpp
55
main.cpp
|
@ -125,7 +125,7 @@ int main(int argc, char* argv[])
|
||||||
std::atexit(glfwTerminate);
|
std::atexit(glfwTerminate);
|
||||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
||||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
|
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
|
||||||
static GLFWwindow* window = glfwCreateWindow(1280, 2200, "fastsa", nullptr, nullptr);
|
static GLFWwindow* window = glfwCreateWindow(1500, 2200, "fastsa", nullptr, nullptr);
|
||||||
if(window == nullptr) {
|
if(window == nullptr) {
|
||||||
std::cerr << "failed to create GLFW window" << std::endl;
|
std::cerr << "failed to create GLFW window" << std::endl;
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -151,13 +151,15 @@ int main(int argc, char* argv[])
|
||||||
ImGui_ImplOpenGL3_Init("#version 130");
|
ImGui_ImplOpenGL3_Init("#version 130");
|
||||||
std::atexit(ImGui_ImplOpenGL3_Shutdown);
|
std::atexit(ImGui_ImplOpenGL3_Shutdown);
|
||||||
|
|
||||||
GLuint waterfall;
|
GLuint wftex[2];
|
||||||
glGenTextures(1, &waterfall);
|
for(size_t i=0;i<2;i++) {
|
||||||
glBindTexture(GL_TEXTURE_2D, waterfall);
|
glGenTextures(1, &wftex[i]);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
glBindTexture(GL_TEXTURE_2D, wftex[i]);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||||
|
}
|
||||||
|
|
||||||
int status;
|
int status;
|
||||||
struct bladerf_devinfo dev_info;
|
struct bladerf_devinfo dev_info;
|
||||||
|
@ -212,7 +214,7 @@ int main(int argc, char* argv[])
|
||||||
std::atexit(TerminateDSP);
|
std::atexit(TerminateDSP);
|
||||||
|
|
||||||
bool exit = false;
|
bool exit = false;
|
||||||
bool update = true;
|
bool update_wf = true;
|
||||||
float freq_setpoint_local = 0.0f;
|
float freq_setpoint_local = 0.0f;
|
||||||
float tec_bias_local = 0.02f;
|
float tec_bias_local = 0.02f;
|
||||||
float tec_p_local = 0.001f;
|
float tec_p_local = 0.001f;
|
||||||
|
@ -221,13 +223,20 @@ int main(int argc, char* argv[])
|
||||||
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
|
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
|
||||||
glClear(GL_COLOR_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT);
|
||||||
|
|
||||||
glBindTexture(GL_TEXTURE_2D, waterfall);
|
if(update_wf) {
|
||||||
#if defined(GL_UNPACK_ROW_LENGTH) && !defined(__EMSCRIPTEN__)
|
#if defined(GL_UNPACK_ROW_LENGTH) && !defined(__EMSCRIPTEN__)
|
||||||
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
|
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
|
||||||
#endif
|
#endif
|
||||||
if(update) {
|
glBindTexture(GL_TEXTURE_2D, wftex[0]);
|
||||||
std::lock_guard<std::mutex> guard(wf_data_mutex);
|
{
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, wf_width, wf_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, wf_data);
|
std::lock_guard<std::mutex> guard(wf_data_mutex);
|
||||||
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, wf_width, wf_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, wf_data);
|
||||||
|
}
|
||||||
|
glBindTexture(GL_TEXTURE_2D, wftex[1]);
|
||||||
|
{
|
||||||
|
std::lock_guard<std::mutex> guard(wf_data_mutex);
|
||||||
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, wf_width, wf_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, wf_data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui_ImplOpenGL3_NewFrame();
|
ImGui_ImplOpenGL3_NewFrame();
|
||||||
|
@ -239,11 +248,13 @@ int main(int argc, char* argv[])
|
||||||
ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f);
|
ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f);
|
||||||
ImGui::Begin("fastsa", nullptr, ImGuiWindowFlags_NoDecoration | ImGuiWindowFlags_NoResize);
|
ImGui::Begin("fastsa", nullptr, ImGuiWindowFlags_NoDecoration | ImGuiWindowFlags_NoResize);
|
||||||
|
|
||||||
ImGui::BeginTable("fastsa", 2, ImGuiTableFlags_SizingStretchSame | ImGuiTableFlags_Resizable);
|
ImGui::BeginTable("fastsa", 3, ImGuiTableFlags_SizingStretchSame | ImGuiTableFlags_Resizable);
|
||||||
ImGui::TableSetupColumn("", 0, 280.0f);
|
ImGui::TableSetupColumn("SBS laser control", 0, 280.0f);
|
||||||
ImGui::TableSetupColumn("", 0, 1000.0f);
|
ImGui::TableSetupColumn("Pump/output heterodyne", 0, 1000.0f);
|
||||||
|
ImGui::TableSetupColumn("Linewidth", 0, 1000.0f);
|
||||||
|
ImGui::TableHeadersRow();
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
ImGui::Checkbox("Update waterfall", &update);
|
ImGui::Checkbox("Update waterfall plots", &update_wf);
|
||||||
ImGui::Text("Baseband peak: %.3f MHz", (float)freq_peak);
|
ImGui::Text("Baseband peak: %.3f MHz", (float)freq_peak);
|
||||||
ImGui::Text("TEC current: %.6f mA", (float)tec_current);
|
ImGui::Text("TEC current: %.6f mA", (float)tec_current);
|
||||||
ImGui::SliderFloat("Setpoint", &freq_setpoint_local, 0.0f, 40.0f);
|
ImGui::SliderFloat("Setpoint", &freq_setpoint_local, 0.0f, 40.0f);
|
||||||
|
@ -256,7 +267,9 @@ int main(int argc, char* argv[])
|
||||||
exit = true;
|
exit = true;
|
||||||
ImGui::Text("FPS: %d", (int)fps);
|
ImGui::Text("FPS: %d", (int)fps);
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
ImGui::Image((void*)(intptr_t)waterfall, ImVec2(wf_width, wf_height));
|
ImGui::Image((void*)(intptr_t)wftex[0], ImVec2(wf_width, wf_height));
|
||||||
|
ImGui::TableNextColumn();
|
||||||
|
ImGui::Image((void*)(intptr_t)wftex[1], ImVec2(wf_width, wf_height));
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
|
|
||||||
ImGui::End();
|
ImGui::End();
|
||||||
|
|
Loading…
Reference in New Issue