diff --git a/Pcie40Applications/Makefile b/Pcie40Applications/Makefile
index 30b88c444352eec2d947ceac392fff66254ced50..e084b3ee108773a6742bc6063c4ee7c0983e704f 100644
--- a/Pcie40Applications/Makefile
+++ b/Pcie40Applications/Makefile
@@ -5,7 +5,7 @@ include $(TOP)/flags.mk
 
 PCIE40_ECS :=pcie40_ecs
 PCIE40_ECS_OBJS =main_pcie40_ecs.o
-PCIE40_ECS_CFLAGS =$(CFLAGS) -I$(TOP) -I$(TOP)/../Pcie40DriverLibraries
+PCIE40_ECS_CXXFLAGS =$(CFLAGS) -I$(TOP) -I$(TOP)/../Pcie40DriverLibraries
 PCIE40_ECS_INSTALL =$(PREFIX)/bin
 PCIE40_ECS_LDFLAGS = -L../Pcie40Libraries/lib -lpcie40 -L../Pcie40DriverLibraries/ -lpcie40driver_ecs 
 
@@ -23,43 +23,43 @@ PCIE40_RELOAD_INSTALL =$(PREFIX)/bin
 
 PCIE40_SLC :=pcie40_b2slc
 PCIE40_SLC_OBJS =main_pcie40_b2slc.o
-PCIE40_SLC_CFLAGS =$(CFLAGS) -I$(TOP) -I$(TOP)/../Pcie40Libraries
+PCIE40_SLC_CXXFLAGS =$(CFLAGS) -I$(TOP) -I$(TOP)/../Pcie40Libraries
 PCIE40_SLC_INSTALL =$(PREFIX)/bin
 PCIE40_SLC_LDFLAGS = -L../Pcie40Libraries/lib -lpcie40 -L../Pcie40DriverLibraries/ -lpcie40driver_ecs
 
-PCIE40_KLMBYTESTREAM :=pcie40_klmbytestream
-PCIE40_KLMBYTESTREAM_OBJS =main_pcie40_klmbytestream.o
-PCIE40_KLMBYTESTREAM_CFLAGS =$(CFLAGS) -I$(TOP) -I$(TOP)/../Pcie40Libraries
-PCIE40_KLMBYTESTREAM_INSTALL =$(PREFIX)/bin
-PCIE40_KLMBYTESTREAM_LDFLAGS = -L../Pcie40Libraries/lib -lpcie40 -L../Pcie40DriverLibraries/ -lpcie40driver_ecs
+# PCIE40_KLMBYTESTREAM :=pcie40_klmbytestream
+# PCIE40_KLMBYTESTREAM_OBJS =main_pcie40_klmbytestream.o
+# PCIE40_KLMBYTESTREAM_CFLAGS =$(CFLAGS) -I$(TOP) -I$(TOP)/../Pcie40Libraries
+# PCIE40_KLMBYTESTREAM_INSTALL =$(PREFIX)/bin
+# PCIE40_KLMBYTESTREAM_LDFLAGS = -L../Pcie40Libraries/lib -lpcie40 -L../Pcie40DriverLibraries/ -lpcie40driver_ecs
 
 PCIE40_B2LRESET :=pcie40_b2linkreset
 PCIE40_B2LRESET_OBJS =main_pcie40_b2linkreset.o
-PCIE40_B2LRESET_CFLAGS =$(CFLAGS) -I$(TOP) -I$(TOP)/../Pcie40Libraries
+PCIE40_B2LRESET_CXXFLAGS =$(CFLAGS) -I$(TOP) -I$(TOP)/../Pcie40Libraries
 PCIE40_B2LRESET_INSTALL =$(PREFIX)/bin
 PCIE40_B2LRESET_LDFLAGS = -L../Pcie40Libraries/lib -lpcie40 -L../Pcie40DriverLibraries/ -lpcie40driver_ecs
 
 PCIE40_DMA :=pcie40_dma
 PCIE40_DMA_OBJS =main_pcie40_dma.o
-PCIE40_DMA_CFLAGS =$(CFLAGS) -I$(TOP) -I$(TOP)/../Pcie40Driver
+PCIE40_DMA_CXXFLAGS =$(CFLAGS) -I$(TOP) -I$(TOP)/../Pcie40Driver
 PCIE40_DMA_INSTALL =$(PREFIX)/bin
 PCIE40_DMA_LDFLAGS = -L../Pcie40Libraries/lib -lpcie40 -L../Pcie40DriverLibraries/ -lpcie40driver_ecs
 
 PCIE40_DAQ :=pcie40_daq
 PCIE40_DAQ_OBJS =main_pcie40_daq.o
-PCIE40_DAQ_CFLAGS =$(CFLAGS) -I$(TOP) -I$(TOP)/../Pcie40Driver
+PCIE40_DAQ_CXXFLAGS =$(CFLAGS) -I$(TOP) -I$(TOP)/../Pcie40Driver
 PCIE40_DAQ_INSTALL =$(PREFIX)/bin
 PCIE40_DAQ_LDFLAGS = -L../Pcie40Libraries/lib -lpcie40 -L../Pcie40DriverLibraries/ -lpcie40driver_ecs
 
 PCIE40_UL :=pcie40_ul
 PCIE40_UL_OBJS =main_pcie40_ul.o
-PCIE40_UL_CFLAGS =$(CFLAGS) -I$(TOP) -I$(TOP)/../Pcie40Driver
+PCIE40_UL_CXXFLAGS =$(CFLAGS) -I$(TOP) -I$(TOP)/../Pcie40Driver
 PCIE40_UL_INSTALL =$(PREFIX)/bin
 PCIE40_UL_LDFLAGS = -L../Pcie40Libraries/lib -lpcie40 -L../Pcie40DriverLibraries/ -lpcie40driver_ecs
 
 PCIE40_READFPGAVERSION :=pcie40_readFPGAversion
 PCIE40_READFPGAVERSION_OBJS =main_pcie40_readFPGAversion.o
-PCIE40_READFPGAVERSION_CFLAGS =$(CFLAGS) -I$(TOP) -I$(TOP)/../Pcie40Driver -I$(TOP)/../Pcie40DriverLibraries
+PCIE40_READFPGAVERSION_CXXFLAGS =$(CFLAGS) -I$(TOP) -I$(TOP)/../Pcie40Driver -I$(TOP)/../Pcie40DriverLibraries
 PCIE40_READFPGAVERSION_INSTALL =$(PREFIX)/bin
 PCIE40_READFPGAVERSION_LDFLAGS = -L../Pcie40Libraries/lib -lpcie40 -L../Pcie40DriverLibraries/ -lpcie40driver_ecs
 
