142 lines
3.7 KiB
C++
142 lines
3.7 KiB
C++
/*
|
|
* TriggerDialog.cpp
|
|
* Modal Trigger Configuration Dialog class
|
|
* $Id: TriggerDialog.cpp 22292 2016-04-28 10:31:04Z ritt $
|
|
*/
|
|
|
|
#include "DRSOscInc.h"
|
|
|
|
TriggerDialog::TriggerDialog( wxWindow* parent )
|
|
:
|
|
TriggerDialog_fb( parent )
|
|
{
|
|
m_frame = (DOFrame *)parent;
|
|
m_board = 0;
|
|
|
|
UpdateControls();
|
|
}
|
|
|
|
void TriggerDialog::UpdateControls()
|
|
{
|
|
if (!m_frame->IsTrgConfigEnabled()) {
|
|
m_cbOR1->Disable();
|
|
m_cbOR2->Disable();
|
|
m_cbOR3->Disable();
|
|
m_cbOR4->Disable();
|
|
m_cbOREXT->Disable();
|
|
|
|
m_cbAND1->Disable();
|
|
m_cbAND2->Disable();
|
|
m_cbAND3->Disable();
|
|
m_cbAND4->Disable();
|
|
m_cbANDEXT->Disable();
|
|
|
|
m_cbTrans->Disable();
|
|
|
|
m_tbLevel1->Disable();
|
|
m_tbLevel2->Disable();
|
|
m_tbLevel3->Disable();
|
|
m_tbLevel4->Disable();
|
|
} else {
|
|
m_cbOR1->Enable();
|
|
m_cbOR2->Enable();
|
|
m_cbOR3->Enable();
|
|
m_cbOR4->Enable();
|
|
m_cbOREXT->Enable();
|
|
|
|
m_cbAND1->Enable();
|
|
m_cbAND2->Enable();
|
|
m_cbAND3->Enable();
|
|
m_cbAND4->Enable();
|
|
m_cbANDEXT->Enable();
|
|
|
|
m_cbTrans->Enable();
|
|
|
|
m_tbLevel1->Enable();
|
|
m_tbLevel2->Enable();
|
|
m_tbLevel3->Enable();
|
|
m_tbLevel4->Enable();
|
|
|
|
int tc = m_frame->GetTriggerConfig();
|
|
m_cbOR1->SetValue((tc & (1<<0))>0);
|
|
m_cbOR2->SetValue((tc & (1<<1))>0);
|
|
m_cbOR3->SetValue((tc & (1<<2))>0);
|
|
m_cbOR4->SetValue((tc & (1<<3))>0);
|
|
m_cbOREXT->SetValue((tc & (1<<4))>0);
|
|
|
|
m_cbAND1->SetValue((tc & (1<<8))>0);
|
|
m_cbAND2->SetValue((tc & (1<<9))>0);
|
|
m_cbAND3->SetValue((tc & (1<<10))>0);
|
|
m_cbAND4->SetValue((tc & (1<<11))>0);
|
|
m_cbANDEXT->SetValue((tc & (1<<12))>0);
|
|
|
|
m_cbTrans->SetValue((tc & (1<<15))>0);
|
|
|
|
wxString s;
|
|
s.Printf(wxT("%1.3lf"), m_frame->GetTrgLevel(0));
|
|
m_tbLevel1->SetValue(s);
|
|
s.Printf(wxT("%1.3lf"), m_frame->GetTrgLevel(1));
|
|
m_tbLevel2->SetValue(s);
|
|
s.Printf(wxT("%1.3lf"), m_frame->GetTrgLevel(2));
|
|
m_tbLevel3->SetValue(s);
|
|
s.Printf(wxT("%1.3lf"), m_frame->GetTrgLevel(3));
|
|
m_tbLevel4->SetValue(s);
|
|
}
|
|
}
|
|
|
|
void TriggerDialog::OnClose( wxCommandEvent& event )
|
|
{
|
|
this->Hide();
|
|
}
|
|
|
|
void TriggerDialog::OnButton( wxCommandEvent& event )
|
|
{
|
|
if (event.GetId() == ID_TRANS) {
|
|
DRSBoard *b = m_frame->GetOsci()->GetCurrentBoard();
|
|
if (b->GetFirmwareVersion() < 21699) {
|
|
wxMessageBox(wxT("For this operation a boards with firmware\nrevision >= 21699 is required"),
|
|
wxT("DRS Oscilloscope"), wxOK | wxICON_STOP, this);
|
|
m_cbTrans->SetValue(false);
|
|
return;
|
|
}
|
|
if (event.IsChecked()) {
|
|
m_cbOREXT->SetValue(false);
|
|
m_cbOREXT->Disable();
|
|
m_cbANDEXT->SetValue(false);
|
|
m_cbANDEXT->Disable();
|
|
} else {
|
|
m_cbOREXT->Enable();
|
|
m_cbANDEXT->Enable();
|
|
}
|
|
}
|
|
m_frame->SetTriggerConfig(event.GetId(), event.IsChecked());
|
|
}
|
|
|
|
void TriggerDialog::OnTriggerLevel( wxCommandEvent& event )
|
|
{
|
|
if (event.GetId() == ID_LEVEL1)
|
|
m_frame->SetTrgLevel(0, atof(m_tbLevel1->GetValue().mb_str()));
|
|
if (event.GetId() == ID_LEVEL2)
|
|
m_frame->SetTrgLevel(1, atof(m_tbLevel2->GetValue().mb_str()));
|
|
if (event.GetId() == ID_LEVEL3)
|
|
m_frame->SetTrgLevel(2, atof(m_tbLevel3->GetValue().mb_str()));
|
|
if (event.GetId() == ID_LEVEL4)
|
|
m_frame->SetTrgLevel(3, atof(m_tbLevel4->GetValue().mb_str()));
|
|
}
|
|
|
|
void TriggerDialog::SetTriggerLevel(double level)
|
|
{
|
|
wxString s;
|
|
s.Printf(wxT("%1.3lf"), level);
|
|
m_tbLevel1->SetValue(s);
|
|
m_tbLevel2->SetValue(s);
|
|
m_tbLevel3->SetValue(s);
|
|
m_tbLevel4->SetValue(s);
|
|
}
|
|
|
|
void TriggerDialog::SelectBoard(int board)
|
|
{
|
|
m_board = board;
|
|
UpdateControls();
|
|
}
|