ROOT logo
#ifndef __DGFSetupPanel_h__
#define __DGFSetupPanel_h__

//_________________________________________________[C++ CLASS DEFINITION FILE]
//////////////////////////////////////////////////////////////////////////////
// Name:           DGFSetupPanel.h
// Purpose:        Class defs for the XIA DGF-4C GUI
// Class:          DGFSetupPanel
// Description:    A GUI to operate a XIA DGF-4C
// Author:         R. Lutter
// Revision:       $Id: DGFSetupPanel.h,v 1.15 2008-12-29 13:48:25 Rudolf.Lutter Exp $       
// Date:           
// URL:            
// Keywords:       
//////////////////////////////////////////////////////////////////////////////

namespace std {} using namespace std;

#include <iostream>
#include <iomanip>

#include "TList.h"

#include "TGWindow.h"
#include "TGFrame.h"
#include "TGButton.h"

#include "TMrbLofNamedX.h"
#include "TMrbDGF.h"

#include "TGMrbCheckButton.h"
#include "TGMrbRadioButton.h"
#include "TGMrbTextButton.h"
#include "TGMrbPictureButton.h"
#include "TGMrbLabelEntry.h"
#include "TGMrbFocusList.h"

#include "DGFControlCommon.h"
#include "DGFModule.h"

//______________________________________________________[C++ CLASS DEFINITION]
//////////////////////////////////////////////////////////////////////////////
// Name:           DGFSetupPanel
// Purpose:        Main frame to define setup params
// Constructors:   
// Description:    A dialog window to enter setup params
// Keywords:       
//////////////////////////////////////////////////////////////////////////////

class DGFSetupPanel : public TGCompositeFrame {

	public:

		// number of ppc procs
		enum					{	kNofPPCs				=	8	};

		// cmd ids to dispatch over X events in this panel
		enum EDGFSetupCmdId 	{	kDGFSetupCamacHost,							// group frame "CAMAC"

									kDGFSetupConnectToEsone,					// connect modules
									kDGFSetupReloadDGFs,						// reload code
									kDGFSetupAbortBusySync,						// abort busy-sync loop
									kDGFSetupRestartEsone,						// restart esone server
									kDGFSetupAbortEsone, 						// abort restart procedure

									kDGFSetupModuleSelectAll,					// select all modules
									kDGFSetupModuleSelectNone,					// select none
									kDGFSetupModuleSelectColumn 				// select modules column-wise
																				// Attention: HAS TO BE LAST INDEX!
								};

		// dgf codes
		enum EDGFSetupCodeId	{	kDGFSetupCodeSystemFPGA = BIT(0),
									kDGFSetupCodeFippiFPGA = BIT(1),
									kDGFSetupCodeDSP = BIT(2)
								};
				
	public:
		DGFSetupPanel(TGCompositeFrame * TabFrame);
		virtual ~DGFSetupPanel() { fHeap.Delete(); };

		void SelectModule(Int_t FrameId, Int_t Selection);		// slot methods
		void PerformAction(Int_t FrameId, Int_t Selection);

		Bool_t ConnectToEsone();					// connect modules to esone server
		Bool_t ReloadDGFs();						// reload dgf code
		Bool_t AbortDGFs(); 						// abort busy-sync loop
		Bool_t RestartEsone();						// restart esone server
		Bool_t TurnUserPSAOnOff(Bool_t ActivateFlag);	// turn user psa on/off
		Bool_t TurnUserPSAOnOff(DGFModule * Module, Bool_t ActivateFlag);
		Bool_t SetSwitchBus(Bool_t IndivFlag);		// set switchbus register
		Bool_t SetInSynch(Bool_t SyncFlag);	// synchronize clock with run
		Bool_t SetInSynch(DGFModule * Module, Bool_t ActivateFlag);
		Bool_t SetSynchWait(Bool_t SimulFlag);	// start/stop simultaneously
		Bool_t SetSynchWait(DGFModule * Module, Bool_t ActivateFlag);
		
	protected:
		Bool_t DaqIsRunning();						// check if a daq is running
		void SetupGeneral();						// set global options

	protected:
		TList fHeap;								//! list of objects created on heap
		TGGroupFrame * fCAMACFrame; 				// camac defs
		TGMrbLabelEntry * fCAMACHostEntry;			//		default host
		TGMrbCheckButtonGroup * fDGFFrame;			// dgf defs
		TGGroupFrame * fCodeFrame;			 		// codes to be loaded
		TGMrbCheckButtonList * fCodes;
		TGMrbRadioButtonList * fBroadCast;
		TGGroupFrame * fModules;			 		// module list
		TGMrbCheckButtonList * fCluster[kNofClusters];
		TGHorizontalFrame * fSelectFrame;
		TGMrbPictureButtonList * fColSelect[kNofModulesPerCluster];
		TGMrbPictureButtonList * fAllSelect;
		TGMrbTextButtonGroup * fActionFrame;		// connect to camac

		TMrbLofNamedX fSetupDGFModes;				// checkbuttons:	dgf modes
		TMrbLofNamedX fSetupDGFCodes;				// checkbuttons:	dgf codes
		TMrbLofNamedX fSetupConnect;				// text buttons:	connect to camac
		TMrbLofNamedX fSetupBroadCast;				// radio buttons:	broadcast on off
		
