ROOT logo
#ifndef __TMrbGassiplex__
#define __TMrbGassiplex__

//_________________________________________________[C++ CLASS DEFINITION FILE]
//////////////////////////////////////////////////////////////////////////////
// Name:           expconf/inc/TMrbGassiplex.h
// Purpose:        Define experimental configuration for MARaBOU
// Class:          TMrbGassiplex        -- Gassiplex module TUM/E12
// Description:    Class definitions to implement a configuration front-end for MARaBOU
// Author:         R. Lutter
// Revision:       $Id$
// Date:
// Keywords:
//////////////////////////////////////////////////////////////////////////////

namespace std {} using namespace std;

#include <cstdlib>
#include <iostream>
#include <sstream>
#include <iomanip>
#include <fstream>

#include "Rtypes.h"
#include "TSystem.h"
#include "TEnv.h"
#include "TObject.h"

//______________________________________________________[C++ CLASS DEFINITION]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbGassiplex
// Purpose:        Define a Gassiplex module
// Description:    Defines a Gassiplex module
// Keywords:
//////////////////////////////////////////////////////////////////////////////

class TMrbGassiplex : public TMrbVMEModule {

	public:
		enum				{	kAddrMod			=	0x09	};

		enum				{	kNofChansPerBoard	=	64	};

	public:

		TMrbGassiplex() {};  												// default ctor
		TMrbGassiplex(const Char_t * ModuleName, UInt_t BaseAddr, Int_t NofChannels); 			// define a new module
		~TMrbGassiplex() {};													// default dtor

		Bool_t MakeReadoutCode(ofstream & RdoStrm, TMrbConfig::EMrbModuleTag TagIndex);  	// generate part of code
		Bool_t MakeReadoutCode(ofstream & RdoStrm, TMrbConfig::EMrbModuleTag TagIndex, TMrbVMEChannel * Channel, Int_t Value = 0);  	// generate code for given channel
		
		virtual inline const Char_t * GetMnemonic() const { return("gassiplex"); }; 	// module mnemonic

		inline void SetBlockXfer(Bool_t Flag = kTRUE) { fBlockXfer = Flag; };
		inline Bool_t BlockXferEnabled() { return(fBlockXfer); };

		inline Bool_t HasBlockXfer() const { return(kTRUE); };			// module is capable of using BLT
		inline Bool_t HasOwnMapping() const { return(kTRUE); };			// module has its own vme mapping

		virtual Bool_t CheckProcType();
		
		TEnv * UseSettings(const Char_t * SettingsFile = NULL);

		inline void Help() { gSystem->Exec(Form("mrbHelp %s", this->ClassName())); };

	protected:
		void DefineRegisters(); 							// define vme registers

	protected:
		Bool_t fBlockXfer;
		Int_t fNofChannels;
		TString fSettingsFile;

	ClassDef(TMrbGassiplex, 1)		// [Config] Gassiplex module
};

#endif
 TMrbGassiplex.h:1
 TMrbGassiplex.h:2
 TMrbGassiplex.h:3
 TMrbGassiplex.h:4
 TMrbGassiplex.h:5
 TMrbGassiplex.h:6
 TMrbGassiplex.h:7
 TMrbGassiplex.h:8
 TMrbGassiplex.h:9
 TMrbGassiplex.h:10
 TMrbGassiplex.h:11
 TMrbGassiplex.h:12
 TMrbGassiplex.h:13
 TMrbGassiplex.h:14
 TMrbGassiplex.h:15
 TMrbGassiplex.h:16
 TMrbGassiplex.h:17
 TMrbGassiplex.h:18
 TMrbGassiplex.h:19
 TMrbGassiplex.h:20
 TMrbGassiplex.h:21
 TMrbGassiplex.h:22
 TMrbGassiplex.h:23
 TMrbGassiplex.h:24
 TMrbGassiplex.h:25
 TMrbGassiplex.h:26
 TMrbGassiplex.h:27
 TMrbGassiplex.h:28
 TMrbGassiplex.h:29
 TMrbGassiplex.h:30
 TMrbGassiplex.h:31
 TMrbGassiplex.h:32
 TMrbGassiplex.h:33
 TMrbGassiplex.h:34
 TMrbGassiplex.h:35
 TMrbGassiplex.h:36
 TMrbGassiplex.h:37
 TMrbGassiplex.h:38
 TMrbGassiplex.h:39
 TMrbGassiplex.h:40
 TMrbGassiplex.h:41
 TMrbGassiplex.h:42
 TMrbGassiplex.h:43
 TMrbGassiplex.h:44
 TMrbGassiplex.h:45
 TMrbGassiplex.h:46
 TMrbGassiplex.h:47
 TMrbGassiplex.h:48
 TMrbGassiplex.h:49
 TMrbGassiplex.h:50
 TMrbGassiplex.h:51
 TMrbGassiplex.h:52
 TMrbGassiplex.h:53
 TMrbGassiplex.h:54
 TMrbGassiplex.h:55
 TMrbGassiplex.h:56
 TMrbGassiplex.h:57
 TMrbGassiplex.h:58
 TMrbGassiplex.h:59
 TMrbGassiplex.h:60
 TMrbGassiplex.h:61
 TMrbGassiplex.h:62
 TMrbGassiplex.h:63
 TMrbGassiplex.h:64
 TMrbGassiplex.h:65
 TMrbGassiplex.h:66
 TMrbGassiplex.h:67
 TMrbGassiplex.h:68
 TMrbGassiplex.h:69
 TMrbGassiplex.h:70
 TMrbGassiplex.h:71
 TMrbGassiplex.h:72
 TMrbGassiplex.h:73
 TMrbGassiplex.h:74
 TMrbGassiplex.h:75
 TMrbGassiplex.h:76
 TMrbGassiplex.h:77
 TMrbGassiplex.h:78