/*
 * nr_zacz.h
 *
 *  Created on: 10-02-2021
 *      Author: Sergiusz Trzcionka
 */

#ifndef NR_ZACZ_H_
#define NR_ZACZ_H_

#include "tdefs.h"

enum _typ_nrumer
{
  	BCD = 0,
   	BIN = 1,
   	GRAY = 2
};

struct nr_zacz_logic
{
	struct binary_io b0;
	struct binary_io b1;
	struct binary_io b2;
	struct binary_io b3;
	struct binary_io b4;
	struct binary_io b5;
	float *nr_zacz_out;
	struct binary_io err;
	struct binary_io min;
	struct binary_io max;
	struct binary_io zo_zacz;

	int t_odczytu; /// czas odczytu
	u8 last_choice; /// czas odczytu


};

struct nr_zacz_io
{
	u32 b0_in;
	u32 b1_in;
	u32 b2_in;
	u32 b3_in;
	u32 b4_in;
	u32 b5_in;
	u32 nr_zacz_out;
	u32 err_out;
	u32 min_out;
	u32 max_out;
	u32 zo_zacz_out;
}__attribute__((__packed__));

struct nr_zacz_params
{
	u32 nr_min_zaczep; ///< nastawa minimalnego nr zaczepu
    u32 nr_max_zaczep; ///< nastawa maxymalnego nr zaczepu
    double t_op_zacz;
    u32 typ_numer; /// tryb numeracji BCD/BIN/GRAY
}__attribute__((__packed__));

struct nr_zacz_args
{
	struct nr_zacz_io io;
	struct nr_zacz_params params;
}__attribute__((__packed__));

extern void nr_zacz(void *args, void *logic);
extern int nr_zacz_initlog(void *arguments, void *logic);

#endif /* NR_ZACZ_H_ */
