Files
jens 191af92d47 Initial version
Committed on the Free edition of March Hare Software CVSNT Server.
Upgrade to CVS Suite for more features and support:
http://march-hare.com/cvsnt/


git-svn-id: http://moon:8086/svn/vhdl/trunk@790 cc03376c-175c-47c8-b038-4cd826a8556b
2010-03-13 14:13:53 +00:00

84 lines
1.5 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <ctype.h>
#include <time.h>
#include "libsys.h"
#define BUF_SIZE 1024
char buffer[BUF_SIZE];
char rxbuf[BUF_SIZE];
char * volatile pPtr_r;
char * volatile pPtr_w;
UINT32 volatile timeout_cnt;
void handler3(void)
{
volatile UINT32 *pUART_stat = (UINT32*)SYS_UART_STAT;
volatile UINT32 *pUART_data = (UINT32*)SYS_UART_DATA;
while((0x10 & *pUART_stat))
{
/// sputs("w: "); print_word((int)pPtr_w); sputs("\n");
if (pPtr_w == &buffer[BUF_SIZE-1])
pPtr_w = buffer;
*(pPtr_w++) = *pUART_data;
timeout_cnt = 200;
}
}
int main(int argc, char **argv)
{
volatile UINT32 *pUART_stat = (UINT32*)SYS_UART_STAT;
unsigned char *fileData;
unsigned long file_len, state;
pPtr_r = buffer;
pPtr_w = buffer;
interrupt_register(3, handler3);
interrupt_enable(3);
*pUART_stat |= (1 << 6);
setbuf(stderr, NULL);
state = 0;
while(1)
{
fprintf(stdout,"Reading serial stream..\n");
file_len = 0;
timeout_cnt = 20000000;
while(timeout_cnt--)
{
sleep(1);
}
while(pPtr_w != pPtr_r)
{
// sputs("r: "); print_word((int)pPtr_r); sputs("\n");
if (pPtr_r == &buffer[BUF_SIZE-1])
pPtr_r = buffer;
rxbuf[file_len++] = *(pPtr_r++);
}
if (file_len)
{
PrintBuffer8(rxbuf, 16, file_len);
}
switch(state)
{
case 0:
if (!memcmp(rxbuf, "CLIENT", file_len))
{
fprintf(stdout,"Send response\n");
fprintf(stderr,"SERVER");
state = 1;
}
break;
default:
break;
}
}
return 0;
}