diff --git a/Pcie40Applications/main_pcie40_b2linkreset.c b/Pcie40Applications/main_pcie40_b2linkreset.c
deleted file mode 100644
index b62574c9bd91621a36d63a7801e5f85114764812..0000000000000000000000000000000000000000
--- a/Pcie40Applications/main_pcie40_b2linkreset.c
+++ /dev/null
@@ -1,17 +0,0 @@
-#include "pcie40_ecs.h"
-#include "pcie40_b2ecs.h"
-#include <stdio.h>
-
-int main(int argc, char *argv[]) { 
-  ecs_open( 0 , 2 ) ;
-  int result = 0;
-  result = pcie40_resyncb2link( 0 , 0 ) ;
-  ecs_close( 0 , 2 ) ;
-
-  if ( 0 == result )
-    printf( "Resynchronization failed\n" ) ;
-  else
-    printf( "Resynchronization succeeded\n" ) ;
-    
-  return 0 ;
-}
diff --git a/Pcie40Applications/main_pcie40_b2slc.c b/Pcie40Applications/main_pcie40_b2slc.c
deleted file mode 100644
index 45d4978f611c92dc4694928f5e9d3859bff60410..0000000000000000000000000000000000000000
--- a/Pcie40Applications/main_pcie40_b2slc.c
+++ /dev/null
@@ -1,15 +0,0 @@
-#include "pcie40_ecs.h"
-#include "pcie40_b2slc.h"
-#include <stdio.h>
-
-int main(int argc, char *argv[]) { 
-  ecs_open( 0 , 2 ) ;
-
-  int result = pcie40_readfee32( 0 , 1 , 0x12 ) ;
-  
-  ecs_close( 0 , 2 ) ;
-
-  printf( "Value = %X\n" , result ) ;
-
-  return 0 ;
-}
diff --git a/Pcie40Applications/main_pcie40_daq.c b/Pcie40Applications/main_pcie40_daq.c
deleted file mode 100644
index 3130ab23d187633a4bdbb7a9b6e45a188d0714af..0000000000000000000000000000000000000000
--- a/Pcie40Applications/main_pcie40_daq.c
+++ /dev/null
@@ -1,264 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <time.h>
-#include "altera_dma_regs.h"
-
-//#define USE_UL
-
-const int CRC16_XMODEM_TABLE[] = {
-  0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
-  0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,
-  0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6,
-  0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,
-  0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,
-  0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d,
-  0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4,
-  0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc,
-  0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,
-  0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b,
-  0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12,
-  0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a,
-  0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41,
-  0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49,
-  0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70,
-  0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78,
-  0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f,
-  0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,
-  0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e,
-  0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256,
-  0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d,
-  0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
-  0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c,
-  0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634,
-  0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab,
-  0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3,
-  0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,
-  0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,
-  0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,
-  0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,
-  0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,
-  0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0,
-} ;
-
-
-int decode_data( unsigned int * data , unsigned int * ce , int * crc ) { 
-  int v1 , v2 ; 
-  *crc = 0 ;
-  v1 = data[ ( *ce ) % DMASIZE ] ;
-  v2 = data[ ( *ce + 8 ) % DMASIZE ] ;
-
-  if ( ( v1 != data[ ( *ce + 443 * 16 )  % DMASIZE ] ) || 
-       ( v2 != data[ ( *ce + 443 * 16 + 8 ) % DMASIZE ] ) ) return 0 ; 
-
-  *crc = 0xffff ;
-  int byte1, byte2, byte3, byte4 ;
-  byte1 = v1 & 0xFF;
-  byte2 = ( v1 & 0xFF00 ) >> 8 ;
-  byte3 = v2 & 0xFF ;
-  byte4 = ( v2 & 0xFF00 ) >> 8 ;
-  *crc = (((*crc)<<8)&0xff00) ^ CRC16_XMODEM_TABLE[(((*crc)>>8)&0xff)^byte2] ;
-  *crc = (((*crc)<<8)&0xff00) ^ CRC16_XMODEM_TABLE[(((*crc)>>8)&0xff)^byte1] ;
-  *crc = (((*crc)<<8)&0xff00) ^ CRC16_XMODEM_TABLE[(((*crc)>>8)&0xff)^byte4] ;
-  *crc = (((*crc)<<8)&0xff00) ^ CRC16_XMODEM_TABLE[(((*crc)>>8)&0xff)^byte3] ;
- 
-  int ix ;
-  int x, y ;
-  for ( ix = *ce + 16 ; ix < *ce + 443 * 16 ; ix += 16 ) {
-    x = data[ ix % DMASIZE ] ;
-    y = data[ ( ix + 8 ) % DMASIZE ] ;
-    if ( ( v1 == x ) && ( v2 == y ) ) { 
-      *crc = 0 ;
-      return 0 ;
-    }
-    byte1 = x & 0xFF;
-    byte2 = ( x & 0xFF00 ) >> 8 ;
-    byte3 = y & 0xFF ;
-    byte4 = ( y & 0xFF00 ) >> 8 ;
-    *crc = (((*crc)<<8)&0xff00) ^ CRC16_XMODEM_TABLE[(((*crc)>>8)&0xff)^byte2] ;
-    *crc = (((*crc)<<8)&0xff00) ^ CRC16_XMODEM_TABLE[(((*crc)>>8)&0xff)^byte1] ;
-    *crc = (((*crc)<<8)&0xff00) ^ CRC16_XMODEM_TABLE[(((*crc)>>8)&0xff)^byte4] ;
-    *crc = (((*crc)<<8)&0xff00) ^ CRC16_XMODEM_TABLE[(((*crc)>>8)&0xff)^byte3] ;
-  }
-
-  return 444 ;
-}
-
-int crc_calc( int crc, unsigned int data ){ 
-  int byte1, byte2, byte3, byte4, crc_temp ;
-  byte1 = data & 0xFF;
-  byte2 = ( data & 0xFF00 ) >> 8;
-  byte3 = ( data & 0xFF0000 ) >> 16;
-  byte4 = ( data & 0xFF000000 ) >> 24;
-  crc_temp = (((crc)<<8)&0xff00) ^ CRC16_XMODEM_TABLE[(((crc)>>8)&0xff)^byte4] ;
-  crc_temp = (((crc_temp)<<8)&0xff00) ^ CRC16_XMODEM_TABLE[(((crc_temp)>>8)&0xff)^byte3] ;
-  crc_temp = (((crc_temp)<<8)&0xff00) ^ CRC16_XMODEM_TABLE[(((crc_temp)>>8)&0xff)^byte2] ;
-  crc_temp = (((crc_temp)<<8)&0xff00) ^ CRC16_XMODEM_TABLE[(((crc_temp)>>8)&0xff)^byte1] ;
-  return crc_temp;
-}
-
-int decode_data_wUL( unsigned int * data , unsigned int * ce , int * crc ) { 
-
-  int magic; 
-  int size, size_link;
-  int ix ;
-
-  int offset; 
-  unsigned int exp_run, evenum, ctime, utime; 
-
-  *crc = 0 ;
-  size = data[ ( *ce ) % DMASIZE ] ;
-  magic = data[ ( *ce + 1 ) % DMASIZE ] ;
-
-
-  // Check a new event is available in the memory
-  if( ( magic & 0xffff0000 ) != 0x7f7f0000 ){
-    //    printf("Invalid magic number %.8x\n", magic );
-    return -1;
-  }
-
-  ix = *ce + 4;
-  ctime = data[ ix % DMASIZE ];
-  ix = *ce + 3;
-  evenum = data[ ix % DMASIZE ];
-  ix = *ce + 5;
-  utime = data[ ix % DMASIZE ];
-  ix = *ce + 2;
-  exp_run = data[ ix % DMASIZE ];
-
-  printf("exprun %.8x eve %d\n", exp_run, evenum );
-
-  offset = 8; // size of ROB header [words]
-
-  /* for ( ix = *ce; ix < *ce + 10; ix++ ) { */
-  /*   printf("data %.8x\n", data[ ix % DMASIZE ]); */
-  /* } */
-
-
-  while( offset + 4 != size ){ // 4 = ROB trailer size
-    *crc = 0xffff ;
-
-    ix = *ce + offset;
-    size_link = data[ ix ] & 0x00ffffff ;
-
-    //    printf("size link %d\n", size_link );
-
-    // Calculation of CRC
-    *crc = crc_calc( *crc, ctime );
-    *crc = crc_calc( *crc, evenum );
-    *crc = crc_calc( *crc, utime );
-    *crc = crc_calc( *crc, exp_run );
-
-    for ( ix = *ce + offset + 2 ; ix < *ce + offset + size_link -2; ix++ ) {
-      *crc = crc_calc( *crc, data[ ix % DMASIZE ] );
-      //      printf("%.8x %.8x\n", data[ ix % DMASIZE ], *crc );
-    }
-  
-    ix = *ce + 8 + size_link -2;
-    if( ( *crc & 0xffff ) != ( data[ ix % DMASIZE ] & 0xffff ) ){
-      printf( "Error in CRC comparison calc %.8x : data %.8x\n" , *crc , data[ ix % DMASIZE ] );
-
-      /* for ( ix = *ce; ix < *ce + 24; ix++ ) { */
-      /* 	printf("%.8x ", data[ ix % DMASIZE ]); */
-      /* 	if( ( ix - *ce )  % 8 == 0 ) printf("\n"); */
-      /* } */
-      /* printf("\n"); */
-      usleep(200000);
-    }else{    
-      //      printf( "O.K. in CRC comparison calc %.8x : data %.8x\n" , *crc , data[ ix % DMASIZE ] );
-    }
-    offset += size_link;
-    if( offset + 4 > size ){
-      printf( "Invalid data size sum of link size %d size = %d\n" , 
-	      offset + 4, size );
-      exit(1);
-    }
-  }
-
-  //  return 444 ;
-  return size ;
-}
-
-
-int main (int argc ,char** argv) {
-  // Stop trigger
-  system( "ssh vme \"resetft -80\"" ) ;
-  sleep( 2 ) ; 
-  int res = ecs_open( 0 , 0 ) ;
-  if ( -1 == res ) printf("ERROR: Could not open device (BAR 0)\n") ;
-  else printf("SUCCESS: Device opened for DMA\n");
-  res = ecs_open( 0 , 2 ) ;
-  pcie40_b2dmabufferreset( 0 ) ; 
-  // Start trigger
-  system( "ssh vme \"trigft -80 pulse 10000 -1\"" ) ;
-  sleep( 2 ) ; 
-
-  // Read DMA
-  unsigned int * data ; 
-  double time_spent ;
-  int retry ;
-  retry = 0 ;
-
-  int i ;
-  int size, size_256, currentEventIndex, crc, nErr, nEvt, nRetry ;
-  currentEventIndex = 0 ;
-  nErr = 0 ;
-  nEvt = 0 ;
-  nRetry = 0 ;
-  clock_t begin = clock();
-  for ( i = 0 ; i < 1000000 ; ++i ) { 
-    if ( nEvt % 10000 == 1 ) printf( "Event number %d\n", nEvt ) ;
-
-    res = pcie40_b2dmapointerread( 0 , &data ) ;
-
-#ifdef USE_UL
-    size = decode_data_wUL( data , &currentEventIndex , &crc ) ;
-#else
-    size = decode_data( data , &currentEventIndex , &crc ) ;
-#endif
-    if ( size <= 8 ) continue ;
-
-#ifdef USE_UL
-    if( size % 8 != 0 ){
-      size_256 = ( size/8 + 1 )*8;
-    }
-    /* printf("size %d %d\n", size, i ); */
-    /* printf("%.8d ", 0 ); */
-    /* for (i= 0 ;i < 16;i++){ */
-    /*   printf("%08x ",data[ ( currentEventIndex + i ) % DMASIZE ]); */
-    /*   if( ( i % 8 ) == 7 ) printf("\n%.8d %.8d %.8d ", j, i); */
-    /* } */
-    /* printf("\n"); */
-
-    currentEventIndex = ( currentEventIndex + size_256 ) % DMASIZE ; 
-    nEvt++ ;  
-
-#else
-    if ( ( data[(8+16*size+currentEventIndex)%DMASIZE]&0xFFFF ) != crc ) {
-      if ( retry == 1 ) { 
-	nErr++ ;
-	printf( "Error in CRC comparison %x %x\n" , crc , data[(8+16*size+currentEventIndex)%DMASIZE]&0xFFFF ) ;
-      } else {
-	nRetry++ ;
-	retry = 1 ;
-      }
-    } else { 
-      retry = 0 ;
-      currentEventIndex = ( ( size + 1 ) * 16 + currentEventIndex ) % DMASIZE ;
-      nEvt++ ; 
-    }
-#endif
-  }
-  clock_t end = clock();
-  time_spent += (double)(end - begin) / CLOCKS_PER_SEC;
-
-  res = ecs_close( 0 , 0 ) ;
-  if ( -1 == res ) printf("ERROR: Could not close device (BAR 0)\n");
-  else printf("SUCCESS: Device closed for DMA\n");
-
-  printf( "Timing = %f s\n" , time_spent ) ;
-  printf( "Number of events = %d \n", nEvt ) ;  
-  printf( "Number of errors = %d \n", nErr ) ; 
-  printf( "Number of retries = %d \n", nRetry ) ;
-  return 0 ;
-}
diff --git a/Pcie40Applications/main_pcie40_dma.c b/Pcie40Applications/main_pcie40_dma.c
deleted file mode 100644
index 094c80ff7a02e4fd617751818f84abdd3c8deb61..0000000000000000000000000000000000000000
--- a/Pcie40Applications/main_pcie40_dma.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <unistd.h>
-#include "altera_dma_regs.h"
-
-int main (int argc ,char** argv) {
-  int res = ecs_open( 0 , 0 ) ;
-  if ( -1 == res ) printf("ERROR: Could not open device (BAR 0)\n") ;
-  else printf("SUCCESS: Device opened for DMA\n");
-  res = ecs_open( 0 , 2 ) ; 
-  if ( -1 == res ) printf("ERROR: Could not open device (BAR 2)\n") ;
-  else printf("SUCCESS: Device opened for ECS\n");
-  // Read DMA
-  res = pcie40_b2dmabufferreset( 0 ) ;
-  unsigned int * data ; 
-  res = pcie40_b2dmapointerread( 0 , &data ) ;
-  int i = 0 ;
-  if ( res == 0 ) printf( "DMA Error\n" ) ;
-  else {
-    for (i= 0 ;i < DMASIZE;i++) printf("0X%08x\n",data[i]);
-  }
-  // 
-  res = ecs_close( 0 , 0 ) ;
-  if ( -1 == res ) printf("ERROR: Could not close device (BAR 0)\n");
-  else printf("SUCCESS: Device closed for DMA\n");
-  res = ecs_close( 0 , 2 ) ;
-  if ( -1 == res ) printf("ERROR: Could not close device (BAR 2)\n");
-  else printf("SUCCESS: Device closed for ECS\n");
-  return 0 ;
-}
diff --git a/Pcie40Applications/main_pcie40_ecs.c b/Pcie40Applications/main_pcie40_ecs.c
deleted file mode 100644
index 8f9e455ce0fe3ca08947f98c12b50cb9fafae7a4..0000000000000000000000000000000000000000
--- a/Pcie40Applications/main_pcie40_ecs.c
+++ /dev/null
@@ -1,118 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include "ecs_driverlib.h"
-
-static int flag_devnum = 0;
-static int flag_barnum = -1;
-static int flag_address = 0;
-static uint32_t flag_addroff;
-static int flag_write = 0;
-static uint32_t flag_writeval;
-static int flag_read = 0;
-
-//ug`pcie40_ecs.synopsis`
-// *pcie40_ecs* [-i _interface_] -b _bar_ -a _address_ -w _value_ _
-// *pcie40_ecs* [-i _interface_] -b _bar_ -a _address_ -r
-static void usage()
-{
-  fprintf(stderr, "usage: pcie40_ecs [options]\n");
-  fprintf(stderr, "  -h    Print this message\n");
-  fprintf(stderr, "  -i {} Interface number (default: 0)\n");
-  fprintf(stderr, "  -b {} BAR number\n");
-  fprintf(stderr, "  -a {} Register address\n");
-  fprintf(stderr, "  -w {} Write value to register\n");
-  fprintf(stderr, "  -r    Read register\n");
-}
-
-//ug`pcie40_ecs.description`
-// Reads and writes PCIe40 BAR0 and BAR2 registers over PCI Express.
-
-int main(int argc, char *argv[])
-{
-  while (argc > 1 && argv[1][0] == '-') {
-    switch (argv[1][1]) {
-
-      //ug`pcie40_ecs.options`interface
-      // *-i* _interface_::
-      // Bind to PCIe40 interface number _interface_. This is optional and by default the tool will bind to the first interface available (typically 0).
-      case 'i':
-        ++argv;
-        --argc;
-        flag_devnum = atoi(argv[1]);
-        break;
-
-      //ug`pcie40_ecs.options`bar
-      // *-b* _bar_::
-      // Access BAR number _bar_. Two PCI BARs are available:
-      // * 0 for user code (includes registers for DAQ, TFC, SCA...)
-      // * 2 for the common low-level interface
-      case 'b':
-        ++argv;
-        --argc;
-        flag_barnum = atoi(argv[1]);
-        break;
-
-      //ug`pcie40_ecs.options`address
-      // *-a* _address_::
-      // Address to use for BAR access. Can be in decimal, hexadecimal or any other format supported by *strtol(3)*.
-      case 'a':
-        ++argv;
-        --argc;
-        flag_address = 1;
-        flag_addroff = strtol(argv[1], NULL, 0);
-        break;
-
-      //ug`pcie40_ecs.options`write
-      // *-w* _value_::
-      // Write 32-bit _value_ to register at the given address. Same input format considerations apply as for the *-a* option.
-      case 'w':
-        ++argv;
-        --argc;
-        flag_write = 1;
-        flag_writeval = strtoul(argv[1], NULL, 0);
-        break;
-
-      //ug`pcie40_ecs.options`read
-      // *-r*::
-      // Read value of register at given address. Value is printed to stdout in hexadecimal format.
-      case 'r':
-        flag_read = 1;
-        break;
-
-      //ug`pcie40_ecs.options`help
-      // *-h*::
-      // Output short program synopsis and exit.
-      default:
-      case 'h':
-        usage();
-        exit(1);
-        break;
-    }
-    --argc;
-    ++argv;
-  }
-  //ug`pcie40_ecs.exit`
-  // -1 is returned in case of access error or wrong command line options, 0 otherwise.
-  if (!flag_address || flag_barnum < 0) {
-    usage();
-    exit(-1);
-  }
-  if (!flag_read && !flag_write) {
-    printf("-r and -w are mutually exclusive\n");
-    exit(-1);
-  }
-
-  uint32_t *regs;
-  int ecs = p40_ecs_open(flag_devnum, flag_barnum, &regs);
-
-  if (flag_write) {
-    p40_ecs_w32(regs, flag_addroff, flag_writeval);
-  } else if (flag_read) {
-    uint32_t reg = p40_ecs_r32(regs, flag_addroff);
-    printf("0x%08x\n", reg);
-  }
-  p40_ecs_close(ecs, regs, flag_barnum);
-
-  return 0;
-}
diff --git a/Pcie40Applications/main_pcie40_readFPGAversion.c b/Pcie40Applications/main_pcie40_readFPGAversion.c
deleted file mode 100644
index c31f90cf61823dedce9040363874c19a5bcffb2b..0000000000000000000000000000000000000000
--- a/Pcie40Applications/main_pcie40_readFPGAversion.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/****************************************************************************************//**
-* \file				readFPGAMemoire.c
-*
-*  lecture de la memore du FPGA 
-*  la taille est de x octets
-* l'adresse de depart de lecture vaut 0
-*//********************************************************************************************/
-#include <stdio.h>
-#include <stdlib.h>
-#include <getopt.h>
-#include "ecs_driverlib.h"
-
-#define SIZE_MEMO_FPGA 1024   /* taille  max de la memoire interne FPG */
-
-int main(int argc, char *argv[]){
-	int board = 0;
-        int i;
-	unsigned val;
-	int reg = 0;
-        char contenuMemoireFPGA[SIZE_MEMO_FPGA + 1];
-
-	ecs_openLli(board);
-	for(i=0; i < SIZE_MEMO_FPGA; i++)
-        {
-	   if (ecs_iordLli(board, reg, &val)!=0)
-             {
-		 printf("LLI bar2 Read fails at 0x%08x\n", reg);
-		 exit(0);
-             }
-
-           contenuMemoireFPGA[i] = val;
-	   reg += 4;
-           
-	}
-        contenuMemoireFPGA[SIZE_MEMO_FPGA+1] = '\0';
- 	printf("contenu memoire FPGA   %s\n",contenuMemoireFPGA);		
-	ecs_closeLli(board);
-	return 0;
-}
-
diff --git a/Pcie40Applications/main_pcie40_ul.c b/Pcie40Applications/main_pcie40_ul.c
deleted file mode 100644
index 9b59e0a5cd69f429a8a66c94808099a3696b4f07..0000000000000000000000000000000000000000
--- a/Pcie40Applications/main_pcie40_ul.c
+++ /dev/null
@@ -1,401 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <time.h>
-#include "altera_dma_regs.h"
-
-//#define DEBUG
-
-const int CRC16_XMODEM_TABLE[] = {
-  0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
-  0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,
-  0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6,
-  0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,
-  0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,
-  0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d,
-  0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4,
-  0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc,
-  0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,
-  0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b,
-  0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12,
-  0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a,
-  0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41,
-  0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49,
-  0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70,
-  0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78,
-  0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f,
-  0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,
-  0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e,
-  0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256,
-  0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d,
-  0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
-  0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c,
-  0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634,
-  0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab,
-  0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3,
-  0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,
-  0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,
-  0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,
-  0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,
-  0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,
-  0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0,
-} ;
-
-
-
-int crc_calc( int * crc, unsigned int * data ){ 
-  int byte1, byte2, byte3, byte4 ;
-  byte1 = (*data) & 0xFF;
-  byte2 = ( (*data) & 0xFF00 ) >> 8;
-  byte3 = ( (*data) & 0xFF0000 ) >> 16;
-  byte4 = ( (*data) & 0xFF000000 ) >> 24;
-  *crc = ((((*crc))<<8)&0xff00) ^ CRC16_XMODEM_TABLE[((((*crc))>>8)&0xff)^byte4] ;
-  *crc = ((((*crc))<<8)&0xff00) ^ CRC16_XMODEM_TABLE[((((*crc))>>8)&0xff)^byte3] ;
-  *crc = ((((*crc))<<8)&0xff00) ^ CRC16_XMODEM_TABLE[((((*crc))>>8)&0xff)^byte2] ;
-  *crc = ((((*crc))<<8)&0xff00) ^ CRC16_XMODEM_TABLE[((((*crc))>>8)&0xff)^byte1] ;
-}
-
-
-int crc_calc_event( unsigned int* data, int start_pos ){
-  int i = 0;
-  int cur_pos = start_pos;
-
-  int first_crc ;
-  int crc = 0xffff ;
-
-
-  int size = data[ cur_pos % DMASIZE ];
-
-  if( size > 0xffff || size <= 0 ){
-    printf("Invalid total event size %.8x\n", size);
-    return -1;
-  }
-
-  /* printf( "TRL %.8x %.8x %.8x\n",  */
-  /* 	  data[ ( cur_pos + size - 1 + DMASIZE ) % DMASIZE ],  */
-  /* 	  data[ ( cur_pos + 1 + size ) % DMASIZE ],  */
-  /* 	  data[ ( cur_pos + 2 + size ) % DMASIZE ] );  */
-
-
-
-
-
-
-  cur_pos = start_pos + 4;
-  unsigned int ctime = data[ cur_pos % DMASIZE ];
-
-  cur_pos = start_pos + 3;
-  unsigned int evenum = data[ cur_pos % DMASIZE ];
-  cur_pos = start_pos + 5;
-  unsigned int utime = data[ cur_pos % DMASIZE ];
-  cur_pos = start_pos + 2;
-  unsigned int exp_run = data[ cur_pos % DMASIZE ] ;
-
-  int offset = 8; // size of ROB header [words]
-
-  int link_num = 0;
-
-
-  crc_calc( &crc, &ctime );
-  crc_calc( &crc, &evenum );
-  crc_calc( &crc, &utime );
-  crc_calc( &crc, &exp_run );
-  first_crc = crc ;
-
-  
-#ifdef DEBUG
-  printf("Start\n");
-  for( i = start_pos ; i < start_pos + size ; i++){
-    printf("%.8x\n", data[ i % DMASIZE ] );
-  }
-  printf("End\n");
-#endif
-  int bad = 0;
-  
-  while( offset + 4 < size ){ // 4 = ROB trailer size
-    cur_pos = start_pos + offset;
-    int size_link = data[ cur_pos % DMASIZE ] & 0x000ffff ;
-    if ( 0 >= size_link || size_link > 10000000 ){
-      printf("[ERROR] Invalid size per link (%.8x words): link num %d\n", size_link, link_num);
-      return -1 ; // it could be that the memory was read
-    } 
-
-    //
-    // Calculation of CRC
-    //
-    crc = first_crc ;
-#ifdef DEBUG
-    printf("%.8x %.8x crc %.8x\n", data[ ( start_pos + offset ) % DMASIZE ], data[ ( start_pos + offset + 1 ) % DMASIZE ], crc );
-#endif
-    for ( cur_pos = start_pos + offset + 2 ; cur_pos < start_pos + offset + size_link -2; ++cur_pos ) {
-      crc_calc( &crc, &data[ cur_pos % DMASIZE ] );
-#ifdef DEBUG
-      printf("crc %.8x data %.8x\n", crc, data[ cur_pos % DMASIZE ] );
-#endif
-    }
-#ifdef DEBUG
-    printf("%.8x %.8x\n", data[ ( cur_pos ) % DMASIZE ], data[ ( cur_pos + 1 ) % DMASIZE ]);
-#endif
-    //    cur_pos = start_pos +  8 + size_link -2;
-    cur_pos = start_pos + offset + size_link -2;
-#ifdef DEBUG
-    printf("calcd %.4x data %.4x\n", crc, data[ cur_pos % DMASIZE ] & 0xffff );
-#endif
-
-    //
-    // Check of CRC
-    //
-    if( ( crc & 0xffff ) != ( data[ cur_pos % DMASIZE ] & 0xffff ) ){
-      printf("%.2d Bad  ! calcd %.4x data %.4x offset %.4x size %.4x szlnk %.4x trl %.8x\n", 
-	     link_num, crc, data[ cur_pos % DMASIZE ] & 0xffff, offset, size, size_link, data[ (cur_pos+1) % DMASIZE ] );
-      bad = 1;
-
-    }else{
-      /* printf("%.2d Good ! calcd %.4x data %.4x offset %.4x size %.4x szlnk %.4x trl %.8x\n",  */
-      /* 	     link_num, crc, data[ cur_pos % DMASIZE ] & 0xffff, offset, size, size_link, data[ (cur_pos+1) % DMASIZE ] ); */
-
-    }
-    link_num++;
-    offset += size_link;
-  }
-
-  if( bad ){
-  for( i = 0 ; i < size ; i++){
-    printf("%.8x ", data[ ( start_pos  + i ) % DMASIZE ] );
-    if( i % 8 == 7 ) printf("\n");
-  }
-  printf("\n");
-  }
-
-     
-}
-
-  int decode_data_wUL( unsigned int * data , unsigned int * ce , int * crc , int * run , 
-		       int * bad , int *evn , int * retry , int * pctime , int * putime , 
-		       int * nmissed ) { 
-
-    int magic; 
-    int size, size_link;
-    int ix ;
-
-    int offset; 
-    unsigned int exp_run, evenum, ctime, utime; 
-    int start_pos = *ce;
-    int cnt = 0;
-    int cur_pos = *ce + 1;
-    int ret = 0;
-
-    while( !( ( ( magic = data[ cur_pos % DMASIZE ] ) & 0xffff0000 ) != 0x7f7f0000 ) ){
-      usleep(1000);
-      cnt++;
-      //
-      // Scan to find x"7f7f...."
-      //
-      if( cnt > 10 ){
-	cnt = 0;
-	int j = 0 ; 
-	for ( j = 0 ; j < DMASIZE ; ++j ) { 
-	  if ( ( ( data[ ( cur_pos + j ) % DMASIZE ] & 0xffff0000 ) == 0x7f7f0000 ) ){
-	    evenum = data[ ( cur_pos + j + 2 ) % DMASIZE ];
-	    if( evenum > *evn ){
-	      *evn = evenum;
-	      cur_pos = ( cur_pos + j - 1 + DMASIZE ) % DMASIZE;
-	      size = data[ cur_pos ] ;
-	      *ce = ( cur_pos + size ) % DMASIZE;
-	      printf( "New Event number prev %d new %d pos %d size %d\n" , *evn ,  evenum, cur_pos, size );
-	      crc_calc_event( data, cur_pos );
-
-	    }else{
-	      printf( "Old Event number prev %d new %d pos %d\n" , *evn ,  evenum, ( cur_pos + j - 1 + DMASIZE ) % DMASIZE );
-	      break;
-	    }
-	  }else{
-	    continue;
-	  }
-	}
-      }
-    }
-
-    return size ;
-  }
-
-  int main (int argc ,char** argv) {
-    // Stop trigger
-    /* system( "ssh robbep@vme \"resetft -53\"" ) ; */
-    /* sleep( 2 ) ;  */
-
-    int res = ecs_open( 0 , 0 ) ;
-    if ( -1 == res ) printf("ERROR: Could not open device (BAR 0)\n") ;
-    else printf("SUCCESS: Device opened for DMA\n");
-    res = ecs_open( 0 , 2 ) ;
-    // ecs_write( 0 , 2 ,  0x000501A0 , 0x0 ) ;
-    ecs_write( 0 , 2 ,  0x000501A0 , 0x1 ) ;
-    pcie40_b2dmabufferreset( 0 ) ; 
-    // Start trigger
-    //  fp = popen( "ssh robbep@vme \"trigft -53 pulse 1000 -1\"" , "r" ) ;
-    // sleep( 2 ) ;
-    /* while( fgets( buf , sizeof(buf) , fp ) != NULL ) {  */
-    /*   // printf( "A= %d\n" , strncmp( exp , buf , 3 ) ) ; */
-    /*   //    printf( strncmp( &buf[0] , 'exp' , 1 ) ) ; */
-    /*   tmp = strdup( buf ) ; */
-    /*   if ( strncmp( exp , buf , 3 ) == 0 ) { */
-    /*     //printf( '%s\n' , buf )  ; */
-    /*     // printf( "ICI\n" ) ; */
-    /*     ptr = strtok( tmp , " " ) ; */
-    /*     ptr = strtok( NULL , " " ) ; */
-    /*     ptr = strtok( NULL , " " ) ; */
-    /*     ptr = strtok( NULL , " " ) ; */
-    /*     // while ( ptr != NULL ) { */
-    /*     run = atoi( ptr ) ;  */
-    /*     //	ptr = strtok( NULL , " " ) ;  */
-    /*   } */
-    /*     //} */
-    /* } */
-    /* pclose( fp ) ; */
-    //sleep( 2 ) ; 
-
-    int run  = 0 ; 
-    FILE* fp; 
-    char * ptr ;
-    char * tmp ;
-    char buf[1000] ;
-    char exp[] = "exp" ; 
-
-    unsigned int * data ; 
-    double time_spent ;
-    int retry ;
-    int bad ;
-    int evn ;
-    evn = 0  ;
-    bad = 0 ;
-    retry = 0 ;
-    int pctime, putime ; 
-    pctime = 0 ;
-    putime = 0 ;
-
-    int i ;
-    int size, size_256, currentEventIndex, crc, nErr, nEvt, nRetry, nMissed ;
-    currentEventIndex = 0 ;
-    nErr = 0 ;
-    nEvt = 0 ;
-    nRetry = 0 ;
-    nMissed = 0 ;
-    int read_dma = 1 ; 
-    clock_t begin = clock() ;
-    int size_zero_cnt = 0;
-
-    int start_flag = 1;
-
-    int magic; 
-    int size_link;
-
-    int offset; 
-    unsigned int exp_run, evenum, ctime, utime; 
-    int start_pos = 0;
-    int cnt = 0;
-    int cur_pos = 0;
-    int ret = 0;
-    unsigned int cur_eve = 0, next_eve = 0;
-    int mod_pos = 0;
-
-    //    if ( ( nEvt % 1000 == 1 ) && ( size != 0 ) ) printf( "Event number %d\n", nEvt ) ;
-
-    //
-    // Read the 1st data
-    //
-    if ( read_dma == 1 ) { 
-      // set busy
-      //res = ecs_write( 0 , 2 ,  0x000501A0 , 0x1 ) ;
-      //sleep(5);
-      res = pcie40_b2dmapointerread( 0 , &data ) ;
-      if ( start_flag == 1 ){
-	ecs_write( 0 , 2 ,  0x000501A0 , 0x0 ) ;
-	start_flag = 0;
-      }
-      //usleep( 5 ) ;
-      // release busy
-      //res = ecs_write( 0 , 2 ,  0x000501A0 , 0x0 ) ;
-      read_dma = 1 ;
-    } 
-
-    //
-    // Main loop
-    //
-    while( 1 ){
-
-      while( ( ( ( magic = data[ ( cur_pos + 1 ) % DMASIZE ] ) & 0xffff0000 ) != 0x7f7f0000 )
-	     || data[ ( cur_pos +  data[ cur_pos  % DMASIZE ] - 1 + DMASIZE ) % DMASIZE ] != 0x7fff0006 ){
-	//	printf("MAGIC %.8x\n", magic);
-	usleep(1000);
-	
-	//
-	// Refresh DMA memory
-	//
-	res = pcie40_b2dmapointerread( 0 , &data ) ;
-	int wait_flag = 0;
-	//
-	// Scan to find x"7f7f...."
-	//
-	if( cnt > 100 ){
-	  cnt = 0;
-	  int j = 0 ; 
-	  for ( j = 0 ; j < DMASIZE ; ++j ) { 
-#ifdef DEBUG	    
-	    printf("%.8x %d\n", data[ ( cur_pos + j + 1 ) % DMASIZE ], cur_pos + j );
-#endif
-	    if ( ( ( data[ ( cur_pos + j + 1 ) % DMASIZE ] & 0xffff0000 ) == 0x7f7f0000 ) ){
-	      next_eve = data[ ( cur_pos + j + 3 ) % DMASIZE ];
-
-	      //	      printf( "TRAILER %.8x %.8x %.8x\n",data[ ( cur_pos + j + data[ ( cur_pos + j + DMASIZE ) % DMASIZE ] - 1 + DMASIZE ) % DMASIZE ] );
-
-	      if( next_eve > cur_eve ){
-		/* if( data[ ( ( data[ ( cur_pos + j + DMASIZE ) % DMASIZE ] ) - 1 + DMASIZE ) % DMASIZE ] != 0x7fff0006 ){ */
-		/*   usleep(1000); */
-		/*   break; */
-		/* } */
-		cur_pos = ( cur_pos + j + DMASIZE ) % DMASIZE;
-		size = data[ cur_pos ];
-		printf( "Detect new Event number prev %.8x new %.8x pos %.8x size %.8x\n" , cur_eve , next_eve, cur_pos, size );
-		break;
-	      }else{
-		printf( "Detect Old Event number prev %.8x new %.8x pos %d\n" , cur_eve , next_eve, ( cur_pos + j + DMASIZE ) % DMASIZE );
-		break;
-	      }
-	    }else{
-	      continue;
-	    }
-	  }
-	}
-	cnt++;
-      }
-      size = data[ cur_pos ] ;
-
-      next_eve = data[ ( cur_pos + 3 ) % DMASIZE ];
-      printf( "Event number prev %.8x new %.8x pos %.8x size %.8x\n" , cur_eve , next_eve, cur_pos, size );
-      crc_calc_event( data, cur_pos );
-      cur_eve = next_eve;
-
-      mod_pos = ( cur_pos + size ) % 8;
-      if( mod_pos != 0 ){
-	cur_pos = ( cur_pos + size + DMASIZE + ( 8 - mod_pos) ) % DMASIZE ;
-      }else{
-	cur_pos = ( cur_pos + size + DMASIZE ) % DMASIZE ;
-      }
-
-    }
-
-
-    clock_t end = clock();
-    time_spent += (double)(end - begin) / CLOCKS_PER_SEC;
-
-    res = ecs_close( 0 , 0 ) ;
-    if ( -1 == res ) printf("ERROR: Could not close device (BAR 0)\n");
-    else printf("SUCCESS: Device closed for DMA\n");
-
-    printf( "Timing = %f s\n" , time_spent ) ;
-    printf( "Number of events = %d \n", nEvt ) ;  
-    printf( "Number of errors = %d \n", nErr ) ; 
-    printf( "Number of retries = %d \n", nRetry ) ;
-    printf( "Number of missed = %d \n", nMissed ) ;
-    return 0 ;
-  }
diff --git a/Pcie40Libraries/pcie40_b2slc.c b/Pcie40Libraries/pcie40_b2slc.c
deleted file mode 100644
index 079f15db1e0d1a1050ac75de14f5387f30551481..0000000000000000000000000000000000000000
--- a/Pcie40Libraries/pcie40_b2slc.c
+++ /dev/null
@@ -1,402 +0,0 @@
-// File for Belle2 slow control access with PCIe40 
-#include "pcie40_b2slc.h"
-#include <unistd.h>
-#include <stdio.h>
-#include <vector>
-#include "pcie40_ecs.h"
-
-///////////////////////////////////////////////////////////////////////////
-// Internal functions for slow control,, do not use outside of this library
-///////////////////////////////////////////////////////////////////////////
-
-int pcie40_resetWriteFifo( int dev , int ch ) { 
-  unsigned ret = 0 ;
-  ret = ecs_write( dev , SLC_BAR , SLC_WFIFO_RESET_ADD , 
-       1 << SLC_WFIFO_RESET_BIT ) ;
-  if ( ret != 0 ) return -1 ;
-  ret = ecs_write( dev , SLC_BAR , SLC_WFIFO_RESET_ADD , 0 ) ;
-  if ( ret != 0 ) return -1 ;
-  return ret ;
-}
-
-int pcie40_resetReadFifo( int dev , int ch ) { 
-  unsigned ret = 0 ;
-  ret = ecs_write( dev , SLC_BAR , SLC_WFIFO_RESET_ADD , 
-       1 << SLC_WFIFO_RESET_BIT ) ;
-  if ( ret != 0 ) return -1 ;
-  ret = ecs_write( dev , SLC_BAR , SLC_WFIFO_RESET_ADD , 0 ) ;
-  if ( ret != 0 ) return -1 ;
-  return ret ;
-}
-
-int pcie40_writeToFifo( int dev , int ch , std::vector< int > & data ) {
-  std::vector< int >::iterator it ;
-  unsigned ret = 0 ;
-  for ( it = data.begin() ; it != data.end() ; ++it ) {
-    ret = ecs_write( dev , SLC_BAR , SLC_WFIFO_ADD + ch * 0x20  , 
-      (int) ( (*it) & 0xFFFFFFFF ) ) ;
-    if ( ret != 0 ) return -1 ;
-  }
-  return ret ;
-}
-
-int pcie40_startEmit( int dev , int ch ) {
-  unsigned ret = 0 ;
-  ret = ecs_write( dev , SLC_BAR , SLC_WFIFO_START_ADD , 0 ) ;
-  if ( ret != 0 ) return -1 ;
-  ret = ecs_write( dev , SLC_BAR , SLC_WFIFO_START_ADD , 
-         1 << ( SLC_WFIFO_EMIT_BIT + ch ) ) ;
-  if ( ret != 0 ) return -1 ;
-  ret = ecs_write( dev , SLC_BAR , SLC_WFIFO_START_ADD , 0 ) ;
-  if ( ret != 0 ) return -1 ;
-  return ret ;
-}
-
-int pcie40_waitRead( int dev , int ch , int length ) {
-  unsigned ret = 0 ;
-  int i ;
-  for ( i=0 ; i<10 ; i++ ) {
-    usleep( 10 ) ; //10 ms
-    ret = ecs_read( dev , SLC_BAR , SLC_RFIFO_STATUS + ch * 0x20 ) ;
-    ret = ( ret & 0xFF00 ) >> 8 ;
-    if ( ret == length ) break;
-  }
-
-  if (i == 10) {
-    printf( "Timeout\n" ) ;
-    return -1 ;
-  } 
-  return ret ; 
-}
-
-int pcie40_readData( int dev , int ch , std::vector< int > & result , int length ) {
-  unsigned ret = 0 ;
-  int i = 0 ; 
-  for ( i = 0 ; i < length ; ++i ) {
-    ret = ecs_read( dev , SLC_BAR , SLC_RFIFO_ADD + fd * 0x20 );
-    result.push_back( ret ) ;
-  }
-  return 0 ;
-}
-/* ---------------------------------------------------------------------- *\
-   readfee8
-   returns -1 in case of error
-\* ---------------------------------------------------------------------- */
-int pcie40_readfee8( int dev , int ch , int adr) {
-  // PCIe40
-  if ( ( adr <=0 ) || ( adr > 0x7F ) ) return -1 ;
-  // Reset the FIFO (Emit and reception)
-  unsigned ret = 0 ;
-  ret = pcie40_resetReadFifo( dev , ch ) ;
-  if ( ret != 0 ) return ret ;
-
-  // Fill the FIFO with the requested information: write MSB first
-  std::vector< int > data ;
-  data.push_back( 
-    0xFFFE ,
-    0x0001 ,
-    0x8000 | ( adr & 0x7F ) ,
-    0x000c ,
-    0xEEEE
-  )
-  ret = pcie40_writeToFifo( dev , ch , data ) ;
-  if ( ret != 0 ) return ret ;
-
-  // start emit
-  ret = pcie40_startEmit( dev , ch )
-  if ( ret != 0 ) return -1 ;
-
-  // Wait for the result to come back (40 words in the fifo)
-  ret = pcie40_waitRead( dev , fd , 40 ) ;
-  if ( ret != 0 ) return -1 ;
-
-  // Read the value 
-  std::vector< int > result ; 
-  ret = pcie40_readData( dev , fd , result , 5 ) ;
-
-  int ret2 = result.at( 1 ) ; 
-  int ret3 = result.at( 2 ) ; 
-  // check address consistency
-  if ( ( ( ret2 & 0x7F ) ) != adr ) return -1 ;
-
-  return ( ret3 & 0xFF ) ;
-}
-
-//==============================================================================
-// Write 8b
-//==============================================================================
-int pcie40_writefee8( int dev , int ch , int adr , int val ) {
-  // PCIe40
-  if ( ( adr <=0 ) || ( adr > 0x7F ) ) return -1 ;
-  // Reset the FIFO
-  unsigned ret = 0 ;
-  ret = pcie40_resetReadFifo( dev , ch ) ;
-  if ( ret != 0 ) return ret ;
-
-  // Fill the FIFO with the requested information: write MSB first
-  std::vector< int > data ;
-  data.push_back( 
-    0xFFFF ,
-    0x0001 ,
-    0x8000 | ( adr & 0x7F ) ,
-    0x0000 | ( val & 0xFF ) ,
-    0xEEEE
-  )
-  ret = pcie40_writeToFifo( dev , ch , data ) ;
-  if ( ret != 0 ) return ret ;
-
-  // start emit
-  ret = pcie40_startEmit( dev , ch )
-  if ( ret != 0 ) return -1 ;
-
-  return 0 ;
-}
-
-//==============================================================================
-// Read 32b
-//==============================================================================
-unsigned long pcie40_readfee32( int dev , int ch , int adr ) {
-  // PCIe40
-  if ( ( adr <0 ) || ( adr > 0xFFFF ) ) return -1 ;
-  // Reset the FIFO
-  unsigned ret = 0 ;
-  ret = pcie40_resetReadFifo( dev , ch ) ;
-  if ( ret != 0 ) return ret ;
-
-  // Fill the FIFO with the requested information: write MSB first
-  std::vector< int > data ;
-  data.push_back( 
-    0xFFFB ,
-    0x7000 | ( ( adr & 0xFF00 ) >> 8 ) ,
-    0x7000 | ( adr & 0xFF ) ,
-    0xEEEE
-  )
-  ret = pcie40_writeToFifo( dev , ch , data ) ;
-  if ( ret != 0 ) return ret ;
-
-  // start emit
-  ret = pcie40_startEmit( dev , ch )
-  if ( ret != 0 ) return -1 ;
-
-  // Wait for the result to come back
-  ret = pcie40_waitRead( dev , ch , 4 ) ;
-  if ( ret != 0 ) return -1 ;
-
-  // Read the value 
-  std::result< int > result ;
-  ret = pcie40_readData( dev , ch , result , 56 ) ;
-
-  int t_ret1 = result.at(0);
-  int t_ret2 = result.at(1);
-  int t_ret3 = result.at(2);
-  int t_ret4 = result.at(3);  
-  int t_ret5 = result.at(4);
-  int t_ret6 = result.at(5);
-
-  if ( ( t_ret1 & 0x0000FFFF ) != 0xFFFF ) {
-    printf( "Bad header\n" ) ;
-    return -1 ; 
-  }
-  if ( ( t_ret6 & 0x0000FFFF ) != 0xEEEE ) { 
-    printf( "Bad trailer\n" ) ; 
-    return -1 ;
-  }
-
-  int add1 = ( t_ret2 & 0xFF00 ) >> 8 ;
-  int add2 = ( t_ret3 & 0xFF00 ) >> 8 ;
-  int add3 = ( t_ret4 & 0xFF00 ) >> 8 ;
-  int add4 = ( t_ret5 & 0xFF00 ) >> 8 ;
-  
-  if ( ( add1 & 0xF8 ) != 0x10 ) { 
-    printf( "Bad address1 %X\n" , add1 ) ; 
-    return -1 ;
-  }
-  if ( ( add2 & 0xF8 ) != 0x10 ) { 
-    printf( "Bad address2 %X\n" , add2 ) ; 
-    return -1 ;
-  }
-  if ( ( add3 & 0xF8 ) != 0x10 ) {
-    printf( "Bad address3 %X\n" , add3 ) ; 
-    return -1 ;
-  }
-  if ( ( add4 & 0xF8 ) != 0x10 ) {
-    printf( "Bad address4 %X\n" , add4 ) ; 
-    return -1 ;
-  }
-
-  add1 += 0x58 ;
-  add2 += 0x58 ;
-  add3 += 0x58 ;
-  add4 += 0x58 ;
-  
-  if ( ( add2 != 0x6C ) || ( add1 != 0x6D ) || ( add4 != 0x6A ) || ( add3 != 0x6B ) )
-    {
-      printf( "Unexpected address %X %X %X %X\n" , add1 , add2 , add3 , add4 ) ;
-      return -1 ;
-    }
-
-  int res1 = ( t_ret2 & 0xFF ) ;
-  int res2 = ( t_ret3 & 0xFF ) ;
-  int res3 = ( t_ret4 & 0xFF ) ;
-  int res4 = ( t_ret5 & 0xFF ) ;
-
-  return 0xFFFFFFFF & ( ( res1 << 24 ) | ( res2 << 16 ) | ( res3 << 8 ) | ( res4 ) ) ;
-}
-
-//==============================================================================
-// Write 32b
-//==============================================================================
-int pcie40_writefee32( int dev , int ch , int adr , int val ) { 
-  // PCIe40
-  if ( ( adr <0 ) || ( adr > 0xFFFF ) ) return -1 ;
-  // Reset the FIFO
-  unsigned ret = 0 ;
-  ret = pcie40_resetReadFifo( dev , ch ) ;
-  if ( ret != 0 ) return ret ;
-
-  int val1 = ( val & 0xFF ) ;
-  int val2 = ( val & 0xFF00 ) >> 8 ;
-  int val3 = ( val & 0xFF0000 ) >> 16 ;
-  int val4 = ( val & 0xFF000000 ) >> 24 ;
-
-  // Fill the FIFO with the requested information: write MSB first
-  std::vector< int > data ;
-  data.push_back( 
-    0xFFFC ,
-    0x7000 | ( ( adr & 0xFF00 ) >> 8 ) ,
-    0x7000 | ( adr & 0xFF ) ,
-    0x7000 | val4 ,
-    0x7000 | val3 ,
-    0x7000 | val2 ,
-    0x7000 | val1 ,
-    0xEEEE
-  )
-  ret = pcie40_writeToFifo( dev , ch , data ) ;
-  if ( ret != 0 ) return ret ;
-
-  // start emit
-  ret = pcie40_startEmit( dev , ch )
-  if ( ret != 0 ) return -1 ;
-
-  return ret;
-}
-
-int pcie40_writestream( int dev , int ch , char * filename ) {
-  // PCIe40
-  // Check if the file exists
-  const char * mode = "r" ; 
-  FILE * fp = fopen( filename , mode ) ;
-  if ( 0 == fp ) {
-    printf( "The file does not exist\n" ) ;
-    return -1 ; 
-  }
-  // Reset the FIFO
-  unsigned ret = 0 ;
-  ret = pcie40_resetReadFifo( dev , ch ) ;
-
-  if ( ret != 0 ) { 
-    fclose( fp ) ; 
-    return -1 ;
-  }
- 
-  // Fill the FIFO with the requested information: write MSB first
-  // This is a stream write -> FFFD 
-  int data_word_1 = 0xFFFD ;
-
-  ret = ecs_write( dev , SLC_BAR , SLC_WFIFO_ADD + ch * 0x20 , 
-		   (int) ( data_word_1 & 0xFFFFFFFF ) ) ;
-  if ( ret != 0 ) { 
-    fclose( fp ) ; 
-    return -1 ;
-  }
-
-  // Read the file
-  int c = 0 ;
-  int count = 0 ;
-  std::vector< int > data ; 
-  while ((c = getc(fp)) != EOF) {
-    if ( count == 0 ) 
-      data.push_back( 0xFFFD ) ; 
-    count++ ; 
-    data.push_back( (int) ( ( ( 0x70 << 8 ) | ( c & 0xFF ) ) & 
-      0xFFFFFFFF ) ) ;
-
-    if ( 14 == count ) {
-      data.push_back( 0xEEEE ) ;
-      ret = pcie40_writeToFifo( dev , ch , data ) ;
-      if ( ret != 0 ) { 
-        fclose( fp ) ; 
-        return -1 ;
-      }    
-      ret = pcie40_startEmit( dev , ch ) ;
-      if ( ret != 0 ) { 
-        fclose( fp ) ; 
-        return -1 ;
-      }  
-      count = 0 ; 
-      data.clear() ;
-    }
-  }
-  fclose( fp ) ;
-
-  // End of the file -> 0xEEEE 
-  data.push_back( 0xEEEE ) ; 
-  ret = pcie40_writeToFifo( dev , ch , data ) ;
-  if ( ret != 0 ) return -1 ;
-
-  // start emit
-  ret = pcie40_startEmit( dev , ch ) ; 
-  if ( ret != 0 ) return -1 ;
-
-  return ret ;
-}
-
-int pcie40_writebytestream( int dev, int ch, int len, const char *bytes  )
-{
-
-  printf( "Desactivated for the moment \n") ;
-  return -1 ; 
-  
-  // Reset the FIFO
-  unsigned ret = 0 ;
-  ret = ecs_write( dev , SLC_BAR , SLC_WFIFO_RESET_ADD , 
-		   1 << ( SLC_WFIFO_RESET_BIT ) ) ;
-  if ( ret != 0 )  return -1 ;
-  
-  ret = ecs_write( dev , SLC_BAR , SLC_WFIFO_RESET_ADD , 0 ) ;
-  if ( ret != 0 ) return -1 ;
-
-  // Fill the FIFO with the requested information: write MSB first
-  // This is a stream write -> FFFD 
-  int data_word_1 = 0xFFFD ;
-
-  ret = ecs_write( dev , SLC_BAR , SLC_WFIFO_ADD + ch * 0x20 , 
-		   (int) ( data_word_1 & 0xFFFFFFFF ) ) ;
-  if ( ret != 0 ) return -1 ;
-
-  // Read the file
-  int i ; 
-  for ( i = 0 ; i < len ; ++i ) {
-    ret = ecs_write( dev , SLC_BAR , SLC_WFIFO_ADD + ch * 0x20 , 
-		     (int) ( ( ( 0x70 << 8 ) | ( bytes[i] & 0xFF ) ) & 
-			     0xFFFFFFFF ) ) ;
-    if ( ret != 0 ) return -1 ;
-  }
-
-  // End of the stream -> 0xEEEE 
-  int data_word_3 = 0xEEEE ;
-  ret = ecs_write( dev , SLC_BAR , SLC_WFIFO_ADD + ch * 0x20 , 
-		   (int) ( data_word_3 & 0xFFFFFFFF ) ) ;
-  if ( ret != 0 ) return -1 ;
-
-  // start emit
-  ret = ecs_write( dev , SLC_BAR , SLC_WFIFO_START_ADD , 0 ) ;
-  if ( ret != 0 ) return -1 ;
-  ret = ecs_write( dev , SLC_BAR , SLC_WFIFO_START_ADD , 
-  		   1 << ( SLC_WFIFO_EMIT_BIT + ch ) ) ;
-  if ( ret != 0 ) return -1 ;
-  ret = ecs_write( dev , SLC_BAR , SLC_WFIFO_START_ADD , 0 ) ;
-  if ( ret != 0 ) return -1 ;
-
-  return ret ;
-}
diff --git a/Pcie40Libraries/pcie40_b2slc.cpp b/Pcie40Libraries/pcie40_b2slc.cpp
index f4549acc5a192e98feb81efe6655360151d98301..9bd12a711b571f8a08f35795aa40f469ee8065de 100644
--- a/Pcie40Libraries/pcie40_b2slc.cpp
+++ b/Pcie40Libraries/pcie40_b2slc.cpp
@@ -3,7 +3,13 @@
 #include <unistd.h>
 #include <stdio.h>
 #include <vector>
-#include "pcie40_ecs.h"
+
+// ===== 
+// CALL C functions
+// =====
+
+extern "C" int      ecs_write(int dev, int bar, unsigned add, int val); 
+extern "C" unsigned ecs_read(int dev, int bar, unsigned add);
 
 ///////////////////////////////////////////////////////////////////////////
 // Internal functions for slow control,, do not use outside of this library