Skip to content

Commit 6db3bd3

Browse files
committed
Fixed scheduler.
1 parent 974a7e9 commit 6db3bd3

File tree

3 files changed

+18
-4
lines changed

3 files changed

+18
-4
lines changed

sources/radio/scheduler.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ ScheduledTransmission::ScheduledTransmission(
1717
: m_name(name), m_begin(begin), m_end(end), m_frequency(frequency), m_bandwidth(bandwidth), m_modulation(modulation) {}
1818

1919
Scheduler::Scheduler(const Config& config, const Device& device, RemoteController& remoteController)
20-
: m_config(config), m_device(device), m_remoteController(remoteController), m_lastUpdateTime(0), m_isRunning(true), m_thread([this]() { worker(); }) {}
20+
: m_config(config), m_device(device), m_remoteController(remoteController), m_lastUpdateTime(0), m_isRefreshEnabled(true), m_isRunning(true), m_thread([this]() { worker(); }) {}
2121

2222
Scheduler::~Scheduler() {
2323
m_isRunning = false;
@@ -65,7 +65,7 @@ void Scheduler::worker() {
6565
m_remoteController.satellitesCallback(m_device.getName(), std::bind(&Scheduler::satellitesCallback, this, _1));
6666
while (m_isRunning) {
6767
const auto now = getTime();
68-
if (m_lastUpdateTime + UPDATE_INTERVAL <= now) {
68+
if (m_isRefreshEnabled && m_lastUpdateTime + UPDATE_INTERVAL <= now) {
6969
satellitesQuery();
7070
m_lastUpdateTime = now;
7171
}
@@ -106,3 +106,5 @@ void Scheduler::satellitesCallback(const nlohmann::json& json) {
106106
std::unique_lock lock(m_mutex);
107107
m_scheduledTransmissions = scheduledTransmissions;
108108
}
109+
110+
void Scheduler::setRefreshEnabled(const bool& enabled) { m_isRefreshEnabled = enabled; }

sources/radio/scheduler.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,14 @@ class Scheduler {
3333
void worker();
3434
void satellitesQuery();
3535
void satellitesCallback(const nlohmann::json& json);
36+
void setRefreshEnabled(const bool& enabled);
3637

3738
const Config& m_config;
3839
const Device m_device;
3940
RemoteController& m_remoteController;
4041
std::list<ScheduledTransmission> m_scheduledTransmissions;
4142
std::chrono::milliseconds m_lastUpdateTime;
43+
std::atomic<bool> m_isRefreshEnabled;
4244
std::atomic<bool> m_isRunning;
4345
std::thread m_thread;
4446
std::mutex m_mutex;

sources/scanner.cpp

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,17 @@ Scanner::~Scanner() {
3838
void Scanner::runScheduler(const std::optional<FrequencyRange>& activeRange) {
3939
auto recordings = m_scheduler.getRecordings(getTime());
4040
if (recordings) {
41-
m_device.updateRecordings({});
42-
m_device.setFrequencyRange(recordings->first);
41+
Logger::info(LABEL, "start scheduled recording");
42+
m_scheduler.setRefreshEnabled(false);
43+
auto lastRange = FrequencyRange(0, 0);
4344
while (m_isRunning && recordings) {
45+
const auto range = recordings->first;
46+
if (range != lastRange) {
47+
const auto center = (range.first + range.second) / 2;
48+
Logger::info(LABEL, "update scheduled frequency, center: {}", formatFrequency(center));
49+
m_device.setFrequencyRange(range);
50+
lastRange = range;
51+
}
4452
m_device.updateRecordings(recordings->second);
4553
recordings = m_scheduler.getRecordings(getTime());
4654
std::this_thread::sleep_for(LOOP_TIMEOUT);
@@ -49,6 +57,8 @@ void Scanner::runScheduler(const std::optional<FrequencyRange>& activeRange) {
4957
if (activeRange) {
5058
m_device.setFrequencyRange(*activeRange);
5159
}
60+
m_scheduler.setRefreshEnabled(true);
61+
Logger::info(LABEL, "stop scheduled recording");
5262
}
5363
}
5464

0 commit comments

Comments
 (0)