#ifndef V_ROTOR_22220_H
#define V_ROTOR_22220_H

#define SIZE_BUF_W    100 //2000

/////// 22220.5
#define SENSORS_NUMBER  10
#define SENSORS_NUMBER_ONLY_IN  6
//#define IMPULSES_PER_TURN (1LL << 13) //Old sensor
#define IMPULSES_PER_TURN 4096  //Lira sensor
//#define ANGLE_RESOLUTION (1LL << 18)    //2^18

typedef struct
{
    int  direct_rotor;
    int  direct_rotor_in1;
    int  direct_rotor_in2;
    int  direct_rotor_angle;
    union {
        unsigned int sens_err1:1;
        unsigned int sens_err2:1;
        unsigned int reserved:14;
    } error;

    _iq iqFsensors[SENSORS_NUMBER];


    _iq iqFdirty;
    _iq iqF;
    _iq iqFout;
    _iq iqFlong;

    _iq iqFrotFromOptica;

    unsigned int error_update_count;
}   ROTOR_VALUE_22220;

#define ROTOR_VALUE_22220_DEFAULTS {0,0,0,0,0, {0,0,0,0,0,0,0,0},0,0,0,0,0,0}


_iq counter_To_iqF2(long count, unsigned int freq_mode);
void sort_F_array(_iq *array, unsigned int size);
_iq impulses_To_iqF(unsigned int time, unsigned int impulses); //time mks. impulses count
void Rotor_measure_22220(void);
void rotorInit_22220(void);
void select_values_wrotor_22220(void);

extern ROTOR_VALUE_22220 rotor_22220;

extern _iq koef_Wout_filter, koef_Wout_filter_long;


#endif