#include "hmiworks.h"


static BYTE r0_s1_c0(BYTE en)
{
  if (!en) return 0;
  return (!VAR_OUT_VALUE(I_7065_52_DI3)) && (VAR_VALUE(I_7065_52_DI3));
}

static BYTE r0_s1(BYTE en)
{
  en &= r0_s1_c0(en);
  return en;
}

static BYTE r0_s2_p0(BYTE en)
{
  BYTE result = 0;
    if (en) { VAR_SET(DO_Light_All, 0); }
    if (en) { VAR_SET(LittleLightAll, 0); }
    if (en) { VAR_SET(AirCondition, 0); }
    if (en) { VAR_SET(DO62_All, 0); }
    if (en) { VAR_SET_NOT_PULSE(DO62_All); }
    if (en) { VAR_SET_NOT_PULSE(DO_Light_All); }
    if (en) { VAR_SET_NOT_PULSE(LittleLightAll); }
    if (en) { VAR_SET_NOT_PULSE(AirCondition); }
    if (en) { VAR_SET(AirControl, 0); }
    if (en) { VAR_SET_NOT_PULSE(AirControl); }
    if (en) { VAR_SET(lesson, 0); }
    if (en) { VAR_SET(Action, 0); }
    if (en) { VAR_SET(report, 0); }
  return result;
}

static BYTE r0_s2(BYTE en)
{
  r0_s2_p0(en);
  return en;
}

//======================================================================
//@rung0
//======================================================================
static BYTE r0(BYTE en)
{
  en &= r0_s1(en);
  return r0_s2(en);
}
//======================================================================

static BYTE r1_s1_c0(BYTE en)
{
  if (!en) return 0;
  return (!VAR_OUT_VALUE(Close_AllDO)) && (VAR_VALUE(Close_AllDO));
}

static BYTE r1_s1(BYTE en)
{
  en &= r1_s1_c0(en);
  return en;
}

static BYTE r1_s2_p0(BYTE en)
{
  BYTE result = 0;
    if (en) { VAR_SET(DO_Light_All, 0); }
    if (en) { VAR_SET(LittleLightAll, 0); }
    if (en) { VAR_SET(AirCondition, 0); }
    if (en) { VAR_SET(DO62_All, 0); }
    if (en) { VAR_SET_NOT_PULSE(DO62_All); }
    if (en) { VAR_SET_NOT_PULSE(DO_Light_All); }
    if (en) { VAR_SET_NOT_PULSE(LittleLightAll); }
    if (en) { VAR_SET_NOT_PULSE(AirCondition); }
    if (en) { VAR_SET(AirControl, 0); }
    if (en) { VAR_SET_NOT_PULSE(AirControl); }
    if (en) { VAR_SET(lesson, 0); }
    if (en) { VAR_SET(Action, 0); }
    if (en) { VAR_SET(report, 0); }
  return result;
}

static BYTE r1_s2(BYTE en)
{
  r1_s2_p0(en);
  return en;
}

//======================================================================
//@rung1
//======================================================================
static BYTE r1(BYTE en)
{
  en &= r1_s1(en);
  return r1_s2(en);
}
//======================================================================

static BYTE r2_s1_c0(BYTE en)
{
  if (!en) return 0;
  return (VAR_OUT_VALUE(I_7065_52_DI3)) && (!VAR_VALUE(I_7065_52_DI3));
}

static BYTE r2_s1(BYTE en)
{
  en &= r2_s1_c0(en);
  return en;
}

static BYTE r2_s2_p0(BYTE en)
{
  BYTE result = 0;
    if (en) { VAR_SET(DO_Light_All, 0); }
    if (en) { VAR_SET(LittleLightAll, 0); }
    if (en) { VAR_SET(AirCondition, 0); }
    if (en) { VAR_SET(DO62_All, 0); }
    if (en) { VAR_SET_NOT_PULSE(DO62_All); }
    if (en) { VAR_SET_NOT_PULSE(DO_Light_All); }
    if (en) { VAR_SET_NOT_PULSE(LittleLightAll); }
    if (en) { VAR_SET_NOT_PULSE(AirCondition); }
    if (en) { VAR_SET(AirControl, 0); }
    if (en) { VAR_SET_NOT_PULSE(AirControl); }
    if (en) { VAR_SET(lesson, 0); }
    if (en) { VAR_SET(Action, 0); }
    if (en) { VAR_SET(report, 0); }
  return result;
}

static BYTE r2_s2(BYTE en)
{
  r2_s2_p0(en);
  return en;
}

//======================================================================
//@rung2
//======================================================================
static BYTE r2(BYTE en)
{
  en &= r2_s1(en);
  return r2_s2(en);
}
//======================================================================

static BYTE r3_s1_c0(BYTE en)
{
  if (!en) return 0;
  return (VAR_OUT_VALUE(Close_AllDO)) && (!VAR_VALUE(Close_AllDO));
}

static BYTE r3_s1(BYTE en)
{
  en &= r3_s1_c0(en);
  return en;
}

static BYTE r3_s2_p0(BYTE en)
{
  BYTE result = 0;
    if (en) { VAR_SET(DO_Light_All, 0); }
    if (en) { VAR_SET(LittleLightAll, 0); }
    if (en) { VAR_SET(AirCondition, 0); }
    if (en) { VAR_SET(DO62_All, 0); }
    if (en) { VAR_SET_NOT_PULSE(DO62_All); }
    if (en) { VAR_SET_NOT_PULSE(DO_Light_All); }
    if (en) { VAR_SET_NOT_PULSE(LittleLightAll); }
    if (en) { VAR_SET_NOT_PULSE(AirCondition); }
    if (en) { VAR_SET(AirControl, 0); }
    if (en) { VAR_SET_NOT_PULSE(AirControl); }
    if (en) { VAR_SET(lesson, 0); }
    if (en) { VAR_SET(Action, 0); }
    if (en) { VAR_SET(report, 0); }
  return result;
}

static BYTE r3_s2(BYTE en)
{
  r3_s2_p0(en);
  return en;
}

//======================================================================
//@rung3
//======================================================================
static BYTE r3(BYTE en)
{
  en &= r3_s1(en);
  return r3_s2(en);
}
//======================================================================

static rung_func __rung_table[] =
{
  r0,
  r1,
  r2,
  r3,
};



BYTE ladder_CloseAll_ldx(BYTE en)
{
  g_NextRung = 0;
  while (g_NextRung < 4) {
    __rung_table[g_NextRung++](en);
	if (g_NextRung < 0) break;
  }
  return 0;
}

