Pretty event printing

This commit is contained in:
Ezra Taimuty-Loomis 2022-01-28 16:40:44 -05:00
parent 111e443ec3
commit 2beffedeea
3 changed files with 65 additions and 1 deletions

View File

@ -13,6 +13,7 @@
#include "loguru.hpp"
#include "threadname.h"
#include "PiScan.h"
#include "events.h"
#define SDR_THREAD_NAME "SDR Interface"
@ -116,10 +117,13 @@ bool SDRThread::init() {
//4. Apply other settings: Frequency, PPM correction, Gains, Device-specific settings:
device->setFrequency(SOAPY_SDR_RX,0,"RF",frequency - offset.load());
//TEMP
piscan::events::publish(std::make_shared<piscan::events::GenericNumberEvent>("tuner_frequency_set", frequency - offset.load()));
if (devInfo->hasCORR(SOAPY_SDR_RX, 0)) {
hasPPM.store(true);
device->setFrequency(SOAPY_SDR_RX,0,"CORR",ppm.load());
piscan::events::publish(std::make_shared<piscan::events::GenericNumberEvent>("tuner_ppm_set", ppm.load()));
} else {
hasPPM.store(false);
}
@ -514,6 +518,7 @@ void SDRThread::updateSettings() {
if (ppm_changed.load() && hasPPM.load()) {
device->setFrequency(SOAPY_SDR_RX,0,"CORR",ppm.load());
piscan::events::publish(std::make_shared<piscan::events::GenericNumberEvent>("tuner_ppm_set", ppm.load()));
ppm_changed.store(false);
}
@ -521,8 +526,10 @@ void SDRThread::updateSettings() {
if (frequency_locked.load() && !frequency_lock_init.load()) {
device->setFrequency(SOAPY_SDR_RX,0,"RF",lock_freq.load());
frequency_lock_init.store(true);
piscan::events::publish(std::make_shared<piscan::events::GenericNumberEvent>("tuner_frequency_set", lock_freq.load()));
} else if (!frequency_locked.load()) {
device->setFrequency(SOAPY_SDR_RX,0,"RF",frequency.load() - offset.load());
piscan::events::publish(std::make_shared<piscan::events::GenericNumberEvent>("tuner_frequency_set", frequency.load() - offset.load()));
}
freq_changed.store(false);

View File

@ -8,6 +8,11 @@ namespace piscan {
struct Event {
Event(std::string topic) : topic(topic) {};
virtual ~Event(){};
inline virtual std::string to_string() {
return "Event type: " + topic + "\n";
}
std::string topic;
};
@ -22,6 +27,33 @@ namespace piscan {
void unsubscribe(std::string topic, int subscriber);
/*---------------------------------*/
struct GenericStringEvent : public Event {
GenericStringEvent(std::string topic, std::string data) : Event(topic), data(data) {};
virtual ~GenericStringEvent() {};
inline virtual std::string to_string() {
return Event::to_string() + "\tData:\t" + data + "\n";
}
std::string data;
};
struct GenericNumberEvent : public Event {
GenericNumberEvent(std::string topic, long long data) : Event(topic), data(data) {};
virtual ~GenericNumberEvent() {};
inline virtual std::string to_string() {
return Event::to_string() + "\tData:\t" + std::to_string(data) + "\n";
}
long long data;
};
struct GenericBoolEvent : public Event {
GenericBoolEvent(std::string topic, bool data) : Event(topic), data(data) {};
virtual ~GenericBoolEvent() {};
inline virtual std::string to_string() {
return Event::to_string() + "\tData:\t" + std::to_string(data) + "\n";
}
bool data;
};
struct ScannerStateEvent : public Event {
virtual ~ScannerStateEvent() {};
@ -34,6 +66,20 @@ namespace piscan {
ScannerStateEvent() : Event("scanner_state_change") {};
inline virtual std::string to_string() {
std::string tail = (state == HOLD || state == RECEIVE)?
"\tSystem:\t" + systemTag + "\n" +
"\tEntry:\t" + entryTag + "\n" +
"\tFrequency:\t" + std::to_string(frequency) + "\n" +
"\tModulation:\t" + modulation + "\n" +
"\tIndex:\t" + entryIndex + "\n" +
"\tDelay:\t" + std::to_string(delayMS) + "\n" +
"\tLockout:\t" + std::to_string(lockout) + "\n"
: "";
return Event::to_string() +
"\tState:\t" + std::to_string(state) + "\n" + tail;
}
//TODO ported from context messages
ScannerState state = OTHER_STATE;
std::string systemTag = "";
@ -48,6 +94,11 @@ namespace piscan {
struct DemodStateEvent : public Event {
DemodStateEvent() : Event("demod_state_change") {};
virtual ~DemodStateEvent() {};
inline virtual std::string to_string() {
return Event::to_string() +
"\tTuner gain:\t" + std::to_string(tunerGainState) + "\n"
"\tSquelch:\t" + std::to_string(squelchState) + "\n";
}
float tunerGainState;
int squelchState;
};
@ -55,12 +106,18 @@ namespace piscan {
struct SignalLevelEvent : public Event {
SignalLevelEvent(int level) : Event("signal_level"), level(level) {};
virtual ~SignalLevelEvent(){};
inline virtual std::string to_string() {
return Event::to_string() + "\tSignal level:\t" + std::to_string(level) + "\n";
}
int level;
};
struct LoggingEvent : public Event {
LoggingEvent(int level, std::string line) : Event("log_write"), level(level), line(line) {};
virtual ~LoggingEvent(){};
inline virtual std::string to_string() {
return Event::to_string() + "\t> " + line + "\n";
}
int level;
std::string line;
};

View File

@ -106,7 +106,7 @@ void exit(int code){
}
void printEvent(events::EventPtr event) {
std::cerr << "**EVENT: " << event->topic << std::endl;
std::cerr << event->to_string();
}
bool app::system::stopSystem(){