#include "ADDS_21161_EzKit.h"
#include <def21161.h>
#include <signal.h>

int i  = 0;

float hn[80] = {
-0.000247096811085,
-0.000623163971002,
-0.000673973963957,
-0.000310966944137,
0.000354267936376,
0.000989459876906,
0.001155227274936,
0.000561097204129,
-0.000658490253833,
-0.001862871684135,
-0.002176435761793,
-0.001049221677786,
0.001215948621518,
0.00338713937347,
0.003891317581265,
0.001844116593369,
-0.002101734568202,
-0.005762452259679,
-0.006523552097817,
-0.003050559773422,
0.003435795521654,
0.009324409914387,
0.010466893368481,
0.004862295087131,
-0.00545117929335,
-0.01475850772008,
-0.016567742640355,
-0.00771836269488,
0.008706151404575,
0.023807705300721,
0.027123588304198,
0.012901230212664,
-0.014974937467939,
-0.042590463993508,
-0.051233842341166,
-0.026321734295704,
0.034241038279865,
0.116749728131116,
0.195720519481569,
0.243919360745502,
0.243919360745502,
0.195720519481569,
0.116749728131116,
0.034241038279865,
-0.026321734295704,
-0.051233842341166,
-0.042590463993508,
-0.014974937467939,
0.012901230212664,
0.027123588304198,
0.023807705300721,
0.008706151404575,
-0.00771836269488,
-0.016567742640355,
-0.01475850772008,
-0.00545117929335,
0.004862295087131,
0.010466893368481,
0.009324409914387,
0.003435795521654,
-0.003050559773422,
-0.006523552097817,
-0.005762452259679,
-0.002101734568202,
0.001844116593369,
0.003891317581265,
0.00338713937347,
0.001215948621518,
-0.001049221677786,
-0.002176435761793,
-0.001862871684135,
-0.000658490253833,
0.000561097204129,
0.001155227274936,
0.000989459876906,
0.000354267936376,
-0.000310966944137,
-0.000673973963957,
-0.000623163971002,
-0.000247096811085};
	
float samples[80] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};


void	Process_Samples( int sig_int)
{
	Receive_Samples();
	
	samples[0] = Right_Channel_In1;
	Right_Channel_Out0 = 0;
	for (i = 0; i<80; i++)
	{
		Right_Channel_Out0 += (samples[i]*hn[i]);
	}
	for (i = 79; i>0; i--)
	{
		samples[i] = samples[i-1];
	}
	
	Transmit_Samples();
}


void	main()
{
	/* Setup Interrupt edges and flag I/O directions */
	Setup_ADSP21161N();

	/* Setup SDRAM Controller */
	Setup_SDRAM();

	Setup_AD1836();
	Init_AD1852_DACs();

	Program_SPORT02_TDM_Registers();
	Program_SPORT02_DMA_Channels();

	interruptf(	SIG_SP0I,	Process_Samples);

	*(int *) SP02MCTL |= MCE;

	for (;;)
		asm("idle;");


}

