#ifndef __TMrbVMEModule_h__
#define __TMrbVMEModule_h__
namespace std {} using namespace std;
#include <cstdlib>
#include <iostream>
#include <sstream>
#include <iomanip>
#include <fstream>
#include "Rtypes.h"
#include "TSystem.h"
#include "TMrbTemplate.h"
#include "TMrbModule.h"
class TMrbSubvent;
class TMrbVMEModule : public TMrbModule {
public:
TMrbVMEModule() {};
TMrbVMEModule(const Char_t * ModuleName, const Char_t * ModuleID,
UInt_t BaseAddr, UInt_t AddrMod, Int_t SegLength,
Int_t SubDevice, Int_t NofChannels, Int_t Range);
~TMrbVMEModule() {};
inline void SetBaseAddr(UInt_t Base) { fBaseAddr = Base; };
inline UInt_t GetBaseAddr() const { return(fBaseAddr); };
inline void SetSegmentSize(Int_t SegSize) { fSegmentSize = SegSize; };
inline Int_t GetSegmentSize() const { return(fSegmentSize); };
inline void SetVMEMapping(UInt_t Mapping) { fVMEMapping = Mapping; };
inline UInt_t GetVMEMapping() const { return(fVMEMapping); };
inline void SetAddrModifier(Int_t AddrMod) { fAddrModifier = AddrMod; };
inline Int_t GetAddrModifier() const { return(fAddrModifier); };
virtual inline Bool_t UseLVME() const { return(kFALSE); };
virtual inline Bool_t HasBlockXfer() const { return(kFALSE); };
virtual inline Bool_t UseA32Addressing() const { return(kFALSE); };
Bool_t MakeReadoutCode(ofstream & RdoStrm, TMrbConfig::EMrbReadoutTag TagIndex,
TMrbTemplate & Template, const Char_t * Prefix = NULL);
Bool_t MakeReadoutCode(ofstream & RdoStrm, TMrbConfig::EMrbModuleTag TagIndex) { return(kFALSE); };
Bool_t MakeReadoutCode(ofstream & RdoStrm, TMrbConfig::EMrbModuleTag TagIndex, TMrbSubevent * Subevent, Int_t Value = 0) { return(kFALSE); };
virtual inline Bool_t HasOwnMapping() const { return(kFALSE); };
inline void UseVMEMapping(UInt_t Mapping) { fVMEMapping = Mapping; };
inline UInt_t GetVMEMapping() { return fVMEMapping; };
inline void Help() { gSystem->Exec(Form("mrbHelp %s", this->ClassName())); };
void Print(Option_t * Option) const { TObject::Print(Option); }
void Print(ostream & OutStrm, const Char_t * Prefix = "") const;
virtual inline void Print() const { Print(cout, ""); };
protected:
UInt_t fBaseAddr;
UInt_t fAddrModifier;
Int_t fSegmentSize;
UInt_t fVMEMapping;
ClassDef(TMrbVMEModule, 1)
};
#endif