diff --git a/sdrbase/dsp/scopevisng.cpp b/sdrbase/dsp/scopevisng.cpp index aef71a8aa..25967baeb 100644 --- a/sdrbase/dsp/scopevisng.cpp +++ b/sdrbase/dsp/scopevisng.cpp @@ -21,7 +21,11 @@ MESSAGE_CLASS_DEFINITION(ScopeVisNG::MsgConfigureScopeVisNG, Message) MESSAGE_CLASS_DEFINITION(ScopeVisNG::MsgScopeVisNGAddTrigger, Message) +MESSAGE_CLASS_DEFINITION(ScopeVisNG::MsgScopeVisNGChangeTrigger, Message) MESSAGE_CLASS_DEFINITION(ScopeVisNG::MsgScopeVisNGRemoveTrigger, Message) +MESSAGE_CLASS_DEFINITION(ScopeVisNG::MsgScopeVisNGAddTrace, Message) +MESSAGE_CLASS_DEFINITION(ScopeVisNG::MsgScopeVisNGChangeTrace, Message) +MESSAGE_CLASS_DEFINITION(ScopeVisNG::MsgScopeVisNGRemoveTrace, Message) const uint ScopeVisNG::m_traceChunkSize = 4800; const Real ScopeVisNG::ProjectorMagDB::mult = (10.0f / log2f(10.0f)); @@ -64,11 +68,46 @@ void ScopeVisNG::setSampleRate(int sampleRate) } } -void ScopeVisNG::configure(MessageQueue* msgQueue, - uint traceSize) +void ScopeVisNG::configure(uint traceSize) { Message* cmd = MsgConfigureScopeVisNG::create(traceSize); - msgQueue->push(cmd); + getInputMessageQueue()->push(cmd); +} + +void ScopeVisNG::addTrace(const TraceData& traceData) +{ + Message* cmd = MsgScopeVisNGAddTrace::create(traceData); + getInputMessageQueue()->push(cmd); +} + +void ScopeVisNG::changeTrace(const TraceData& traceData, uint32_t traceIndex) +{ + Message* cmd = MsgScopeVisNGChangeTrace::create(traceData, traceIndex); + getInputMessageQueue()->push(cmd); +} + +void ScopeVisNG::removeTrace(uint32_t traceIndex) +{ + Message* cmd = MsgScopeVisNGRemoveTrace::create(traceIndex); + getInputMessageQueue()->push(cmd); +} + +void ScopeVisNG::addTrigger(const TriggerData& triggerData) +{ + Message* cmd = MsgScopeVisNGAddTrigger::create(triggerData); + getInputMessageQueue()->push(cmd); +} + +void ScopeVisNG::changeTrigger(const TriggerData& triggerData, uint32_t triggerIndex) +{ + Message* cmd = MsgScopeVisNGChangeTrigger::create(triggerData, triggerIndex); + getInputMessageQueue()->push(cmd); +} + +void ScopeVisNG::removeTrigger(uint32_t triggerIndex) +{ + Message* cmd = MsgScopeVisNGRemoveTrigger::create(triggerIndex); + getInputMessageQueue()->push(cmd); } diff --git a/sdrbase/dsp/scopevisng.h b/sdrbase/dsp/scopevisng.h index f7d4c8f97..52bf05049 100644 --- a/sdrbase/dsp/scopevisng.h +++ b/sdrbase/dsp/scopevisng.h @@ -95,8 +95,13 @@ public: virtual ~ScopeVisNG(); void setSampleRate(int sampleRate); - void configure(MessageQueue* msgQueue, - uint32_t traceSize); + void configure(uint32_t traceSize); + void addTrace(const TraceData& traceData); + void changeTrace(const TraceData& traceData, uint32_t traceIndex); + void removeTrace(uint32_t traceIndex); + void addTrigger(const TriggerData& triggerData); + void changeTrigger(const TriggerData& triggerData, uint32_t traceIndex); + void removeTrigger(uint32_t triggerIndex); virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly); virtual void start(); @@ -133,16 +138,37 @@ private: public: static MsgScopeVisNGAddTrigger* create( - ProjectionType projectionType) + const TriggerData& triggerData) { - return new MsgScopeVisNGAddTrigger(projectionType); + return new MsgScopeVisNGAddTrigger(triggerData); } private: - ProjectionType m_projectionType; + TriggerData m_triggerData; - MsgScopeVisNGAddTrigger(ProjectionType projectionType) : - m_projectionType(projectionType) + MsgScopeVisNGAddTrigger(const TriggerData& triggerData) : + m_triggerData(triggerData) + {} + }; + + // --------------------------------------------- + class MsgScopeVisNGChangeTrigger : public Message { + MESSAGE_CLASS_DECLARATION + + public: + static MsgScopeVisNGChangeTrigger* create( + const TriggerData& triggerData, uint32_t triggerIndex) + { + return new MsgScopeVisNGChangeTrigger(triggerData, triggerIndex); + } + + private: + TriggerData m_triggerData; + uint32_t m_triggerIndex; + + MsgScopeVisNGChangeTrigger(const TriggerData& triggerData, uint32_t triggerIndex) : + m_triggerData(triggerData), + m_triggerIndex(triggerIndex) {} }; @@ -165,6 +191,65 @@ private: {} }; + // --------------------------------------------- + class MsgScopeVisNGAddTrace : public Message { + MESSAGE_CLASS_DECLARATION + + public: + static MsgScopeVisNGAddTrace* create( + const TraceData& traceData) + { + return new MsgScopeVisNGAddTrace(traceData); + } + + private: + TraceData m_traceData; + + MsgScopeVisNGAddTrace(const TraceData& traceData) : + m_traceData(traceData) + {} + }; + + // --------------------------------------------- + class MsgScopeVisNGChangeTrace : public Message { + MESSAGE_CLASS_DECLARATION + + public: + static MsgScopeVisNGChangeTrace* create( + const TraceData& traceData, uint32_t traceIndex) + { + return new MsgScopeVisNGChangeTrace(traceData, traceIndex); + } + + private: + TraceData m_traceData; + uint32_t m_traceIndex; + + MsgScopeVisNGChangeTrace(TraceData traceData, uint32_t traceIndex) : + m_traceData(traceData), + m_traceIndex(traceIndex) + {} + }; + + // --------------------------------------------- + class MsgScopeVisNGRemoveTrace : public Message { + MESSAGE_CLASS_DECLARATION + + public: + static MsgScopeVisNGRemoveTrace* create( + uint32_t traceIndex) + { + return new MsgScopeVisNGRemoveTrace(traceIndex); + } + + private: + uint32_t m_traceIndex; + + MsgScopeVisNGRemoveTrace(uint32_t traceIndex) : + m_traceIndex(traceIndex) + {} + }; + // === projectors === // --------------------------------------------- class Projector