New scope: corrected trigger display levels

This commit is contained in:
f4exb 2017-02-11 08:35:33 +01:00
parent 0672121044
commit 76cdb94d34
2 changed files with 52 additions and 3 deletions

View File

@ -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;
}
}
}

View File

@ -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();
};