• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

roclib/src_nxyter/NxChip.cxx (r4864/r4162)

Go to the documentation of this file.
00001 //============================================================================
00006 //============================================================================
00007 
00008 #include "nxyter/NxChip.h"
00009 #include "nxyter/RocNx.h"
00010 #include "nxyter/defines_nxyter.h"
00011 
00025 //----------------------------------------------------------------------------
00027 
00035 nxyter::NxChip::NxChip(base::Board* board, int port, int addr, int nxnum) :
00036    base::Peripheral(board),
00037    fI2c(board, port, addr),
00038    fNxNumber(nxnum)
00039 
00040 {
00041 }
00042 
00043 //----------------------------------------------------------------------------
00044 
00045 nxyter::NxChip::~NxChip()
00046 {
00047 }
00048 
00049 //----------------------------------------------------------------------------
00051 
00058 void nxyter::NxChip::setNxNumber(int nxnum)
00059 {
00060   fNxNumber = nxnum & 0x3;                      // accept only 2 bits
00061   if ((nxnum<0) || (nxnum>3))
00062      board().Debug(-1, "Not a valid Nx-Number %d, trimmed", nxnum);
00063 }
00064 
00065 //----------------------------------------------------------------------------
00067 
00076 int nxyter::NxChip::activate()
00077 {
00078    nxyter::RocNx rocnx(getBoard());
00079    uint32_t mask;
00080    int rc = rocnx.getNxActive(mask);
00081    if (rc) return rc;
00082    mask = mask | (1<<fNxNumber);
00083    rc = rocnx.setNxActive(mask);
00084    if (rc) return base::Board::operErrBuildInc(rc,1);
00085    return 0;
00086 }
00087 
00088 //----------------------------------------------------------------------------
00090 
00099 int nxyter::NxChip::deactivate()
00100 {
00101    nxyter::RocNx rocnx(getBoard());
00102    uint32_t mask;
00103    int rc = rocnx.getNxActive(mask);
00104    if (rc) return rc;
00105    mask = mask & (~(1<<fNxNumber));
00106    rc = rocnx.setNxActive(mask);
00107    if (rc) return base::Board::operErrBuildInc(rc,1);
00108    return 0;
00109 }
00110 
00111 //----------------------------------------------------------------------------
00113 bool nxyter::NxChip::isactive()
00114 {
00115    nxyter::RocNx rocnx(getBoard());
00116    uint32_t mask;
00117    int rc = rocnx.getNxActive(mask);
00118    if (rc) return false;
00119    return mask & (1<<fNxNumber);
00120 }
00121 
00122 //----------------------------------------------------------------------------
00124 
00125 int nxyter::NxChip::setChannelDelay(uint32_t val)
00126 {
00127    int rc = -1;
00128    if (fNxNumber==0) rc = board().put(ROC_NX_DELAY_NX0, val);
00129    if (fNxNumber==1) rc = board().put(ROC_NX_DELAY_NX1, val);
00130    if (fNxNumber==2) rc = board().put(ROC_NX_DELAY_NX2, val);
00131    if (fNxNumber==3) rc = board().put(ROC_NX_DELAY_NX3, val);
00132    return rc;
00133 }
00134 
00135 //----------------------------------------------------------------------------
00137 
00138 int nxyter::NxChip::getChannelDelay(uint32_t& val)
00139 {
00140    int rc = -1;
00141    if (fNxNumber==0) rc = board().get(ROC_NX_DELAY_NX0, val);
00142    if (fNxNumber==1) rc = board().get(ROC_NX_DELAY_NX1, val);
00143    if (fNxNumber==2) rc = board().get(ROC_NX_DELAY_NX2, val);
00144    if (fNxNumber==3) rc = board().get(ROC_NX_DELAY_NX3, val);
00145    return rc;
00146 }
00147 
00148 //----------------------------------------------------------------------------

Generated on Tue Dec 10 2013 04:52:23 for ROCsoft by  doxygen 1.7.1