diff options
| -rw-r--r-- | host/apps/omap_debug/usrp-e-crc-rw.c | 25 | 
1 files changed, 17 insertions, 8 deletions
| diff --git a/host/apps/omap_debug/usrp-e-crc-rw.c b/host/apps/omap_debug/usrp-e-crc-rw.c index 7ae496fcd..9e3e7eb5d 100644 --- a/host/apps/omap_debug/usrp-e-crc-rw.c +++ b/host/apps/omap_debug/usrp-e-crc-rw.c @@ -52,7 +52,6 @@ static u_int32_t chksum_crc32_gentab(void)  static void *read_thread(void *threadid)  {  	int cnt; -	struct usrp_transfer_frame *rx_data;  	int rx_pkt_cnt, rb_read;  	int i;  	unsigned long crc; @@ -65,8 +64,7 @@ static void *read_thread(void *threadid)  	printf("Greetings from the reading thread!\n");  	// IMPORTANT: must assume max length packet from fpga -	rx_data = malloc(2048); - +	  	rx_pkt_cnt = 0;  	rb_read = 0; @@ -75,12 +73,13 @@ static void *read_thread(void *threadid)  	while (1) { -		if (!((*rxi)[rb_read].flags & RB_USER)) { +		while (!((*rxi)[rb_read].flags & RB_USER)) {  			struct pollfd pfd;  			pfd.fd = fp;  			pfd.events = POLLIN;  			ssize_t ret = poll(&pfd, 1, -1);  		} +		(*rxi)[rb_read].flags = RB_USER_PROCESS;  		rx_pkt_cnt++;  		cnt = (*rxi)[rb_read].len; @@ -91,12 +90,14 @@ static void *read_thread(void *threadid)  		for (i = 0; i < cnt - 4; i+=2) {  			crc = ((crc >> 8) & 0x00FFFFFF) ^  				crc_tab[(crc ^ p[i+1]) & 0xFF]; -printf("idx = %d, data = %X, crc = %X\n", i, p[i+1],crc); +//printf("idx = %d, data = %X, crc = %X\n", i, p[i+1],crc);  			crc = ((crc >> 8) & 0x00FFFFFF) ^  				crc_tab[(crc ^ p[i]) & 0xFF]; -printf("idx = %d, data = %X, crc = %X\n", i, p[i],crc); +//printf("idx = %d, data = %X, crc = %X\n", i, p[i],crc);  		} +		(*rxi)[rb_read].flags = RB_KERNEL; +  		if (rx_crc != (crc & 0xFFFFFFFF)) {  			printf("CRC Error, calc crc: %X, rx_crc: %X\n",  				(crc & 0xFFFFFFFF), rx_crc); @@ -145,6 +146,8 @@ static void *write_thread(void *threadid)  		tx_pkt_cnt++;  		p = tx_buf + (rb_write * 2048); +//		printf("p = %p\n", p); +  		if (packet_data_length > 0)  			tx_len = packet_data_length;  		else @@ -166,12 +169,14 @@ static void *write_thread(void *threadid)  		}  #endif -		if (!((*txi)[rb_write].flags & RB_KERNEL)) { +//		printf("Checking for space at rb entry = %d\n", rb_write); +		while (!((*txi)[rb_write].flags & RB_KERNEL)) {  			struct pollfd pfd;  			pfd.fd = fp;  			pfd.events = POLLOUT;  			ssize_t ret = poll(&pfd, 1, -1);  		} +//		printf("Got space\n");  		crc = 0xFFFFFFFF;  		for (i = 0; i < tx_len-4; i++) { @@ -186,6 +191,10 @@ static void *write_thread(void *threadid)  		(*txi)[rb_write].len = tx_len;  		(*txi)[rb_write].flags = RB_USER; +		rb_write++; +		if (rb_write == rb_size.num_tx_frames) +			rb_write = 0; +  		bytes_transfered += tx_len;  		if (bytes_transfered > (100 * 1000000)) { @@ -194,7 +203,7 @@ static void *write_thread(void *threadid)  			printf("Bytes transfered = %d, elapsed seconds = %d\n", bytes_transfered, elapsed_seconds);  			printf("TX data transfer rate = %f K Samples/second\n", -				(float) bytes_transfered / (float) elapsed_seconds / 250); +				(float) bytes_transfered / (float) elapsed_seconds / 4000);  			start_time = finish_time; | 
