Changeset 100 for hvcontrol/src/HV.cc


Ignore:
Timestamp:
08/12/09 12:15:02 (15 years ago)
Author:
ogrimm
Message:
Number of HV boards (almost) unlimited.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • hvcontrol/src/HV.cc

    r98 r100  
    2222  m = PIO;
    2323
    24   fTestMode = m->config->TestMode;
    25   fTestModeWrap = 0;
    26  
    2724  SetTimeOut(m->config->fTimeOut);
    2825  BoardNumber = DeviceNumber;
     
    3431  LastWrapCount = -1;
    3532 
    36   if (fTestMode) {
    37     fDescriptor = 99;
    38     return;
    39   }
    40 
    4133  ClearVoltageArrays();
    4234
     
    7870// Destructor (Resetting board)
    7971HVBoard::~HVBoard() {
    80   if(fDescriptor >= 0 && !fTestMode) {
     72  if(fDescriptor >= 0) {
    8173    Reset();
    8274    close(fDescriptor);
     
    8779// Communicate: Write and read from HV Board until fTimeOut has been reached
    8880//
    89 // Returns: 0 read error, 1 success, -1 fTimeOut exceeded
     81// Returns: 0 error, 1 success, -1 fTimeOut exceeded
    9082int HVBoard::Communicate(unsigned char* wbuf, int Bytes) {
    9183
     
    9688  // === Write data ===
    9789  if (write(fDescriptor, wbuf, Bytes) < Bytes) {
    98     m->PrintMessage("Error: could not write (all) data to HV board\n");
     90    m->PrintMessage("Error: Could not write (all) data to HV board\n");
    9991    return 0;
    10092  }
     
    128120  }
    129121  LastWrapCount = rbuf & 0X07; 
    130   for (int i=0; i<NUM_CHAINS; i++) Overcurrent[i]=(rbuf & (0X08 << i));
     122  for (int i=0; i<NUM_CHAINS; i++) Overcurrent[i] = (rbuf & (0X08 << i));
    131123  ResetButton = (bool) (rbuf & 0X80);
    132124
     
    140132int HVBoard::Reset() {
    141133 
    142   if (fTestMode) return 1;
    143 
    144134  unsigned char wbuf[] = {REG_RESET,0,0};
    145135  int ret;
     
    153143int HVBoard::GetStatus() {
    154144
    155   if (fTestMode) return 1;
    156 
    157145  unsigned char wbuf[] = {REG_STATUS,0,0};
    158146 
     
    164152int HVBoard::SetHV(int chain, unsigned int channel, int hv) {
    165153
    166   if (fTestMode){
    167     m->PrintMessage("Test mode: Nothing to be done. \n");
    168     return 1;
    169   }
     154  unsigned char wbuf[] = {0,0,0};
     155  int ret;
    170156 
    171   unsigned char wbuf[] = {0,0,0};
    172 
    173   if (hv > 0x3FFF) {
    174     m->PrintMessage(" Error: HV beyond upper 0x3FFF\n");
     157  if (hv<0 || hv > 0x3FFF) {
     158    m->PrintMessage("Error: Voltage out of range 0-0x3FFF\n");
    175159    return 0;
    176160  }
    177   if (hv<0) hv = 0;
    178161 
    179162  switch (chain) {
     
    183166    case 3: wbuf[0] = REG_HV3; break;
    184167
    185     default : m->PrintMessage(" Error: chain %d does not exist\n",chain); return 0;
     168    default : m->PrintMessage(" Error: Chain %d does not exist\n",chain); return 0;
    186169  }
    187170 
     
    192175  wbuf[2] |= (unsigned char)(hv & 0X000000FF);              // Add [D7-D0]
    193176   
    194   return Communicate(wbuf, 3);
     177  if ((ret = Communicate(wbuf, 3)) == 1) HV[chain][channel] = hv;
     178  return ret;
    195179}
    196180
Note: See TracChangeset for help on using the changeset viewer.