mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-13 21:37:13 +02:00
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:
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
CROSS = bfin-uclinux-
|
CROSS = bfin-uclinux-
|
||||||
CC = $(CROSS)gcc
|
CC = $(CROSS)gcc
|
||||||
CFLAGS += -Wall -DMCB_FUNCS -DVERBOSE -DVERYVERBOSE #-DVIRTUAL
|
CFLAGS += -Wall -DMCB_FUNCS# -DVERBOSE -DVERYVERBOSE #-DVIRTUAL
|
||||||
|
|
||||||
|
|
||||||
PROGS= gotthardDetectorServer
|
PROGS= gotthardDetectorServer
|
||||||
|
@ -1513,7 +1513,8 @@ int configureMAC(int ipad,long long int macad,long long int servermacad,int ival
|
|||||||
|
|
||||||
|
|
||||||
u_int32_t runBusy(void) {
|
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) {
|
u_int32_t dataPresent(void) {
|
||||||
@ -1531,6 +1532,9 @@ u_int32_t runState(void) {
|
|||||||
#ifdef VERBOSE
|
#ifdef VERBOSE
|
||||||
printf("status %04x\n",s);
|
printf("status %04x\n",s);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* if (s==0x62001)
|
||||||
|
exit(-1);*/
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1674,26 +1678,39 @@ u_int32_t* fifo_read_event()
|
|||||||
#ifdef VERBOSE
|
#ifdef VERBOSE
|
||||||
printf("before looping\n");
|
printf("before looping\n");
|
||||||
#endif
|
#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
|
volatile u_int32_t t = bus_r(LOOK_AT_ME_REG);
|
||||||
return NULL;
|
|
||||||
} else {
|
|
||||||
#ifdef VERBOSE
|
#ifdef VERBOSE
|
||||||
printf("no frame found %x status %x\n", bus_r(LOOK_AT_ME_REG),runState());
|
printf("lookatmereg=x%x\n",t);
|
||||||
#endif
|
#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
|
#ifdef VERBOSE
|
||||||
printf("before readout %08x %08x\n", runState(), bus_r(LOOK_AT_ME_REG));
|
printf("before readout %08x %08x\n", runState(), bus_r(LOOK_AT_ME_REG));
|
||||||
#endif
|
#endif
|
||||||
@ -1701,21 +1718,7 @@ u_int32_t* fifo_read_event()
|
|||||||
dma_memcpy(now_ptr,values ,dataBytes);
|
dma_memcpy(now_ptr,values ,dataBytes);
|
||||||
|
|
||||||
//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
|
#ifdef VERYVERBOSE
|
||||||
|
@ -149,13 +149,13 @@
|
|||||||
#define DELAYAFTER_BIT 0x00000020
|
#define DELAYAFTER_BIT 0x00000020
|
||||||
#define EXPOSING_BIT 0x00000040
|
#define EXPOSING_BIT 0x00000040
|
||||||
#define COUNT_ENABLE_BIT 0x00000080
|
#define COUNT_ENABLE_BIT 0x00000080
|
||||||
#define RUNSTATE_0_BIT 0x00000100
|
#define READSTATE_0_BIT 0x00000100
|
||||||
#define RUNSTATE_1_BIT 0x00000200
|
#define READSTATE_1_BIT 0x00000200
|
||||||
#define RUNSTATE_2_BIT 0x00000400
|
#define READSTATE_2_BIT 0x00000400
|
||||||
|
|
||||||
#define READSTATE_0_BIT 0x00001000
|
#define RUNSTATE_0_BIT 0x00001000
|
||||||
#define READSTATE_1_BIT 0x00002000
|
#define RUNSTATE_1_BIT 0x00002000
|
||||||
#define READSTATE_2_BIT 0x00004000
|
#define RUNSTATE_2_BIT 0x00004000
|
||||||
#define SOME_FIFO_FULL_BIT 0x00008000 // error!
|
#define SOME_FIFO_FULL_BIT 0x00008000 // error!
|
||||||
#define ALL_FIFO_EMPTY_BIT 0x00010000 // data ready
|
#define ALL_FIFO_EMPTY_BIT 0x00010000 // data ready
|
||||||
#define RUNMACHINE_BUSY_BIT 0x00020000
|
#define RUNMACHINE_BUSY_BIT 0x00020000
|
||||||
|
@ -1855,27 +1855,28 @@ int get_run_status(int file_des) {
|
|||||||
retval= runState();
|
retval= runState();
|
||||||
printf("\n\nSTATUS=%08x\n",retval);
|
printf("\n\nSTATUS=%08x\n",retval);
|
||||||
|
|
||||||
//if runbusy=0
|
//error
|
||||||
if(!(retval&0x00020000)){
|
if(retval&0x8000){
|
||||||
|
printf("-----------------------------------ERROR--------------------------------------x%0x\n",retval);
|
||||||
|
s=ERROR;
|
||||||
|
}
|
||||||
|
//runbusy=0
|
||||||
|
else if(!(retval&0x20000)){
|
||||||
//and readbusy=1, its last frame read
|
//and readbusy=1, its last frame read
|
||||||
if(retval&0x00040000){
|
if(retval&0x40000){
|
||||||
printf("-----------------------------------LAST FRAME READ--------------------------\n");
|
printf("-----------------------------------LAST FRAME READ--------------------------\n");
|
||||||
s=TRANSMITTING;
|
s=TRANSMITTING;
|
||||||
}
|
}
|
||||||
//and readbusy=0,idle
|
//and readbusy=0,idle
|
||||||
else if(!(retval&0x000FFFFF)){
|
else if(!(retval&0xFFFFF)){
|
||||||
//if(!(retval&0x00000001)){
|
//if(!(retval&0x00000001)){
|
||||||
printf("-----------------------------------IDLE--------------------------------------\n");
|
printf("-----------------------------------IDLE--------------------------------------\n");
|
||||||
s=IDLE;
|
s=IDLE;
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
printf("-----------------------------------ERROR--------------------------------------x%0x\n",retval);
|
|
||||||
s=ERROR;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
//if runbusy=1
|
//if runbusy=1
|
||||||
else {
|
else {
|
||||||
if (retval&0x00000008){
|
if (retval&0x8){
|
||||||
printf("-----------------------------------WAITING-----------------------------------\n");
|
printf("-----------------------------------WAITING-----------------------------------\n");
|
||||||
s=WAITING;
|
s=WAITING;
|
||||||
}
|
}
|
||||||
@ -1931,7 +1932,9 @@ int read_frame(int file_des) {
|
|||||||
sprintf(mess,"Detector locked by %s\n",lastClientIP);
|
sprintf(mess,"Detector locked by %s\n",lastClientIP);
|
||||||
sendDataOnly(file_des,&dataret,sizeof(dataret));
|
sendDataOnly(file_des,&dataret,sizeof(dataret));
|
||||||
sendDataOnly(file_des,mess,sizeof(mess));
|
sendDataOnly(file_des,mess,sizeof(mess));
|
||||||
|
#ifdef VERBOSE
|
||||||
printf("dataret %d\n",dataret);
|
printf("dataret %d\n",dataret);
|
||||||
|
#endif
|
||||||
return dataret;
|
return dataret;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1946,8 +1949,8 @@ int read_frame(int file_des) {
|
|||||||
sendDataOnly(file_des,dataretval,dataBytes);
|
sendDataOnly(file_des,dataretval,dataBytes);
|
||||||
#ifdef VERBOSE
|
#ifdef VERBOSE
|
||||||
printf("sent %d bytes \n",dataBytes);
|
printf("sent %d bytes \n",dataBytes);
|
||||||
#endif
|
|
||||||
printf("dataret OK\n");
|
printf("dataret OK\n");
|
||||||
|
#endif
|
||||||
return OK;
|
return OK;
|
||||||
} else {
|
} else {
|
||||||
//might add delay????
|
//might add delay????
|
||||||
|
Reference in New Issue
Block a user