/*
 * e_mem1.h
 *
 *  Created on: 23-06-2016
 *      Author: Krzysztof Jakubczyk
 */

#ifndef E_MEM1_IN_H_
#define E_MEM1_IN_H_

#include "tdefs.h"

struct e_mem1_wyjscie
{
    float srednia_50ms_[80];///< zapamietanie dla czasu 0-4 s
    float srednia_100ms_[40];///< zapamietywanie dla czasu 4-8 s
    float srednia_200ms_[40];///< zapamietywanie dla czasu 8-16 s
    float srednia_400ms_[36];///< zapamietywanie dla czasu 16-30 s
    short idx_50ms_; ///< numer aktualnej probki w pamieci dla zakresu 0-4s
    short idx_100ms_; ///< numer aktualnej probki w pamieci dla zakresu 4-8s
    short idx_200ms_; ///< numer aktualnej probki w pamieci dla zakresu 8-16s
    short idx_400ms_; ///< numer aktualnej probki w pamieci dla zakresu 16-30s
    short czas_ ; ///< czas napelnienia bufora od startu w [10*ms] - ilosc petli 100Hz
};

struct e_mem1_logic
{
	float *esk_ptr;
	u32 *buf_ptr;
	struct e_mem1_wyjscie wy;
    short licznik_petli_1000Hz;
    short licznik_petli_100Hz;
    float srednia_temp; // wartosc posrednia calkowania
    float srednia_z_10ms[5];// zapamietywanie wartosci chwilowych z polokresu
};

struct e_mem1_io
{
	u32 esk_float_in;
	u32 buf_ptr_out;
}__attribute__((__packed__));

struct e_mem1_params
{
}__attribute__((__packed__));

struct e_mem1_args
{
	struct e_mem1_io io;
	struct e_mem1_params params;
//	u16 crc;
}__attribute__((__packed__));

extern void e_mem1(void *args, void *logic);
extern void e_mem1_100hz(void *args, void *logic);
extern int e_mem1_initlog(void *arguments, void *logic);

#endif /* E_MEM1_H_ */
