satdump/plugins/sdr_sources/usrp_sdr_support/main.cpp

83 lines
3.1 KiB
C++
Raw Permalink Normal View History

2024-07-28 15:00:04 -04:00
#include "core/config.h"
#include "core/params.h"
2022-11-23 11:53:34 +01:00
#include "core/plugin.h"
#include "logger.h"
#include "usrp_sdr.h"
2024-07-28 15:00:04 -04:00
#ifdef _WIN32
2024-07-28 15:21:35 -04:00
errno_t setenv(const char* name, const char* value, int)
{
2024-07-28 15:26:35 -04:00
return _putenv_s(name, value);
2024-07-28 15:21:35 -04:00
}
2024-07-28 15:00:04 -04:00
#endif
std::shared_ptr<FileSelectWidget> file_select;
2022-11-23 11:53:34 +01:00
class USRPSDRSupport : public satdump::Plugin
{
public:
2024-07-28 15:00:04 -04:00
static void renderConfig()
{
static bool use_default = (file_select->getPath() == "");
if (ImGui::BeginTable("##usrpsdrsettings", 2, ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg))
{
// Theme Selection
ImGui::TableNextRow();
ImGui::TableSetColumnIndex(0);
2024-07-28 15:10:46 -04:00
ImGui::TextUnformatted("Use default UHD firmware images path");
2024-07-28 15:00:04 -04:00
ImGui::TableSetColumnIndex(1);
2024-07-28 15:10:46 -04:00
if (ImGui::Checkbox("##usrpimagespathcheckbox", &use_default) && use_default)
file_select->setPath("");
2024-07-28 15:00:04 -04:00
if (!use_default)
{
ImGui::TableNextRow();
ImGui::TableSetColumnIndex(0);
ImGui::TextUnformatted("UHD Images Path");
ImGui::TableSetColumnIndex(1);
file_select->draw();
}
ImGui::EndTable();
}
}
static void save()
{
2024-07-28 15:21:35 -04:00
setenv("UHD_IMAGES_DIR", file_select->getPath().c_str(), 1);
2025-06-08 16:57:37 +02:00
satdump::satdump_cfg.main_cfg["plugin_settings"]["usrp_sdr_support"] = nlohmann::json::object();
2024-07-28 15:00:04 -04:00
if (file_select->getPath() != "")
2025-06-08 16:57:37 +02:00
satdump::satdump_cfg.main_cfg["plugin_settings"]["usrp_sdr_support"]["uhd_images_dir"] = file_select->getPath();
2024-07-28 15:00:04 -04:00
}
2022-11-23 11:53:34 +01:00
std::string getID()
{
return "usrp_sdr_support";
}
void init()
{
satdump::eventBus->register_handler<dsp::RegisterDSPSampleSourcesEvent>(registerSources);
2024-07-28 15:00:04 -04:00
satdump::eventBus->register_handler<satdump::config::RegisterPluginConfigHandlersEvent>(registerConfigHandler);
file_select = std::make_shared<FileSelectWidget>("UHD Images Path", "UHD Images Path", true);
2025-06-08 16:57:37 +02:00
if (satdump::satdump_cfg.main_cfg["plugin_settings"].contains("usrp_sdr_support") &&
satdump::satdump_cfg.main_cfg["plugin_settings"]["usrp_sdr_support"].contains("uhd_images_dir") &&
satdump::satdump_cfg.main_cfg["plugin_settings"]["usrp_sdr_support"]["uhd_images_dir"].is_string() &&
satdump::satdump_cfg.main_cfg["plugin_settings"]["usrp_sdr_support"]["uhd_images_dir"] != "")
2024-07-28 15:00:04 -04:00
{
2025-06-08 16:57:37 +02:00
file_select->setPath(satdump::satdump_cfg.main_cfg["plugin_settings"]["usrp_sdr_support"]["uhd_images_dir"]);
2024-07-28 15:21:35 -04:00
setenv("UHD_IMAGES_DIR", file_select->getPath().c_str(), 1);
2024-07-28 15:00:04 -04:00
}
2022-11-23 11:53:34 +01:00
}
static void registerSources(const dsp::RegisterDSPSampleSourcesEvent &evt)
{
evt.dsp_sources_registry.insert({USRPSource::getID(), {USRPSource::getInstance, USRPSource::getAvailableSources}});
}
2024-07-28 15:00:04 -04:00
static void registerConfigHandler(const satdump::config::RegisterPluginConfigHandlersEvent &evt)
{
evt.plugin_config_handlers.push_back({ "USRP SDR", USRPSDRSupport::renderConfig, USRPSDRSupport::save });
}
2022-11-23 11:53:34 +01:00
};
PLUGIN_LOADER(USRPSDRSupport)