-- Special Operations macchina Essetre-WALL by EgalTech s.r.l.   2022/01/13

-- Intestazioni
require( 'EmtGenerator')
EgtEnableDebug( false)


---------------------------------------------------------------------
function OnSpecialMoveZup()

   -- Inizializzazioni
   EMC.MODIF = false
   EMC.ERR = 1

   -- Se lama grande
   if EMC.HEAD == 'H1' and EMC.TCPOS == 'T203' then
      -- asse C già limitato per evitare problemi
   -- se altrimenti fresa
   elseif EMC.HEAD == 'H1' then
      if EMC.L3 > -300 then
         EMC.R1 = EgtGetAxisHomePos( 'C1')
         EMC.R2 = EgtGetAxisHomePos( 'B1')
         EMC.TDIR = EgtGetCalcToolDirFromAngles( EMC.R1, EMC.R2)
         EMC.MODIF = true
      end
   -- se altrimenti sega a catena
   elseif EMC.HEAD == 'H3' then
      local L3New = EMC.L3
      local R1New = EMC.R1
      local R2New = EMC.R2
      if EMC.L3 > -300 then
         L3New = min( EMC.L3, EgtGetAxisHomePos( 'Z1'))
         R1New = EgtGetAxisHomePos( 'C1')
         R2New = EgtGetAxisHomePos( 'B1')
         EMC.MODIF = true
      end
      if EMC.L2 > -1800 then
         R1New = -90
         EMC.MODIF = true
      elseif EMC.L2 < -4800 then
         R1New = -90
         EMC.MODIF = true
      end
      if EMC.MODIF then
         EMC.L3 = L3New
         EMC.R1 = R1New
         EMC.R2 = R2New
         EMC.TDIR = EgtGetCalcToolDirFromAngles( EMC.R1, EMC.R2, EMC.R3)
      end
   -- Se altrimenti Lama normale
   elseif EMC.HEAD == 'H12' then
      if EMC.L3 > -300 then
         EMC.R1 = EgtGetAxisHomePos( 'C1')
         EMC.R2 = EgtGetAxisHomePos( 'B1')
         EMC.TDIR = EgtGetCalcToolDirFromAngles( EMC.R1, EMC.R2)
         EMC.MODIF = true
      end
   -- se altre teste
   elseif EMC.HEAD == 'H14' or EMC.HEAD == 'H12' or EMC.HEAD == 'H21' or EMC.HEAD == 'H22' or EMC.HEAD == 'H23' then
      -- non è necessaria una gestione speciale
   -- altrimenti errore
   else
      error( "Unknown Head")
   end
   EMC.ERR = 0
end
