//************************************************************************************
//**  
//**  Source name:   C:\Users\Larry\Desktop\Laptop\Laptop.fcfx
//**  Title:         
//**  Description:   
//**  Device:        PIC16.30F.30F3012
//**  
//**  Generated by:  Flowcode v6.1.2.0
//**  Date:          Sunday, October 25, 2015 20:31:58
//**  Users:         1
//**  Registered to: Lawrence Miranda
//**  Licence key:   ZA3F92
//**  
//**  
//**     NOT FOR COMMERCIAL USE
//**  
//**  http://www.matrixtsl.com
//**  
//************************************************************************************


#define MX_PIC16
#define MX_CAL_PIC16
#define MX_CLK_SPEED 29480000
#define FCP_NULL Unconnected_Port
#define MX_CLKS_PER_INST 4
#define MX_SPI1CON
#include "../support/30F/h/p30fxxxx.h"
#include <stdlib.h>
#include <math.h>
//Configuration Start
_FOSC(34561);
_FWDT(63);
_FBORPOR(1827);
_RESERVED1(12559);
_RESERVED2(13071);
_FGS(7);
_ICD(49155);
//Configuration End

/*========================================================================*\
   Use :Include the type definitions
\*========================================================================*/
#include "C:\Program Files (x86)\Flowcode 6\CAL\internals.c"



/*========================================================================*\
   Use :panel
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
#define FCV_FALSE (0)
#define FCV_TRUE (1)
MX_GLOBAL MX_UINT16 FCV_TEMPDATA = (0x0);
MX_GLOBAL MX_UINT8 FCV_COUNT = (0x0);
MX_GLOBAL MX_BOOL FCV_ACTIVE = (0);
MX_GLOBAL MX_UINT16 FCV_DATA = (0x800);
MX_GLOBAL MX_UINT16 FCV_PEAK = (0x7fee);
MX_GLOBAL MX_UINT16 FCV_TROUGH = (0x7fee);
MX_GLOBAL MX_UINT16 FCV_CALL = (0x7d00);
MX_GLOBAL MX_BOOL FCV_TRIGGER = (0);

void FCM_send_clay_off();
void FCM_timer_tick();
void FCM_power_up();

/*========================================================================*\
   Use :dspbuff_1
       :Variable declarations
       :Macro function declarations
\*========================================================================*/

/*========================================================================*\
   Use :DSPDummy
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
MX_UINT8 FCD_08414_DSPDummy__TickSpecificBuffer(MX_UINT8 FCL_IDX);
void FCD_08414_DSPDummy__SetBuffer_Idx(MX_UINT8 FCL_BUFFERIDX, MX_UINT16 FCL_IDX);
void FCD_08414_DSPDummy__SetBuff(MX_UINT8 FCL_IDX, MX_UINT16 FCL_DATA);
MX_UINT16 FCD_08414_DSPDummy__GetBuff(MX_UINT8 FCL_IDX);
MX_UINT8 FCD_08414_DSPDummy__TickAllBuffers();
void FCD_08414_DSPDummy__Initialise();

/*========================================================================*\
   Use :DSPLevel1
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
#define FCVsz_039e1_DSPLevel1__RECORDS_AVG 8
#define FCVsz_039e1_DSPLevel1__RECORDS_PEAK 8
#define FCVsz_039e1_DSPLevel1__RECORDS_TROUGH 8
MX_GLOBAL MX_UINT16 FCV_039e1_DSPLevel1__RECORDS_AVG[FCVsz_039e1_DSPLevel1__RECORDS_AVG];
MX_GLOBAL MX_UINT16 FCV_039e1_DSPLevel1__IDX_TROUGH = (0x0);
MX_GLOBAL MX_UINT16 FCV_039e1_DSPLevel1__RECORDS_PEAK[FCVsz_039e1_DSPLevel1__RECORDS_PEAK];
MX_GLOBAL MX_UINT16 FCV_039e1_DSPLevel1__IDX_PEAK = (0x0);
MX_GLOBAL MX_UINT16 FCV_039e1_DSPLevel1__IDX_AVG = (0x0);
MX_GLOBAL MX_UINT16 FCV_039e1_DSPLevel1__RECORDS_TROUGH[FCVsz_039e1_DSPLevel1__RECORDS_TROUGH];

MX_UINT16 FCD_039e1_DSPLevel1__ReadPeakTick();
MX_UINT16 FCD_039e1_DSPLevel1__ReadTrough();
MX_UINT16 FCD_039e1_DSPLevel1__ReadAverage();
MX_UINT16 FCD_039e1_DSPLevel1__ReadAverageTick();
MX_UINT16 FCD_039e1_DSPLevel1__ReadTroughTick();
MX_UINT16 FCD_039e1_DSPLevel1__ReadPeak();

/*========================================================================*\
   Use :dspbuff_1
       :Variable declarations
       :Macro function declarations
\*========================================================================*/

/*========================================================================*\
   Use :DSPDummy
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
MX_UINT8 FCD_08413_DSPDummy__TickSpecificBuffer(MX_UINT8 FCL_IDX);
void FCD_08413_DSPDummy__SetBuffer_Idx(MX_UINT8 FCL_BUFFERIDX, MX_UINT16 FCL_IDX);
void FCD_08413_DSPDummy__SetBuff(MX_UINT8 FCL_IDX, MX_UINT16 FCL_DATA);
MX_UINT16 FCD_08413_DSPDummy__GetBuff(MX_UINT8 FCL_IDX);
MX_UINT8 FCD_08413_DSPDummy__TickAllBuffers();
void FCD_08413_DSPDummy__Initialise();

/*========================================================================*\
   Use :ButtonCtrl
       :Variable declarations
       :Macro function declarations
\*========================================================================*/

/*========================================================================*\
   Use :switch_base
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
MX_UINT8 FCD_05261_switch_base__ReadState();
void FCD_05261_switch_base__WaitUntilHigh();
void FCD_05261_switch_base__WaitUntilLow();

/*========================================================================*\
   Use :Active_sw
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
#define FCD_06f01_Active_sw__ReadState FCD_05261_switch_base__ReadState
#define FCD_06f01_Active_sw__WaitUntilHigh FCD_05261_switch_base__WaitUntilHigh
#define FCD_06f01_Active_sw__WaitUntilLow FCD_05261_switch_base__WaitUntilLow

/*========================================================================*\
   Use :component_label1
       :Variable declarations
       :Macro function declarations
\*========================================================================*/

/*========================================================================*\
   Use :led_base1
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
void FCD_03d92_led_base1__TurnOn();
void FCD_03d92_led_base1__TurnOff();

/*========================================================================*\
   Use :PowerUp_led
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
#define FCD_083d2_PowerUp_led__TurnOn FCD_03d92_led_base1__TurnOn
#define FCD_083d2_PowerUp_led__TurnOff FCD_03d92_led_base1__TurnOff

/*========================================================================*\
   Use :component_label1
       :Variable declarations
       :Macro function declarations
\*========================================================================*/

/*========================================================================*\
   Use :led_base1
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
void FCD_03d91_led_base1__TurnOn();
void FCD_03d91_led_base1__TurnOff();

/*========================================================================*\
   Use :SendClay_led
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
#define FCD_083d1_SendClay_led__TurnOn FCD_03d91_led_base1__TurnOn
#define FCD_083d1_SendClay_led__TurnOff FCD_03d91_led_base1__TurnOff

/*========================================================================*\
   Use :dspbuff_1
       :Variable declarations
       :Macro function declarations
\*========================================================================*/

/*========================================================================*\
   Use :DSPDummy
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
MX_UINT8 FCD_08412_DSPDummy__TickSpecificBuffer(MX_UINT8 FCL_IDX);
void FCD_08412_DSPDummy__SetBuffer_Idx(MX_UINT8 FCL_BUFFERIDX, MX_UINT16 FCL_IDX);
void FCD_08412_DSPDummy__SetBuff(MX_UINT8 FCL_IDX, MX_UINT16 FCL_DATA);
MX_UINT16 FCD_08412_DSPDummy__GetBuff(MX_UINT8 FCL_IDX);
MX_UINT8 FCD_08412_DSPDummy__TickAllBuffers();
void FCD_08412_DSPDummy__Initialise();

/*========================================================================*\
   Use :DSPInput1
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
void FCD_0b9a1_DSPInput1__AddAsByteTick(MX_UINT8 FCL_DATA);
void FCD_0b9a1_DSPInput1__AddAsUINTTick(MX_UINT16 FCL_DATA);
void FCD_0b9a1_DSPInput1__AddToBuffer(MX_CHAR *FCL_DATA, MX_UINT16 FCLsz_DATA);
void FCD_0b9a1_DSPInput1__AddAsSINTTick(MX_SINT16 FCL_DATA);
void FCD_0b9a1_DSPInput1__AddRawTick(MX_UINT16 FCL_DATA);

/*========================================================================*\
   Use :fcdhelper
       :Variable declarations
       :Macro function declarations
\*========================================================================*/

