mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-04-22 19:38:55 -04:00
New scope: corrected trigger display levels
This commit is contained in:
parent
0672121044
commit
76cdb94d34
sdrbase/dsp
@ -491,6 +491,12 @@ bool ScopeVisNG::handleMessage(const Message& message)
|
||||
if (triggerIndex < m_triggerConditions.size())
|
||||
{
|
||||
m_triggerConditions[triggerIndex].setData(conf.getTriggerData());
|
||||
|
||||
if (triggerIndex == m_focusedTriggerIndex)
|
||||
{
|
||||
computeDisplayTriggerLevels();
|
||||
m_glScope->updateDisplay();
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -572,3 +578,45 @@ void ScopeVisNG::initTraceBuffers()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ScopeVisNG::computeDisplayTriggerLevels()
|
||||
{
|
||||
std::vector<TraceData>::iterator itData = m_traces.m_tracesData.begin();
|
||||
|
||||
for (; itData != m_traces.m_tracesData.end(); ++itData)
|
||||
{
|
||||
if (m_triggerConditions[m_focusedTriggerIndex].m_projector->getProjectionType() == itData->m_projectionType)
|
||||
{
|
||||
float level = m_triggerConditions[m_focusedTriggerIndex].m_triggerData.m_triggerLevel;
|
||||
float levelPowerLin = level + 1.0f;
|
||||
float levelPowerdB = (100.0f * (level - 1.0f));
|
||||
float v;
|
||||
|
||||
if (itData->m_projectionType == ProjectionMagLin)
|
||||
{
|
||||
v = (levelPowerLin - itData->m_ofs)*itData->m_amp - 1.0f;
|
||||
}
|
||||
else if (itData->m_projectionType == ProjectionMagDB)
|
||||
{
|
||||
float ofsdB = itData->m_ofs * 100.0f;
|
||||
v = ((levelPowerdB + 100.0f - ofsdB)*itData->m_amp)/50.0f - 1.0f;
|
||||
}
|
||||
else
|
||||
{
|
||||
v = (level - itData->m_ofs) * itData->m_amp;
|
||||
}
|
||||
|
||||
if(v > 1.0f) {
|
||||
v = 1.0f;
|
||||
} else if (v < -1.0f) {
|
||||
v = -1.0f;
|
||||
}
|
||||
|
||||
itData->m_triggerDisplayLevel = v;
|
||||
}
|
||||
else
|
||||
{
|
||||
itData->m_triggerDisplayLevel = 2.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -729,7 +729,7 @@ private:
|
||||
bool condition, trigger;
|
||||
|
||||
if (triggerCondition.m_projector->getProjectionType() == ProjectionMagDB) {
|
||||
condition = triggerCondition.m_projector->run(s) > m_levelPwoerDB;
|
||||
condition = triggerCondition.m_projector->run(s) > m_levelPowerDB;
|
||||
} else if (triggerCondition.m_projector->getProjectionType() == ProjectionMagLin) {
|
||||
condition = triggerCondition.m_projector->run(s) > m_levelPowerLin;
|
||||
} else {
|
||||
@ -772,11 +772,11 @@ private:
|
||||
void computeLevels()
|
||||
{
|
||||
m_levelPowerLin = m_level + 1.0f;
|
||||
m_levelPwoerDB = (100.0f * (m_level - 1.0f));
|
||||
m_levelPowerDB = (100.0f * (m_level - 1.0f));
|
||||
}
|
||||
|
||||
Real m_level;
|
||||
Real m_levelPwoerDB;
|
||||
Real m_levelPowerDB;
|
||||
Real m_levelPowerLin;
|
||||
bool m_reset;
|
||||
};
|
||||
@ -837,6 +837,7 @@ private:
|
||||
* - every time a trace data changes: projection type, amp, offset
|
||||
* - every time a trace data is added or removed
|
||||
*/
|
||||
void computeDisplayTriggerLevels();
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user