From ded33ebabdcfb447b996982bcf733043117c6562 Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Thu, 10 Dec 2015 16:03:22 -0800 Subject: [PATCH] Extract RSSIThread to separate files. --- firmware/baseband/Makefile | 1 + firmware/baseband/main.cpp | 43 +----------------------- firmware/baseband/rssi_thread.cpp | 56 +++++++++++++++++++++++++++++++ firmware/baseband/rssi_thread.hpp | 48 ++++++++++++++++++++++++++ 4 files changed, 106 insertions(+), 42 deletions(-) create mode 100644 firmware/baseband/rssi_thread.cpp create mode 100644 firmware/baseband/rssi_thread.hpp diff --git a/firmware/baseband/Makefile b/firmware/baseband/Makefile index 182c19b3..caf93066 100755 --- a/firmware/baseband/Makefile +++ b/firmware/baseband/Makefile @@ -150,6 +150,7 @@ CPPSRC = main.cpp \ fxpt_atan2.cpp \ rssi.cpp \ rssi_dma.cpp \ + rssi_thread.cpp \ audio.cpp \ audio_dma.cpp \ touch_dma.cpp \ diff --git a/firmware/baseband/main.cpp b/firmware/baseband/main.cpp index 6e751654..97895fcf 100755 --- a/firmware/baseband/main.cpp +++ b/firmware/baseband/main.cpp @@ -40,9 +40,8 @@ #include "touch_dma.hpp" -#include "rssi_stats_collector.hpp" - #include "baseband_thread.hpp" +#include "rssi_thread.hpp" #include "baseband_processor.hpp" #include "message_queue.hpp" @@ -60,46 +59,6 @@ #include #include -class RSSIThread : public ThreadBase { -public: - RSSIThread( - ) : ThreadBase { "rssi" } - { - } - - Thread* start(const tprio_t priority) { - return chThdCreateStatic(wa, sizeof(wa), - priority, ThreadBase::fn, - this - ); - } - - uint32_t sampling_rate { 400000 }; - -private: - WORKING_AREA(wa, 128); - - void run() override { - RSSIStatisticsCollector stats; - - while(true) { - // TODO: Place correct sampling rate into buffer returned here: - const auto buffer_tmp = rf::rssi::dma::wait_for_buffer(); - const rf::rssi::buffer_t buffer { - buffer_tmp.p, buffer_tmp.count, sampling_rate - }; - - stats.process( - buffer, - [](const RSSIStatistics& statistics) { - const RSSIStatisticsMessage message { statistics }; - shared_memory.application_queue.push(message); - } - ); - } - } -}; - extern "C" { void __late_init(void) { diff --git a/firmware/baseband/rssi_thread.cpp b/firmware/baseband/rssi_thread.cpp new file mode 100644 index 00000000..b084c494 --- /dev/null +++ b/firmware/baseband/rssi_thread.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2014 Jared Boone, ShareBrained Technology, Inc. + * + * This file is part of PortaPack. + * + * 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 2, 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; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "rssi_thread.hpp" + +#include "rssi.hpp" +#include "rssi_dma.hpp" +#include "rssi_stats_collector.hpp" + +#include "message.hpp" +#include "portapack_shared_memory.hpp" + +Thread* RSSIThread::start(const tprio_t priority) { + return chThdCreateStatic(wa, sizeof(wa), + priority, ThreadBase::fn, + this + ); +} + +void RSSIThread::run() { + RSSIStatisticsCollector stats; + + while(true) { + // TODO: Place correct sampling rate into buffer returned here: + const auto buffer_tmp = rf::rssi::dma::wait_for_buffer(); + const rf::rssi::buffer_t buffer { + buffer_tmp.p, buffer_tmp.count, sampling_rate + }; + + stats.process( + buffer, + [](const RSSIStatistics& statistics) { + const RSSIStatisticsMessage message { statistics }; + shared_memory.application_queue.push(message); + } + ); + } +} diff --git a/firmware/baseband/rssi_thread.hpp b/firmware/baseband/rssi_thread.hpp new file mode 100644 index 00000000..d7224ddb --- /dev/null +++ b/firmware/baseband/rssi_thread.hpp @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2014 Jared Boone, ShareBrained Technology, Inc. + * + * This file is part of PortaPack. + * + * 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 2, 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; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __RSSI_THREAD_H__ +#define __RSSI_THREAD_H__ + +#include "thread_base.hpp" + +#include + +#include + +class RSSIThread : public ThreadBase { +public: + RSSIThread( + ) : ThreadBase { "rssi" } + { + } + + Thread* start(const tprio_t priority); + + uint32_t sampling_rate { 400000 }; + +private: + WORKING_AREA(wa, 128); + + void run() override; +}; + +#endif/*__RSSI_THREAD_H__*/