diff --git a/slsDetectorSoftware/eigerDetectorServer/slsDetectorServer_funcs.c b/slsDetectorSoftware/eigerDetectorServer/slsDetectorServer_funcs.c index 6b54483b0..e3c423028 100755 --- a/slsDetectorSoftware/eigerDetectorServer/slsDetectorServer_funcs.c +++ b/slsDetectorSoftware/eigerDetectorServer/slsDetectorServer_funcs.c @@ -57,9 +57,12 @@ int init_detector(int b) { //only for control server if(b){ - //PLB_LL_fifo + + printf("fifo reset\n"); fifoReset(); + printf("fifo test\n"); fifoTest(); + printf("\ninitializing detector\n"); //Aurora-Links #endif diff --git a/slsDetectorSoftware/eigerDetectorServer/slsDetector_firmware.c b/slsDetectorSoftware/eigerDetectorServer/slsDetector_firmware.c index 737753e0e..421e4ec59 100644 --- a/slsDetectorSoftware/eigerDetectorServer/slsDetector_firmware.c +++ b/slsDetectorSoftware/eigerDetectorServer/slsDetector_firmware.c @@ -113,6 +113,10 @@ u_int32_t bus_r(u_int32_t offset) { + + + + int fifoReset(){ u_int32_t mask = FIFOCNTRL_RESET_MASK; @@ -138,7 +142,7 @@ int fifoTest(void){ int buffer_length = 256; int rec_buffer_length = 4096; - char cmd[] = "help"; + char cmd[] = "fpgatfemp"; unsigned int buffer[buffer_length]; unsigned int rec_buffer[rec_buffer_length]; unsigned int send_len; @@ -146,7 +150,7 @@ int fifoTest(void){ char *char_ptr; char_ptr = (char *)buffer; - //fill the buffer with numbers for(i=0; i < BUFF_LEN; i++){char_ptr[i]=i+1;} + //fill the buffer with numbers for(i=0; i < BUFF_LEN; i++) {char_ptr[i]=i+1;} //sending command strcpy(char_ptr,cmd); @@ -159,7 +163,7 @@ int fifoTest(void){ do{ rec_len = fifoReceive(rec_buffer,rec_buffer_length); if (rec_len > 0){ - // printf("receive buffer 0x%08x length: %i\n",rec_buffer,len); + //printf("receive buffer 0x%08x length: %i\n",rec_buffer,rec_len); char_ptr = (char*) &rec_buffer[0]; char_ptr[rec_len]=0; printf(char_ptr); @@ -184,17 +188,21 @@ int fifoSend(void *buffer, unsigned int frameLength){ if (frameLength < 1) return -1; + /**4?*/ last_word = (frameLength-1)/4; word_ptr = (unsigned int *)buffer; + /*what does this do*/ while (words_send <= last_word){ + //wait for Fifo to be empty again while (!vacancy){ status = bus_r(FIFO_STATUS_REG); - if((status & FIFOSTATUS_ALMOST_FULL_BIT) == 0) + if(!(status & FIFOSTATUS_ALMOST_FULL_BIT)) vacancy = 1; } + /**fifo threshold words?*/ for (i=0; ((i>>> SOF\n\r"); - buffer_ptr = 0; + buffer_ptr = 0;/**not needed */ sof = 1; } - fifo_val = bus_r(FIFO_FIFO_REG); //read from fifo + + //read from fifo + fifo_val = bus_r(FIFO_FIFO_REG); + if ((buffer_ptr > 0) || sof){ if ( (bufflen >> 2) > buffer_ptr) diff --git a/slsDetectorSoftware/eigerDetectorServer/slsDetector_firmware.h b/slsDetectorSoftware/eigerDetectorServer/slsDetector_firmware.h index 9d4115e28..343ebb4f5 100644 --- a/slsDetectorSoftware/eigerDetectorServer/slsDetector_firmware.h +++ b/slsDetectorSoftware/eigerDetectorServer/slsDetector_firmware.h @@ -21,7 +21,6 @@ int mapCSP0(void); u_int32_t bus_w(u_int32_t offset, u_int32_t data); u_int32_t bus_r(u_int32_t offset); - int fifoReset(); int fifoTest(void);