/*************************************************************

   p r o c e s s i n g . h

 Header file for the high priority (ISR)
 Signal processing functions

 *************************************************************/

#ifndef PROCESSING_H
#define PROCESSING_H

// Sample to sample given functions
void identity(q15_t in1,q15_t in2,q15_t *out1,q15_t *out2);

// Sample to sample solutions
void p2modulation(q15_t in1,q15_t in2,q15_t *out1,q15_t *out2);
void p2modulationFn(q15_t in1,q15_t in2,q15_t *out1,q15_t *out2);
void p2firFilter(q15_t in1,q15_t in2,q15_t *out1,q15_t *out2);
void p2iirQ15Filter(q15_t in1,q15_t in2,q15_t *out1,q15_t *out2);
void p2iirQ15PureFilter(q15_t in1,q15_t in2,q15_t *out1,q15_t *out2);
void p2iirInt32Filter(q15_t in1,q15_t in2,q15_t *out1,q15_t *out2);
void p2iirFloatFilter(q15_t in1,q15_t in2,q15_t *out1,q15_t *out2);
void p2iirDoubleFilter(q15_t in1,q15_t in2,q15_t *out1,q15_t *out2);

// Other sample to sample examples
void changeSign(q15_t in1,q15_t in2,q15_t *out1,q15_t *out2);
void boxFilter(q15_t in1,q15_t in2,q15_t *out1,q15_t *out2);
void lameBoxFilter(q15_t in1,q15_t in2,q15_t *out1,q15_t *out2);
void echo(q15_t in1,q15_t in2,q15_t *out1,q15_t *out2);
void echoPot(q15_t in1,q15_t in2,q15_t *out1,q15_t *out2);

void boardTest(q15_t in1,q15_t in2,q15_t *out1,q15_t *out2);

// Block solutions
void p2blockFir(void);
void p2blockIIR(void);
void p3blockDetect(void);
void p5noiseCancel(void);

// Block mode processing examples prototypes
void blockIdentity(void);
void p2blockFir(void);
void demoTone(void);

void fftInit(void);

void blockFFT(void);

#endif //PROCESSING_H