		TMrbLofNamedX fLofModuleKeys[kNofClusters];
		
		TGMrbFocusList fFocusList;

	ClassDef(DGFSetupPanel, 0)		// [DGFControl] Module setup
};

#endif
 DGFSetupPanel.h:1
 DGFSetupPanel.h:2
 DGFSetupPanel.h:3
 DGFSetupPanel.h:4
 DGFSetupPanel.h:5
 DGFSetupPanel.h:6
 DGFSetupPanel.h:7
 DGFSetupPanel.h:8
 DGFSetupPanel.h:9
 DGFSetupPanel.h:10
 DGFSetupPanel.h:11
 DGFSetupPanel.h:12
 DGFSetupPanel.h:13
 DGFSetupPanel.h:14
 DGFSetupPanel.h:15
 DGFSetupPanel.h:16
 DGFSetupPanel.h:17
 DGFSetupPanel.h:18
 DGFSetupPanel.h:19
 DGFSetupPanel.h:20
 DGFSetupPanel.h:21
 DGFSetupPanel.h:22
 DGFSetupPanel.h:23
 DGFSetupPanel.h:24
 DGFSetupPanel.h:25
 DGFSetupPanel.h:26
 DGFSetupPanel.h:27
 DGFSetupPanel.h:28
 DGFSetupPanel.h:29
 DGFSetupPanel.h:30
 DGFSetupPanel.h:31
 DGFSetupPanel.h:32
 DGFSetupPanel.h:33
 DGFSetupPanel.h:34
 DGFSetupPanel.h:35
 DGFSetupPanel.h:36
 DGFSetupPanel.h:37
 DGFSetupPanel.h:38
 DGFSetupPanel.h:39
 DGFSetupPanel.h:40
 DGFSetupPanel.h:41
 DGFSetupPanel.h:42
 DGFSetupPanel.h:43
 DGFSetupPanel.h:44
 DGFSetupPanel.h:45
 DGFSetupPanel.h:46
 DGFSetupPanel.h:47
 DGFSetupPanel.h:48
 DGFSetupPanel.h:49
 DGFSetupPanel.h:50
 DGFSetupPanel.h:51
 DGFSetupPanel.h:52
 DGFSetupPanel.h:53
 DGFSetupPanel.h:54
 DGFSetupPanel.h:55
 DGFSetupPanel.h:56
 DGFSetupPanel.h:57
 DGFSetupPanel.h:58
 DGFSetupPanel.h:59
 DGFSetupPanel.h:60
 DGFSetupPanel.h:61
 DGFSetupPanel.h:62
 DGFSetupPanel.h:63
 DGFSetupPanel.h:64
 DGFSetupPanel.h:65
 DGFSetupPanel.h:66
 DGFSetupPanel.h:67
 DGFSetupPanel.h:68
 DGFSetupPanel.h:69
 DGFSetupPanel.h:70
 DGFSetupPanel.h:71
 DGFSetupPanel.h:72
 DGFSetupPanel.h:73
 DGFSetupPanel.h:74
 DGFSetupPanel.h:75
 DGFSetupPanel.h:76
 DGFSetupPanel.h:77
 DGFSetupPanel.h:78
 DGFSetupPanel.h:79
 DGFSetupPanel.h:80
 DGFSetupPanel.h:81
 DGFSetupPanel.h:82
 DGFSetupPanel.h:83
 DGFSetupPanel.h:84
 DGFSetupPanel.h:85
 DGFSetupPanel.h:86
 DGFSetupPanel.h:87
 DGFSetupPanel.h:88
 DGFSetupPanel.h:89
 DGFSetupPanel.h:90
 DGFSetupPanel.h:91
 DGFSetupPanel.h:92
 DGFSetupPanel.h:93
 DGFSetupPanel.h:94
 DGFSetupPanel.h:95
 DGFSetupPanel.h:96
 DGFSetupPanel.h:97
 DGFSetupPanel.h:98
 DGFSetupPanel.h:99
 DGFSetupPanel.h:100
 DGFSetupPanel.h:101
 DGFSetupPanel.h:102
 DGFSetupPanel.h:103
 DGFSetupPanel.h:104
 DGFSetupPanel.h:105
 DGFSetupPanel.h:106
 DGFSetupPanel.h:107
 DGFSetupPanel.h:108
 DGFSetupPanel.h:109
 DGFSetupPanel.h:110
 DGFSetupPanel.h:111
 DGFSetupPanel.h:112
 DGFSetupPanel.h:113
 DGFSetupPanel.h:114
 DGFSetupPanel.h:115
 DGFSetupPanel.h:116
 DGFSetupPanel.h:117
 DGFSetupPanel.h:118
 DGFSetupPanel.h:119
 DGFSetupPanel.h:120
 DGFSetupPanel.h:121
 DGFSetupPanel.h:122
 DGFSetupPanel.h:123
 DGFSetupPanel.h:124
 DGFSetupPanel.h:125
 DGFSetupPanel.h:126
 DGFSetupPanel.h:127
 DGFSetupPanel.h:128