#include <CBD8201.h>
class CBD8210 : public CCamacModule {CBD8210(int branch);
const bool Xtest();
const bool Qtest();
const bool TimedOut();
const bool BranchDemand();
void MNoX(bool fSet = true);
void MTo(bool fSet = true);
void MLAM(bool fSet = true);
void MIT2(bool fSet = true);
void MIT4(bool fSet = true);
void MIT4(bool fSet = true);
const bool IT2();
const bool IT4();
const unsigned short ReadCsr();
void WriteCsr(unsigned short nMask);
void WriteIFR(unsigned short nMask);
const unsigned short ReadBTB();
const unsigned long ReadGl();
const void InitBranch();
}
The CBD8210
class encapsulates the
functions offered by the register set of the CES CBD8210 VME CAMAC parallel
branch driver module. This module is an obsolete module. Newer applications
should use the Wiener VC32/CC32 module pair, or better yet, phase out of CAMAC
altogether.
Since this class is derived from legacy support where only a single VME crate was
allowed, multiple VME crate support is a bit whacky. Each VME crate can have up
to 8 branches. The branch number is determined by:
vme_crate*8 + branch_selector where
vme_crate
is the VME crate number the CES CBD8210 is
installed in and branch_selector
is the branch number
selected on the module's front panel.
Constructor, creates a new CBD8210 module for
branch number b
. See
DESCRIPTION above for more information about the branch number.
Tests the X response of the last operaration on this branch. An X response is true if the addressed module has accepted the function. Usually this is the case if there is a live module at the addressed location.
Checks the Q response of the last operation. The Q response is used for two purposes in general. If the operation is not a test, the Q indicates successful completion of the operation, otherwise it indicates the result of the test. For example, a module may not accept some functions int the busy state. Q may be false if one such function was attempted and the module was busy. For example: most modules have function codes for testing their LAM (Look At Me). These functions will return Q true if the LAM is active, and false otherwise.
Returns true if the last operation on this branch timed out. In general this can only happen if the CAMAC crate being addressed was off, or unplugged from the branch highway, or has a failing controller.
Returns true if there's a branch demand present. Branch demands are used to indicate the presence of a LAM in a CAMAC crate on the branch that has its LAM added to the set of graded LAM demands.
Sets/clears the controller's MNOX bit in the
control/status
register according to the value of fSet
.
Normally, the branch highway driver will interrupt
if an operation is performed and an X is not present. Setting
this bit prevents that interrupt.
This sets or clears the MTO bit in the control/status register of the module. When MTO is clear, branch timeouts result in an interrupt, when set, this interrupt is inhibited.
Sets or clears the MLAM bit in the
module's control/status register.
according to the value of fSet
.
If this bit is clear,
Branch Demands (LAMs from a crate) will result in a VME bus
interrupt. If set, interrupts will not occur.
Sets or clears the MIT2 bit in the
module control/status register according to the value of
fSet
.
If the bit is clear, a NIM pulse on the IT2 input of the module
results in a VME interrupt. If set, no interrupt is generated.
Note that the pulse latches a status bit which can be read
via IT2
.
Sets or clears the control status register's MIT4
bit according to the state of fSet
When clear, the IT4 input causes an interrupt. When set, IT4
does not cause an interrupt, but latches a status bit that can
be read via the IT4
function.
Tests the state of the IT4 bit in the interrupt status register.
If an IT4 input has been latched this will return
true otherwise false.
To clear the latched IT4 status, you must write the IT4 bit
to the IFR (see WriteIFR
).
Reads the contents of the module control status register. See the manual for the CBD 8210 for information about the layout of this register.
Writes nMask
to the module control status
register. See the hardware manual for the module for more information
about the layout of this register.
Writes the nMask
parameter to the module's
IFR register. The layout of this register
is documented in the CES CBD8210 hardware manual. Note, however
that this register is used to clear latched IT2
and IT4 inputs.
Reads the branch timing register from the module. The BTB register is a bit mask with a bit for each crate. It allows you to determine which crates are on/offline.
Reads the graded LAM mask for the branch. See the CES CBD8210 manual for more information about graded lams and the layout of this register.
Performs a Branch Zero (BZ) on the branch.
The CES CBD 8210 hardware manual (online at the NSCL at: http://groups.nscl.msu.edu/nscl_library/manuals/ces/8210_v20.pdf