#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__