bosko lekovic
/
IO_board_K22
K22 processor
Diff: IOdata/IOdata.h
- Revision:
- 7:4aa3dac73b66
diff -r 12b2660d7dff -r 4aa3dac73b66 IOdata/IOdata.h --- /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