d9068d622f
This isn't a DLL, so we don't need this :) Cc: Daniel Krueger <daniel.krueger@systec-electronic.com> Cc: Ronald Sieber <Ronald.Sieber@systec-electronic.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
371 lines
15 KiB
C
371 lines
15 KiB
C
/****************************************************************************
|
|
|
|
(c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
|
|
www.systec-electronic.com
|
|
|
|
Project: openPOWERLINK
|
|
|
|
Description: basic include file for internal EPL stack modules
|
|
|
|
License:
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
modification, are permitted provided that the following conditions
|
|
are met:
|
|
|
|
1. Redistributions of source code must retain the above copyright
|
|
notice, this list of conditions and the following disclaimer.
|
|
|
|
2. Redistributions in binary form must reproduce the above copyright
|
|
notice, this list of conditions and the following disclaimer in the
|
|
documentation and/or other materials provided with the distribution.
|
|
|
|
3. Neither the name of SYSTEC electronic GmbH nor the names of its
|
|
contributors may be used to endorse or promote products derived
|
|
from this software without prior written permission. For written
|
|
permission, please contact info@systec-electronic.com.
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
Severability Clause:
|
|
|
|
If a provision of this License is or becomes illegal, invalid or
|
|
unenforceable in any jurisdiction, that shall not affect:
|
|
1. the validity or enforceability in that jurisdiction of any other
|
|
provision of this License; or
|
|
2. the validity or enforceability in other jurisdictions of that or
|
|
any other provision of this License.
|
|
|
|
-------------------------------------------------------------------------
|
|
|
|
$RCSfile: EplInc.h,v $
|
|
|
|
$Author: D.Krueger $
|
|
|
|
$Revision: 1.8 $ $Date: 2008/11/17 16:40:39 $
|
|
|
|
$State: Exp $
|
|
|
|
Build Environment:
|
|
GCC V3.4
|
|
|
|
-------------------------------------------------------------------------
|
|
|
|
Revision History:
|
|
|
|
2006/05/22 d.k.: start of the implementation, version 1.00
|
|
|
|
****************************************************************************/
|
|
|
|
#ifndef _EPL_INC_H_
|
|
#define _EPL_INC_H_
|
|
|
|
// ============================================================================
|
|
// include files
|
|
// ============================================================================
|
|
#if defined(WIN32) || defined(_WIN32)
|
|
|
|
#ifdef UNDER_RTSS
|
|
// RTX header
|
|
#include <windows.h>
|
|
#include <process.h>
|
|
#include <rtapi.h>
|
|
|
|
#elif __BORLANDC__
|
|
// borland C header
|
|
#include <windows.h>
|
|
#include <process.h>
|
|
|
|
#elif WINCE
|
|
#include <windows.h>
|
|
|
|
#else
|
|
// MSVC needs to include windows.h at first
|
|
// the following defines ar necessary for function prototypes for waitable timers
|
|
#define _WIN32_WINDOWS 0x0401
|
|
#define _WIN32_WINNT 0x0400
|
|
#include <windows.h>
|
|
#include <process.h>
|
|
#endif
|
|
|
|
#endif
|
|
|
|
// defines for module integration
|
|
// possible other include file needed
|
|
// These constants defines modules which can be included in the Epl application.
|
|
// Use this constants for define EPL_MODULE_INTEGRATION in file EplCfg.h.
|
|
#define EPL_MODULE_OBDK 0x00000001L // OBD kernel part module
|
|
#define EPL_MODULE_PDOK 0x00000002L // PDO kernel part module
|
|
#define EPL_MODULE_NMT_MN 0x00000004L // NMT MN module
|
|
#define EPL_MODULE_SDOS 0x00000008L // SDO Server module
|
|
#define EPL_MODULE_SDOC 0x00000010L // SDO Client module
|
|
#define EPL_MODULE_SDO_ASND 0x00000020L // SDO over Asnd module
|
|
#define EPL_MODULE_SDO_UDP 0x00000040L // SDO over UDP module
|
|
#define EPL_MODULE_SDO_PDO 0x00000080L // SDO in PDO module
|
|
#define EPL_MODULE_NMT_CN 0x00000100L // NMT CN module
|
|
#define EPL_MODULE_NMTU 0x00000200L // NMT user part module
|
|
#define EPL_MODULE_NMTK 0x00000400L // NMT kernel part module
|
|
#define EPL_MODULE_DLLK 0x00000800L // DLL kernel part module
|
|
#define EPL_MODULE_DLLU 0x00001000L // DLL user part module
|
|
#define EPL_MODULE_OBDU 0x00002000L // OBD user part module
|
|
#define EPL_MODULE_CFGMA 0x00004000L // Configuartioan Manager module
|
|
#define EPL_MODULE_VETH 0x00008000L // virtual ethernet driver module
|
|
#define EPL_MODULE_PDOU 0x00010000L // PDO user part module
|
|
#define EPL_MODULE_LEDU 0x00020000L // LED user part module
|
|
|
|
#include "EplCfg.h" // EPL configuration file (configuration from application)
|
|
|
|
#include "global.h" // global definitions
|
|
|
|
#include "EplDef.h" // EPL configuration file (default configuration)
|
|
#include "EplInstDef.h" // defines macros for instance types and table
|
|
#include "Debug.h" // debug definitions
|
|
|
|
#include "EplErrDef.h" // EPL error codes for API funtions
|
|
|
|
//---------------------------------------------------------------------------
|
|
// typedef
|
|
//---------------------------------------------------------------------------
|
|
|
|
// IEEE 1588 conformant net time structure
|
|
typedef struct {
|
|
u32 m_dwSec;
|
|
u32 m_dwNanoSec;
|
|
|
|
} tEplNetTime;
|
|
|
|
#include "EplTarget.h" // target specific functions and definitions
|
|
|
|
#include "EplAmi.h"
|
|
|
|
// -------------------------------------------------------------------------
|
|
// macros
|
|
// -------------------------------------------------------------------------
|
|
|
|
#define EPL_SPEC_VERSION 0x20 // ETHERNET Powerlink V. 2.0
|
|
#define EPL_STACK_VERSION(ver,rev,rel) ((((u32)(ver)) & 0xFF)|((((u32)(rev))&0xFF)<<8)|(((u32)(rel))<<16))
|
|
#define EPL_OBJ1018_VERSION(ver,rev,rel) ((((u32)(ver))<<16) |(((u32)(rev))&0xFFFF))
|
|
#define EPL_STRING_VERSION(ver,rev,rel) "V" #ver "." #rev " r" #rel
|
|
|
|
#include "EplVersion.h"
|
|
|
|
// defines for EPL FeatureFlags
|
|
#define EPL_FEATURE_ISOCHR 0x00000001
|
|
#define EPL_FEATURE_SDO_UDP 0x00000002
|
|
#define EPL_FEATURE_SDO_ASND 0x00000004
|
|
#define EPL_FEATURE_SDO_PDO 0x00000008
|
|
#define EPL_FEATURE_NMT_INFO 0x00000010
|
|
#define EPL_FEATURE_NMT_EXT 0x00000020
|
|
#define EPL_FEATURE_PDO_DYN 0x00000040
|
|
#define EPL_FEATURE_NMT_UDP 0x00000080
|
|
#define EPL_FEATURE_CFGMA 0x00000100
|
|
#define EPL_FEATURE_DLL_MULTIPLEX 0x00000200
|
|
#define EPL_FEATURE_NODEID_SW 0x00000400
|
|
#define EPL_FEATURE_NMT_BASICETH 0x00000800
|
|
#define EPL_FEATURE_RT1 0x00001000
|
|
#define EPL_FEATURE_RT2 0x00002000
|
|
|
|
// generate EPL NMT_FeatureFlags_U32
|
|
#ifndef EPL_DEF_FEATURE_ISOCHR
|
|
#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLK)) != 0)
|
|
#define EPL_DEF_FEATURE_ISOCHR (EPL_FEATURE_ISOCHR)
|
|
#else
|
|
#define EPL_DEF_FEATURE_ISOCHR 0
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef EPL_DEF_FEATURE_SDO_ASND
|
|
#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_ASND)) != 0)
|
|
#define EPL_DEF_FEATURE_SDO_ASND (EPL_FEATURE_SDO_ASND)
|
|
#else
|
|
#define EPL_DEF_FEATURE_SDO_ASND 0
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef EPL_DEF_FEATURE_SDO_UDP
|
|
#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_UDP)) != 0)
|
|
#define EPL_DEF_FEATURE_SDO_UDP (EPL_FEATURE_SDO_UDP)
|
|
#else
|
|
#define EPL_DEF_FEATURE_SDO_UDP 0
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef EPL_DEF_FEATURE_SDO_PDO
|
|
#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_PDO)) != 0)
|
|
#define EPL_DEF_FEATURE_SDO_PDO (EPL_FEATURE_SDO_PDO)
|
|
#else
|
|
#define EPL_DEF_FEATURE_SDO_PDO 0
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef EPL_DEF_FEATURE_PDO_DYN
|
|
#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_PDOK)) != 0)
|
|
#define EPL_DEF_FEATURE_PDO_DYN (EPL_FEATURE_PDO_DYN)
|
|
#else
|
|
#define EPL_DEF_FEATURE_PDO_DYN 0
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef EPL_DEF_FEATURE_CFGMA
|
|
#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_CFGMA)) != 0)
|
|
#define EPL_DEF_FEATURE_CFGMA (EPL_FEATURE_CFGMA)
|
|
#else
|
|
#define EPL_DEF_FEATURE_CFGMA 0
|
|
#endif
|
|
#endif
|
|
|
|
#define EPL_DEF_FEATURE_FLAGS (EPL_DEF_FEATURE_ISOCHR \
|
|
| EPL_DEF_FEATURE_SDO_ASND \
|
|
| EPL_DEF_FEATURE_SDO_UDP \
|
|
| EPL_DEF_FEATURE_SDO_PDO \
|
|
| EPL_DEF_FEATURE_PDO_DYN \
|
|
| EPL_DEF_FEATURE_CFGMA)
|
|
|
|
#ifndef tabentries
|
|
#define tabentries(a) (sizeof(a)/sizeof(*(a)))
|
|
#endif
|
|
|
|
// ============================================================================
|
|
// common debug macros
|
|
// ============================================================================
|
|
// for using macro DEBUG_TRACEx()
|
|
//
|
|
// Example:
|
|
// DEBUG_TRACE1 (EPL_DBGLVL_OBD, "Value is %d\n" , wObjectIndex);
|
|
//
|
|
// This message only will be printed if:
|
|
// - NDEBUG is not defined AND !!!
|
|
// - flag 0x00000004L is set in DEF_DEBUG_LVL (can be defined in copcfg.h)
|
|
//
|
|
// default level is defined in copdef.h
|
|
|
|
// debug-level and TRACE-macros // standard-level // flags for DEF_DEBUG_LVL
|
|
#define EPL_DBGLVL_EDRV DEBUG_LVL_01 // 0x00000001L
|
|
#define EPL_DBGLVL_EDRV_TRACE0 DEBUG_LVL_01_TRACE0
|
|
#define EPL_DBGLVL_EDRV_TRACE1 DEBUG_LVL_01_TRACE1
|
|
#define EPL_DBGLVL_EDRV_TRACE2 DEBUG_LVL_01_TRACE2
|
|
#define EPL_DBGLVL_EDRV_TRACE3 DEBUG_LVL_01_TRACE3
|
|
#define EPL_DBGLVL_EDRV_TRACE4 DEBUG_LVL_01_TRACE4
|
|
|
|
#define EPL_DBGLVL_DLL DEBUG_LVL_02 // 0x00000002L
|
|
#define EPL_DBGLVL_DLL_TRACE0 DEBUG_LVL_02_TRACE0
|
|
#define EPL_DBGLVL_DLL_TRACE1 DEBUG_LVL_02_TRACE1
|
|
#define EPL_DBGLVL_DLL_TRACE2 DEBUG_LVL_02_TRACE2
|
|
#define EPL_DBGLVL_DLL_TRACE3 DEBUG_LVL_02_TRACE3
|
|
#define EPL_DBGLVL_DLL_TRACE4 DEBUG_LVL_02_TRACE4
|
|
|
|
#define EPL_DBGLVL_OBD DEBUG_LVL_03 // 0x00000004L
|
|
#define EPL_DBGLVL_OBD_TRACE0 DEBUG_LVL_03_TRACE0
|
|
#define EPL_DBGLVL_OBD_TRACE1 DEBUG_LVL_03_TRACE1
|
|
#define EPL_DBGLVL_OBD_TRACE2 DEBUG_LVL_03_TRACE2
|
|
#define EPL_DBGLVL_OBD_TRACE3 DEBUG_LVL_03_TRACE3
|
|
#define EPL_DBGLVL_OBD_TRACE4 DEBUG_LVL_03_TRACE4
|
|
|
|
#define EPL_DBGLVL_NMTK DEBUG_LVL_04 // 0x00000008L
|
|
#define EPL_DBGLVL_NMTK_TRACE0 DEBUG_LVL_04_TRACE0
|
|
#define EPL_DBGLVL_NMTK_TRACE1 DEBUG_LVL_04_TRACE1
|
|
#define EPL_DBGLVL_NMTK_TRACE2 DEBUG_LVL_04_TRACE2
|
|
#define EPL_DBGLVL_NMTK_TRACE3 DEBUG_LVL_04_TRACE3
|
|
#define EPL_DBGLVL_NMTK_TRACE4 DEBUG_LVL_04_TRACE4
|
|
|
|
#define EPL_DBGLVL_NMTCN DEBUG_LVL_05 // 0x00000010L
|
|
#define EPL_DBGLVL_NMTCN_TRACE0 DEBUG_LVL_05_TRACE0
|
|
#define EPL_DBGLVL_NMTCN_TRACE1 DEBUG_LVL_05_TRACE1
|
|
#define EPL_DBGLVL_NMTCN_TRACE2 DEBUG_LVL_05_TRACE2
|
|
#define EPL_DBGLVL_NMTCN_TRACE3 DEBUG_LVL_05_TRACE3
|
|
#define EPL_DBGLVL_NMTCN_TRACE4 DEBUG_LVL_05_TRACE4
|
|
|
|
#define EPL_DBGLVL_NMTU DEBUG_LVL_06 // 0x00000020L
|
|
#define EPL_DBGLVL_NMTU_TRACE0 DEBUG_LVL_06_TRACE0
|
|
#define EPL_DBGLVL_NMTU_TRACE1 DEBUG_LVL_06_TRACE1
|
|
#define EPL_DBGLVL_NMTU_TRACE2 DEBUG_LVL_06_TRACE2
|
|
#define EPL_DBGLVL_NMTU_TRACE3 DEBUG_LVL_06_TRACE3
|
|
#define EPL_DBGLVL_NMTU_TRACE4 DEBUG_LVL_06_TRACE4
|
|
|
|
#define EPL_DBGLVL_NMTMN DEBUG_LVL_07 // 0x00000040L
|
|
#define EPL_DBGLVL_NMTMN_TRACE0 DEBUG_LVL_07_TRACE0
|
|
#define EPL_DBGLVL_NMTMN_TRACE1 DEBUG_LVL_07_TRACE1
|
|
#define EPL_DBGLVL_NMTMN_TRACE2 DEBUG_LVL_07_TRACE2
|
|
#define EPL_DBGLVL_NMTMN_TRACE3 DEBUG_LVL_07_TRACE3
|
|
#define EPL_DBGLVL_NMTMN_TRACE4 DEBUG_LVL_07_TRACE4
|
|
|
|
//...
|
|
|
|
#define EPL_DBGLVL_SDO DEBUG_LVL_25 // 0x01000000
|
|
#define EPL_DBGLVL_SDO_TRACE0 DEBUG_LVL_25_TRACE0
|
|
#define EPL_DBGLVL_SDO_TRACE1 DEBUG_LVL_25_TRACE1
|
|
#define EPL_DBGLVL_SDO_TRACE2 DEBUG_LVL_25_TRACE2
|
|
#define EPL_DBGLVL_SDO_TRACE3 DEBUG_LVL_25_TRACE3
|
|
#define EPL_DBGLVL_SDO_TRACE4 DEBUG_LVL_25_TRACE4
|
|
|
|
#define EPL_DBGLVL_VETH DEBUG_LVL_26 // 0x02000000
|
|
#define EPL_DBGLVL_VETH_TRACE0 DEBUG_LVL_26_TRACE0
|
|
#define EPL_DBGLVL_VETH_TRACE1 DEBUG_LVL_26_TRACE1
|
|
#define EPL_DBGLVL_VETH_TRACE2 DEBUG_LVL_26_TRACE2
|
|
#define EPL_DBGLVL_VETH_TRACE3 DEBUG_LVL_26_TRACE3
|
|
#define EPL_DBGLVL_VETH_TRACE4 DEBUG_LVL_26_TRACE4
|
|
|
|
#define EPL_DBGLVL_EVENTK DEBUG_LVL_27 // 0x04000000
|
|
#define EPL_DBGLVL_EVENTK_TRACE0 DEBUG_LVL_27_TRACE0
|
|
#define EPL_DBGLVL_EVENTK_TRACE1 DEBUG_LVL_27_TRACE1
|
|
#define EPL_DBGLVL_EVENTK_TRACE2 DEBUG_LVL_27_TRACE2
|
|
#define EPL_DBGLVL_EVENTK_TRACE3 DEBUG_LVL_27_TRACE3
|
|
#define EPL_DBGLVL_EVENTK_TRACE4 DEBUG_LVL_27_TRACE4
|
|
|
|
#define EPL_DBGLVL_EVENTU DEBUG_LVL_28 // 0x08000000
|
|
#define EPL_DBGLVL_EVENTU_TRACE0 DEBUG_LVL_28_TRACE0
|
|
#define EPL_DBGLVL_EVENTU_TRACE1 DEBUG_LVL_28_TRACE1
|
|
#define EPL_DBGLVL_EVENTU_TRACE2 DEBUG_LVL_28_TRACE2
|
|
#define EPL_DBGLVL_EVENTU_TRACE3 DEBUG_LVL_28_TRACE3
|
|
#define EPL_DBGLVL_EVENTU_TRACE4 DEBUG_LVL_28_TRACE4
|
|
|
|
// SharedBuff
|
|
#define EPL_DBGLVL_SHB DEBUG_LVL_29 // 0x10000000
|
|
#define EPL_DBGLVL_SHB_TRACE0 DEBUG_LVL_29_TRACE0
|
|
#define EPL_DBGLVL_SHB_TRACE1 DEBUG_LVL_29_TRACE1
|
|
#define EPL_DBGLVL_SHB_TRACE2 DEBUG_LVL_29_TRACE2
|
|
#define EPL_DBGLVL_SHB_TRACE3 DEBUG_LVL_29_TRACE3
|
|
#define EPL_DBGLVL_SHB_TRACE4 DEBUG_LVL_29_TRACE4
|
|
|
|
#define EPL_DBGLVL_ASSERT DEBUG_LVL_ASSERT // 0x20000000L
|
|
#define EPL_DBGLVL_ASSERT_TRACE0 DEBUG_LVL_ASSERT_TRACE0
|
|
#define EPL_DBGLVL_ASSERT_TRACE1 DEBUG_LVL_ASSERT_TRACE1
|
|
#define EPL_DBGLVL_ASSERT_TRACE2 DEBUG_LVL_ASSERT_TRACE2
|
|
#define EPL_DBGLVL_ASSERT_TRACE3 DEBUG_LVL_ASSERT_TRACE3
|
|
#define EPL_DBGLVL_ASSERT_TRACE4 DEBUG_LVL_ASSERT_TRACE4
|
|
|
|
#define EPL_DBGLVL_ERROR DEBUG_LVL_ERROR // 0x40000000L
|
|
#define EPL_DBGLVL_ERROR_TRACE0 DEBUG_LVL_ERROR_TRACE0
|
|
#define EPL_DBGLVL_ERROR_TRACE1 DEBUG_LVL_ERROR_TRACE1
|
|
#define EPL_DBGLVL_ERROR_TRACE2 DEBUG_LVL_ERROR_TRACE2
|
|
#define EPL_DBGLVL_ERROR_TRACE3 DEBUG_LVL_ERROR_TRACE3
|
|
#define EPL_DBGLVL_ERROR_TRACE4 DEBUG_LVL_ERROR_TRACE4
|
|
|
|
#define EPL_DBGLVL_ALWAYS DEBUG_LVL_ALWAYS // 0x80000000L
|
|
#define EPL_DBGLVL_ALWAYS_TRACE0 DEBUG_LVL_ALWAYS_TRACE0
|
|
#define EPL_DBGLVL_ALWAYS_TRACE1 DEBUG_LVL_ALWAYS_TRACE1
|
|
#define EPL_DBGLVL_ALWAYS_TRACE2 DEBUG_LVL_ALWAYS_TRACE2
|
|
#define EPL_DBGLVL_ALWAYS_TRACE3 DEBUG_LVL_ALWAYS_TRACE3
|
|
#define EPL_DBGLVL_ALWAYS_TRACE4 DEBUG_LVL_ALWAYS_TRACE4
|
|
|
|
//---------------------------------------------------------------------------
|
|
// typedef
|
|
//---------------------------------------------------------------------------
|
|
|
|
//---------------------------------------------------------------------------
|
|
// function prototypes
|
|
//---------------------------------------------------------------------------
|
|
|
|
#endif // #ifndef _EPL_INC_H_
|