/*
 * AgcCalculator.h
 *
 */

#ifndef AGCCALCULATOR_H_
#define AGCCALCULATOR_H_


class AgcCalculator
{
public:
	enum agc_mode_t { agc_null, search_as, search_aa, track_aa};

	static void agcReset(unsigned int agc_regimation_batches);

	static void agcMode(agc_mode_t agcMode);

	enum pred_result_type_t
	{
		res_disabled,
		res_dsp_prediction,
		res_local_prediction
	};
	static float predictAttenuationDb(pred_result_type_t* ptype, float agc_estimation_db, float agc_predicted_db, float dsp_att_k, unsigned int agc_batch, unsigned int pred_batch, unsigned int batch_duration_us, unsigned int proc_time_us);

	static int agcPipe();

	static float predictionTime();
	static bool localPrediction();
};


#endif /* AGCCALCULATOR_H_ */
