K22 processor

Revision:
7:4aa3dac73b66
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/IOdata/IOdata.h	Sun Mar 21 18:20:15 2021 +0100
@@ -0,0 +1,111 @@
+#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
\ No newline at end of file