#ifndef __FADER_H
#define __FADER_H

//****************** Low Level Includes ***********************//
#include "stm32f0xx.h"
#include "stm32f0xx_rcc.h"
#include "stm32f0xx_gpio.h"
#include "stm32f0xx_adc.h"
#include "stm32f0xx_dma.h"
#include "stm32f0xx_tim.h"
//*************************************************************//

//****************** System Level Includes ********************//
#include "string.h"
#include "math.h"
//*************************************************************//

//****************** Driver Level Includes ********************//
#include "ISPC.h"
#include "PCA9685.h"
//*************************************************************//

//****************** Project Level Includes *******************//
#include "Defines.h"
#include "ReturnValues.h"
//*************************************************************//

//****************** Public Functions *************************//
void Fader_Init (void);
void Fader_Update_Values (void);
void Fader_Update_Registers (uint16_t FaderValue, uint8_t FaderCount);
void Fader_Update_Registers_1 (void);
//*************************************************************//

//************************* Defines  **************************//

#define ADC1_DR_Address             				0x40012440

#define FADER_1										GPIO_Pin_0
#define FADER_2										GPIO_Pin_1
#define FADER_3										GPIO_Pin_2
#define FADER_4										GPIO_Pin_3
#define FADER_5										GPIO_Pin_4
#define FADER_6										GPIO_Pin_5
#define FADER_7										GPIO_Pin_6
#define FADER_8										GPIO_Pin_7
#define FADER_9										GPIO_Pin_0
#define FADER_10									GPIO_Pin_1
#define FADER_11									GPIO_Pin_0
#define FADER_12									GPIO_Pin_1
#define FADER_13									GPIO_Pin_2
#define FADER_14									GPIO_Pin_3
#define FADER_15									GPIO_Pin_4
#define FADER_16									GPIO_Pin_5


/*
 * Averaging 128, Sample Time 13.5 -> 6.5 ms
 * Averaging 96, Sample Time 13.5 -> 4.95 ms
 */

#define ADC_AVERAGING								64
#define ADC_AVG_SHIFT								6		//(ld(ADC_AVERAGING))
#define NUMBER_OF_FADER								16
#define FADER_VALUE_CHANGE_THRESHHOLD				1
#define FADER_MAX_VALUE								4095
#define FADER_MIN_VALUE								0
#define MINIMUM_FADERCHANGE_THRESHOLD				1

#endif
//********************* End of File ****************************//
