This commit is contained in:
AlexandreRouma
2022-09-28 15:55:50 +02:00
parent c95c7b18af
commit b65da2fd49
6 changed files with 166 additions and 1 deletions

View File

@ -84,11 +84,23 @@ void SourceManager::tune(double freq) {
if (selectedHandler == NULL) {
return;
}
selectedHandler->tuneHandler(freq + tuneOffset, selectedHandler->ctx);
// TODO: No need to always retune the hardware in panadpter mode
selectedHandler->tuneHandler((tuneMode == TuningMode::NORMAL) ? (freq + tuneOffset) : ifFreq, selectedHandler->ctx);
onRetune.emit(freq);
currentFreq = freq;
}
void SourceManager::setTuningOffset(double offset) {
tuneOffset = offset;
tune(currentFreq);
}
void SourceManager::setTuningMode(TuningMode mode) {
tuneMode = mode;
tune(currentFreq);
}
void SourceManager::setPanadpterIF(double freq) {
ifFreq = freq;
tune(currentFreq);
}

View File

@ -21,6 +21,11 @@ public:
void* ctx;
};
enum TuningMode {
NORMAL,
PANADAPTER
};
void registerSource(std::string name, SourceHandler* handler);
void unregisterSource(std::string name);
void selectSource(std::string name);
@ -29,12 +34,15 @@ public:
void stop();
void tune(double freq);
void setTuningOffset(double offset);
void setTuningMode(TuningMode mode);
void setPanadpterIF(double freq);
std::vector<std::string> getSourceNames();
Event<std::string> onSourceRegistered;
Event<std::string> onSourceUnregister;
Event<std::string> onSourceUnregistered;
Event<double> onRetune;
private:
std::map<std::string, SourceHandler*> sources;
@ -42,5 +50,7 @@ private:
SourceHandler* selectedHandler = NULL;
double tuneOffset;
double currentFreq;
double ifFreq = 0.0;
TuningMode tuneMode;
dsp::stream<dsp::complex_t> nullSource;
};