diff --git a/CMakeLists.txt b/CMakeLists.txt index 49266c3..cbc8e73 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,6 +30,7 @@ list(APPEND inspectrum_sources main.cpp fft.cpp mainwindow.cpp + grsamplebuffer.cpp inputsource.cpp memory_sink_impl.cc memory_source_impl.cc diff --git a/grsamplebuffer.cpp b/grsamplebuffer.cpp new file mode 100644 index 0000000..d0a86f1 --- /dev/null +++ b/grsamplebuffer.cpp @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2015, Mike Walters + * + * This file is part of inspectrum. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + #include "grsamplebuffer.h" + + void GRSampleBuffer::work(void *input, void *output, int length) + { + mem_source->set_source(input, length); + mem_sink->set_sink(output, length); + tb->run(); + } \ No newline at end of file diff --git a/grsamplebuffer.h b/grsamplebuffer.h new file mode 100644 index 0000000..b8eca52 --- /dev/null +++ b/grsamplebuffer.h @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2015, Mike Walters + * + * This file is part of inspectrum. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include +#include +#include "memory_sink.h" +#include "memory_source.h" + +#include "samplebuffer.h" + +class GRSampleBuffer : public SampleBuffer +{ +private: + gr::top_block_sptr tb; + gr::blocks::memory_source::sptr mem_source; + gr::blocks::memory_sink::sptr mem_sink; + +public: + GRSampleBuffer(SampleSource *src, gr::top_block_sptr tb, gr::blocks::memory_source::sptr mem_source, gr::blocks::memory_sink::sptr mem_sink) + : SampleBuffer(src), tb(tb), mem_source(mem_source), mem_sink(mem_sink) {}; + virtual void work(void *input, void *output, int count); +};