K22 processor

IOdata/IOdata.h

Committer:
bosko001
Date:
2021-05-16
Revision:
18:6196688e2a94
Parent:
7:4aa3dac73b66

File content as of revision 18:6196688e2a94:

#ifndef IODATA_H
#define IODATA_H



class C_data
{
    char komanda = 0, komanda_buf = 0;
    // char portMin=0x0, pMin = 0xff, pMin_buf = 0xff;
    // char portMax, portMax_buf=0, pMax = 0, pMax_buf = 0;
    // char indikacija = 0x0;
    char ispravnost = 0x3f;
    // char mis = 0;
    char poruka;
    char validnost = 0;
    char podatak;
    char adresa;
    char aktuelna_indikacija = 0;

public:
// volatile   char komanda = 0, komanda_buf = 0;
 volatile    bool komanda_flag = false;
volatile     char pMin, pMin_buf;
volatile     char pMax, pMax_buf;
volatile     char indikacija = 0x0;

    char mis = 0;

    C_data() { clear_pMin(); clear_pMax();   }
    
    // void set_command( char cmnd ) 
    // { 
    //     if( (cmnd & validnost) != komanda )  //komanda promenjena
    //     { komanda = cmnd & validnost; komanda_flag = true;}
    
    // }

    // void set_validity( char val ) 
    // { 
    //     validnost = val;
    //     if( (komanda & validnost) != komanda ) { komanda = komanda & validnost; komanda_flag = true; }
    
    // }
    // char get_command( void ) { return komanda;}
    
    void set_command( char cmnd ) 
    { 
        if( (cmnd & validnost) != (komanda & validnost) )   komanda_flag = true;     //komanda promenjena
        
        komanda = cmnd;
    }

    void set_validity( char val ) 
    { 
        if( (komanda & validnost) != (komanda & val) ) {  komanda_flag = true; }
        validnost = val;
    
    }
    char get_command( void ) { return komanda & validnost;}

    char get_command_uncut( void ) { return komanda;}
    
    
    
    
    bool get_newcommand_flag( void) { bool ret = komanda_flag; komanda_flag = false;   return ret;}
    bool check_newcommand_flag( void) { return komanda_flag; }

    char get_indication( void ) { return indikacija;}
    char get_roughIndication(void) { return pMax | pMin;}
    char get_raelIndication( void ) { return aktuelna_indikacija;}


    char get_correctness( void ) { return ispravnost;}
    //void bitset_correctness( char c ) { ispravnost |= c;}
    void clear_correctness( void ) { ispravnost = 0x3f;}
   // void bitset_bulbfaults( char c) { ispravnost &= ~c;}
    char get_bulbfaults( void )  { return ~ispravnost;}

    char get_faultVoltage( void ) {return mis; }
   // void bitset_faultVoltage( char c ) { mis |= c; }
    void clear_faultVoltage( void ) { mis= 0; }


    char get_message( void ) {return poruka; }
    char get_validity( void )  { return validnost;}
    void set_data( char data ) { podatak = data;}
    char get_data( void ) { return podatak;}
    void set_address( char c) { adresa = c; }
    char get_address( void) { return adresa;}

    void set_pMin( char p ) { pMin = (~p)  & komanda;  }
    void clear_pMin( void ) { pMin = pMin_buf = 0xff;}

    char set_pMax( char p ) { p |= 0xC0; pMax = (~p) & (~komanda);  return pMax;}
    void clear_pMax( void ) { pMax = pMax_buf = 0;}

    void set_indication( void )
    {
        indikacija = (pMin | pMin_buf) & komanda /* FALI!!! & validnost*/;  pMin_buf = pMin;
    }
    void set_corectness( void )  { ispravnost = (ispravnost & ~komanda) | indikacija | mis; }
    void set_faultVoltage( void ) { mis = ( (pMax | pMax_buf) | mis ) /*  validnost ? */; pMax_buf = pMax; }
    void set_messagge( void ) { poruka = (~komanda & mis) | (komanda & ispravnost);}
    void set_realIndication( void ) { aktuelna_indikacija = (~mis & ispravnost & indikacija) | (~ispravnost & validnost) | mis;}

};



#endif