/*========================================================================*\
   Use :cal_adc
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
#define ADC_1_MX_ADC_ACTIME 40
#define MX_ADC_REF 
#define ADC_1_MX_ADC_VREFVOL 300
#define MX_ADC_CHANNEL_0 
#define MX_ADC_TYPE_6 
#define ADC_1_MX_ADC_VREFOP 0
#define ADC_1_MX_ADC_CONVSP 3
#define MX_ADC_BITS_12 
#define ADC_1_MX_ADC_CHANNEL 0

#define FCV_0aae1_cal_adc__FALSE (0)
#define FCV_0aae1_cal_adc__TRUE (1)

void FC_CAL_ADC_Disable();
void FC_CAL_ADC_Enable(MX_UINT8 FCL_CHANNEL, MX_UINT8 FCL_CONV_SPEED, MX_UINT8 FCL_VREF, MX_UINT8 FCL_T_CHARGE);
MX_UINT16 FC_CAL_ADC_Sample(MX_UINT8 FCL_SAMPLE_MODE);

/*========================================================================*\
   Use :adc_base
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
MX_UINT16 FCD_08f41_adc_base__RawSampleInt();
MX_UINT8 FCD_08f41_adc_base__RawAverageByte(MX_UINT8 FCL_NUMSAMPLES, MX_UINT8 FCL_DELAYUS);
void FCD_08f41_adc_base__GetString(MX_CHAR *FCR_RETVAL, MX_UINT16 FCRsz_RETVAL);
MX_UINT8 FCD_08f41_adc_base__GetAverageByte(MX_UINT8 FCL_NUMSAMPLES, MX_UINT8 FCL_DELAYUS);
MX_SINT16 FCD_08f41_adc_base__RawAverageInt(MX_UINT8 FCL_NUMSAMPLES, MX_UINT8 FCL_DELAYUS);
MX_UINT16 FCD_08f41_adc_base__GetAverageInt(MX_UINT8 FCL_NUMSAMPLES, MX_UINT8 FCL_DELAYUS);
MX_FLOAT FCD_08f41_adc_base__GetVoltage();
void FCD_08f41_adc_base__RawEnable();
MX_UINT8 FCD_08f41_adc_base__RawSampleByte();
MX_UINT16 FCD_08f41_adc_base__GetInt();
void FCD_08f41_adc_base__RawDisable();
MX_UINT8 FCD_08f41_adc_base__GetByte();

/*========================================================================*\
   Use :Voice_Input
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
#define FCD_00101_Voice_Input__RawSampleInt FCD_08f41_adc_base__RawSampleInt
#define FCD_00101_Voice_Input__RawAverageByte FCD_08f41_adc_base__RawAverageByte
#define FCD_00101_Voice_Input__GetString FCD_08f41_adc_base__GetString
#define FCD_00101_Voice_Input__GetAverageByte FCD_08f41_adc_base__GetAverageByte
#define FCD_00101_Voice_Input__RawAverageInt FCD_08f41_adc_base__RawAverageInt
#define FCD_00101_Voice_Input__GetAverageInt FCD_08f41_adc_base__GetAverageInt
#define FCD_00101_Voice_Input__GetVoltage FCD_08f41_adc_base__GetVoltage
#define FCD_00101_Voice_Input__RawEnable FCD_08f41_adc_base__RawEnable
#define FCD_00101_Voice_Input__RawSampleByte FCD_08f41_adc_base__RawSampleByte
#define FCD_00101_Voice_Input__GetInt FCD_08f41_adc_base__GetInt
#define FCD_00101_Voice_Input__RawDisable FCD_08f41_adc_base__RawDisable
#define FCD_00101_Voice_Input__GetByte FCD_08f41_adc_base__GetByte

/*========================================================================*\
   Use :dspbuff_2
       :Variable declarations
       :Macro function declarations
\*========================================================================*/

/*========================================================================*\
   Use :dspbuff_1
       :Variable declarations
       :Macro function declarations
\*========================================================================*/

/*========================================================================*\
   Use :DSPDummy
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
MX_UINT8 FCD_08411_DSPDummy__TickSpecificBuffer(MX_UINT8 FCL_IDX);
void FCD_08411_DSPDummy__SetBuffer_Idx(MX_UINT8 FCL_BUFFERIDX, MX_UINT16 FCL_IDX);
void FCD_08411_DSPDummy__SetBuff(MX_UINT8 FCL_IDX, MX_UINT16 FCL_DATA);
MX_UINT16 FCD_08411_DSPDummy__GetBuff(MX_UINT8 FCL_IDX);
MX_UINT8 FCD_08411_DSPDummy__TickAllBuffers();
void FCD_08411_DSPDummy__Initialise();

/*========================================================================*\
   Use :DSPFilter1
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
#define FCVsz_0bc81_DSPFilter1__DATA 12
#define FCVsz_0bc81_DSPFilter1__DATA2 2
MX_GLOBAL MX_FLOAT FCV_0bc81_DSPFilter1__FILTER;
MX_GLOBAL MX_SINT32 FCV_0bc81_DSPFilter1__DATA[FCVsz_0bc81_DSPFilter1__DATA];
MX_GLOBAL MX_UINT16 FCV_0bc81_DSPFilter1__RESPONSE_LP_U = (0x8000);
MX_GLOBAL MX_SINT32 FCV_0bc81_DSPFilter1__DATA2[FCVsz_0bc81_DSPFilter1__DATA2];
MX_GLOBAL MX_UINT16 FCV_0bc81_DSPFilter1__RESPONSE_HP_U = (0x0);

void FCD_0bc81_DSPFilter1__Filter();
void FCD_0bc81_DSPFilter1__FilterTick();

/*========================================================================*\
   Use :DSPSystem1
       :Variable declarations
       :Macro function declarations
\*========================================================================*/

/*=----------------------------------------------------------------------=*\
   Use :DSPSystem1
       :Supplementary defines
\*=----------------------------------------------------------------------=*/
#define BUFF_1_(x)    (BUFF_1_##x[IDX_1_##x])
#define SBUFF_1_(x,y) (BUFF_1_##x[IDX_1_##x] = y)
#ifndef FCRsz_RETVAL
  #define FCRsz_RETVAL FCVsz_FCR_RETVAL
#endif

#define FCVsz_032d1_DSPSystem1__BUFF_H 16
#define FCVsz_032d1_DSPSystem1__BUFF_G 16
#define FCVsz_032d1_DSPSystem1__BUFF_F 16
#define FCVsz_032d1_DSPSystem1__BUFF_E 16
#define FCVsz_032d1_DSPSystem1__BUFF_D 16
#define FCVsz_032d1_DSPSystem1__BUFF_C 16
#define FCVsz_032d1_DSPSystem1__BUFF_B 16
#define FCVsz_032d1_DSPSystem1__BUFF_A 16
MX_GLOBAL MX_UINT32 FCV_032d1_DSPSystem1__CONSOLEDHANDLE;
MX_GLOBAL MX_UINT8 IDX_1_0 = 0;
#define FCV_032d1_DSPSystem1__BUFF_A_IDX IDX_1_0
MX_GLOBAL MX_UINT16 FCV_032d1_DSPSystem1__COUNTH = (0x0);
MX_GLOBAL MX_UINT16 FCV_032d1_DSPSystem1__COUNTG = (0x0);
MX_GLOBAL MX_UINT16 FCV_032d1_DSPSystem1__COUNTF = (0x0);
MX_GLOBAL MX_UINT16 FCV_032d1_DSPSystem1__COUNTE = (0x0);
MX_GLOBAL MX_UINT8 IDX_1_1 = 0;
#define FCV_032d1_DSPSystem1__BUFF_B_IDX IDX_1_1
MX_GLOBAL MX_UINT16 FCV_032d1_DSPSystem1__COUNTD = (0x0);
MX_GLOBAL MX_UINT32 FCV_032d1_DSPSystem1__SCOPEGHANDLE;
MX_GLOBAL MX_UINT16 FCV_032d1_DSPSystem1__COUNTC = (0x0);
MX_GLOBAL MX_UINT32 FCV_032d1_DSPSystem1__SCOPECHANDLE;
MX_GLOBAL MX_UINT16 FCV_032d1_DSPSystem1__COUNTB = (0x0);
MX_GLOBAL MX_UINT32 FCV_032d1_DSPSystem1__CONSOLEGHANDLE;
MX_GLOBAL MX_UINT16 FCV_032d1_DSPSystem1__COUNTA = (0x0);
MX_GLOBAL MX_UINT32 FCV_032d1_DSPSystem1__CONSOLECHANDLE;
MX_GLOBAL MX_UINT32 FCV_032d1_DSPSystem1__CONSOLEFHANDLE;
MX_GLOBAL MX_UINT32 FCV_032d1_DSPSystem1__CONSOLEBHANDLE;
MX_GLOBAL MX_UINT32 FCV_032d1_DSPSystem1__SCOPEFHANDLE;
MX_GLOBAL MX_UINT32 FCV_032d1_DSPSystem1__SCOPEBHANDLE;
MX_GLOBAL MX_UINT32 FCV_032d1_DSPSystem1__SCOPEEHANDLE;
MX_GLOBAL MX_UINT16 BUFF_1_1[16];
MX_GLOBAL MX_UINT32 FCV_032d1_DSPSystem1__SCOPEAHANDLE;
MX_GLOBAL MX_UINT16 BUFF_1_0[16];
MX_GLOBAL MX_UINT32 FCV_032d1_DSPSystem1__CONSOLEEHANDLE;
MX_GLOBAL MX_UINT32 FCV_032d1_DSPSystem1__CONSOLEAHANDLE;
MX_GLOBAL MX_UINT32 FCV_032d1_DSPSystem1__SCOPEHHANDLE;
MX_GLOBAL MX_UINT32 FCV_032d1_DSPSystem1__SCOPEGROUP;
MX_GLOBAL MX_UINT32 FCV_032d1_DSPSystem1__SCOPEDHANDLE;
MX_GLOBAL MX_UINT32 FCV_032d1_DSPSystem1__CONSOLEHHANDLE;

