Files
2017-12-13 11:16:21 +01:00

234 lines
8.1 KiB
C++

#ifndef __DOFrame__
#define __DOFrame__
// $Id: DOFrame.h 22327 2016-10-11 13:18:26Z ritt $
/**
@file
Subclass of DOFrame_fb, which is generated by wxFormBuilder.
*/
class EPThread;
/** Implementing DOFrame_fb */
class DOFrame : public DOFrame_fb
{
protected:
void LoadConfig(char *error, int size);
void SaveConfig(void);
// Handlers for DOFrame_fb events.
void OnConfig(wxCommandEvent& event);
void OnMeasure(wxCommandEvent& event);
void OnDisplay(wxCommandEvent& event);
void OnPrint(wxCommandEvent& event);
void OnExit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
void OnSave(wxCommandEvent& event);
void OnTrigger(wxCommandEvent& event);
void OnTrgButton(wxCommandEvent& event);
void OnTrgLevelChange(wxScrollEvent& event);
void OnTrgDelayChange(wxScrollEvent& event);
void OnChnOn(wxCommandEvent& event);
void OnPosChange(wxScrollEvent& event);
void OnScaleChange(wxCommandEvent& event);
void OnHScaleChange(wxCommandEvent& event);
void OnHOffsetChange(wxScrollEvent& event);
void OnZero(wxMouseEvent& event);
void OnTimer(wxTimerEvent& event);
void OnCursor(wxCommandEvent& event);
void OnSnap(wxCommandEvent& event);
void ProcessEvents(void);
public:
DOFrame( wxWindow* parent );
~DOFrame();
ConfigDialog *GetConfigDialog() { return m_configDialog; }
wxColor GetColor(int i, bool p) { return p ? m_pcolor[i]: m_color[i]; }
int GetAcqPerSecond() { return m_acqPerSecond; }
double GetTrgLevel(int i) { return m_trgLevel[m_board][i]; }
bool IsTrgConfigEnabled() { return m_trgConfigEnabled[m_board]; }
int GetTrgMode() { return m_trgMode[m_board]; }
int GetTrgPolarity() { return m_trgNegative[m_board]; }
double GetTrgDelay() { return m_trgDelayNs[m_board]; }
int GetTriggerConfig() { return m_trgConfig[m_board]; }
int GetTriggerConfig(int b) { return m_trgConfig[b]; }
int GetTriggerChannel(int b);
double GetTrgPosition(int board);
time_t GetLastTriggerUpdate() { return m_lastTriggerUpdate; }
bool IsIdle();
bool GetRearm() { return m_rearm; }
bool GetTrgCorr() { return m_trgCorr; }
MXML_WRITER *GetWFFile() { return m_WFFile; }
int GetWFfd() { return m_WFfd; }
int GetNSaved() { return m_nSaved; }
int GetNSaveMax() { return m_nSaveMax; }
void SetRearm(bool f) { m_rearm = f; }
void SetSamplingSpeed(double speed);
double GetReqSamplingSpeed() { return m_reqSamplingSpeed; }
double GetActSamplingSpeed();
void SetTrgLevel(int i, double value);
Osci *GetOsci() { return m_osci; }
void SetPaintMode(int pm) { m_screen->SetPaintMode(pm); }
void SetDisplayDateTime(bool flag);
void SetDisplayShowGrid(bool flag);
void SetDisplayLines(bool flag);
void SetDisplayMode(int mode, int n);
void SetDisplayScalers(bool flag);
void SetDisplayCalibrated(bool flag);
void SetDisplayCalibrated2(bool flag);
void SetDisplayTCalOn(bool flag);
void SetDisplayTrgCorr(bool flag);
void SetDisplayRotated(bool flag);
void SetCursorA(bool flag);
void SetCursorB(bool flag);
bool IsCursorA() { return m_cursorA; }
bool IsCursorB() { return m_cursorB; }
int ActiveCursor() { return m_actCursor; }
void SetActiveCursor(int c) { m_actCursor = c; }
bool IsSnap() { return m_snap; }
void ToggleControls();
void SetMeasurement(int id, bool flag);
void SetMathDisplay(int id, bool flag);
void OnSetTriggerConfig(int id, bool flag);
void SetTriggerConfig(int id, int config);
void SetTriggerPolarity(int b, bool negative);
bool IsTranspTrigger() { return m_transpTrigger; }
void SetStat(bool flag);
void SetHist(bool flag);
void SetStatNStat(int n);
int GetNStat() { return m_nStat; }
void SetIndicator(bool flag);
void SetClkOn(bool flag){ m_clkOn = flag; m_osci->SetClkOn(flag) ; }
bool GetClkOn() { return m_clkOn; }
void SelectBoard(int board);
int GetCurrentBoard() { return m_board; }
void SetMultiBoard(bool flag);
void SetSplitMode(bool flag) { m_splitMode = flag; m_screen->SetSplitMode(flag); }
bool GetMultiBoard() { return m_multiBoard; }
void SetSource(int board, int firstChannel, int chnSection);
void SetRefclk(int board, bool flag);
bool GetRefclk(int board) { return m_refClk[board]; }
void SetRange(double range){ m_range[m_board] = range; }
double GetRange() { return m_range[m_board]; }
void SetSpikeRemoval(bool flag) { m_spikeRemoval = flag; m_osci->SetSpikeRemoval(flag); }
bool GetSpikeRemovel() { return m_spikeRemoval; }
void StatReset();
bool IsStat() { return m_stat; }
bool IsHist() { return m_hist; }
bool IsIndicator() { return m_indicator; }
wxTimer *GetTimer() { return m_timer; }
void UpdateStatusBar();
bool IsFirst() { return m_first; }
void SetFreqLock(bool flag) { m_freqLocked = flag; }
bool IsFreqLocked() { return m_freqLocked; }
void SetProgress(int prog) { m_progress = prog; }
int GetProgress() { return m_progress; }
void UpdateWaveforms();
void ClearWaveforms();
void UpdateControls();
float *GetWaveform(int b, int c);
float *GetTime(int b, int c);
void EnableTriggerConfig(bool flag);
bool IsMeasurement(int m, int chn);
double GetMeasurement(int idx, double *x, double *y, int n);
wxString GetMeasurementName(int idx) { return m_measurement[idx][0]->GetName(); }
Measurement* GetMeasurement(int idx, int chn);
void EvaluateMeasurements(void);
void ChangeHScale(int delta);
void RecalculateHOffset(double trgFrac);
void CloseWFFile(bool errorFlag);
void SetSaveBtn(wxString l, wxString t);
void IncrementAcquisitions();
void IncrementSaved();
void EnableEPThread(bool flag);
void SaveHisto();
private:
DECLARE_EVENT_TABLE()
DOScreen *m_screen;
Osci *m_osci;
Measurement *m_measurement[Measurement::N_MEASUREMENTS][4];
bool m_measFlag[Measurement::N_MEASUREMENTS][4];
bool m_stat;
bool m_hist;
bool m_indicator;
bool m_first;
wxTimer *m_timer;
ConfigDialog *m_configDialog;
MeasureDialog *m_measureDialog;
TriggerDialog *m_triggerDialog;
DisplayDialog *m_displayDialog;
EPThread *m_epthread;
float m_time[MAX_N_BOARDS][4][2048];
float m_waveform[MAX_N_BOARDS][4][2048];
char m_xmlError[256];
bool m_running;
bool m_single;
bool m_rearm;
double m_reqSamplingSpeed;
bool m_freqLocked;
bool m_oldIdle;
double m_trgLevel[MAX_N_BOARDS][4];
int m_trgMode[MAX_N_BOARDS];
bool m_trgNegative[MAX_N_BOARDS];
int m_trgDelay[MAX_N_BOARDS];
double m_trgDelayNs[MAX_N_BOARDS];
int m_trgConfig[MAX_N_BOARDS];
bool m_trgConfigEnabled[MAX_N_BOARDS];
bool m_refClk[MAX_N_BOARDS];
bool m_trgCorr;
int m_HScale[MAX_N_BOARDS];
int m_HOffset[MAX_N_BOARDS];
bool m_chnOn[MAX_N_BOARDS][4];
int m_chnOffset[MAX_N_BOARDS][4];
int m_chnScale[MAX_N_BOARDS][4];
bool m_clkOn;
double m_range[MAX_N_BOARDS];
bool m_spikeRemoval;
bool m_displayScalers;
wxColour m_color[6];
wxColour m_pcolor[6];
int m_acquisitions;
wxStopWatch m_stopWatch;
wxStopWatch m_stopWatch1;
int m_acqPerSecond;
int m_nStat;
time_t m_lastTriggerUpdate;
MXML_WRITER *m_WFFile;
int m_WFfd;
int m_nSaved;
int m_nSaveMax;
int m_actCursor;
bool m_cursorA;
bool m_cursorB;
bool m_snap;
bool m_hideControls;
int m_board;
int m_firstChannel;
int m_chnSection;
bool m_multiBoard;
bool m_splitMode;
bool m_transpTrigger;
int m_progress;
};
#endif // __DOFrame__