(import ikernel.*)
(deftemplate OPCServerjopc    (declare (from-class OPCServerjopc)))
(deftemplate Tag  		(declare (from-class Tag)))

;******************************** OPC Servers **********************************
(defrule DATASRV-ON
	(OPCServerjopc {status == "connected"} (name ?name))
	=>
	(assert (DATASRV-ON ?name))
	;(printout  t "DATASRV-ON" ?name crlf)	
)
(defrule DATASRV-OFF
	(OPCServerjopc {status == "disconnected"} (name ?name))
	=>
	(printout gui12 "G1DATASRV#programmers#")
	(printout gui22 "G2DATASRV##")
	(printout gui32 "G3DATASRV##")
	(printout gui14 "gep-amarelo#sad-amarelo#srv-amarelo#sve-amarelo#sdt-amarelo#mgg-amarelo#mcb-amarelo#mgt-amarelo#")
	(printout gui24 "gep-amarelo#sad-amarelo#srv-amarelo#sve-amarelo#sdt-amarelo#mgg-amarelo#mcb-amarelo#mgt-amarelo#")
	(printout gui34 "gep-amarelo#sad-amarelo#srv-amarelo#sve-amarelo#sdt-amarelo#mgg-amarelo#mcb-amarelo#mgt-amarelo#")
	;(printout  t "DATASRV-OFF" ?name crlf)	
)
;***********************************  SIMPO  ************************************
(defrule SIMPO-ON
	(Tag{label == "_simpooff" && value == "0"})
	=>   
	(assert (SIMPO ON))
)

(defrule SIMPO-OFF
	(Tag{label == "_simpooff" && value == "1"})
	=>         
	(assert (SIMPO OFF))    
)
;***********************************  UGHs  ************************************
;---------------------  UGHs OPERATIVOS e SIMPO ONLINE -------------------------
(defrule UGH1-OP
	(DATASRV-ON "uhcn")
	(SIMPO ON)
	(Tag{label == "g1.maq.partida" && value == "1"})
	=>      
      (printout guiugh1 "g1.maq.partida")
	;(printout  t "UGH-01 OPP " ?value crlf)	        	        
)
(defrule UGH2-OP
	(DATASRV-ON "uhcn")
	(SIMPO ON)
	(Tag{label == "g2.maq.partida" && value == "1"})
	=>         
      (printout guiugh2 "g2.maq.partida") 	
	;(printout  t "UGH-02 OPP " ?value crlf)	                 
)
(defrule UGH3-OP
	(DATASRV-ON "uhcn")
	(SIMPO ON)
	(Tag{label == "g3.maq.partida" && value == "1"})
	=>        
      (printout guiugh3 "g3.maq.partida")	
	;(printout  t "UGH-03 OPP " ?value crlf)	                  
)

;---------------------------------  UGHs NAO OPERATIVOS  ------------------------------------
(defrule UGH1-NOP
	(DATASRV-ON "uhcn")
	(Tag{label == "g1.maq.partida" && value == "0"})
	=>
	(printout gui12 "G1UGH1#programmers#")
	(printout gui14 "gep-amarelo#mcb-amarelo#mgg-amarelo#mgt-amarelo#srv-amarelo#sve-amarelo#")
	;(printout  t "UGH-01 NO " ?value crlf)	        
)   
(defrule UGH2-NOP
	(DATASRV-ON "uhcn")
	(Tag{label == "g2.maq.partida" && value == "0"})
	=>  
	(printout gui22 "G2UGH2#programmers#")
	(printout gui24 "sad-amarelo#mgg-amarelo#mcb-amarelo#")   
	;(printout  t "UGH-02 NO " ?value crlf)	        
)   
(defrule UGH3-NOP
	(DATASRV-ON "uhcn")
	(Tag{label == "g3.maq.partida" && value == "0"})
	=>  
	(printout gui32 "G3UGH3#programmers#")
	(printout gui34 "sad-amarelo#srv-amarelo#sve-amarelo#sdt-amarelo#mgg-amarelo#mcb-amarelo#mgt-amarelo#")  
	;(printout  t "UGH-03 NO " ?value crlf)	        
)     

;------------------------------  UGHs OPERATIVOS e SIMPO OFFLINE -------------------------------
(defrule UGH-OP
	(OPCSRV-ON "uhcn")
	(SIMPO OFF)
	(Tag{label == "g1.maq.partida" && value == "1"})
	(Tag{label == "g2.maq.partida" && value == "1"})
	(Tag{label == "g3.maq.partida" && value == "1"})
	=>        
	(assert (diagnostic SIMPO-OFF)) 
)

(defrule Decisao-SIMPO
	(diagnostic SIMPO-OFF)
	=>        
	(printout gui12 "G1SIMPOOFF#programmers#")
	(printout gui22 "G2SIMPOOFF##")
	(printout gui32 "G3SIMPOOFF##")
	(printout gui14 "gep-amarelo#sad-amarelo#srv-amarelo#sve-amarelo#sdt-amarelo#mgg-amarelo#mcb-amarelo#mgt-amarelo#")
	(printout gui24 "gep-amarelo#sad-amarelo#srv-amarelo#sve-amarelo#sdt-amarelo#mgg-amarelo#mcb-amarelo#mgt-amarelo#")
	(printout gui34 "gep-amarelo#sad-amarelo#srv-amarelo#sve-amarelo#sdt-amarelo#mgg-amarelo#mcb-amarelo#mgt-amarelo#") 
)
