/*
 * e_avg_1t.h
 *
 *  Created on: 17-05-2016
 *      Author: Krzysztof Jakubczyk
 */

#ifndef E_AVG_1T_H_
#define E_AVG_1T_H_

#include "tdefs.h"

struct e_avg_1t_dane_wew
{
	float war_sr_; ///< wartosc srednia wyprostowana
    u16 il_p_; ///< ilosc pelnych probek w okresie pomiarowym
    float reszta_; ///< odcinek sinusa z poczatku (niepelna probka)
};

struct e_avg_1t_Wyjscie
{
    float Usr; ///< wartosc srednia wyprostowana
    float Uperf; ///< iloraz wartosci sredniej wyprostowanej i czestotliwosci
    float T; ///< Okres przebiegu podany jako krotnosc okresu probkowania
    u16 n; ///< licznik kolejnych przejsc przez 0
};

struct e_avg_1t_logic
{

    float probka_n_minus1; // pamiec poprzedniej probki
    float probka_n_; // probka biezaca
	short licz_zero;
    struct e_avg_1t_dane_wew plus; //zmienne pomocnicze dla obliczen okresu od plusa
    struct e_avg_1t_dane_wew minus; //zmienne pomocnicze dla obliczen okresu od minusa
    struct e_avg_1t_Wyjscie stan_;
	float *probka_ptr;
	float *avg_t_ptr;
};

struct e_avg_1t_io
{
	u32 probka_float_in;
	u32 avg_t_float_out;
}__attribute__((__packed__));

struct e_avg_1t_params
{
}__attribute__((__packed__));

struct e_avg_1t_args
{
	struct e_avg_1t_io io;
	struct e_avg_1t_params params;
//	u16 crc;
}__attribute__((__packed__));

extern void e_avg_1t(void *args, void *logic);
extern int e_avg_1t_initlog(void *arguments, void *logic);

#endif /* E_AVG_1T_H_ */
