Skip to content

Commit a2d3452

Browse files
committed
Updated Recording.
1 parent 14f8850 commit a2d3452

21 files changed

+141
-189
lines changed

sources/application.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Application::Application(nlohmann::json& tmpJson, const ArgConfig& argConfig)
2424
if (!device.enabled) {
2525
Logger::info(LABEL, "device disabled, skipping: {}", colored(GREEN, "{}", device.getName()));
2626
} else {
27-
m_scanners.push_back(std::make_unique<Scanner>(m_config, device, m_mqtt, m_remoteController, m_config.recordersCount()));
27+
m_scanners.push_back(std::make_unique<Scanner>(m_config, device, m_remoteController, m_config.recordersCount()));
2828
}
2929
} catch (const std::exception& exception) {
3030
Logger::exception(LABEL, exception, SPDLOG_LOC, "open device failed: {}", device.getName());

sources/network/data_controller.cpp

Lines changed: 0 additions & 57 deletions
This file was deleted.

sources/network/data_controller.h

Lines changed: 0 additions & 24 deletions
This file was deleted.

sources/network/query.h

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,32 @@ struct SchedulerQuery {
1313
NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(SchedulerQuery, latitude, longitude, altitude, satellites, crontabs)
1414

1515
struct ScheduledTransmission {
16+
std::string source;
1617
std::string name;
1718
std::chrono::seconds begin;
1819
std::chrono::seconds end;
1920
Frequency frequency;
2021
Frequency bandwidth;
2122
std::string modulation;
2223
};
23-
NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(ScheduledTransmission, name, begin, end, frequency, bandwidth, modulation)
24+
NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(ScheduledTransmission, source, name, begin, end, frequency, bandwidth, modulation)
25+
26+
struct SpectrogramQuery {
27+
std::string source;
28+
std::chrono::milliseconds time;
29+
Frequency frequency;
30+
Frequency sample_rate;
31+
std::string data;
32+
};
33+
NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(SpectrogramQuery, source, time, frequency, sample_rate, data)
34+
35+
struct TransmissionQuery {
36+
std::string source;
37+
std::string name;
38+
std::chrono::milliseconds time;
39+
Frequency frequency;
40+
Frequency bandwidth;
41+
std::string modulation;
42+
std::string data;
43+
};
44+
NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(TransmissionQuery, source, name, time, frequency, bandwidth, modulation, data)

sources/network/remote_controller.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ constexpr auto SCHEDULER = "scheduler";
1313
constexpr auto SUCCESS = "success";
1414
constexpr auto FAILED = "failed";
1515
constexpr auto LABEL = "remote";
16+
constexpr auto SPECTROGRAM = "spectrogram";
17+
constexpr auto TRANSMISSION = "transmission";
1618

1719
using namespace std::placeholders;
1820

@@ -34,3 +36,6 @@ void RemoteController::schedulerQuery(const std::string& device, const std::stri
3436
void RemoteController::schedulerCallback(const std::string& device, const Mqtt::JsonCallback& callback) {
3537
m_mqtt.setJsonMessageCallback(fmt::format("sdr/{}/{}/{}/set", SCHEDULER, m_config.getId(), device), callback);
3638
}
39+
40+
void RemoteController::sendSpectrogram(const std::string& device, const nlohmann::json& json) { m_mqtt.publish(fmt::format("sdr/{}/{}/{}", SPECTROGRAM, m_config.getId(), device), json.dump(), 2); }
41+
void RemoteController::sendTransmission(const std::string& device, const nlohmann::json& json) { m_mqtt.publish(fmt::format("sdr/{}/{}/{}", TRANSMISSION, m_config.getId(), device), json.dump(), 2); }

sources/network/remote_controller.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ class RemoteController {
2525
void schedulerQuery(const std::string& device, const std::string& query);
2626
void schedulerCallback(const std::string& device, const Mqtt::JsonCallback& callback);
2727

28+
void sendSpectrogram(const std::string& device, const nlohmann::json& json);
29+
void sendTransmission(const std::string& device, const nlohmann::json& json);
30+
2831
private:
2932
void listCallback(const std::string& data);
3033

sources/radio/blocks/spectrogram.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,21 @@
22

33
#include <config.h>
44
#include <logger.h>
5+
#include <network/query.h>
56
#include <utils/utils.h>
67

78
constexpr auto LABEL = "spectogram";
89

910
Spectrogram::Container::Container(int size) : m_lastDataSendTime(getTime()) { m_sum.resize(size); }
1011

11-
Spectrogram::Spectrogram(const int itemSize, const Frequency sampleRate, DataController& dataController, std::function<Frequency()> getFrequency)
12+
Spectrogram::Spectrogram(const int itemSize, const Frequency sampleRate, std::function<Frequency()> getFrequency, std::function<void(const nlohmann::json&)> send)
1213
: gr::sync_block("Spectrogram", gr::io_signature::make(1, 1, sizeof(float) * itemSize), gr::io_signature::make(0, 0, 0)),
1314
m_inputSize(itemSize),
1415
m_outputSize(std::min(SPECTROGRAM_MAX_FFT, getFft(sampleRate, SPECTROGRAM_PREFERRED_MAX_STEP))),
1516
m_decimatorFactor(m_inputSize / m_outputSize),
1617
m_sampleRate(sampleRate),
17-
m_dataController(dataController),
18-
m_getFrequency(getFrequency) {
18+
m_getFrequency(getFrequency),
19+
m_send(send) {
1920
const auto step = m_sampleRate / m_outputSize;
2021
Logger::info(
2122
LABEL,
@@ -67,7 +68,8 @@ void Spectrogram::send(Container& container) {
6768
for (int j = 0; j < m_outputSize; ++j) {
6869
tmp[j] = container.m_sum[j] / container.m_counter;
6970
}
70-
m_dataController.pushSpectrogram(now, frequency, m_sampleRate, tmp.data(), m_outputSize);
71+
SpectrogramQuery spectrogram("", now, frequency, m_sampleRate, encode_base64(tmp.data(), m_outputSize));
72+
m_send(spectrogram);
7173
std::memset(container.m_sum.data(), 0, sizeof(float) * container.m_sum.size());
7274
container.m_counter = 0;
7375
container.m_lastDataSendTime = now;

sources/radio/blocks/spectrogram.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#pragma once
22

33
#include <gnuradio/sync_block.h>
4-
#include <network/data_controller.h>
4+
#include <radio/help_structures.h>
55

66
#include <functional>
77
#include <vector>
@@ -16,7 +16,7 @@ class Spectrogram : virtual public gr::sync_block {
1616
};
1717

1818
public:
19-
Spectrogram(const int itemSize, const Frequency sampleRate, DataController& dataController, std::function<Frequency()> getFrequency);
19+
Spectrogram(const int itemSize, const Frequency sampleRate, std::function<Frequency()> getFrequency, std::function<void(const nlohmann::json&)> send);
2020

2121
int work(int noutput_items, gr_vector_const_void_star& input_items, gr_vector_void_star& output_items) override;
2222

@@ -28,7 +28,7 @@ class Spectrogram : virtual public gr::sync_block {
2828
const int m_outputSize;
2929
const int m_decimatorFactor;
3030
const Frequency m_sampleRate;
31-
DataController& m_dataController;
32-
std::function<Frequency()> m_getFrequency;
31+
const std::function<Frequency()> m_getFrequency;
32+
const std::function<void(const nlohmann::json&)> m_send;
3333
std::map<Frequency, Container> m_containers;
3434
};

sources/radio/blocks/transmission.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ Transmission::Transmission(
1212
const int itemSize,
1313
const int groupSize,
1414
TransmissionNotification& notification,
15+
std::function<Frequency()> getFrequency,
1516
std::function<Frequency(const Index index)> indexToFrequency,
1617
std::function<Frequency(const Index index)> indexToShift,
1718
std::function<bool(const int Index)> isIndexInRange)
@@ -22,6 +23,7 @@ Transmission::Transmission(
2223
m_groupSize(groupSize),
2324
m_averager(itemSize, GROUPING_Y),
2425
m_notification(notification),
26+
m_getFrequency(getFrequency),
2527
m_indexToFrequency(indexToFrequency),
2628
m_indexToShift(indexToShift),
2729
m_isIndexInRange(isIndexInRange) {
@@ -169,8 +171,9 @@ std::vector<Recording> Transmission::getSortedTransmissions(const std::chrono::m
169171
std::sort(indexes.begin(), indexes.end(), [this](const Index& i1, const Index& i2) { return m_signals.at(i1).getPower() > m_signals.at(i2).getPower(); });
170172
std::vector<Recording> transmissions;
171173
for (const auto& index : indexes) {
172-
const auto frequency = getTunedFrequency(m_indexToShift(index), m_config.recordingTuningStep());
173-
transmissions.emplace_back(frequency, m_signals.at(index).needFlush(now));
174+
const auto deviceFrequency = m_getFrequency();
175+
const auto shiftFrequency = getTunedFrequency(m_indexToShift(index), m_config.recordingTuningStep());
176+
transmissions.emplace_back("scanner", "", deviceFrequency, deviceFrequency + shiftFrequency, m_config.recordingBandwidth(), "", m_signals.at(index).needFlush(now));
174177
}
175178
return transmissions;
176179
}

sources/radio/blocks/transmission.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class Transmission : virtual public gr::sync_block {
2020
const int itemSize,
2121
const int groupSize,
2222
TransmissionNotification& notification,
23+
std::function<Frequency()> getFrequency,
2324
std::function<Frequency(const int index)> indexToFrequency,
2425
std::function<Frequency(const int index)> indexToShift,
2526
std::function<bool(const int Index)> isIndexInRange);
@@ -42,6 +43,7 @@ class Transmission : virtual public gr::sync_block {
4243
const int m_groupSize;
4344
Averager m_averager;
4445
TransmissionNotification& m_notification;
46+
const std::function<Frequency()> m_getFrequency;
4547
const std::function<Frequency(const Index index)> m_indexToFrequency;
4648
const std::function<Frequency(const Index index)> m_indexToShift;
4749
const std::function<bool(const Index index)> m_isIndexInRange;

0 commit comments

Comments
 (0)