diff options
| -rw-r--r-- | host/apps/omap_debug/usrp-e-crc-rw.c | 51 | 
1 files changed, 37 insertions, 14 deletions
| diff --git a/host/apps/omap_debug/usrp-e-crc-rw.c b/host/apps/omap_debug/usrp-e-crc-rw.c index c2f4b9c9a..6659b790b 100644 --- a/host/apps/omap_debug/usrp-e-crc-rw.c +++ b/host/apps/omap_debug/usrp-e-crc-rw.c @@ -50,6 +50,22 @@ static u_int32_t chksum_crc32_gentab(void)  	return 0;  } +struct timeval delta_time(struct timeval f, struct timeval s) +{ +	struct timeval d; + +	if (f.tv_usec > s.tv_usec) { +		d.tv_usec = f.tv_usec - s.tv_usec; +		d.tv_sec = f.tv_sec - s.tv_sec; +	} else { +		d.tv_usec = f.tv_usec - s.tv_usec + 1e6; +		d.tv_sec = f.tv_sec - s.tv_sec - 1; +	} + +	return d; +} + +  static void *read_thread(void *threadid)  {  	int cnt; @@ -58,8 +74,7 @@ static void *read_thread(void *threadid)  	unsigned long crc, ck_sum;  	unsigned int rx_crc, pkt_len, pkt_seq;  	unsigned long bytes_transfered; -	float elapsed_seconds, start_f, finish_f; -	struct timeval start_time, finish_time; +	struct timeval start_time;  	__u8 *p; @@ -72,7 +87,6 @@ static void *read_thread(void *threadid)  	bytes_transfered = 0;  	gettimeofday(&start_time, NULL); -	start_f = (double)start_time.tv_sec + ((double)start_time.tv_usec)*1e-6f;  	while (1) { @@ -129,20 +143,23 @@ static void *read_thread(void *threadid)  		bytes_transfered += cnt;  		if (bytes_transfered > (100 * 1000000)) { +			struct timeval finish_time, d_time; +			float elapsed_seconds; +  			gettimeofday(&finish_time, NULL); -			printf("sec = %f, usec = %f\n", (float)finish_time.tv_sec, (float)finish_time.tv_usec); +			printf("sec = %ld, usec = %ld\n", finish_time.tv_sec, finish_time.tv_usec); -			finish_f = (double)finish_time.tv_sec + ((double)finish_time.tv_usec) * 1e-6d; +			d_time = delta_time(finish_time, start_time); + +			elapsed_seconds = (float)d_time.tv_sec + ((float)d_time.tv_usec * 1e-6f); -			elapsed_seconds = finish_f - start_f; -			printf("Start time %f, finish time %f\n", start_f, finish_f);  			printf("Bytes transfered = %ld, elapsed seconds = %f\n", bytes_transfered, elapsed_seconds);  			printf("RX data transfer rate = %f K Samples/second\n",  				(float) bytes_transfered / (float) elapsed_seconds / 4000); -			start_f = finish_f; +			start_time = finish_time;  			bytes_transfered = 0;  		}  	}	 @@ -153,8 +170,8 @@ static void *write_thread(void *threadid)  	int i, tx_pkt_cnt, rb_write;  	int tx_len;  	unsigned long crc; -	unsigned long bytes_transfered, elapsed_seconds; -	struct timeval start_time, finish_time; +	unsigned long bytes_transfered; +	struct timeval start_time;  	__u8 *p;  	printf("Greetings from the write thread!\n"); @@ -205,13 +222,13 @@ static void *write_thread(void *threadid)  		crc = 0xFFFFFFFF;  		for (i = 0; i < tx_len-4; i++) {  			p[i] = i & 0xFF; -			printf("%X ", p[i]); +//			printf("%X ", p[i]);  			crc = ((crc >> 8) & 0x00FFFFFF) ^  				crc_tab[(crc ^ p[i]) & 0xFF];  		}  		*(int *) &p[tx_len-4] = crc; -		printf("\n crc = %lX\n", crc); +//		printf("\n crc = %lX\n", crc);  		(*txi)[rb_write].len = tx_len;  		(*txi)[rb_write].flags = RB_USER; @@ -223,10 +240,16 @@ static void *write_thread(void *threadid)  		bytes_transfered += tx_len;  		if (bytes_transfered > (100 * 1000000)) { +			struct timeval finish_time, d_time; +			float elapsed_seconds; +  			gettimeofday(&finish_time, NULL); -			elapsed_seconds = finish_time.tv_sec - start_time.tv_sec; -			printf("Bytes transfered = %ld, elapsed seconds = %ld\n", bytes_transfered, elapsed_seconds); +			d_time = delta_time(finish_time, start_time); + +			elapsed_seconds = (float)d_time.tv_sec - ((float)d_time.tv_usec * 1e-6f); + +			printf("Bytes transfered = %ld, elapsed seconds = %f\n", bytes_transfered, elapsed_seconds);  			printf("TX data transfer rate = %f K Samples/second\n",  				(float) bytes_transfered / (float) elapsed_seconds / 4000); | 
