#include "beremiz.h"
#ifndef __POUS_H
#define __POUS_H

#include "accessor.h"
#include "iec_std_lib.h"

__DECLARE_ENUMERATED_TYPE(LOGLEVEL,
  LOGLEVEL__CRITICAL,
  LOGLEVEL__WARNING,
  LOGLEVEL__INFO,
  LOGLEVEL__DEBUG
)
// FUNCTION_BLOCK LOGGER
// Data part
typedef struct {
  // FB Interface - IN, OUT, IN_OUT variables
  __DECLARE_VAR(BOOL,EN)
  __DECLARE_VAR(BOOL,ENO)
  __DECLARE_VAR(BOOL,TRIG)
  __DECLARE_VAR(STRING,MSG)
  __DECLARE_VAR(LOGLEVEL,LEVEL)

  // FB private variables - TEMP, private and located variables
  __DECLARE_VAR(BOOL,TRIG0)

} LOGGER;

void LOGGER_init__(LOGGER *data__, BOOL retain);
// Code part
void LOGGER_body__(LOGGER *data__);
// PROGRAM ANAOUT_1
// Data part
typedef struct {
  // PROGRAM Interface - IN, OUT, IN_OUT variables

  // PROGRAM private variables - TEMP, private and located variables
  __DECLARE_LOCATED(BOOL,CH0LEV1)
  __DECLARE_LOCATED(BOOL,CH0LEV2)
  __DECLARE_LOCATED(BOOL,CH0LEV3)
  __DECLARE_LOCATED(BOOL,CH1LEV1)
  __DECLARE_LOCATED(BOOL,CH1LEV2)
  __DECLARE_LOCATED(BOOL,CH1LEV3)
  __DECLARE_LOCATED(UINT,ANAOUT0)
  __DECLARE_LOCATED(UINT,ANAOUT1)
  __DECLARE_VAR(BOOL,_TMP_MOVE6_ENO)
  __DECLARE_VAR(UINT,_TMP_MOVE6_OUT)
  __DECLARE_VAR(BOOL,_TMP_MOVE11_ENO)
  __DECLARE_VAR(UINT,_TMP_MOVE11_OUT)
  __DECLARE_VAR(BOOL,_TMP_MOVE16_ENO)
  __DECLARE_VAR(UINT,_TMP_MOVE16_OUT)
  __DECLARE_VAR(BOOL,_TMP_MOVE21_ENO)
  __DECLARE_VAR(UINT,_TMP_MOVE21_OUT)
  __DECLARE_VAR(BOOL,_TMP_MOVE28_ENO)
  __DECLARE_VAR(UINT,_TMP_MOVE28_OUT)
  __DECLARE_VAR(BOOL,_TMP_MOVE33_ENO)
  __DECLARE_VAR(UINT,_TMP_MOVE33_OUT)
  __DECLARE_VAR(BOOL,_TMP_MOVE37_ENO)
  __DECLARE_VAR(UINT,_TMP_MOVE37_OUT)
  __DECLARE_VAR(BOOL,_TMP_MOVE41_ENO)
  __DECLARE_VAR(UINT,_TMP_MOVE41_OUT)

} ANAOUT_1;

void ANAOUT_1_init__(ANAOUT_1 *data__, BOOL retain);
// Code part
void ANAOUT_1_body__(ANAOUT_1 *data__);
#endif //__POUS_H
