// Author: Thomas Hadig (Group EB SLAC Stanford CA USA)
// Last update: $Date: 2003/08/22 22:31:11 $
// Copyright: Thomas Hadig, hadig@slac.stanford.edu
#ifndef __CRTOUTPUTIR1DBOARD_CXX
#define __CRTOUTPUTIR1DBOARD_CXX
////////////////////////////////////////////////////////////////////////////////
//
// Cosmic Ray Telescope Data Aquisition Software
//
// generic driver for Camac module: Joerger IR1D input/output register
//
// This module features:
// - 2 channels with 24 bit input and 12 bit output
//
////////////////////////////////////////////////////////////////////////////////
#include <gendriver/outputIR1Dboard.hh>
#include <gendriver/camaccrate.hh>
namespace CRT
{
//{{{}}}
//{{{ constructor
CrtOutputIr1dBoard::CrtOutputIr1dBoard() : CrtCamacBoard()
{
// default constructor
fOk=0;
}
//}}}
//{{{ constructor CrtOutputIr1dBoard(const Char_t *inName, Int_t inBoardNumber, CrtCamacCrate *inCrate)
CrtOutputIr1dBoard::CrtOutputIr1dBoard(const Char_t *inName, Int_t inBoardNumber, CrtCamacCrate *inCrate)
: CrtCamacBoard(inName, inBoardNumber, inCrate)
{
// constructor
// inBoardNumber is the number of the Camac slot
// inCrate is a pointer to the Camac crate object
fIdents[0]=inCrate->GetIdentity(inBoardNumber, 0);
fIdents[1]=inCrate->GetIdentity(inBoardNumber, 1);
fOk=1;
}
//}}}
//{{{ destructor
CrtOutputIr1dBoard::~CrtOutputIr1dBoard()
{
// destructor
}
//}}}
//{{{ Send
Int_t CrtOutputIr1dBoard::Send(Int_t inCommand) const
{
// sends command to board
// available commands:
// none
return -1;
}
//}}}
//{{{ Enable
Int_t CrtOutputIr1dBoard::Enable(Int_t inFlag, Int_t inChannel) const
{
// enables board features
// Available features:
// CrtOutputIr1dBoard::F_OUTPUTIR1D_LAM (Look-At-Me) (channel 0/1)
if (fOk!=1) return -1;
if ((inChannel<0)||(inChannel>1)) return -1;
switch(inFlag)
{
case F_OUTPUTIR1D_LAM:
return fInCrate->Send(fIdents[inChannel], 26, 0);
}
return -1;
}
//}}}
//{{{ Disable
Int_t CrtOutputIr1dBoard::Disable(Int_t inFlag, Int_t inChannel) const
{
// disables board features
// Available features:
// CrtOutputIr1dBoard::F_OUTPUTIR1D_LAM (Look-At-Me) (channel 0/1)
if (fOk!=1) return -1;
if ((inChannel<0)||(inChannel>1)) return -1;
switch(inFlag)
{
case F_OUTPUTIR1D_LAM:
return fInCrate->Send(fIdents[inChannel], 24, 0);
}
return -1;
}
//}}}
//{{{ Clear
Int_t CrtOutputIr1dBoard::Clear(Int_t inFlag, Int_t inChannel) const
{
// clears board features
// Available features:
// CrtOutputIr1dBoard::F_OUTPUTIR1D_LAM (Look-At-Me) (channel 0/1)
if (fOk!=1) return -1;
if ((inChannel<0)||(inChannel>1)) return -1;
switch(inFlag)
{
case F_OUTPUTIR1D_LAM:
return fInCrate->Send(fIdents[inChannel], 10, 0);
}
return -1;
}
//}}}
//{{{ Test
Int_t CrtOutputIr1dBoard::Test(Int_t inFlag, Int_t inChannel) const
{
// tests board features
// Available features:
// CrtOutputIr1dBoard::F_OUTPUTIR1D_LAM (Look-At-Me) (channel 0/1)
if (fOk!=1) return -1;
if ((inChannel<0)||(inChannel>1)) return -1;
switch(inFlag)
{
case F_OUTPUTIR1D_LAM:
return fInCrate->Test(fIdents[inChannel], 8);
}
return -1;
}
//}}}
//{{{ Query
Int_t CrtOutputIr1dBoard::Query(Int_t inChannel, Int_t *outValue) const
{
// queries channels
// available channels:
// 0-1: input channels
if (fOk!=1) return -1;
if ((inChannel<0)||(inChannel>1)) return -1;
return fInCrate->Read(fIdents[inChannel], 0, outValue);
}
//}}}
//{{{ Assign
Int_t CrtOutputIr1dBoard::Assign(Int_t inChannel, Int_t inValue) const
{
// assigns channels
// available channels:
// 0-1: set output register for the channel given
if (fOk!=1) return -1;
if (inChannel==0)
return fInCrate->Send(fIdents[0], 16, inValue);
else if (inChannel==1)
return fInCrate->Send(fIdents[1], 16, inValue*4096);
return -1;
}
//}}}
//{{{ GetNumberOfChannels
Int_t CrtOutputIr1dBoard::GetNumberOfChannels() const
{
return 2;
}
//}}}
}
ClassImp(CRT::CrtOutputIr1dBoard) //Joerger Input/Output Register IR1D module driver
#endif
ROOT page - Class index - Class Hierarchy - Top of the page
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.