/*
 * e_cu.h
 *
 *  Created on: 24-06-2016
 *      Author: Krzysztof Jakubczyk
 */

#ifndef E_CU_IN_H_
#define E_CU_IN_H_

#include "tdefs.h"
#include "e_mem1.h"

enum e_cu_zakres
{
        mniej4 = 0,
        od4do8,
        od8do16,
        od16do30_parzyste,
		od16do30_nieparzyste
};

struct e_cu_logic
{
	float *esk_ptr;
	struct e_mem1_wyjscie *we;
	u8 *ok_ptr;
	u8 ok_bit_no;

    enum e_cu_zakres zakres_; ///< zakres bufora pamieci
	short czas;	///< ilosc petli 10ms w oknie calkowania
    short ofset_; ///< przesuniecie danego bufora pamieci
    float Ubl_; ///< wartosc napiecia blokady w krotnosciach napiecia znamionowego
	float Uwe; ///< stala odpowiadajaca napieciu (fazowe/miedzyfazowe)
};

struct e_cu_io
{
	u32 buf_ptr_in;
	u32 esk_float_out;
	u32 ok_out;
}__attribute__((__packed__));

struct e_cu_params
{
	u32 bity;
	double czas_;
	double Ubl_;
}__attribute__((__packed__));

struct e_cu_args
{
	struct e_cu_io io;
	struct e_cu_params params;
//	u16 crc;
}__attribute__((__packed__));

extern void e_cu(void *args, void *logic);
extern void e_cu_20hz(void *args, void *logic);
extern int e_cu_initlog(void *arguments, void *logic);

#endif /* E_CU_H_ */
