/*
* This source file is part of the EtherCAT Slave Stack Code licensed by Beckhoff Automation GmbH & Co KG, 33415 Verl, Germany.
* The corresponding license agreement applies. This hint shall not be removed.
* https://www.beckhoff.com/media/downloads/slave-stack-code/ethercat_ssc_license.pdf
*/
/**
\addtogroup EcatAppl EtherCAT application
* @{
*/
/**
\file ecatappl.h
\author EthercatSSC@beckhoff.com
\version 5.12
Changes to version V5.11:
V5.12 EEPROM1: get read size from register 0x502.6
Changes to version V5.10:
V5.11 ECAT10: change PROTO handling to prevent compiler errors
Changes to version V5.01:
V5.10 ECAT13: Update Synchronisation handling (FreeRun,SM Sync, Sync0, Sync1)
Compare DC UINT configuration (by ESC Config data) vs. DC activation register settings
Update 0x1C3x entries
V5.10 ECAT4: Update alignment macro for 8 to 15 bit alignments (16 and 32 Bit controllers)
Bugfix calculate LED blink frequency
Changes to version - :
V5.01 : Start file change log
*/
/*-----------------------------------------------------------------------------------------
------
------ Description
------
------ ecatappl.h
------
------ EtherCAT Slave Application
------ ------
-----------------------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------------------
------
------ Includes
------
-----------------------------------------------------------------------------------------*/
#include "ecat_def.h"
#ifndef _ECATAPPL_H_
#define _ECATAPPL_H_
/*-----------------------------------------------------------------------------------------
------
------ Defines and Types
------
-----------------------------------------------------------------------------------------*/
/*ET9300 Project Handler :(#if CONTROLLER_16BIT || CONTROLLER_32BIT) lines 58 to 85 deleted*/
#define BOOLEAN(x) UINT8 x:1 /**< \brief Macro to define BOOLEAN object entry*/
#define BIT1(x) UINT8 x:1 /**< \brief Macro to define BIT1 object entry*/
#define BIT2(x) UINT8 x:2 /**< \brief Macro to define BIT2 object entry*/
#define BIT3(x) UINT8 x:3 /**< \brief Macro to define BIT3 object entry*/
#define BIT4(x) UINT8 x:4 /**< \brief Macro to define BIT4 object entry*/
#define BIT5(x) UINT8 x:5 /**< \brief Macro to define BIT5 object entry*/
#define BIT6(x) UINT8 x:6 /**< \brief Macro to define BIT5 object entry*/
#define BIT7(x) UINT8 x:7 /**< \brief Macro to define BIT6 object entry*/
#define BIT8(x) UINT8 x:8 /**< \brief Macro to define BIT7 object entry*/
#define ALIGN0(x)
#define ALIGN1(x) UINT8 x:1; /**< \brief Macro to define ALIGN1 object entry*/
#define ALIGN2(x) UINT8 x:2; /**< \brief Macro to define ALIGN2 object entry*/
#define ALIGN3(x) UINT8 x:3; /**< \brief Macro to define ALIGN3 object entry*/
#define ALIGN4(x) UINT8 x:4; /**< \brief Macro to define ALIGN4 object entry*/
#define ALIGN5(x) UINT8 x:5; /**< \brief Macro to define ALIGN5 object entry*/
#define ALIGN6(x) UINT8 x:6; /**< \brief Macro to define ALIGN6 object entry*/
#define ALIGN7(x) UINT8 x:7; /**< \brief Macro to define ALIGN7 object entry*/
#define ALIGN8(x) UINT8 x:8; /**< \brief Macro to define ALIGN8 object entry*/
/*ET9300 Project Handler :(#if _PIC18) lines 104 to 112 deleted*/
#define ALIGN9(x) UINT16 x:9; /**< \brief Macro to define ALIGN9 object entry*/
#define ALIGN10(x) UINT16 x:10; /**< \brief Macro to define ALIGN10 object entry*/
#define ALIGN11(x) UINT16 x:11; /**< \brief Macro to define ALIGN11 object entry*/
#define ALIGN12(x) UINT16 x:12; /**< \brief Macro to define ALIGN12 object entry*/
#define ALIGN13(x) UINT16 x:13; /**< \brief Macro to define ALIGN13 object entry*/
#define ALIGN14(x) UINT16 x:14; /**< \brief Macro to define ALIGN14 object entry*/
#define ALIGN15(x) UINT16 x:15; /**< \brief Macro to define ALIGN15 object entry*/
#endif //_ECATAPPL_H_
#if defined(_ECATAPPL_) && (_ECATAPPL_ == 1)
#define PROTO
#else
#define PROTO extern
#endif
/*-----------------------------------------------------------------------------------------
------
------ Global Variables
------
-----------------------------------------------------------------------------------------*/
/*ET9300 Project Handler :(#if ESC_EEPROM_EMULATION) lines 138 to 140 deleted*/
PROTO BOOL bEcatWaitForInputUpdate; /**< \brief Wait for input update*/
PROTO BOOL bEtherCATRunLed; /**< \brief Current run LED value*/
PROTO BOOL bEtherCATErrorLed; /**< \brief Current error LED value*/
PROTO BOOL bRunApplication; /**< \brief Indicates if the stack shall be running (if false the Hardware will be released)*/
/*ET9300 Project Handler :(#if ESC_EEPROM_EMULATION) lines 149 to 151 deleted*/
/*-----------------------------------------------------------------------------------------
------
------ Global Functions
------
-----------------------------------------------------------------------------------------*/
PROTO void ECAT_CheckTimer(void);
PROTO void PDI_Isr(void);
PROTO void Sync0_Isr(void);
PROTO void Sync1_Isr(void);
PROTO void ECAT_Application(void);
PROTO void PDO_ResetOutputs(void);
PROTO void PDO_ReadInputs(void);
PROTO void PDO_InputMapping(void);
PROTO void ECAT_SetLedIndication(void);
PROTO void CalcSMCycleTime(void);
/*ET9300 Project Handler :(#if ESC_EEPROM_ACCESS_SUPPORT) lines 178 to 181 deleted*/
/*ET9300 Project Handler :(#if ESC_EEPROM_EMULATION) lines 183 to 185 deleted*/
#undef PROTO
/** @}*/