int main(int argc, char ** argv){
	char c ;
	FILE * fr;
	long start_time, end_time ;
	double diff_time ;
	struct timespec cpu_time ;
	unsigned int size = 0 ;	
	initGPIOs();
	#ifdef MARK1
	init_i2c(3);
	#endif
	fr = fopen (argv[1], "rb");  /* open the file for reading bytes*/
	if(fr < 0){
		printf("cannot open file %s \n", argv[1]);	
	}
	size = fread(configBits, 1, 1024*1024, fr);
	printf("bit file size : %d \n", size);
	//clock_gettime(CLOCK_REALTIME, &cpu_time);
	//start_time = cpu_time.tv_sec ;
	if(serialConfig(configBits, size) < 0){
		printf("config error \n");
		exit(0);	
	}else{
		printf("config success ! \n");	
	}
	//clock_gettime(CLOCK_REALTIME, &cpu_time);
	//end_time = cpu_time.tv_sec ;
	//diff_time = end_time - start_time ;
	//diff_time = diff_time/1000000 ;
	//printf("Configuration took %fs \n", diff_time);
	closeGPIOs();
	fclose(fr);
	return 1;
}
int main(int argc, char ** argv) {
    char c ;
    unsigned int i ;
    FILE * fr;
    long start_time, end_time ;
    double diff_time ;
    struct timespec cpu_time ;
    unsigned int size = 0 ;
    initGPIOs();
    init_i2c(1);

    //parse programm args
    for(i = 1 ; i < argc ; ) {
        if(argv[i][0] == '-') {
            switch(argv[i][1]) {
            case '\0':
                i ++ ;
                break ;
            case 'r' :
                resetFPGA();
                closeGPIOs();
                close(i2c_fd);
                return 1 ;
                break ;
            case 'h' :
                printHelp();
                return 1 ;
                break;
            default :
                printHelp();
                return 1 ;
                break ;
            }
        } else {
            //last argument is file to load
            break ;
        }
    }


    if(init_spi() < 0) {
        printf("cannot open spi bus \n");
        return -1 ;
    }
    fr = fopen (argv[i], "rb");  /* open the file for reading bytes*/
    if(fr < 0) {
        printf("cannot open file %s \n", argv[1]);
        return -1 ;
    }
    memset((void *) configBits, (int) 0, (size_t) 1024*1024);
    size = fread(configBits, 1, 1024*1024, fr);
    printf("bit file size : %d \n", size);

    //8*5 clock cycle more at the end of config
    if(serialConfig(configBits, size+5) < 0) {
        printf("config error \n");
        exit(0);
    } else {
        printf("config success ! \n");
    }

    closeGPIOs();
    fclose(fr);
    close(spi_fd);
    close(i2c_fd);
    return 1;
}