/*
 * r_freq.h
 *
 *  Created on: 08-05-2014
 *      Author: Pawel Skoczykloda
 */

#ifndef R_FREQ_H_
#define R_FREQ_H_
/*
#include "pawel_usun_to.h"
*/
#include "tdefs.h"


struct dane_wewnetrzne_r_freq
{
	short lp; ///<licznik filtracji pobudzen
	short lp_max;    
    u32 licz_t_; // licznik czasu od pobudzenia dla przekaznika czasowego
	u8 pob;///< pobudzenie przekaznika
	u8 zad;///< zadzialanie przekaznika
};

struct nastawy_przeliczone_r_freq
{    
    float rozruch;
    float odpad;  
    u32 t_; ///< opoznienie czasu zadzialania przekaznika
    u8 on_; ///< wartosc nastawy aktywnosci przekaznika 1- aktywny
    u8 w_; ///< wartosc nastawy dzialania na wylaczeniee 1 - wylaczenie 0 - tylko sygnalizacja
    u8 bl_; ///< wartosc nastawy aktywnosci blokady dzialania 1- blokada aktywna
    u8 nad_pod;
};
struct r_freq_logic
{
	u8 *stan_bl;
	u8 stan_bl_bit_mask;
	float *I;
	u8 *f_ok;
	u8 f_ok_bit_mask;	
	u8 *test;
	u8 test_bit_mask;
	u8 *W;
	u8 W_bit_mask;
	u8 *Z;
	u8 Z_bit_mask;
	u8 *P;
	u8 P_bit_mask;

	struct nastawy_przeliczone_r_freq nast_;
    struct dane_wewnetrzne_r_freq dw;
};

struct r_freq_io
{
    u32 stan_bl_in;
    u32 I_float_in;
    u32 f_ok_in;
	u32 test_in;

	u32 W_out;
    u32 Z_out;
    u32 P_out;

}__attribute__((__packed__));

struct r_freq_params
{
	u32 bity; ///< nastawy bitowe;
    double Wr_; ///< wartosc nastawy rozruchowej przekaznika w krotnosciach wartosci znamionowej
    double delta_; ///< wartosc nastawy wspolczynnika powrotu
    double t_; ///< wartosc nastawy czasu dzialania w sekundach
    double czas_wlasny_; ///<czas wslany dzialnia
    u32 tryb;
}__attribute__((__packed__));

struct r_freq_args
{
	struct r_freq_io io;
	struct r_freq_params params;
}__attribute__((__packed__));

extern void r_freq_100hz(void *args, void *logic);
extern int r_freq_initlog(void *arguments, void *logic);

#endif /* R_FREQ */
