#include <DiracChip.hh>
Inheritance diagram for DiracChip:
Public Member Functions | |
DiracChip (const Board &aBoard, const i32 aCol, const i32 aRow, const ui32 nbColumns, const ui32 nbRows, const i32 aId, const ui32 aSerialNumber) | |
virtual | ~DiracChip () |
bool | read (unsigned char *buf) |
const ui32 | getXGap () const |
const ui32 | getYGap () const |
DiracChip & | operator= (const DiracChip &x) |
ui32 | getBLoThreshold () const |
ui32 | getBMidThreshold () const |
ui32 | getBHiThreshold () const |
ui32 | getALoThreshold () const |
ui32 | getAMidThreshold () const |
ui32 | getAHiThreshold () const |
bool | getAnalogData () const |
void | setBLoThreshold (ui32 value) |
void | setBMidThreshold (ui32 value) |
void | setBHiThreshold (ui32 value) |
void | setALoThreshold (ui32 value) |
void | setAMidThreshold (ui32 value) |
void | setAHiThreshold (ui32 value) |
void | setAnalogData (bool value) |
Private Member Functions | |
int | HRmap (int channel) |
void | init () |
Private Attributes | |
ui32 | bLoThreshold |
ui32 | bMidThreshold |
ui32 | bHiThreshold |
ui32 | aLoThreshold |
ui32 | aMidThreshold |
ui32 | aHiThreshold |
bool | analogData |
Definition at line 20 of file DiracChip.hh.
DiracChip::DiracChip | ( | const Board & | aBoard, | |
const i32 | aCol, | |||
const i32 | aRow, | |||
const ui32 | nbColumns, | |||
const ui32 | nbRows, | |||
const i32 | aId, | |||
const ui32 | aSerialNumber | |||
) |
Definition at line 15 of file DiracChip.cpp.
00016 :Chip(aBoard, aCol, aRow, nbColumns, nbRows, aId, aSerialNumber) 00017 { 00018 // FILE_LOG(logDEBUG) << "---DiracChip constructor id " << id << endl; 00019 init(); 00020 bLoThreshold = 0; 00021 bMidThreshold = 0; 00022 bHiThreshold = 0; 00023 aLoThreshold = 0; 00024 aMidThreshold = 0; 00025 aHiThreshold = 0; 00026 }; // DiracChip
virtual DiracChip::~DiracChip | ( | ) | [inline, virtual] |
bool DiracChip::read | ( | unsigned char * | buf | ) |
Definition at line 90 of file DiracChip.cpp.
00090 { 00091 // get 23 bytes which are shifted by 4 bits... 00092 char dataBuf[256]; 00093 char *dataStr = dataBuf; 00094 // split the string into correct data 00095 for (int dataNum = 0; dataNum < 23; dataNum++) { 00096 unsigned int data = *buf++; 00097 dataStr += sprintf(dataStr, "%02X", data); 00098 } 00099 *dataStr = 0; 00100 dataStr = dataBuf; 00101 unsigned int data; 00102 00103 // 4-bit data 00104 sscanf(dataStr, "%1x", &data); dataStr++; 00105 gain = data & 0x03; 00106 analogData = (data & 0x08) != 0; 00107 00108 // 3 thresholds for channels 32-63 (B-data), 8 bits each 00109 sscanf(dataStr, "%2x", &data); dataStr+=2; 00110 bHiThreshold = data; 00111 sscanf(dataStr, "%2x", &data); dataStr+=2; 00112 bMidThreshold = data; 00113 sscanf(dataStr, "%2x", &data); dataStr+=2; 00114 bLoThreshold = data; 00115 // configuration bits for 32 channels 00116 for (int bChNum = 63; bChNum >= 32; bChNum -= 4) { 00117 // 2 bits for each channel 00118 sscanf(dataStr, "%2x", &data); dataStr+=2; 00119 unsigned char mask = 0x80; 00120 for (int chNum = 0; chNum <= 3; chNum++) { 00121 //chConfig[bChNum - chNum].setStimulate((data & mask) != 0); 00122 this->getChannelById(bChNum - chNum).setStimulate((data & mask) != 0); 00123 mask >>= 1; 00124 //chConfig[bChNum - chNum].setEnable((data & mask) != 0); 00125 this->getChannelById(bChNum - chNum).setEnable((data & mask) != 0); 00126 00127 mask >>= 1; 00128 } 00129 } 00130 // 3 thresholds for channels 31-0 (A-data), 8 bits each 00131 sscanf(dataStr, "%2x", &data); dataStr+=2; 00132 aHiThreshold = data; 00133 sscanf(dataStr, "%2x", &data); dataStr+=2; 00134 aMidThreshold = data; 00135 sscanf(dataStr, "%2x", &data); dataStr+=2; 00136 aLoThreshold = data; 00137 // configuration bits for 32 channels 00138 for (int aChNum = 31; aChNum >= 0; aChNum -= 4) { 00139 // 2 bits for each channel 00140 sscanf(dataStr, "%2x", &data); dataStr+=2; 00141 unsigned char mask = 0x80; 00142 for (int chNum = 0; chNum <= 3; chNum++) { 00143 //chConfig[aChNum - chNum].setStimulate((data & mask) != 0); 00144 this->getChannelById(aChNum - chNum).setStimulate((data & mask) != 0); 00145 mask >>= 1; 00146 //chConfig[aChNum - chNum].setEnable ((data & mask) != 0); 00147 this->getChannelById(aChNum - chNum).setEnable ((data & mask) != 0); 00148 mask >>= 1; 00149 } 00150 } 00151 00152 FILE_LOG(logDEBUG1) << " DiracChipConfig read" << endl; 00153 return(true); 00154 }; // DiracChip.read
const ui32 DiracChip::getXGap | ( | ) | const [inline, virtual] |
const ui32 DiracChip::getYGap | ( | ) | const [inline, virtual] |
Definition at line 75 of file DiracChip.cpp.
00075 { 00076 00077 FILE_LOG(logINFO) << "DiracChip& DiracChip::operator = (const DiracChip& x) " << endl; 00078 bLoThreshold = x.bLoThreshold; 00079 bMidThreshold = x.bMidThreshold; 00080 bHiThreshold = x.bHiThreshold; 00081 aLoThreshold = x.aLoThreshold; 00082 aMidThreshold = x.aMidThreshold; 00083 aHiThreshold = x.aHiThreshold; 00084 }
ui32 DiracChip::getBLoThreshold | ( | ) | const [inline] |
Definition at line 33 of file DiracChip.hh.
Referenced by MTDiracChip::operator=().
00033 { return bLoThreshold;};
ui32 DiracChip::getBMidThreshold | ( | ) | const [inline] |
Definition at line 34 of file DiracChip.hh.
Referenced by MTDiracChip::operator=().
00034 { return bMidThreshold;};
ui32 DiracChip::getBHiThreshold | ( | ) | const [inline] |
Definition at line 35 of file DiracChip.hh.
Referenced by MTDiracChip::operator=().
00035 { return bHiThreshold;};
ui32 DiracChip::getALoThreshold | ( | ) | const [inline] |
Definition at line 37 of file DiracChip.hh.
Referenced by MTDiracChip::operator=().
00037 { return aLoThreshold;};
ui32 DiracChip::getAMidThreshold | ( | ) | const [inline] |
Definition at line 38 of file DiracChip.hh.
Referenced by MTDiracChip::operator=().
00038 { return aMidThreshold;};
ui32 DiracChip::getAHiThreshold | ( | ) | const [inline] |
Definition at line 39 of file DiracChip.hh.
Referenced by MTDiracChip::operator=().
00039 { return aHiThreshold;};
bool DiracChip::getAnalogData | ( | ) | const [inline] |
void DiracChip::setBLoThreshold | ( | ui32 | value | ) | [inline] |
Definition at line 43 of file DiracChip.hh.
Referenced by DiracLabview::getNextEvent().
00043 { bLoThreshold = value;};
void DiracChip::setBMidThreshold | ( | ui32 | value | ) | [inline] |
Definition at line 44 of file DiracChip.hh.
Referenced by DiracLabview::getNextEvent().
00044 { bMidThreshold = value;};
void DiracChip::setBHiThreshold | ( | ui32 | value | ) | [inline] |
Definition at line 45 of file DiracChip.hh.
Referenced by DiracLabview::getNextEvent().
00045 { bHiThreshold = value;};
void DiracChip::setALoThreshold | ( | ui32 | value | ) | [inline] |
Definition at line 47 of file DiracChip.hh.
Referenced by DiracLabview::getNextEvent().
00047 { aLoThreshold = value;};
void DiracChip::setAMidThreshold | ( | ui32 | value | ) | [inline] |
Definition at line 48 of file DiracChip.hh.
Referenced by DiracLabview::getNextEvent().
00048 { aMidThreshold = value;};
void DiracChip::setAHiThreshold | ( | ui32 | value | ) | [inline] |
Definition at line 49 of file DiracChip.hh.
Referenced by DiracLabview::getNextEvent().
00049 { aHiThreshold = value;};
void DiracChip::setAnalogData | ( | bool | value | ) | [inline] |
int DiracChip::HRmap | ( | int | channel | ) | [private] |
Definition at line 49 of file DiracChip.cpp.
Referenced by init().
00050 { 00051 00052 00053 if(channel<0||channel>63) 00054 { 00055 FILE_LOG(logERROR)<<"map error channel="<<channel<<endl;return-1; 00056 } 00057 00058 const int map[64]= 00059 {7, 6, 5, 4, 15,14,13,12, 00060 23,22,21,20,31,30,29,28, 00061 39,38,37,36,47,46,45,44, 00062 55,54,53,52,63,62,61,60, 00063 3 ,2 ,1 ,0, 11,10,9 ,8, 00064 19,18,17,16,27,26,25,24, 00065 35,34,33,32,43,42,41,40, 00066 51,50,49,48,59,58,57,56}; 00067 00068 return map[channel]; 00069 00070 return -1; 00071 }
void DiracChip::init | ( | ) | [private] |
Definition at line 29 of file DiracChip.cpp.
Referenced by DiracChip().
00030 { 00031 for (int channelId = 0; channelId <= 63 ; channelId++) { 00032 int map = HRmap(channelId); 00033 DiracChannel *channel = new DiracChannel(*this, map%8, map/8, channelId); 00034 channels.insert(make_pair(channelId,channel)); 00035 } 00036 bLoThreshold = 0; 00037 bMidThreshold = 0; 00038 bHiThreshold = 0; 00039 aLoThreshold = 0; 00040 aMidThreshold = 0; 00041 aHiThreshold = 0; 00042 }
ui32 DiracChip::bLoThreshold [private] |
Definition at line 51 of file DiracChip.hh.
Referenced by DiracChip(), getBLoThreshold(), init(), operator=(), read(), and setBLoThreshold().
ui32 DiracChip::bMidThreshold [private] |
Definition at line 58 of file DiracChip.hh.
Referenced by DiracChip(), getBMidThreshold(), init(), operator=(), read(), and setBMidThreshold().
ui32 DiracChip::bHiThreshold [private] |
Definition at line 59 of file DiracChip.hh.
Referenced by DiracChip(), getBHiThreshold(), init(), operator=(), read(), and setBHiThreshold().
ui32 DiracChip::aLoThreshold [private] |
Definition at line 60 of file DiracChip.hh.
Referenced by DiracChip(), getALoThreshold(), init(), operator=(), read(), and setALoThreshold().
ui32 DiracChip::aMidThreshold [private] |
Definition at line 61 of file DiracChip.hh.
Referenced by DiracChip(), getAMidThreshold(), init(), operator=(), read(), and setAMidThreshold().
ui32 DiracChip::aHiThreshold [private] |
Definition at line 62 of file DiracChip.hh.
Referenced by DiracChip(), getAHiThreshold(), init(), operator=(), read(), and setAHiThreshold().
bool DiracChip::analogData [private] |
Definition at line 63 of file DiracChip.hh.
Referenced by getAnalogData(), read(), and setAnalogData().