Made transparent trigger mode wok in multi-board configuration
This commit is contained in:
@@ -150,7 +150,7 @@ void ConfigDialog::UpdateControls()
|
||||
m_cbExtRefclk->SetValue(m_osci->GetBoard(m_board)->GetRefclk() == 1);
|
||||
|
||||
if ((m_osci->GetBoard(m_board)->GetBoardType() == 8 || m_osci->GetBoard(m_board)->GetBoardType() == 9)
|
||||
&& (!m_osci->IsMultiBoard() || m_board == 0))
|
||||
&& !(m_osci->IsMultiBoard() && !m_frame->IsTranspTrigger() && m_board > 0))
|
||||
m_frame->EnableTriggerConfig(true);
|
||||
else
|
||||
m_frame->EnableTriggerConfig(false);
|
||||
@@ -178,7 +178,7 @@ void ConfigDialog::OnBoardSelect( wxCommandEvent& event )
|
||||
wxT("DRS Oscilloscope"), wxOK | wxICON_STOP, this);
|
||||
} else {
|
||||
if (b->GetScaler(5) < 300000) {
|
||||
str.Printf(wxT("No clock signal connected to CLK IN of board #%d"), i);
|
||||
str.Printf(wxT("No clock signal connected to CLK IN of board #%d. Keeping internal clock."), m_frame->GetOsci()->GetBoard(i)->GetBoardSerialNumber());
|
||||
wxMessageBox(str, wxT("DRS Oscilloscope"), wxOK | wxICON_STOP, this);
|
||||
m_frame->SetRefclk(i, false);
|
||||
} else {
|
||||
|
||||
@@ -93,6 +93,7 @@ DOFrame_fb( parent )
|
||||
m_chnSection = 0;
|
||||
m_multiBoard = false;
|
||||
m_splitMode = false;
|
||||
m_transpTrigger = false;
|
||||
|
||||
// initialize settings
|
||||
m_trgCorr = true;
|
||||
@@ -357,7 +358,7 @@ void DOFrame::ClearWaveforms()
|
||||
|
||||
void DOFrame::UpdateControls()
|
||||
{
|
||||
if (m_osci->IsMultiBoard() && m_board > 0) {
|
||||
if (m_osci->IsMultiBoard() && !m_transpTrigger && m_board > 0) {
|
||||
m_slTrgLevel->Enable(false);
|
||||
m_rbAuto->Enable(false);
|
||||
m_rbNormal->Enable(false);
|
||||
@@ -434,7 +435,7 @@ void DOFrame::UpdateControls()
|
||||
if (m_osci->GetCurrentBoard()->GetBoardType() < 8) {
|
||||
EnableTriggerConfig(false);
|
||||
} else {
|
||||
if (m_osci->IsMultiBoard() && m_board > 0)
|
||||
if (m_osci->IsMultiBoard() && !m_transpTrigger && m_board > 0)
|
||||
EnableTriggerConfig(false);
|
||||
else
|
||||
EnableTriggerConfig(true);
|
||||
@@ -529,6 +530,9 @@ void DOFrame::SaveConfig()
|
||||
sprintf(str, "%d", (int)m_splitMode);
|
||||
mxml_write_element(xml, "SplitMode", str);
|
||||
|
||||
sprintf(str, "%d", (int)m_transpTrigger);
|
||||
mxml_write_element(xml, "TranspTrig", str);
|
||||
|
||||
for (int b=0 ; b<m_osci->GetNumberOfBoards() ; b++) {
|
||||
sprintf(str, "Board-%d", m_osci->GetBoard(b)->GetBoardSerialNumber());
|
||||
mxml_start_element(xml, str);
|
||||
@@ -649,6 +653,9 @@ void DOFrame::LoadConfig(char *error, int size)
|
||||
node = mxml_find_node(osc, "SplitMode");
|
||||
if (node) m_splitMode = atoi(mxml_get_value(node)) > 0;
|
||||
|
||||
node = mxml_find_node(osc, "TranspTrig");
|
||||
if (node) m_transpTrigger = atoi(mxml_get_value(node)) > 0;
|
||||
|
||||
for (i=idx=0 ; ; i++) {
|
||||
PMXML_NODE b = mxml_subnode(osc, i);
|
||||
if (!b)
|
||||
@@ -1691,18 +1698,60 @@ void DOFrame::SetTriggerConfig(int id, bool flag)
|
||||
|
||||
if (id == ID_TRANS) {
|
||||
if (flag) {
|
||||
m_trgConfig[m_board] |= (1<<15);
|
||||
m_trgConfig[m_board] &= ~((1<<4) | (1<<12)); // remove possible EXT trigger
|
||||
} else
|
||||
m_trgConfig[m_board] &= ~(1<<15);
|
||||
// turn on transparent mode for all boards in multi-board mode
|
||||
if (m_multiBoard) {
|
||||
m_transpTrigger = true;
|
||||
for (int i=0 ; i<m_osci->GetNumberOfBoards() ; i++) {
|
||||
m_trgConfig[i] |= (1<<15);
|
||||
m_trgConfig[i] &= ~((1<<4) | (1<<12)); // remove possible EXT trigger
|
||||
}
|
||||
} else {
|
||||
m_transpTrigger = false;
|
||||
m_trgConfig[m_board] |= (1<<15);
|
||||
m_trgConfig[m_board] &= ~((1<<4) | (1<<12)); // remove possible EXT trigger
|
||||
}
|
||||
|
||||
// if no channel selected, select first one
|
||||
if ((m_trgConfig[m_board] & 0x7FFF) == 0) {
|
||||
m_trgConfig[m_board] |= 1;
|
||||
DOFrame::SelectBoard(m_board);
|
||||
}
|
||||
|
||||
} else {
|
||||
m_transpTrigger = false;
|
||||
if (m_multiBoard) {
|
||||
for (int i=0 ; i<m_osci->GetNumberOfBoards() ; i++) {
|
||||
m_trgConfig[i] &= ~(1<<15);
|
||||
}
|
||||
} else
|
||||
m_trgConfig[m_board] &= ~(1<<15);
|
||||
}
|
||||
}
|
||||
|
||||
if ((m_trgConfig[m_board] & 0x7FFF) > 0) {
|
||||
m_rbSource->Enable(false);
|
||||
m_osci->SetTriggerConfig(m_trgConfig[m_board]);
|
||||
if (m_multiBoard) {
|
||||
int b = m_board;
|
||||
for (int i=0 ; i<m_osci->GetNumberOfBoards() ; i++) {
|
||||
m_board = i;
|
||||
m_osci->SetTriggerConfig(m_trgConfig[i]);
|
||||
}
|
||||
m_board = b;
|
||||
} else {
|
||||
m_osci->SetTriggerConfig(m_trgConfig[m_board]);
|
||||
}
|
||||
} else {
|
||||
m_rbSource->Enable(true);
|
||||
m_osci->SetTriggerSource(m_trgSource[m_board]);
|
||||
if (m_multiBoard) {
|
||||
int b = m_board;
|
||||
for (int i=0 ; i<m_osci->GetNumberOfBoards() ; i++) {
|
||||
m_board = i;
|
||||
m_osci->SetTriggerSource(m_trgSource[i]);
|
||||
}
|
||||
m_board = b;
|
||||
} else {
|
||||
m_osci->SetTriggerSource(m_trgSource[m_board]);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -94,6 +94,7 @@ public:
|
||||
void SetTriggerConfig(int id, bool flag);
|
||||
void SetTriggerSource(int b, int source);
|
||||
void SetTriggerPolarity(int b, bool negative);
|
||||
bool IsTranspTrigger() { return m_transpTrigger; }
|
||||
void SetStat(bool flag);
|
||||
void SetHist(bool flag);
|
||||
void SetStatNStat(int n);
|
||||
@@ -224,6 +225,7 @@ private:
|
||||
int m_chnSection;
|
||||
bool m_multiBoard;
|
||||
bool m_splitMode;
|
||||
bool m_transpTrigger;
|
||||
|
||||
int m_progress;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user