/*
 * pkw.h
 *
 *  Created on: 19-01-2017
 *      Author: Krzysztof Jakubczyk
 */

#ifndef PKW_H_
#define PKW_H_

#include "tdefs.h"

extern float pkw_mem[8];

struct pkw_logic
{
	u8 *Pwe;
	u8 Pwe_bit_mask;
	u8 *Kas;
	u8 Kas_bit_mask;

	float *kwampl;

	u8 *Pwy;
	u8 Pwy_bit_mask;

	float *licznik;

	u16 Wr; ///< wartosc progowa sygnalizacji
    u8 on; ///< wartosc nastawy aktywnosci PKWa 1- aktywny
    u8 zapis; // wartosc stanu wejscia z poprzedniej iteracji
    u8 later; // wartosc stanu wejscia z poprzedniej iteracji
    float prad;
    u8 id;
};

struct pkw_io
{
	u32 Pwe_in;
	u32 I_float_in;
	u32 Kas_in;
	u32 Pwy_out;
	u32 Licznik_float_out;
}__attribute__((__packed__));

struct pkw_params
{
	u32 bity; ///< nastawy bitowe;
	double Wr_; ///< wartosc progowa sygnalizacji
	double kas; // wartosc przepisywana przy kasowaniu
	u32 id; // id pkw od 0..7
}__attribute__((__packed__));

struct pkw_args
{
	struct pkw_io io;
	struct pkw_params params;
//	u16 crc;
}__attribute__((__packed__));

extern void pkw(void *args, void *logic);
extern void pkw_20hz(void *args, void *logic);
extern int pkw_initlog(void *arguments, void *logic);

#endif /* PKW_H_ */
