www.pudn.com > LinkDrvDemo.rar > recv.c


 
#include "utils.h" 
#include "TSLinkDrv.h" 
#include  
 
#define BUFFER_LENGTH 32768 
#define CLOCK_RATE 300 
#define REPEAT_TIME 1000 
 
int Buffer[BUFFER_LENGTH]; 
int FrameCount = 0; 
 
void MakeBuffer() 
{ 
	int i; 
	 
	for(i = 0; i < BUFFER_LENGTH; i++) 
		Buffer[i] = 0x5a5a0000 + i; 
} 
 
bool CheckBuffer() 
{ 
	int i; 
	 
	for(i = 0; i < BUFFER_LENGTH; i++) 
	{ 
		if(Buffer[i] != 0x5a5a0000 + i) 
			return false; 
	} 
	 
	return true; 
} 
 
void main() 
{ 
	bool IsSender; 
	int LinkID; 
	int LinkSpeed; 
	unsigned int StartTime, EndTime, Duration; 
	float Speed; 
	int i, count; 
	bool VerifyOK; 
	 
	__builtin_sysreg_write(__SYSCON, 0x1A79E7); 
	__builtin_sysreg_write(__SDRCON, 0x5213); 
	 
	IsSender = false; 
		 
	LinkID = 1; 
	LinkSpeed = 1; 
		 
	switch(LinkSpeed) 
	{ 
	case 0: 
		LinkInit(LinkID, LINK_SPEED_0); 
		break; 
	case 1: 
		LinkInit(LinkID, LINK_SPEED_1); 
		break; 
	case 2: 
		LinkInit(LinkID, LINK_SPEED_2); 
		break; 
	case 3: 
		LinkInit(LinkID, LINK_SPEED_3); 
		break; 
	default: 
		break; 
	} 
 
	if(IsSender) 
	{ 
		//send 
		VerifyOK = true; 
		MakeBuffer(); 
 		init_timer(0, 0xffff, 0xffffffff); 
		StartTime = start_timer(0);	 
		LinkSendDMAW(LinkID, (void*)Buffer, BUFFER_LENGTH); 
		EndTime = stop_timer(0);	 
		Duration = StartTime - EndTime;		 
		Speed = 4 * BUFFER_LENGTH * CLOCK_RATE / (float)Duration; 
 
		//recv 
		for(count = 0; count < REPEAT_TIME; count++) 
		{ 
			LinkRecvDMAW(LinkID, (void*)Buffer, BUFFER_LENGTH);	 
			if(!CheckBuffer()) 
			{ 
				VerifyOK = false; 
				break; 
			} 
			LinkSendDMAW(LinkID, (void*)Buffer, BUFFER_LENGTH); 
			FrameCount++; 
		} 
		if(VerifyOK) 
			printf("Verify OK. Speed = %f\n", Speed); 
		else 
			printf("Verify Error.\n"); 
	} 
	else 
	{ 
		VerifyOK = true; 
		//recv 
		LinkRecvDMAW(LinkID, (void*)Buffer, BUFFER_LENGTH);	 
		 
		if(!CheckBuffer()) 
			VerifyOK = false; 
 
						 
		//send	 
		for(count = 0; count < REPEAT_TIME; count++) 
		{ 
			LinkSendDMAW(LinkID, (void*)Buffer, BUFFER_LENGTH); 
			LinkRecvDMAW(LinkID, (void*)Buffer, BUFFER_LENGTH);	 
			if(!CheckBuffer()) 
			{ 
				VerifyOK = false; 
				break; 
			} 
			FrameCount++; 
		} 
		if(VerifyOK) 
			printf("Verify OK.\n"); 
		else 
			printf("Verify Error.\n"); 
	} 
 
}