mirror of
https://github.com/eried/portapack-mayhem.git
synced 2025-11-24 05:43:11 -05:00
Log function for search app (#2782)
This commit is contained in:
parent
b15bb59678
commit
325f295ee8
2 changed files with 39 additions and 1 deletions
|
|
@ -31,6 +31,10 @@ using namespace portapack;
|
||||||
|
|
||||||
namespace ui {
|
namespace ui {
|
||||||
|
|
||||||
|
void SearchLogger::log_data(SearchRecentEntry& data) {
|
||||||
|
log_file.write_entry(";" + to_string_short_freq(data.frequency) + ";" + std::to_string(data.duration));
|
||||||
|
}
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
void RecentEntriesTable<SearchRecentEntries>::draw(
|
void RecentEntriesTable<SearchRecentEntries>::draw(
|
||||||
const Entry& entry,
|
const Entry& entry,
|
||||||
|
|
@ -75,6 +79,7 @@ SearchView::SearchView(
|
||||||
&check_snap,
|
&check_snap,
|
||||||
&options_snap,
|
&options_snap,
|
||||||
&big_display,
|
&big_display,
|
||||||
|
&check_log,
|
||||||
&recent_entries_view});
|
&recent_entries_view});
|
||||||
|
|
||||||
baseband::set_spectrum(SEARCH_SLICE_WIDTH, 31);
|
baseband::set_spectrum(SEARCH_SLICE_WIDTH, 31);
|
||||||
|
|
@ -100,6 +105,14 @@ SearchView::SearchView(
|
||||||
on_range_changed();
|
on_range_changed();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
check_log.on_select = [this](Checkbox&, bool v) {
|
||||||
|
logging = v;
|
||||||
|
if (logging) {
|
||||||
|
logger.append(logs_dir.string() + "/SEARCH_" + to_string_timestamp(rtc_time::now()) + ".CSV");
|
||||||
|
logger.write_header();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
bind(field_threshold, settings_.power_threshold);
|
bind(field_threshold, settings_.power_threshold);
|
||||||
bind(check_snap, settings_.snap_search);
|
bind(check_snap, settings_.snap_search);
|
||||||
bind(options_snap, settings_.snap_step);
|
bind(options_snap, settings_.snap_step);
|
||||||
|
|
@ -192,7 +205,6 @@ void SearchView::do_detection() {
|
||||||
|
|
||||||
locked = true;
|
locked = true;
|
||||||
locked_bin = bin_max;
|
locked_bin = bin_max;
|
||||||
|
|
||||||
// TODO: open Audio.
|
// TODO: open Audio.
|
||||||
} else
|
} else
|
||||||
text_infos.set("Out of range");
|
text_infos.set("Out of range");
|
||||||
|
|
@ -210,6 +222,7 @@ void SearchView::do_detection() {
|
||||||
|
|
||||||
auto& entry = ::on_packet(recent, resolved_frequency);
|
auto& entry = ::on_packet(recent, resolved_frequency);
|
||||||
entry.set_duration(duration);
|
entry.set_duration(duration);
|
||||||
|
if (logging) logger.log_data(entry);
|
||||||
recent_entries_view.set_dirty();
|
recent_entries_view.set_dirty();
|
||||||
|
|
||||||
text_infos.set("Listening");
|
text_infos.set("Listening");
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,8 @@
|
||||||
#include "radio_state.hpp"
|
#include "radio_state.hpp"
|
||||||
#include "gradient.hpp"
|
#include "gradient.hpp"
|
||||||
#include "ui_receiver.hpp"
|
#include "ui_receiver.hpp"
|
||||||
|
#include "log_file.hpp"
|
||||||
|
#include "file_path.hpp"
|
||||||
|
|
||||||
namespace ui {
|
namespace ui {
|
||||||
|
|
||||||
|
|
@ -70,6 +72,21 @@ struct SearchRecentEntry {
|
||||||
|
|
||||||
using SearchRecentEntries = RecentEntries<SearchRecentEntry>;
|
using SearchRecentEntries = RecentEntries<SearchRecentEntry>;
|
||||||
|
|
||||||
|
class SearchLogger {
|
||||||
|
public:
|
||||||
|
Optional<File::Error> append(const std::filesystem::path& filename) {
|
||||||
|
return log_file.append(filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
void log_data(SearchRecentEntry& data);
|
||||||
|
void write_header() {
|
||||||
|
log_file.write_raw("Time;Freq;Duration;");
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
LogFile log_file{};
|
||||||
|
};
|
||||||
|
|
||||||
class SearchView : public View {
|
class SearchView : public View {
|
||||||
public:
|
public:
|
||||||
SearchView(NavigationView& nav);
|
SearchView(NavigationView& nav);
|
||||||
|
|
@ -148,6 +165,8 @@ class SearchView : public View {
|
||||||
uint16_t locked_bin = 0;
|
uint16_t locked_bin = 0;
|
||||||
uint8_t search_counter = 0;
|
uint8_t search_counter = 0;
|
||||||
bool locked = false;
|
bool locked = false;
|
||||||
|
bool logging = false;
|
||||||
|
SearchLogger logger{};
|
||||||
|
|
||||||
void do_detection();
|
void do_detection();
|
||||||
void do_timers();
|
void do_timers();
|
||||||
|
|
@ -169,6 +188,12 @@ class SearchView : public View {
|
||||||
{{1 * 8, 25 * 8}, "Accuracy +/-4.9kHz", Theme::getInstance()->fg_light->foreground},
|
{{1 * 8, 25 * 8}, "Accuracy +/-4.9kHz", Theme::getInstance()->fg_light->foreground},
|
||||||
{{26 * 8, 25 * 8}, "MHz", Theme::getInstance()->fg_light->foreground}};
|
{{26 * 8, 25 * 8}, "MHz", Theme::getInstance()->fg_light->foreground}};
|
||||||
|
|
||||||
|
Checkbox check_log{
|
||||||
|
{24 * 8, 10 * 8},
|
||||||
|
3,
|
||||||
|
"LOG",
|
||||||
|
true};
|
||||||
|
|
||||||
FrequencyField field_frequency_min{
|
FrequencyField field_frequency_min{
|
||||||
{1 * 8, 1 * 16}};
|
{1 * 8, 1 * 16}};
|
||||||
FrequencyField field_frequency_max{
|
FrequencyField field_frequency_max{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue