#include "sys/alt_stdio.h"
#include "altera_avalon_pio_regs.h"
#include "altera_avalon_uart_regs.h"
#include "system.h"

int main()
{ 
	char *p;

	char data1,data2;
	char channel_set=0;

	int i;



	while(1)
	{

		channel_set = IORD_ALTERA_AVALON_PIO_DATA(CHANNEL_SET_BASE);

		if(channel_set & 0x1)	//ͨ1
		{
			IOWR_ALTERA_AVALON_PIO_DATA(TRIG_BASE, 2047 | 0x8000);
		}
		else if(channel_set & 0x2)	//ͨ2
		{
			IOWR_ALTERA_AVALON_PIO_DATA(TRIG_BASE, (2047 | 0x8000) << 16);
		}

		IOWR_ALTERA_AVALON_PIO_DATA(SAMPLE_EN_BASE,1);
		IOWR_ALTERA_AVALON_PIO_DATA(SAMPLE_EN_BASE,0);
		while(!IORD_ALTERA_AVALON_PIO_DATA(STATE_BASE));
		p = DPRAM_BASE;

		for(i=0;i<16384;)
		{

			data1 = *p;
			p++;
			data2 = *p;
			p++;
			if(channel_set & 0x1)
			{
				while (!(ALTERA_AVALON_UART_STATUS_TRDY_MSK
						& IORD_ALTERA_AVALON_UART_STATUS(UART_0_BASE)))
					;

				IOWR_ALTERA_AVALON_UART_TXDATA(UART_0_BASE, data2);

				while (!(ALTERA_AVALON_UART_STATUS_TRDY_MSK
						& IORD_ALTERA_AVALON_UART_STATUS(UART_0_BASE)))
					;
				IOWR_ALTERA_AVALON_UART_TXDATA(UART_0_BASE, data1);
			}
			data1 = *p;
			p++;
			data2 = *p;
			p++;
			if(channel_set & 0x2)
			{
				while (!(ALTERA_AVALON_UART_STATUS_TRDY_MSK
						& IORD_ALTERA_AVALON_UART_STATUS(UART_0_BASE)))
					;

				IOWR_ALTERA_AVALON_UART_TXDATA(UART_0_BASE, data2);

				while (!(ALTERA_AVALON_UART_STATUS_TRDY_MSK
						& IORD_ALTERA_AVALON_UART_STATUS(UART_0_BASE)))
					;
				IOWR_ALTERA_AVALON_UART_TXDATA(UART_0_BASE, data1);
			}
			i=i+4;
		}
		usleep(2000000);
	}
  return 0;
}