MX_UINT8 FCD_032d1_DSPSystem1__TickSpecificBuffer(MX_UINT8 FCL_IDX);
void FCD_032d1_DSPSystem1__SetBuffer_Idx(MX_UINT8 FCL_BUFFERIDX, MX_UINT16 FCL_IDX);
MX_UINT8 FCD_032d1_DSPSystem1__TickAllBuffers();
void FCD_032d1_DSPSystem1__Initialise();

/*========================================================================*\
   Use :Include the chip adaption layer
\*========================================================================*/
#include "C:\Program Files (x86)\Flowcode 6\CAL\includes.c"


/*========================================================================*\
   Use :dspbuff_1
       :Macro implementations
\*========================================================================*/

/*========================================================================*\
   Use :DSPDummy
       :Macro implementations
\*========================================================================*/
/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro TickSpecificBuffer:
       :  Idx : MX_UINT8
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_08414_DSPDummy__TickSpecificBuffer(MX_UINT8 FCL_IDX)
{
	//Local variable definitions
	MX_UINT8 FCR_RETVAL;


	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro SetBuffer_Idx:
       :  BufferIdx : MX_UINT8
       :  Idx : MX_UINT16
\*=----------------------------------------------------------------------=*/
void FCD_08414_DSPDummy__SetBuffer_Idx(MX_UINT8 FCL_BUFFERIDX, MX_UINT16 FCL_IDX)
{

}

/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro SetBuff:
       :  Idx : MX_UINT8
       :  Data : MX_UINT16
\*=----------------------------------------------------------------------=*/
void FCD_08414_DSPDummy__SetBuff(MX_UINT8 FCL_IDX, MX_UINT16 FCL_DATA)
{

}

/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro GetBuff:
       :  Idx : MX_UINT8
       :
       :Returns : MX_UINT16
\*=----------------------------------------------------------------------=*/
MX_UINT16 FCD_08414_DSPDummy__GetBuff(MX_UINT8 FCL_IDX)
{
	//Local variable definitions
	MX_UINT16 FCR_RETVAL;


	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_08414_DSPDummy__TickAllBuffers()
{
	//Local variable definitions
	MX_UINT8 FCR_RETVAL;


	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :
\*=----------------------------------------------------------------------=*/
void FCD_08414_DSPDummy__Initialise()
{

}


/*========================================================================*\
   Use :DSPLevel1
       :Macro implementations
\*========================================================================*/
/*=----------------------------------------------------------------------=*\
   Use :Returns the highest value from the last "Decay" number of index locations.
       :
       :Returns : MX_UINT16
\*=----------------------------------------------------------------------=*/
MX_UINT16 FCD_039e1_DSPLevel1__ReadPeakTick()
{
	//Local variable definitions
	MX_UINT16 FCL_IDX = (0x0);
	MX_UINT16 FCR_RETVAL;


	FCR_RETVAL = BUFF_1_(1);

	#if (1) // 8 > 1

		FCV_039e1_DSPLevel1__RECORDS_PEAK[FCV_039e1_DSPLevel1__IDX_PEAK] = FCR_RETVAL;

		while (FCL_IDX < 8)
		{

			if (FCV_039e1_DSPLevel1__RECORDS_PEAK[FCL_IDX] > FCR_RETVAL)
			{

				FCR_RETVAL = FCV_039e1_DSPLevel1__RECORDS_PEAK[FCL_IDX];

			// } else {

			}

			FCL_IDX = FCL_IDX + 1;


		}

		FCV_039e1_DSPLevel1__IDX_PEAK = FCV_039e1_DSPLevel1__IDX_PEAK + 1;

		if (FCV_039e1_DSPLevel1__IDX_PEAK == 8)
		{

			FCV_039e1_DSPLevel1__IDX_PEAK = 0;

		// } else {

		}

	// #else

	//Code has been optimised out by the pre-processor
	#endif

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Returns the lowest value from the last "Decay" number of buffers.
       :
       :Returns : MX_UINT16
\*=----------------------------------------------------------------------=*/
MX_UINT16 FCD_039e1_DSPLevel1__ReadTrough()
{
	//Local variable definitions
	MX_UINT16 FCL_IDX = (0x0);
	MX_UINT16 FCL_TEMP;
	MX_UINT16 FCR_RETVAL;


	FCR_RETVAL = 65535;

	while (FCL_IDX < 16)
	{

		FCD_032d1_DSPSystem1__SetBuffer_Idx(1, FCL_IDX);

		FCL_TEMP = BUFF_1_(1);

		if (FCL_TEMP < FCR_RETVAL)
		{

			FCR_RETVAL = FCL_TEMP;

		// } else {

		}

		FCL_IDX = FCL_IDX + 1;


	}

	#if (1) // 8 > 1

		FCV_039e1_DSPLevel1__RECORDS_TROUGH[FCV_039e1_DSPLevel1__IDX_TROUGH] = FCR_RETVAL;

		FCL_IDX = 0;

		while (FCL_IDX < 8)
		{

			if (FCV_039e1_DSPLevel1__RECORDS_TROUGH[FCL_IDX] > FCR_RETVAL)
			{

				FCR_RETVAL = FCV_039e1_DSPLevel1__RECORDS_TROUGH[FCL_IDX];

			// } else {

			}

			FCL_IDX = FCL_IDX + 1;


		}

		FCV_039e1_DSPLevel1__IDX_TROUGH = FCV_039e1_DSPLevel1__IDX_TROUGH + 1;

		if (FCV_039e1_DSPLevel1__IDX_TROUGH == 8)
		{

			FCV_039e1_DSPLevel1__IDX_TROUGH = 0;

		// } else {

		}

	// #else

	//Code has been optimised out by the pre-processor
	#endif

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Returns the average from the last "Decay" number of buffers.
       :
       :Returns : MX_UINT16
\*=----------------------------------------------------------------------=*/
MX_UINT16 FCD_039e1_DSPLevel1__ReadAverage()
{
	//Local variable definitions
	MX_UINT16 FCL_IDX = (0x0);
	MX_SINT32 FCL_TOTAL = (0);
	MX_UINT16 FCR_RETVAL;


	while (FCL_IDX < 16)
	{

		FCD_032d1_DSPSystem1__SetBuffer_Idx(1, FCL_IDX);

		FCL_TOTAL = FCL_TOTAL + BUFF_1_(1);

		FCL_IDX = FCL_IDX + 1;


	}

	#if (1) // 3 > 0

		FCR_RETVAL = (FCL_TOTAL >> 3);

	#else

	//Code has been optimised out by the pre-processor
	#endif

	#if (1) // 8 > 1

		FCV_039e1_DSPLevel1__RECORDS_AVG[FCV_039e1_DSPLevel1__IDX_AVG] = FCR_RETVAL;

		FCL_IDX = 0;
		FCL_TOTAL = 0;

		while (FCL_IDX < 8)
		{

			FCL_TOTAL = FCL_TOTAL + FCV_039e1_DSPLevel1__RECORDS_AVG[FCL_IDX];

			FCL_IDX = FCL_IDX + 1;


		}

		#if (1) // 3 > 0

			FCR_RETVAL = (FCL_TOTAL >> 3);

		#else

		//Code has been optimised out by the pre-processor
		#endif

		FCV_039e1_DSPLevel1__IDX_AVG = FCV_039e1_DSPLevel1__IDX_AVG + 1;

		if (FCV_039e1_DSPLevel1__IDX_AVG == 8)
		{

			FCV_039e1_DSPLevel1__IDX_AVG = 0;

		// } else {

		}

	// #else

	//Code has been optimised out by the pre-processor
	#endif

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Returns the average from the last "Decay" number of index locations.
       :
       :Returns : MX_UINT16
\*=----------------------------------------------------------------------=*/
MX_UINT16 FCD_039e1_DSPLevel1__ReadAverageTick()
{
	//Local variable definitions
	MX_UINT16 FCL_IDX = (0x0);
	MX_SINT32 FCL_TOTAL = (0);
	MX_UINT16 FCR_RETVAL;


	FCR_RETVAL = BUFF_1_(1);

	#if (1) // 8 > 1

		FCV_039e1_DSPLevel1__RECORDS_AVG[FCV_039e1_DSPLevel1__IDX_AVG] = FCR_RETVAL;

		while (FCL_IDX < 8)
		{

			FCL_TOTAL = FCL_TOTAL + FCV_039e1_DSPLevel1__RECORDS_AVG[FCL_IDX];

			FCL_IDX = FCL_IDX + 1;


		}

		#if (1) // 3 > 0

			FCR_RETVAL = (FCL_TOTAL >> 3);

		#else

		//Code has been optimised out by the pre-processor
		#endif

		FCV_039e1_DSPLevel1__IDX_AVG = FCV_039e1_DSPLevel1__IDX_AVG + 1;

		if (FCV_039e1_DSPLevel1__IDX_AVG == 8)
		{

			FCV_039e1_DSPLevel1__IDX_AVG = 0;

		// } else {

		}

	// #else

	//Code has been optimised out by the pre-processor
	#endif

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Returns the lowest value from the last "Decay" number of index locations.
       :
       :Returns : MX_UINT16
\*=----------------------------------------------------------------------=*/
MX_UINT16 FCD_039e1_DSPLevel1__ReadTroughTick()
{
	//Local variable definitions
	MX_UINT16 FCL_IDX = (0x0);
	MX_UINT16 FCR_RETVAL;


	FCR_RETVAL = BUFF_1_(1);

	#if (1) // 8 > 1

		FCV_039e1_DSPLevel1__RECORDS_TROUGH[FCV_039e1_DSPLevel1__IDX_TROUGH] = FCR_RETVAL;

		while (FCL_IDX < 8)
		{

			if (FCV_039e1_DSPLevel1__RECORDS_TROUGH[FCL_IDX] < FCR_RETVAL)
			{

				FCR_RETVAL = FCV_039e1_DSPLevel1__RECORDS_TROUGH[FCL_IDX];

			// } else {

			}

			FCL_IDX = FCL_IDX + 1;


		}

		FCV_039e1_DSPLevel1__IDX_TROUGH = FCV_039e1_DSPLevel1__IDX_TROUGH + 1;

		if (FCV_039e1_DSPLevel1__IDX_TROUGH == 8)
		{

			FCV_039e1_DSPLevel1__IDX_TROUGH = 0;

		// } else {

		}

	// #else

	//Code has been optimised out by the pre-processor
	#endif

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Returns the highest value from the last "Decay" number of buffers.
       :
       :Returns : MX_UINT16
\*=----------------------------------------------------------------------=*/
MX_UINT16 FCD_039e1_DSPLevel1__ReadPeak()
{
	//Local variable definitions
	MX_UINT16 FCL_IDX = (0x0);
	MX_UINT16 FCL_TEMP;
	MX_UINT16 FCR_RETVAL;


	FCR_RETVAL = 0;

	while (FCL_IDX < 16)
	{

		FCD_032d1_DSPSystem1__SetBuffer_Idx(1, FCL_IDX);

		FCL_TEMP = BUFF_1_(1);

		if (FCL_TEMP > FCR_RETVAL)
		{

			FCR_RETVAL = FCL_TEMP;

		// } else {

		}

		FCL_IDX = FCL_IDX + 1;


	}

	#if (1) // 8 > 1

		FCV_039e1_DSPLevel1__RECORDS_PEAK[FCV_039e1_DSPLevel1__IDX_PEAK] = FCR_RETVAL;

		FCL_IDX = 0;

		while (FCL_IDX < 8)
		{

			if (FCV_039e1_DSPLevel1__RECORDS_PEAK[FCL_IDX] > FCR_RETVAL)
			{

				FCR_RETVAL = FCV_039e1_DSPLevel1__RECORDS_PEAK[FCL_IDX];

			// } else {

			}

			FCL_IDX = FCL_IDX + 1;


		}

		FCV_039e1_DSPLevel1__IDX_PEAK = FCV_039e1_DSPLevel1__IDX_PEAK + 1;

		if (FCV_039e1_DSPLevel1__IDX_PEAK == 8)
		{

			FCV_039e1_DSPLevel1__IDX_PEAK = 0;

		// } else {

		}

	// #else

	//Code has been optimised out by the pre-processor
	#endif

	return (FCR_RETVAL);

}


/*========================================================================*\
   Use :dspbuff_1
       :Macro implementations
\*========================================================================*/

/*========================================================================*\
   Use :DSPDummy
       :Macro implementations
\*========================================================================*/
/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro TickSpecificBuffer:
       :  Idx : MX_UINT8
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_08413_DSPDummy__TickSpecificBuffer(MX_UINT8 FCL_IDX)
{
	//Local variable definitions
	MX_UINT8 FCR_RETVAL;


	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro SetBuffer_Idx:
       :  BufferIdx : MX_UINT8
       :  Idx : MX_UINT16
\*=----------------------------------------------------------------------=*/
void FCD_08413_DSPDummy__SetBuffer_Idx(MX_UINT8 FCL_BUFFERIDX, MX_UINT16 FCL_IDX)
{

}

/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro SetBuff:
       :  Idx : MX_UINT8
       :  Data : MX_UINT16
\*=----------------------------------------------------------------------=*/
void FCD_08413_DSPDummy__SetBuff(MX_UINT8 FCL_IDX, MX_UINT16 FCL_DATA)
{

}

/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro GetBuff:
       :  Idx : MX_UINT8
       :
       :Returns : MX_UINT16
\*=----------------------------------------------------------------------=*/
MX_UINT16 FCD_08413_DSPDummy__GetBuff(MX_UINT8 FCL_IDX)
{
	//Local variable definitions
	MX_UINT16 FCR_RETVAL;


	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_08413_DSPDummy__TickAllBuffers()
{
	//Local variable definitions
	MX_UINT8 FCR_RETVAL;


	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :
\*=----------------------------------------------------------------------=*/
void FCD_08413_DSPDummy__Initialise()
{

}


/*========================================================================*\
   Use :ButtonCtrl
       :Macro implementations
\*========================================================================*/

/*========================================================================*\
   Use :switch_base
       :Macro implementations
\*========================================================================*/
/*=----------------------------------------------------------------------=*\
   Use :Reads the button state as 0 for released or 1 for pressed
       :Performs debounce if required
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_05261_switch_base__ReadState()
{
	//Local variable definitions
	MX_UINT8 FCL_SWITCHVAL = (0xff); // Value of the press
	MX_UINT16 FCL_DEL_COUNT;
	MX_UINT8 FCL_OLD_SWITCHVAL;
	MX_UINT8 FCR_RETVAL;


	if (0 != FCP_GET(B, B, 0x4, 0x2))
	{

		FCR_RETVAL = 1;

	} else {

		FCR_RETVAL = 0;

	}

	#if (1) // 10 > 0

		FCL_DEL_COUNT = 0;
		FCL_OLD_SWITCHVAL = FCR_RETVAL;

		while (FCL_DEL_COUNT < 10)
		{

			FCI_DELAYBYTE_MS(1);

			if (0 != FCP_GET(B, B, 0x4, 0x2))
			{

				FCR_RETVAL = 1;

			} else {

				FCR_RETVAL = 0;

			}

			if (FCR_RETVAL == FCL_OLD_SWITCHVAL)
			{

				FCL_DEL_COUNT = FCL_DEL_COUNT + 1;

			} else {

				FCL_DEL_COUNT = 0;

			}

			FCL_OLD_SWITCHVAL = FCR_RETVAL;


		}

	// #else

	//Code has been optimised out by the pre-processor
	#endif

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Waits until the switch is in state 'high'
       :The interpretation of 'high' depends on the polarity
\*=----------------------------------------------------------------------=*/
void FCD_05261_switch_base__WaitUntilHigh()
{
	//Local variable definitions
	MX_UINT8 FCL_SWITCHVAL = (0xff); // The state of the pin
	MX_UINT16 FCL_DEL_COUNT;
	MX_UINT8 FCL_OLD_SWITCHVAL;


	while (1)
	{

		FCL_SWITCHVAL = FCP_GET(B, B, 0x4, 0x2);

		#if (0) // 0 == 1

		//Code has been optimised out by the pre-processor
		// #else

		#endif

		#if (1) // 10 > 0

			FCL_DEL_COUNT = 0;
			FCL_OLD_SWITCHVAL = FCL_SWITCHVAL;

			while (FCL_DEL_COUNT < 10)
			{

				FCI_DELAYBYTE_MS(1);

				FCL_SWITCHVAL = FCP_GET(B, B, 0x4, 0x2);

				#if (0) // 0 == 1

				//Code has been optimised out by the pre-processor
				// #else

				#endif

				if (FCL_SWITCHVAL == FCL_OLD_SWITCHVAL)
				{

					FCL_DEL_COUNT = FCL_DEL_COUNT + 1;

				} else {

					FCL_DEL_COUNT = 0;

				}

				FCL_OLD_SWITCHVAL = FCL_SWITCHVAL;


			}

		// #else

		//Code has been optimised out by the pre-processor
		#endif


		if ((FCL_SWITCHVAL == 0) == 0) break;
	}

}

/*=----------------------------------------------------------------------=*\
   Use :Waits until the switch is in state 'low'
       :The interpretation of 'high' depends on the polarity
\*=----------------------------------------------------------------------=*/
void FCD_05261_switch_base__WaitUntilLow()
{
	//Local variable definitions
	MX_UINT8 FCL_SWITCHVAL; // The state of the pin
	MX_UINT16 FCL_DEL_COUNT;
	MX_UINT8 FCL_OLD_SWITCHVAL;


	while (1)
	{

		FCL_SWITCHVAL = FCP_GET(B, B, 0x4, 0x2);

		#if (0) // 0 == 1

		//Code has been optimised out by the pre-processor
		// #else

		#endif

		#if (1) // 10 > 0

			FCL_DEL_COUNT = 0;
			FCL_OLD_SWITCHVAL = FCL_SWITCHVAL;

			while (FCL_DEL_COUNT < 10)
			{

				FCI_DELAYBYTE_MS(1);

				FCL_SWITCHVAL = FCP_GET(B, B, 0x4, 0x2);

				#if (0) // 0 == 1

				//Code has been optimised out by the pre-processor
				// #else

				#endif

				if (FCL_SWITCHVAL == FCL_OLD_SWITCHVAL)
				{

					FCL_DEL_COUNT = FCL_DEL_COUNT + 1;

				} else {

					FCL_DEL_COUNT = 0;

				}

				FCL_OLD_SWITCHVAL = FCL_SWITCHVAL;


			}

		// #else

		//Code has been optimised out by the pre-processor
		#endif


		if ((FCL_SWITCHVAL != 0) == 0) break;
	}

}


/*========================================================================*\
   Use :Active_sw
       :Macro implementations
\*========================================================================*/

/*========================================================================*\
   Use :component_label1
       :Macro implementations
\*========================================================================*/

/*========================================================================*\
   Use :led_base1
       :Macro implementations
\*========================================================================*/
/*=----------------------------------------------------------------------=*\
   Use :Turn the LED off.
\*=----------------------------------------------------------------------=*/
void FCD_03d92_led_base1__TurnOn()
{

	FCP_SET(B, B, 0x80, 0x7, 0);

}

/*=----------------------------------------------------------------------=*\
   Use :Turn the LED on.
\*=----------------------------------------------------------------------=*/
void FCD_03d92_led_base1__TurnOff()
{

	FCP_SET(B, B, 0x80, 0x7, 1 - 0);

}


/*========================================================================*\
   Use :PowerUp_led
       :Macro implementations
\*========================================================================*/

/*========================================================================*\
   Use :component_label1
       :Macro implementations
\*========================================================================*/

/*========================================================================*\
   Use :led_base1
       :Macro implementations
\*========================================================================*/
/*=----------------------------------------------------------------------=*\
   Use :Turn the LED off.
\*=----------------------------------------------------------------------=*/
void FCD_03d91_led_base1__TurnOn()
{

	FCP_SET(B, B, 0x2, 0x1, 1);

}

/*=----------------------------------------------------------------------=*\
   Use :Turn the LED on.
\*=----------------------------------------------------------------------=*/
void FCD_03d91_led_base1__TurnOff()
{

	FCP_SET(B, B, 0x2, 0x1, 1 - 1);

}


/*========================================================================*\
   Use :SendClay_led
       :Macro implementations
\*========================================================================*/

/*========================================================================*\
   Use :dspbuff_1
       :Macro implementations
\*========================================================================*/

/*========================================================================*\
   Use :DSPDummy
       :Macro implementations
\*========================================================================*/
/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro TickSpecificBuffer:
       :  Idx : MX_UINT8
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_08412_DSPDummy__TickSpecificBuffer(MX_UINT8 FCL_IDX)
{
	//Local variable definitions
	MX_UINT8 FCR_RETVAL;


	FCR_RETVAL = 0;

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro SetBuffer_Idx:
       :  BufferIdx : MX_UINT8
       :  Idx : MX_UINT16
\*=----------------------------------------------------------------------=*/
void FCD_08412_DSPDummy__SetBuffer_Idx(MX_UINT8 FCL_BUFFERIDX, MX_UINT16 FCL_IDX)
{

}

/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro SetBuff:
       :  Idx : MX_UINT8
       :  Data : MX_UINT16
\*=----------------------------------------------------------------------=*/
void FCD_08412_DSPDummy__SetBuff(MX_UINT8 FCL_IDX, MX_UINT16 FCL_DATA)
{

}

/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro GetBuff:
       :  Idx : MX_UINT8
       :
       :Returns : MX_UINT16
\*=----------------------------------------------------------------------=*/
MX_UINT16 FCD_08412_DSPDummy__GetBuff(MX_UINT8 FCL_IDX)
{
	//Local variable definitions
	MX_UINT16 FCR_RETVAL;


	FCR_RETVAL = 0;

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_08412_DSPDummy__TickAllBuffers()
{
	//Local variable definitions
	MX_UINT8 FCR_RETVAL;


	FCR_RETVAL = 0;

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :
\*=----------------------------------------------------------------------=*/
void FCD_08412_DSPDummy__Initialise()
{

}


/*========================================================================*\
   Use :DSPInput1
       :Macro implementations
\*========================================================================*/
/*=----------------------------------------------------------------------=*\
   Use :Adds a single byte value to the current location in the specified buffer and scales it appropriatley to suit the buffer.
       :
       :Parameters for macro AddAsByteTick:
       :  Data : MX_UINT8
\*=----------------------------------------------------------------------=*/
void FCD_0b9a1_DSPInput1__AddAsByteTick(MX_UINT8 FCL_DATA)
{

	#if (1) // 001 == 1

		#if (1) // 1 == 1

			SBUFF_1_(0, (FCL_DATA << 8));

		#else

		//Code has been optimised out by the pre-processor
		#endif

	#else

	//Code has been optimised out by the pre-processor
	#endif

}

/*=----------------------------------------------------------------------=*\
   Use :Adds a single unsigned int value to the current location in the specified buffer and scales it appropriatley to suit the buffer.
       :
       :Parameters for macro AddAsUINTTick:
       :  Data : MX_UINT16
\*=----------------------------------------------------------------------=*/
void FCD_0b9a1_DSPInput1__AddAsUINTTick(MX_UINT16 FCL_DATA)
{

	#if (1) // 001 == 1

		#if (1) // 1 == 1

			SBUFF_1_(0, FCL_DATA);

		#else

		//Code has been optimised out by the pre-processor
		#endif

	#else

	//Code has been optimised out by the pre-processor
	#endif

}

/*=----------------------------------------------------------------------=*\
   Use :Adds an array of byte values to the specified buffer and scales them appropriatley to suit the buffer.
       :
       :Parameters for macro AddToBuffer:
       :  Data[20] : MX_CHAR (by-ref)
\*=----------------------------------------------------------------------=*/
void FCD_0b9a1_DSPInput1__AddToBuffer(MX_CHAR *FCL_DATA, MX_UINT16 FCLsz_DATA)
{
	//Local variable definitions
	MX_UINT16 FCL_IDX = (0x0);


	while (FCL_IDX < 16)
	{

		FCD_032d1_DSPSystem1__SetBuffer_Idx(0, FCL_IDX);

		#if (001)

			#if (1)

				SBUFF_1_(0, (FCL_DATA[FCL_IDX] << 8));

			#else

			//Code has been optimised out by the pre-processor
			#endif

		#else

		//Code has been optimised out by the pre-processor
		#endif

		FCL_IDX = FCL_IDX + 1;


	}

}

/*=----------------------------------------------------------------------=*\
   Use :Adds a single signed integer value to the current location in the specified buffer and scales it appropriatley to suit the buffer.
       :
       :Parameters for macro AddAsSINTTick:
       :  Data : MX_SINT16
\*=----------------------------------------------------------------------=*/
void FCD_0b9a1_DSPInput1__AddAsSINTTick(MX_SINT16 FCL_DATA)
{

	#if (1) // 001 == 1

		#if (1) // 1 == 1

			SBUFF_1_(0, (FCL_DATA + 32768));

		#else

		//Code has been optimised out by the pre-processor
		#endif

	#else

	//Code has been optimised out by the pre-processor
	#endif

}

/*=----------------------------------------------------------------------=*\
   Use :Adds a value to the current location in the specified buffer as is and without scaling.
       :
       :Parameters for macro AddRawTick:
       :  Data : MX_UINT16
\*=----------------------------------------------------------------------=*/
void FCD_0b9a1_DSPInput1__AddRawTick(MX_UINT16 FCL_DATA)
{

	SBUFF_1_(0, FCL_DATA);

}


/*========================================================================*\
   Use :fcdhelper
       :Macro implementations
\*========================================================================*/

/*========================================================================*\
   Use :cal_adc
       :Macro implementations
\*========================================================================*/

/*========================================================================*\
   Use :adc_base
       :Macro implementations
\*========================================================================*/
/*=----------------------------------------------------------------------=*\
   Use :Background call to read the ADC at full bit depth
       :Call Enable() first
       :
       :Returns : MX_UINT16
\*=----------------------------------------------------------------------=*/
MX_UINT16 FCD_08f41_adc_base__RawSampleInt()
{
	//Local variable definitions
	MX_UINT16 FCR_RETVAL;


	FCR_RETVAL = FC_CAL_ADC_Sample(1);

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Background call to read the ADC as a byte average sample over time
       :Call Enable() before this
       :
       :Parameters for macro RawAverageByte:
       :  NumSamples : MX_UINT8
       :  DelayUs : Number of micro seconds in between taking each sample
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_08f41_adc_base__RawAverageByte(MX_UINT8 FCL_NUMSAMPLES, MX_UINT8 FCL_DELAYUS)
{
	//Local variable definitions
	MX_UINT16 FCL_AVERAGE = (0x0);
	MX_UINT8 FCL_COUNT = (0x0);
	MX_UINT8 FCR_RETVAL;


	if (FCL_DELAYUS > 0)
	{

		while (FCL_COUNT < FCL_NUMSAMPLES)
		{

			FCL_AVERAGE = FCL_AVERAGE + FC_CAL_ADC_Sample(0);
			FCL_COUNT = FCL_COUNT + 1;

			FCI_DELAYBYTE_US(FCL_DELAYUS);


		}

	} else {

		while (FCL_COUNT < FCL_NUMSAMPLES)
		{

			FCL_AVERAGE = FCL_AVERAGE + FC_CAL_ADC_Sample(0);
			FCL_COUNT = FCL_COUNT + 1;


		}

	}

	FCR_RETVAL = FCL_AVERAGE / FCL_COUNT;

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Reads the ADC as a direct voltage and returns as as tring
       :
       :Returns : MX_CHAR
\*=----------------------------------------------------------------------=*/
void FCD_08f41_adc_base__GetString(MX_CHAR *FCR_RETVAL, MX_UINT16 FCRsz_RETVAL)
{
	//Local variable definitions
	MX_FLOAT FCL_SAMPLE;


	FCL_SAMPLE = FCD_08f41_adc_base__GetVoltage();

	FCI_FLOAT_TO_STRING(FCL_SAMPLE, FCV_PRECISION, FCR_RETVAL,20);

}

/*=----------------------------------------------------------------------=*\
   Use :Function call to read the ADC as a byte average sample over time
       :
       :Parameters for macro GetAverageByte:
       :  NumSamples : MX_UINT8
       :  DelayUs : Number of micro seconds in between taking each sample
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_08f41_adc_base__GetAverageByte(MX_UINT8 FCL_NUMSAMPLES, MX_UINT8 FCL_DELAYUS)
{
	//Local variable definitions
	MX_UINT8 FCR_RETVAL;


	FC_CAL_ADC_Enable(0, 3, 0, 40);

	FCR_RETVAL = FCD_08f41_adc_base__RawAverageByte(FCL_NUMSAMPLES, FCL_DELAYUS);

	FC_CAL_ADC_Disable();

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Background call to read the ADC as a full width average sample over time
       :Call Enable() before this
       :
       :Parameters for macro RawAverageInt:
       :  NumSamples : MX_UINT8
       :  DelayUs : MX_UINT8
       :
       :Returns : MX_SINT16
\*=----------------------------------------------------------------------=*/
MX_SINT16 FCD_08f41_adc_base__RawAverageInt(MX_UINT8 FCL_NUMSAMPLES, MX_UINT8 FCL_DELAYUS)
{
	//Local variable definitions
	MX_UINT32 FCL_AVERAGE = (0x0);
	MX_UINT8 FCL_COUNT = (0x0);
	MX_SINT16 FCR_RETVAL;


	if (FCL_DELAYUS > 0)
	{

		while (FCL_COUNT < FCL_NUMSAMPLES)
		{

			FCL_AVERAGE = FCL_AVERAGE + FC_CAL_ADC_Sample(1);
			FCL_COUNT = FCL_COUNT + 1;

			FCI_DELAYBYTE_US(FCL_DELAYUS);


		}

	} else {

		while (FCL_COUNT < FCL_NUMSAMPLES)
		{

			FCL_AVERAGE = FCL_AVERAGE + FC_CAL_ADC_Sample(1);
			FCL_COUNT = FCL_COUNT + 1;


		}

	}

	FCR_RETVAL = FCL_AVERAGE / FCL_COUNT;

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Function call to read the ADC as a full width average sample over time
       :
       :Parameters for macro GetAverageInt:
       :  NumSamples : MX_UINT8
       :  DelayUs : Number of micro seconds in between taking each sample
       :
       :Returns : MX_UINT16
\*=----------------------------------------------------------------------=*/
MX_UINT16 FCD_08f41_adc_base__GetAverageInt(MX_UINT8 FCL_NUMSAMPLES, MX_UINT8 FCL_DELAYUS)
{
	//Local variable definitions
	MX_UINT16 FCR_RETVAL;


	FC_CAL_ADC_Enable(0, 3, 0, 40);

	FCR_RETVAL = FCD_08f41_adc_base__RawAverageInt(FCL_NUMSAMPLES, FCL_DELAYUS);

	FC_CAL_ADC_Disable();

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Reads the ADC as a direct voltage
       :
       :Returns : MX_FLOAT
\*=----------------------------------------------------------------------=*/
MX_FLOAT FCD_08f41_adc_base__GetVoltage()
{
	//Local variable definitions
	MX_UINT16 FCL_SAMPLE;
	MX_FLOAT FCR_RETVAL;


	FC_CAL_ADC_Enable(0, 3, 0, 40);

	FCL_SAMPLE = FC_CAL_ADC_Sample(1);

	FCR_RETVAL = flt_mul(flt_fromi(FCL_SAMPLE), 0.000732);

	FC_CAL_ADC_Disable();

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Enables and configures the ADC channel to be an analogue input.
       :Only one ADC channel can be enabled at a time. Any RAW functions will reference the last enabled channel only.
\*=----------------------------------------------------------------------=*/
void FCD_08f41_adc_base__RawEnable()
{

	FC_CAL_ADC_Enable(0, 3, 0, 40);

}

/*=----------------------------------------------------------------------=*\
   Use :Background call to read the ADC as a byte
       :Call Enable() before this
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_08f41_adc_base__RawSampleByte()
{
	//Local variable definitions
	MX_UINT8 FCR_RETVAL;


	FCR_RETVAL = FC_CAL_ADC_Sample(0);

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Blocking call to read the ADC at full bit depth
       :
       :Returns : MX_UINT16
\*=----------------------------------------------------------------------=*/
MX_UINT16 FCD_08f41_adc_base__GetInt()
{
	//Local variable definitions
	MX_UINT16 FCR_RETVAL;


	FC_CAL_ADC_Enable(0, 3, 0, 40);

	FCR_RETVAL = FC_CAL_ADC_Sample(1);

	FC_CAL_ADC_Disable();

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Disables the previously enabled ADC channel and converts back to digital mode.
\*=----------------------------------------------------------------------=*/
void FCD_08f41_adc_base__RawDisable()
{

	FC_CAL_ADC_Disable();

}

/*=----------------------------------------------------------------------=*\
   Use :Blocking call to read the ADC as a byte
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_08f41_adc_base__GetByte()
{
	//Local variable definitions
	MX_UINT8 FCR_RETVAL;


	FC_CAL_ADC_Enable(0, 3, 0, 40);

	FCR_RETVAL = FC_CAL_ADC_Sample(0);

	FC_CAL_ADC_Disable();

	return (FCR_RETVAL);

}


/*========================================================================*\
   Use :Voice_Input
       :Macro implementations
\*========================================================================*/

/*========================================================================*\
   Use :dspbuff_2
       :Macro implementations
\*========================================================================*/

/*========================================================================*\
   Use :dspbuff_1
       :Macro implementations
\*========================================================================*/

/*========================================================================*\
   Use :DSPDummy
       :Macro implementations
\*========================================================================*/
/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro TickSpecificBuffer:
       :  Idx : MX_UINT8
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_08411_DSPDummy__TickSpecificBuffer(MX_UINT8 FCL_IDX)
{
	//Local variable definitions
	MX_UINT8 FCR_RETVAL;


	FCR_RETVAL = 0;

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro SetBuffer_Idx:
       :  BufferIdx : MX_UINT8
       :  Idx : MX_UINT16
\*=----------------------------------------------------------------------=*/
void FCD_08411_DSPDummy__SetBuffer_Idx(MX_UINT8 FCL_BUFFERIDX, MX_UINT16 FCL_IDX)
{

}

/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro SetBuff:
       :  Idx : MX_UINT8
       :  Data : MX_UINT16
\*=----------------------------------------------------------------------=*/
void FCD_08411_DSPDummy__SetBuff(MX_UINT8 FCL_IDX, MX_UINT16 FCL_DATA)
{

}

/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro GetBuff:
       :  Idx : MX_UINT8
       :
       :Returns : MX_UINT16
\*=----------------------------------------------------------------------=*/
MX_UINT16 FCD_08411_DSPDummy__GetBuff(MX_UINT8 FCL_IDX)
{
	//Local variable definitions
	MX_UINT16 FCR_RETVAL;


	FCR_RETVAL = 0;

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_08411_DSPDummy__TickAllBuffers()
{
	//Local variable definitions
	MX_UINT8 FCR_RETVAL;


	FCR_RETVAL = 0;

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :
\*=----------------------------------------------------------------------=*/
void FCD_08411_DSPDummy__Initialise()
{

}


/*========================================================================*\
   Use :DSPFilter1
       :Macro implementations
\*========================================================================*/
/*=----------------------------------------------------------------------=*\
   Use :Performs the filter operation to the contents of the entire buffer in one go.
\*=----------------------------------------------------------------------=*/
void FCD_0bc81_DSPFilter1__Filter()
{
	//Local variable definitions
	MX_UINT16 FCL_IDX = (0x0);
	MX_UINT16 FCL_TEMP;
	MX_UINT8 FCL_INNERIDX = (0x0);
	MX_SINT16 FCL_STEMP;


	while (FCL_IDX < 16)
	{

		FCD_032d1_DSPSystem1__SetBuffer_Idx(0, FCL_IDX);

		FCD_032d1_DSPSystem1__SetBuffer_Idx(1, FCL_IDX);

		#if (0) // 1 == 0

		//Code has been optimised out by the pre-processor
		// #else

		#endif

		#if (1) // 1 == 1

			#if (0) // 001 == 0

			//Code has been optimised out by the pre-processor
			#else

				#if (0) // 1 == 0

				//Code has been optimised out by the pre-processor
				#else

					FCL_STEMP = BUFF_1_(0);

				#endif

			#endif

			FCL_STEMP = FCL_STEMP - FCV_0bc81_DSPFilter1__RESPONSE_HP_U;

			#if (0) // 0 > 0

			//Code has been optimised out by the pre-processor
			#else

				FCL_STEMP = FCL_STEMP / 5;

			#endif

			FCV_0bc81_DSPFilter1__RESPONSE_HP_U = FCV_0bc81_DSPFilter1__RESPONSE_HP_U + FCL_STEMP;

			#if (0) // 001 == 0

			//Code has been optimised out by the pre-processor
			#else

				SBUFF_1_(1, ((BUFF_1_(0) - FCV_0bc81_DSPFilter1__RESPONSE_HP_U) + 32768));

			#endif

		// #else

		//Code has been optimised out by the pre-processor
		#endif

		#if (0) // 1 == 2

		//Code has been optimised out by the pre-processor
		// #else

		#endif

		#if (0) // 1 == 3

		//Code has been optimised out by the pre-processor
		// #else

		#endif

		#if (0) // 1 == 4

		//Code has been optimised out by the pre-processor
		// #else

		#endif

		#if (0) // 1 == 5

		//Code has been optimised out by the pre-processor
		// #else

		#endif

		#if (0) // 1 == 6

		//Code has been optimised out by the pre-processor
		// #else

		#endif

		FCL_IDX = FCL_IDX + 1;


	}

}

/*=----------------------------------------------------------------------=*\
   Use :Performs the filter operation to the current value in the buffer.
\*=----------------------------------------------------------------------=*/
void FCD_0bc81_DSPFilter1__FilterTick()
{
	//Local variable definitions
	MX_UINT8 FCL_INNERIDX;
	MX_UINT16 FCL_UTEMP;
	MX_SINT16 FCL_STEMP;


	#if (0) // 1 == 0

	//Code has been optimised out by the pre-processor
	// #else

	#endif

	#if (1) // 1 == 1

		#if (0) // 001 == 0

		//Code has been optimised out by the pre-processor
		#else

			#if (0) // 1 == 0

			//Code has been optimised out by the pre-processor
			#else

				FCL_STEMP = BUFF_1_(0);

			#endif

		#endif

		FCL_STEMP = FCL_STEMP - FCV_0bc81_DSPFilter1__RESPONSE_HP_U;

		#if (0) // 0 > 0

		//Code has been optimised out by the pre-processor
		#else

			FCL_STEMP = FCL_STEMP / 5;

		#endif

		FCV_0bc81_DSPFilter1__RESPONSE_HP_U = FCV_0bc81_DSPFilter1__RESPONSE_HP_U + FCL_STEMP;

		#if (0) // 001 == 0

		//Code has been optimised out by the pre-processor
		#else

			SBUFF_1_(1, ((BUFF_1_(0) - FCV_0bc81_DSPFilter1__RESPONSE_HP_U) + 32768));

		#endif

	// #else

	//Code has been optimised out by the pre-processor
	#endif

	#if (0) // 1 == 2

	//Code has been optimised out by the pre-processor
	// #else

	#endif

	#if (0) // 1 == 3

	//Code has been optimised out by the pre-processor
	// #else

	#endif

	#if (0) // 1 == 4

	//Code has been optimised out by the pre-processor
	// #else

	#endif

	#if (0) // 1 == 5

	//Code has been optimised out by the pre-processor
	// #else

	#endif

	#if (0) // 1 == 6

	//Code has been optimised out by the pre-processor
	// #else

	#endif

}


/*========================================================================*\
   Use :DSPSystem1
       :Macro implementations
\*========================================================================*/
/*=----------------------------------------------------------------------=*\
   Use :Moves to the next segment of a specific DSP system buffer. 
       :Returns the first buffer index if the end of a buffer has been reached.
       :
       :Parameters for macro TickSpecificBuffer:
       :  idx : Specifies which buffer index to increment (0:A - 7:H)
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_032d1_DSPSystem1__TickSpecificBuffer(MX_UINT8 FCL_IDX)
{
	//Local variable definitions
	MX_UINT8 FCR_RETVAL;


	FCR_RETVAL = 0;

	if (FCL_IDX < 2)
	{

		switch (FCL_IDX)
		{
			case 1:
			{
				#if (1) // 2 > 1

					FCV_032d1_DSPSystem1__BUFF_B_IDX = FCV_032d1_DSPSystem1__BUFF_B_IDX + 1;

					if (FCV_032d1_DSPSystem1__BUFF_B_IDX == 16)
					{

						FCV_032d1_DSPSystem1__BUFF_B_IDX = 0;

						FCR_RETVAL = 2;

					// } else {

					}

				// #else

				//Code has been optimised out by the pre-processor
				#endif

				break;
			}
			case 2:
			{
				#if (0) // 2 > 2

				//Code has been optimised out by the pre-processor
				// #else

				#endif

				break;
			}
			case 3:
			{
				#if (0) // 2 > 3

				//Code has been optimised out by the pre-processor
				// #else

				#endif

				break;
			}
			case 4:
			{
				#if (0) // 2 > 4

				//Code has been optimised out by the pre-processor
				// #else

				#endif

				break;
			}
			case 5:
			{
				#if (0) // 2 > 5

				//Code has been optimised out by the pre-processor
				// #else

				#endif

				break;
			}
			case 6:
			{
				#if (0) // 2 > 6

				//Code has been optimised out by the pre-processor
				// #else

				#endif

				break;
			}
			case 7:
			{
				#if (0) // 2 > 7

				//Code has been optimised out by the pre-processor
				// #else

				#endif

				break;
			}
			default:
			{
				#if (1) // 2 > 0

					FCV_032d1_DSPSystem1__BUFF_A_IDX = FCV_032d1_DSPSystem1__BUFF_A_IDX + 1;

					if (FCV_032d1_DSPSystem1__BUFF_A_IDX == 16)
					{

						FCV_032d1_DSPSystem1__BUFF_A_IDX = 0;

						FCR_RETVAL = 1;

					// } else {

					}

				// #else

				//Code has been optimised out by the pre-processor
				#endif

			}
		}

	// } else {

	}

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Allows manual control over the buffer index.
       :
       :Parameters for macro SetBuffer_Idx:
       :  BufferIdx : Specifies which buffer to control (0:A - 7:H)
       :  Idx : Raw index value to assign to the buffer
\*=----------------------------------------------------------------------=*/
void FCD_032d1_DSPSystem1__SetBuffer_Idx(MX_UINT8 FCL_BUFFERIDX, MX_UINT16 FCL_IDX)
{

	if (FCL_BUFFERIDX < 2)
	{

		switch (FCL_BUFFERIDX)
		{
			case 1:
			{
				#if (1) // 2 > 1

					FCV_032d1_DSPSystem1__BUFF_B_IDX = FCL_IDX;

					if (FCV_032d1_DSPSystem1__BUFF_B_IDX >= 16)
					{


						FCV_032d1_DSPSystem1__BUFF_B_IDX = FCV_032d1_DSPSystem1__BUFF_B_IDX - 16;

					// } else {

					}

				// #else

				//Code has been optimised out by the pre-processor
				#endif

				break;
			}
			case 2:
			{
				#if (0) // 2 > 2

				//Code has been optimised out by the pre-processor
				// #else

				#endif

				break;
			}
			case 3:
			{
				#if (0) // 2 > 3

				//Code has been optimised out by the pre-processor
				// #else

				#endif

				break;
			}
			case 4:
			{
				#if (0) // 2 > 4

				//Code has been optimised out by the pre-processor
				// #else

				#endif

				break;
			}
			case 5:
			{
				#if (0) // 2 > 5

				//Code has been optimised out by the pre-processor
				// #else

				#endif

				break;
			}
			case 6:
			{
				#if (0) // 2 > 6

				//Code has been optimised out by the pre-processor
				// #else

				#endif

				break;
			}
			case 7:
			{
				#if (0) // 2 > 7

				//Code has been optimised out by the pre-processor
				// #else

				#endif

				break;
			}
			default:
			{
				#if (1) // 2 > 0

					FCV_032d1_DSPSystem1__BUFF_A_IDX = FCL_IDX;

					if (FCV_032d1_DSPSystem1__BUFF_A_IDX >= 16)
					{


						FCV_032d1_DSPSystem1__BUFF_A_IDX = FCV_032d1_DSPSystem1__BUFF_A_IDX - 16;

					// } else {

					}

				// #else

				//Code has been optimised out by the pre-processor
				#endif

			}
		}

	// } else {

	}

}

/*=----------------------------------------------------------------------=*\
   Use :Moves to the next segment of each DSP system buffer. 
       :Returns the first buffer index if the end of a buffer has been reached.
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_032d1_DSPSystem1__TickAllBuffers()
{
	//Local variable definitions
	MX_UINT8 FCR_RETVAL;


	FCR_RETVAL = 0;

	FCV_032d1_DSPSystem1__BUFF_A_IDX = FCV_032d1_DSPSystem1__BUFF_A_IDX + 1;

	if (FCV_032d1_DSPSystem1__BUFF_A_IDX == 16)
	{

		FCV_032d1_DSPSystem1__BUFF_A_IDX = 0;

		FCR_RETVAL = 1;

	// } else {

	}

	#if (1) // 2 > 1

		FCV_032d1_DSPSystem1__BUFF_B_IDX = FCV_032d1_DSPSystem1__BUFF_B_IDX + 1;

		if (FCV_032d1_DSPSystem1__BUFF_B_IDX == 16)
		{

			FCV_032d1_DSPSystem1__BUFF_B_IDX = 0;

			FCR_RETVAL = 1;

		// } else {

		}

	// #else

	//Code has been optimised out by the pre-processor
	#endif

	#if (0) // 2 > 2

	//Code has been optimised out by the pre-processor
	// #else

	#endif

	#if (0) // 2 > 3

	//Code has been optimised out by the pre-processor
	// #else

	#endif

	#if (0) // 2 > 4

	//Code has been optimised out by the pre-processor
	// #else

	#endif

	#if (0) // 2 > 5

	//Code has been optimised out by the pre-processor
	// #else

	#endif

	#if (0) // 2 > 6

	//Code has been optimised out by the pre-processor
	// #else

	#endif

	#if (0) // 2 > 7

	//Code has been optimised out by the pre-processor
	// #else

	#endif

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Initialises the DSP System allowing DSP components to run correctly.
\*=----------------------------------------------------------------------=*/
void FCD_032d1_DSPSystem1__Initialise()
{
	//Local variable definitions
	MX_UINT8 FCL_INSTANCE;




	#if (1) // 2 > 0




	// #else

	//Code has been optimised out by the pre-processor
	#endif

	#if (1) // 2 > 1




	// #else

	//Code has been optimised out by the pre-processor
	#endif

	#if (0) // 2 > 2

	//Code has been optimised out by the pre-processor
	// #else

	#endif

	#if (0) // 2 > 3

	//Code has been optimised out by the pre-processor
	// #else

	#endif

	#if (0) // 2 > 4

	//Code has been optimised out by the pre-processor
	// #else

	#endif

	#if (0) // 2 > 5

	//Code has been optimised out by the pre-processor
	// #else

	#endif

	#if (0) // 2 > 6

	//Code has been optimised out by the pre-processor
	// #else

	#endif

	#if (0) // 2 > 7

	//Code has been optimised out by the pre-processor
	// #else

	#endif

}


/*========================================================================*\
   Use :panel
       :Macro implementations
\*========================================================================*/
/*=----------------------------------------------------------------------=*\
   Use :
\*=----------------------------------------------------------------------=*/
void FCM_send_clay_off()
{

	// Call Component Macro
	// Call Component Macro: SendClay_led::TurnOff()
	FCD_083d1_SendClay_led__TurnOff();

	// Interrupt
	// Interrupt: Disable TMR2
	IEC0bits.T2IE = 0;

}

/*=----------------------------------------------------------------------=*\
   Use :
\*=----------------------------------------------------------------------=*/
void FCM_timer_tick()
{

	// 12 bit audio input
	// Call Component Macro: tempData=Voice_Input::RawSampleInt()
	FCV_TEMPDATA = FCD_00101_Voice_Input__RawSampleInt();

	// Calculation
	// Calculation:
	//  Data = tempData << 4
	FCV_DATA = FCV_TEMPDATA << 4;

	// Call Component Macro
	// Call Component Macro: DSPInput1::AddRawTick(Data)
	FCD_0b9a1_DSPInput1__AddRawTick(FCV_DATA);

	// Filter Signal
	// Call Component Macro: DSPFilter1::FilterTick()
	FCD_0bc81_DSPFilter1__FilterTick();

	// Call Component Macro
	// Call Component Macro: Peak=DSPLevel1::ReadPeakTick()
	FCV_PEAK = FCD_039e1_DSPLevel1__ReadPeakTick();

	// Call Component Macro
	// Call Component Macro: Trough=DSPLevel1::ReadTroughTick()
	FCV_TROUGH = FCD_039e1_DSPLevel1__ReadTroughTick();

	// Calculation
	// Calculation:
	//  call = (Peak - Trough)
	FCV_CALL = (FCV_PEAK - FCV_TROUGH);

	// Call Component Macro
	// Call Component Macro: DSPSystem1::TickAllBuffers()
	FCD_032d1_DSPSystem1__TickAllBuffers();

	// Calculation
	// Calculation:
	//  trigger = 1
	FCV_TRIGGER = 1;

}

/*=----------------------------------------------------------------------=*\
   Use :
\*=----------------------------------------------------------------------=*/
void FCM_power_up()
{

	// Call Component Macro
	// Call Component Macro: PowerUp_led::TurnOn()
	FCD_083d2_PowerUp_led__TurnOn();

	// Call Component Macro
	// Call Component Macro: PowerUp_led::TurnOff()
	FCD_083d2_PowerUp_led__TurnOff();

	// Delay
	// Delay: 2 s
	FCI_DELAYBYTE_S(2);

	// Enable Timer Tick 4800
	// Interrupt: Enable TMR1
	T1CON = ((T1CON & 0xfffd) | 0x8000);
	T1CON &= 0xff0f;
	PR1=1535-1;
	IEC0bits.T1IE = 1;

}



/*========================================================================*\
   Use :Main
\*========================================================================*/
int main()
{
ADPCFG = 0xffff;


	// Start_up Delay
	// Delay: 100 ms
	FCI_DELAYBYTE_MS(100);

	// Call Component Macro
	// Call Component Macro: DSPSystem1::Initialise()
	FCD_032d1_DSPSystem1__Initialise();

	// Call Component Macro
	// Call Component Macro: SendClay_led::TurnOff()
	FCD_083d1_SendClay_led__TurnOff();

	// Call Component Macro
	// Call Component Macro: Voice_Input::RawEnable()
	FCD_00101_Voice_Input__RawEnable();

	// Call Macro
	// Call Macro: power_up()
	FCM_power_up();

	// Loop
	// Loop: While 1
	while (1)
	{

		// One Time
		// Decision: trigger?
		if (FCV_TRIGGER)
		{

			//  input pin 6
			// Call Component Macro: active=Active_sw::ReadState()
			FCV_ACTIVE = FCD_06f01_Active_sw__ReadState();

			// Decision
			// Decision: active = 1?
			if (FCV_ACTIVE == 1)
			{

				// Volume Treshhold
				// Decision: call > 5000?
				if (FCV_CALL > 5000)
				{

					// Call Component Macro
					// Call Component Macro: SendClay_led::TurnOn()
					FCD_083d1_SendClay_led__TurnOn();

					// Interrupt
					// Interrupt: Enable TMR2
					T2CON = ((T2CON & 0xfffd) | 0x8000);
					T2CON = ((T2CON & 0xff0f) | 0x0030);
					PR2=7000-1;
					IEC0bits.T2IE = 1;

				// } else {

				}

			// } else {

			}

			// Calculation
			// Calculation:
			//  trigger = 0
			FCV_TRIGGER = 0;

		// } else {

		}


	}

	mainendloop: goto mainendloop;
	return 0;
}



/*========================================================================*\
   Use :Interrupt
\*========================================================================*/

	//Handler code for [TMR1]
	#ifndef MX_ISR_T1
	#define MX_ISR_T1
	void _ISR _T1Interrupt(void)
	{
		IFS0bits.T1IF = 0;
		FCM_timer_tick();
	}
	#else
	#warning "This interrupt has previously been enabled, so the macro <timer_tick> may never get called."
	#endif


	//Handler code for [TMR2]
	#ifndef MX_ISR_T2
	#define MX_ISR_T2
	void _ISR _T2Interrupt(void)
	{
		IFS0bits.T2IF = 0;
		FCM_send_clay_off();
	}
	#else
	#warning "This interrupt has previously been enabled, so the macro <send_clay_off> may never get called."
	#endif





