Some fixes for the CTB

This commit is contained in:
bergamaschi 2014-10-14 17:43:25 +02:00
parent 74ef04e726
commit 327c2106df
9 changed files with 44 additions and 46 deletions

View File

@ -2619,7 +2619,7 @@ uint64_t writePatternWord(int addr, uint64_t word) {
if (addr>=MAX_PATTERN_LENGTH)
return -1;
if (word>=0) {
if (word=!-1){
set64BitReg(word,PATTERN_IN_REG_LSB,PATTERN_IN_REG_MSB);
cntrl= (addr&APATTERN_MASK) << PATTERN_CTRL_ADDR_OFFSET;
bus_w(PATTERN_CNTRL_REG, cntrl);

View File

@ -254,38 +254,38 @@
#define ROI_REG 0x35<<11
#define OVERSAMPLING_REG 0x36<<11
#define MOENCH_CNTR_REG 0x31<<11
#define MOENCH_CNTR_OUT_REG 0x33<<11
#define MOENCH_CNTR_CONF_REG 0x32<<11
#define ROI_REG 0 // 0x35<<11
#define OVERSAMPLING_REG 0 // 0x36<<11
#define MOENCH_CNTR_REG 0 // 0x31<<11
#define MOENCH_CNTR_OUT_REG 0 // 0x33<<11
#define MOENCH_CNTR_CONF_REG 0 // 0x32<<11
//image
#define DARK_IMAGE_REG 0x81<<11
#define GAIN_IMAGE_REG 0x82<<11
#define DARK_IMAGE_REG 0 // 0x81<<11
#define GAIN_IMAGE_REG 0 // 0x82<<11
//counter block memory
#define COUNTER_MEMORY_REG 0x85<<11
#define COUNTER_MEMORY_REG 0 // 0x85<<11
#define GET_MEASUREMENT_TIME_LSB_REG 0x023000
#define GET_MEASUREMENT_TIME_MSB_REG 0x024000
#define GET_MEASUREMENT_TIME_LSB_REG 0 // 0x023000
#define GET_MEASUREMENT_TIME_MSB_REG 0 // 0x024000
//#define GET_ACTUAL_TIME_LSB_REG 0x025000
//#define GET_ACTUAL_TIME_MSB_REG 0x026000
//#define GET_ACTUAL_TIME_LSB_REG 0 // 0x025000
//#define GET_ACTUAL_TIME_MSB_REG 0 // 0x026000
//not used
//#define MCB_DOUT_REG_OFF 0x200000
//#define FIFO_CNTRL_REG_OFF 0x300000
//#define FIFO_COUNTR_REG_OFF 0x400000
//#define MCB_DOUT_REG_OFF 0 // 0x200000
//#define FIFO_CNTRL_REG_OFF 0 // 0x300000
//#define FIFO_COUNTR_REG_OFF 0 // 0x400000
//not used so far
//#define SPEED_REG 0x006000
//#define SET_NBITS_REG 0x008000
//#define SPEED_REG 0 // 0x006000
//#define SET_NBITS_REG 0 // 0x008000
//not used
//#define GET_SHIFT_IN_REG 0x022000
//#define GET_SHIFT_IN_REG 0 // 0x022000

View File

@ -4839,7 +4839,7 @@ int multiSlsDetector::enableTenGigabitEthernet(int i){
@param fname pattern file to open
@returns OK/FAIL
*/
int setCTBPattern(string fname) {
int multiSlsDetector::setCTBPattern(string fname) {
@ -4853,7 +4853,7 @@ int setCTBPattern(string fname) {
@param word 64bit word to be written, -1 gets
@returns actual value
*/
uint64_t setCTBWord(int addr,uint64_t word) {
uint64_t multiSlsDetector::setCTBWord(int addr,uint64_t word) {
uint64_t ret=-100,ret1;
for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++)
if (detectors[idet]){
@ -4878,7 +4878,7 @@ uint64_t setCTBWord(int addr,uint64_t word) {
@param n number of loops (if level >=0)
@returns OK/FAIL
*/
int setCTBPatLoops(int level,int &start, int &stop, int &n) {
int multiSlsDetector::setCTBPatLoops(int level,int &start, int &stop, int &n) {
int ret=-100,ret1;
@ -4903,7 +4903,7 @@ int setCTBPatLoops(int level,int &start, int &stop, int &n) {
@param addr wait address, -1 gets
@returns actual value
*/
int setCTBPatWaitAddr(int level, int addr) {
int multiSlsDetector::setCTBPatWaitAddr(int level, int addr) {
@ -4929,7 +4929,7 @@ int setCTBPatWaitAddr(int level, int addr) {
@param t wait time, -1 gets
@returns actual value
*/
int setCTBPatWaitTime(int level, uint64_t t=-1) {
int multiSlsDetector::setCTBPatWaitTime(int level, uint64_t t) {

View File

@ -1254,7 +1254,7 @@ class multiSlsDetector : public slsDetectorUtils {
@param word 64bit word to be written, -1 gets
@returns actual value
*/
int setCTBWord(int addr,uint64_t word=-1);
uint64_t setCTBWord(int addr,uint64_t word=-1);
/** Sets the pattern or loop limits in the CTB
@param level -1 complete pattern, 0,1,2, loop level

View File

@ -6801,23 +6801,23 @@ int slsDetector::enableTenGigabitEthernet(int i){
@param fname pattern file to open
@returns OK/FAIL
*/
int setCTBPattern(string fname) {
int slsDetector::setCTBPattern(string fname) {
int fnum=F_SEND_RECEIVER_DETHOSTNAME;
int fnum=F_SET_CTB_PATTERN;
int ret = FAIL;
char retval[MAX_STR_LENGTH]="";
if(setReceiverOnline(ONLINE_FLAG)==ONLINE_FLAG){
#ifdef VERBOSE
std::cout << "Sending detector hostname to Receiver " << thisDetector->hostname << std::endl;
#endif
if (connectData() == OK)
ret=thisReceiver->sendString(fnum,retval,thisDetector->hostname);
if((ret==FAIL) || (strcmp(retval,thisDetector->hostname)))
setErrorMask((getErrorMask())|(RECEIVER_DET_HOSTNAME_NOT_SET));
}
// if(setReceiverOnline(ONLINE_FLAG)==ONLINE_FLAG){
// #ifdef VERBOSE
// std::cout << "Sending detector hostname to Receiver " << thisDetector->hostname << std::endl;
// #endif
// if (connectData() == OK)
// ret=thisReceiver->sendString(fnum,retval,thisDetector->hostname);
// if((ret==FAIL) || (strcmp(retval,thisDetector->hostname)))
// setErrorMask((getErrorMask())|(RECEIVER_DET_HOSTNAME_NOT_SET));
// }
return ret;
@ -6830,9 +6830,9 @@ int setCTBPattern(string fname) {
@param word 64bit word to be written, -1 gets
@returns actual value
*/
uint64_t setCTBWord(int addr,uint64_t word) {
uint64_t slsDetector::setCTBWord(int addr,uint64_t word) {
uint64_t ret;
//uint64_t ret;
int ret=FAIL;
uint64_t retval=-1;
@ -6876,7 +6876,7 @@ uint64_t setCTBWord(int addr,uint64_t word) {
@param n number of loops (if level >=0)
@returns OK/FAIL
*/
int setCTBPatLoops(int level,int &start, int &stop, int &n) {
int slsDetector::setCTBPatLoops(int level,int &start, int &stop, int &n) {
int retval[3], args[4];
@ -6888,7 +6888,6 @@ int setCTBPatLoops(int level,int &start, int &stop, int &n) {
int ret=FAIL;
uint64_t retval=-1;
int fnum=F_SET_CTB_PATTERN;
int mode=1; //sets loop
@ -6930,7 +6929,7 @@ int setCTBPatLoops(int level,int &start, int &stop, int &n) {
@param addr wait address, -1 gets
@returns actual value
*/
int setCTBPatWaitAddr(int level, int addr=-1) {
int slsDetector::setCTBPatWaitAddr(int level, int addr) {
@ -6939,7 +6938,6 @@ int setCTBPatWaitAddr(int level, int addr=-1) {
int ret=FAIL;
uint64_t retval=-1;
int fnum=F_SET_CTB_PATTERN;
int mode=3; //sets loop
@ -6979,7 +6977,7 @@ int setCTBPatWaitAddr(int level, int addr=-1) {
@param t wait time, -1 gets
@returns actual value
*/
int setCTBPatWaitTime(int level, uint64_t t=-1) {
int slsDetector::setCTBPatWaitTime(int level, uint64_t t) {
@ -6989,7 +6987,7 @@ int setCTBPatWaitTime(int level, uint64_t t=-1) {
int ret=FAIL;
uint64_t retval=-1;
// uint64_t retval=-1;
int fnum=F_SET_CTB_PATTERN;
int mode=4; //sets loop

View File

@ -1665,7 +1665,7 @@ class slsDetector : public slsDetectorUtils, public energyConversion {
@param word 64bit word to be written, -1 gets
@returns actual value
*/
int setCTBWord(int addr,uint64_t word=-1);
uint64_t setCTBWord(int addr,uint64_t word=-1);
/** Sets the pattern or loop limits in the CTB
@param level -1 complete pattern, 0,1,2, loop level

View File

@ -4322,7 +4322,7 @@ string slsDetectorCommand::cmdPattern(int narg, char *args[], int action) {
**********/
ostringstream os;
if (cmd=="pattern")
if (cmd=="pattern") ;
else if (cmd=="patword") ;
else if (cmd=="patioctrl") ;
else if (cmd=="patclkctrl") ;