--[[
{***************************************************************************}
{ S4_logic01                                                11/10/2012      }
{                                                                           }
{	Eelectron S.p.A.                                                        }
{   Via Magenta 77/22                                                       }
{   I-20017 Rho(MI)                                                         }
{   Web: www.eelectron.com                                                  }
{                                                                           }
{ The source code is given as is, WITHOUT WARRANTY OF ANY KIND.             }
{ The author is not responsible for any possible damage done due to the     }
{ use of this code.                                                         }
{***************************************************************************}
--]]


-- ***************************
-- variables
-- ***************************
out_or_0 = 0;
out_or_1 = 0;
out_and_0 = 0;

out_not = 0;

out_or_4 = 0;
out_or_5 = 0;
out_or_6 = 0;


-- ***************************
-- 
-- ***************************
function myLogic(x)
-- 
-- first OR condition
--
  if ( x >= 222 and x <= 225 ) then
    if  ((knx.get_integer(222) == 1) or (knx.get_integer(223) == 1) 
	  or (knx.get_integer(224) == 1) or (knx.get_integer(225) == 1)) then        
		out_or_0 = 1;
	else
	    out_or_0 = 0;
	end
	
	knx.set_integer(226,0,out_or_0);
  end
  
 
-- 
-- second OR condition
--
  if ( x >= 227 and x <= 230 ) then
    if ((knx.get_integer(227) == 1) or (knx.get_integer(228) == 1) 
	  or (knx.get_integer(229) == 1) or (knx.get_integer(230) == 1)) then
        out_or_1 = 1;	
	else
	    out_or_1 = 0;
	end
	
 	  knx.set_integer(231,0,out_or_1);	 
  end 
  
-- 
-- first AND condition
--
  if ( x >= 232 and x <= 235 ) then
    if ((knx.get_integer(232) == 1) and (knx.get_integer(233) == 1) 
	  and (knx.get_integer(234) == 1) and (knx.get_integer(235) == 1)) then
		out_and_0 = 1;	
	else
	    out_and_0 = 0;
	end
	
		knx.set_integer(236,0,out_and_0);	
  end 
  
-- 
-- NOT condition
--
  if ( x >= 237 and x <= 240 ) then
    out_not = knx.get_integer(x);
	
    if (out_not == 0) then
		out_not = 1;	
	else
	    out_not = 0;
	end
	
	knx.set_integer(x+4,0,out_not);	
  end 
    
-- 
-- INVERTED condition
--
  if ((x == 245) and (knx.get_integer(245) == 0)) then
    knx.set_integer(246,0,1);	
  end
  if ((x == 247) and (knx.get_integer(247) == 0)) then
    knx.set_integer(248,0,1);	
  end  
  if ((x == 249) and (knx.get_integer(249) == 1)) then
    knx.set_integer(250,0,0);	
  end  
  if ((x == 251) and (knx.get_integer(251) == 1)) then
    knx.set_integer(252,0,0);	
  end  
  
end

-- ***************************
-- call back for value changed
-- ***************************
function knx_value_changed(x)
  myLogic(x);
end

-- ***************************
-- call back for value update
-- ***************************
function knx_value_update(x)
  myLogic(x);
end


--[[
  EOF 
--]]
