Changeset 80 for hvcontrol/src/HV.cc


Ignore:
Timestamp:
07/01/09 20:47:49 (15 years ago)
Author:
lstark
Message:
feedback through socket and test mode implemented
File:
1 edited

Legend:

Unmodified
Added
Removed
  • hvcontrol/src/HV.cc

    r35 r80  
    2626
    2727
    28 HV::HV(char** usbdevice, int* usbdevicenumber, FILE* f): fNumberOfBoards(0) {
    29  
     28HV::HV(char** usbdevice, int* usbdevicenumber, FILE* f,bool TestMode): fNumberOfBoards(0) {
     29 
     30  fTestMode = TestMode;
     31
    3032  int i = 0, j = 0, ret = 0;
    3133
     
    5052  i = 0;
    5153 
     54  if(fTestMode){
     55    fprintf(stdout,"Test mode: One HVBoard initialized as dummy.\n");
     56    fHVBoard[fNumberOfBoards] = new HVBoard("dummy", 0, &ftdic[fNumberOfBoards],fTestMode);
     57    fNumberOfBoards++;
     58    return;
     59  }
    5260  // Obtain information on FTDI devices
    5361  for (curdev = devlist; (curdev != NULL && i<MAX_NUM_HVBOARDS); i++) {
     
    8896        ftdi_set_latency_timer(&ftdic[fNumberOfBoards], USB_LATENCY_TIMER);
    8997       
    90         fHVBoard[fNumberOfBoards] = new HVBoard(serial, usbdevicenumber[j], &ftdic[fNumberOfBoards]);
     98        fHVBoard[fNumberOfBoards] = new HVBoard(serial, usbdevicenumber[j], &ftdic[fNumberOfBoards],fTestMode);
    9199        fNumberOfBoards++;
    92100        /*
     
    113121
    114122
    115 /* Bubble-sort HV boards according to board number */
     123// Bubble-sort HV boards according to board number
    116124void HV::ArrangeHVBoards(HVBoard** fHVBoard, int size) {
     125
     126  if(fTestMode){
     127    return;
     128  }
    117129
    118130  HVBoard* tmp;
     
    130142
    131143HV::~HV() {
     144
     145  if(fTestMode){
     146    fprintf(stdout,"Test mode: No FTDI device has to be closed.\n");
     147    return;
     148  }
    132149 
    133150  int i, ret = 0;
     
    157174
    158175
    159 HVBoard::HVBoard(char* serial, int number, struct ftdi_context* ftdic) : fTimeOut(.5)
     176HVBoard::HVBoard(char* serial, int number, struct ftdi_context* ftdic,bool TestMode) : fTimeOut(.5)
    160177{
    161178 
     179  fTestMode = TestMode;
     180  fTestModeWrap = 0;
    162181  FTDI_C = ftdic;
    163182  sprintf(Serial,"%s",serial);
     
    209228
    210229int HVBoard::Write(unsigned char* data, int size) {
     230  if (fTestMode)
     231    return 3;  // implying that 3 bytes are written
     232
    211233#ifdef DO_CAST
    212234  return ftdi_write_data(FTDI_C, (char*)data, size);
     
    217239
    218240int HVBoard::Read(unsigned char* data, int size) {
     241  if (fTestMode) {
     242    data[0] = fTestModeWrap;
     243    //    fprintf(stdout," Read Data 0X%.2X\n",data[0]);
     244    fTestModeWrap++;
     245    fTestModeWrap = fTestModeWrap%8;
     246    return 1;  // one byte read
     247  }
    219248#ifdef DO_CAST
    220249  return ftdi_read_data(FTDI_C, (char*)data, size);
     
    233262*/
    234263int HVBoard::TRead(FILE* fptr, unsigned char* rbuf, bool verbose) {
    235  
     264
     265  if (fTestMode) {
     266    Read(rbuf,BUFFER_LENGTH);
     267    return 1;  // rbuf read
     268  }
     269
    236270  char str[STR_LENGTH];
    237271
     
    278312int HVBoard::Reset(FILE* fptr, unsigned char* rbuf, bool verbose) {
    279313
     314  if (fTestMode)
     315    return 1;
     316
    280317  char str[STR_LENGTH];
    281318
     
    303340/* Read status register - uses TRead() and has same return values */
    304341int HVBoard::GetStatus(FILE* fptr, unsigned char* rbuf, bool verbose) {
     342  if (fTestMode){
     343    //    printf("Test mode. (Get Status) \n");
     344    return TRead(fptr,rbuf,verbose);
     345    return 1;
     346  }
    305347
    306348  char str[STR_LENGTH];
     
    330372/* Set high voltage - uses TRead() and has same return values */
    331373int HVBoard::SetHV(FILE* fptr, int chain, unsigned int channel, unsigned int hv, unsigned char* rbuf, bool verbose) {
     374
     375  if (fTestMode){
     376    printf("Test mode: Nothing to be done. \n");
     377    return 1;
     378  }
     379
    332380 
    333381  char str[STR_LENGTH];
     
    380428/* Set reference voltage - uses TRead() and has same return values */
    381429int HVBoard::SetVRef(FILE* fptr, int chain, unsigned int vref, unsigned char* rbuf, bool verbose) {
    382  
     430
     431    if (fTestMode){
     432    printf("Test mode. Nothing to be done.\n");
     433    return 1;
     434  }
     435
    383436  char str[STR_LENGTH];
    384437
     
    463516*/
    464517int HVBoard::Init(bool verbose) {
     518
    465519
    466520  unsigned char wbuf = REG_STATUS;
Note: See TracChangeset for help on using the changeset viewer.