the final working gotthard:with no errors in state

git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@173 951219d9-93cf-4727-9268-0efd64621fa3
This commit is contained in:
l_maliakal_d
2012-04-16 14:28:18 +00:00
parent 1b6f8259c7
commit 4a9dfa12b2
4 changed files with 57 additions and 51 deletions

View File

@ -5,7 +5,7 @@
CROSS = bfin-uclinux-
CC = $(CROSS)gcc
CFLAGS += -Wall -DMCB_FUNCS -DVERBOSE -DVERYVERBOSE #-DVIRTUAL
CFLAGS += -Wall -DMCB_FUNCS# -DVERBOSE -DVERYVERBOSE #-DVIRTUAL
PROGS= gotthardDetectorServer

View File

@ -1513,7 +1513,8 @@ int configureMAC(int ipad,long long int macad,long long int servermacad,int ival
u_int32_t runBusy(void) {
return bus_r(STATUS_REG)&RUN_BUSY_BIT;
return (bus_r(STATUS_REG)&RUN_BUSY_BIT);
}
u_int32_t dataPresent(void) {
@ -1531,6 +1532,9 @@ u_int32_t runState(void) {
#ifdef VERBOSE
printf("status %04x\n",s);
#endif
/* if (s==0x62001)
exit(-1);*/
return s;
}
@ -1674,26 +1678,39 @@ u_int32_t* fifo_read_event()
#ifdef VERBOSE
printf("before looping\n");
#endif
while(bus_r(LOOK_AT_ME_REG)==0) {
#ifdef VERBOSE
printf("Waiting for data status %x\n",runState());
#endif
if (runBusy()==0) {
if (bus_r(LOOK_AT_ME_REG)==0) {
#ifdef VERBOSE
printf("no frame found - exiting ");
printf("%08x %08x\n", runState(), bus_r(LOOK_AT_ME_REG));
#endif
return NULL;
} else {
volatile u_int32_t t = bus_r(LOOK_AT_ME_REG);
#ifdef VERBOSE
printf("no frame found %x status %x\n", bus_r(LOOK_AT_ME_REG),runState());
printf("lookatmereg=x%x\n",t);
#endif
break;
}
}
while ((t&0x1)==0)
{
t = bus_r(LOOK_AT_ME_REG);
if (!runBusy())
return NULL;
}
/* while(bus_r(LOOK_AT_ME_REG)==0) { */
/* #ifdef VERBOSE */
/* printf("Waiting for data status %x\n",runState()); */
/* #endif */
/* // if (runBusy()==0) { */
/* if (bus_r(LOOK_AT_ME_REG)==0) { */
/* #ifdef VERBOSE */
/* printf("no frame found - exiting "); */
/* printf("%08x %08x\n", runState(), bus_r(LOOK_AT_ME_REG)); */
/* #endif */
/* return NULL; */
/* } else { */
/* #ifdef VERBOSE */
/* printf("no frame found %x status %x\n", bus_r(LOOK_AT_ME_REG),runState()); */
/* #endif */
/* break; */
/* } */
/* //} */
/* } */
#ifdef VERBOSE
printf("before readout %08x %08x\n", runState(), bus_r(LOOK_AT_ME_REG));
#endif
@ -1701,21 +1718,7 @@ u_int32_t* fifo_read_event()
dma_memcpy(now_ptr,values ,dataBytes);
//memcpy(now_ptr,values ,dataBytes);
/* struct timeval t1,t2;
long long t;
gettimeofday(&t1,NULL);
if(geteuid()==0){
struct sched_param sp;
memset(&sp,0,sizeof(sp));
sp.sched_priority= sched_get_priority_max(SCHED_FIFO);
sched_setscheduler(0,SCHED_FIFO,&sp);
mlockall(MCL_CURRENT | MCL_FUTURE);
}
gettimeofday(&t2,NULL);
memmove(now_ptr,values ,dataBytes);
t = ((t2.tv_sec * 1000000) + t2.tv_usec) - ((t1.tv_sec * 1000000) + t1.tv_usec);
printf("\n*********Call took %lld us*******\n", t);
*/
#ifdef VERYVERBOSE

View File

@ -149,13 +149,13 @@
#define DELAYAFTER_BIT 0x00000020
#define EXPOSING_BIT 0x00000040
#define COUNT_ENABLE_BIT 0x00000080
#define RUNSTATE_0_BIT 0x00000100
#define RUNSTATE_1_BIT 0x00000200
#define RUNSTATE_2_BIT 0x00000400
#define READSTATE_0_BIT 0x00000100
#define READSTATE_1_BIT 0x00000200
#define READSTATE_2_BIT 0x00000400
#define READSTATE_0_BIT 0x00001000
#define READSTATE_1_BIT 0x00002000
#define READSTATE_2_BIT 0x00004000
#define RUNSTATE_0_BIT 0x00001000
#define RUNSTATE_1_BIT 0x00002000
#define RUNSTATE_2_BIT 0x00004000
#define SOME_FIFO_FULL_BIT 0x00008000 // error!
#define ALL_FIFO_EMPTY_BIT 0x00010000 // data ready
#define RUNMACHINE_BUSY_BIT 0x00020000

View File

@ -1855,27 +1855,28 @@ int get_run_status(int file_des) {
retval= runState();
printf("\n\nSTATUS=%08x\n",retval);
//if runbusy=0
if(!(retval&0x00020000)){
//error
if(retval&0x8000){
printf("-----------------------------------ERROR--------------------------------------x%0x\n",retval);
s=ERROR;
}
//runbusy=0
else if(!(retval&0x20000)){
//and readbusy=1, its last frame read
if(retval&0x00040000){
if(retval&0x40000){
printf("-----------------------------------LAST FRAME READ--------------------------\n");
s=TRANSMITTING;
}
//and readbusy=0,idle
else if(!(retval&0x000FFFFF)){
else if(!(retval&0xFFFFF)){
//if(!(retval&0x00000001)){
printf("-----------------------------------IDLE--------------------------------------\n");
s=IDLE;
}
else {
printf("-----------------------------------ERROR--------------------------------------x%0x\n",retval);
s=ERROR;
}
}
//if runbusy=1
else {
if (retval&0x00000008){
if (retval&0x8){
printf("-----------------------------------WAITING-----------------------------------\n");
s=WAITING;
}
@ -1931,7 +1932,9 @@ int read_frame(int file_des) {
sprintf(mess,"Detector locked by %s\n",lastClientIP);
sendDataOnly(file_des,&dataret,sizeof(dataret));
sendDataOnly(file_des,mess,sizeof(mess));
#ifdef VERBOSE
printf("dataret %d\n",dataret);
#endif
return dataret;
}
@ -1946,8 +1949,8 @@ int read_frame(int file_des) {
sendDataOnly(file_des,dataretval,dataBytes);
#ifdef VERBOSE
printf("sent %d bytes \n",dataBytes);
#endif
printf("dataret OK\n");
#endif
return OK;
} else {
//might add delay????