mirror of
https://github.com/AlexandreRouma/SDRPlusPlus.git
synced 2025-06-27 04:47:51 +02:00
Fixed support in the module manager
This commit is contained in:
@ -115,7 +115,7 @@ void SinkManager::registerStream(std::string name, SinkManager::Stream* stream)
|
||||
core::configManager.release();
|
||||
if (available) { loadStreamConfig(name); }
|
||||
|
||||
streamRegisteredEvnt.emit(name);
|
||||
onStreamRegistered.emit(name);
|
||||
}
|
||||
|
||||
void SinkManager::unregisterStream(std::string name) {
|
||||
@ -123,12 +123,13 @@ void SinkManager::unregisterStream(std::string name) {
|
||||
spdlog::error("Cannot unregister stream '{0}', this stream doesn't exist", name);
|
||||
return;
|
||||
}
|
||||
streamUnregisteredEvnt.emit(name);
|
||||
onStreamUnregister.emit(name);
|
||||
SinkManager::Stream* stream = streams[name];
|
||||
stream->stop();
|
||||
delete stream->sink;
|
||||
streams.erase(name);
|
||||
streamNames.erase(std::remove(streamNames.begin(), streamNames.end(), name), streamNames.end());
|
||||
onStreamUnregistered.emit(name);
|
||||
}
|
||||
|
||||
void SinkManager::startStream(std::string name) {
|
||||
|
@ -110,8 +110,9 @@ public:
|
||||
|
||||
std::vector<std::string> getStreamNames();
|
||||
|
||||
Event<std::string> streamRegisteredEvnt;
|
||||
Event<std::string> streamUnregisteredEvnt;
|
||||
Event<std::string> onStreamRegistered;
|
||||
Event<std::string> onStreamUnregister;
|
||||
Event<std::string> onStreamUnregistered;
|
||||
|
||||
private:
|
||||
void loadStreamConfig(std::string name);
|
||||
|
@ -12,7 +12,27 @@ void SourceManager::registerSource(std::string name, SourceHandler* handler) {
|
||||
return;
|
||||
}
|
||||
sources[name] = handler;
|
||||
sourceNames.push_back(name);
|
||||
onSourceRegistered.emit(name);
|
||||
}
|
||||
|
||||
void SourceManager::unregisterSource(std::string name) {
|
||||
if (sources.find(name) == sources.end()) {
|
||||
spdlog::error("Tried to unregister non existant source: {0}", name);
|
||||
return;
|
||||
}
|
||||
onSourceUnregister.emit(name);
|
||||
if (name == selectedName) {
|
||||
sigpath::signalPath.setInput(&nullSource);
|
||||
selectedHandler = NULL;
|
||||
}
|
||||
sources.erase(name);
|
||||
onSourceUnregistered.emit(name);
|
||||
}
|
||||
|
||||
std::vector<std::string> SourceManager::getSourceNames() {
|
||||
std::vector<std::string> names;
|
||||
for (auto const& [name, src] : sources) { names.push_back(name); }
|
||||
return names;
|
||||
}
|
||||
|
||||
void SourceManager::selectSource(std::string name) {
|
||||
@ -20,7 +40,7 @@ void SourceManager::selectSource(std::string name) {
|
||||
spdlog::error("Tried to select non existant source: {0}", name);
|
||||
return;
|
||||
}
|
||||
if (selectedName != "") {
|
||||
if (selectedHandler != NULL) {
|
||||
sources[selectedName]->deselectHandler(sources[selectedName]->ctx);
|
||||
}
|
||||
selectedHandler = sources[name];
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include <map>
|
||||
#include <dsp/stream.h>
|
||||
#include <dsp/types.h>
|
||||
#include <utils/event.h>
|
||||
|
||||
class SourceManager {
|
||||
public:
|
||||
@ -21,6 +22,7 @@ public:
|
||||
};
|
||||
|
||||
void registerSource(std::string name, SourceHandler* handler);
|
||||
void unregisterSource(std::string name);
|
||||
void selectSource(std::string name);
|
||||
void showSelectedMenu();
|
||||
void start();
|
||||
@ -28,7 +30,11 @@ public:
|
||||
void tune(double freq);
|
||||
void setTuningOffset(double offset);
|
||||
|
||||
std::vector<std::string> sourceNames;
|
||||
std::vector<std::string> getSourceNames();
|
||||
|
||||
Event<std::string> onSourceRegistered;
|
||||
Event<std::string> onSourceUnregister;
|
||||
Event<std::string> onSourceUnregistered;
|
||||
|
||||
private:
|
||||
std::map<std::string, SourceHandler*> sources;
|
||||
@ -36,5 +42,6 @@ private:
|
||||
SourceHandler* selectedHandler = NULL;
|
||||
double tuneOffset;
|
||||
double currentFreq;
|
||||
dsp::stream<dsp::complex_t> nullSource;
|
||||
|
||||
};
|
Reference in New Issue
Block a user