#pragma once #include #include #include #include #include class SourceManager { public: SourceManager(); struct SourceHandler { dsp::stream* stream; void (*menuHandler)(void* ctx); void (*selectHandler)(void* ctx); void (*deselectHandler)(void* ctx); void (*startHandler)(void* ctx); void (*stopHandler)(void* ctx); void (*tuneHandler)(double freq, void* ctx); void* ctx; }; void registerSource(std::string name, SourceHandler* handler); void selectSource(std::string name); void showSelectedMenu(); void start(); void stop(); void tune(double freq); void setTuningOffset(double offset); std::vector sourceNames; private: std::map sources; std::string selectedName; SourceHandler* selectedHandler = NULL; double tuneOffset; double currentFreq; };