]> git.proxmox.com Git - mirror_ubuntu-disco-kernel.git/commitdiff
Staging: remove epl driver
authorGreg Kroah-Hartman <gregkh@suse.de>
Wed, 29 Jul 2009 00:05:51 +0000 (17:05 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 15 Sep 2009 19:02:11 +0000 (12:02 -0700)
This is no longer maintained upstream, and no one cares about it at all,
so delete it.

The fact that it is duplicating an existing network driver also is a
good reason to remove it, it's causing nothing but trouble right now.

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>
105 files changed:
drivers/staging/Kconfig
drivers/staging/Makefile
drivers/staging/epl/Benchmark.h [deleted file]
drivers/staging/epl/Debug.h [deleted file]
drivers/staging/epl/Edrv8139.c [deleted file]
drivers/staging/epl/EdrvFec.h [deleted file]
drivers/staging/epl/EdrvSim.h [deleted file]
drivers/staging/epl/Epl.h [deleted file]
drivers/staging/epl/EplAmi.h [deleted file]
drivers/staging/epl/EplApiGeneric.c [deleted file]
drivers/staging/epl/EplApiLinux.h [deleted file]
drivers/staging/epl/EplApiLinuxKernel.c [deleted file]
drivers/staging/epl/EplApiProcessImage.c [deleted file]
drivers/staging/epl/EplCfg.h [deleted file]
drivers/staging/epl/EplDef.h [deleted file]
drivers/staging/epl/EplDll.h [deleted file]
drivers/staging/epl/EplDllCal.h [deleted file]
drivers/staging/epl/EplDllk.c [deleted file]
drivers/staging/epl/EplDllkCal.c [deleted file]
drivers/staging/epl/EplDlluCal.c [deleted file]
drivers/staging/epl/EplErrDef.h [deleted file]
drivers/staging/epl/EplErrorHandlerk.c [deleted file]
drivers/staging/epl/EplEvent.h [deleted file]
drivers/staging/epl/EplEventk.c [deleted file]
drivers/staging/epl/EplEventu.c [deleted file]
drivers/staging/epl/EplFrame.h [deleted file]
drivers/staging/epl/EplIdentu.c [deleted file]
drivers/staging/epl/EplInc.h [deleted file]
drivers/staging/epl/EplInstDef.h [deleted file]
drivers/staging/epl/EplLed.h [deleted file]
drivers/staging/epl/EplNmt.h [deleted file]
drivers/staging/epl/EplNmtCnu.c [deleted file]
drivers/staging/epl/EplNmtMnu.c [deleted file]
drivers/staging/epl/EplNmtk.c [deleted file]
drivers/staging/epl/EplNmtkCal.c [deleted file]
drivers/staging/epl/EplNmtu.c [deleted file]
drivers/staging/epl/EplNmtuCal.c [deleted file]
drivers/staging/epl/EplObd.c [deleted file]
drivers/staging/epl/EplObd.h [deleted file]
drivers/staging/epl/EplObdMacro.h [deleted file]
drivers/staging/epl/EplObdkCal.c [deleted file]
drivers/staging/epl/EplObdu.c [deleted file]
drivers/staging/epl/EplObduCal.c [deleted file]
drivers/staging/epl/EplPdo.h [deleted file]
drivers/staging/epl/EplPdok.c [deleted file]
drivers/staging/epl/EplPdokCal.c [deleted file]
drivers/staging/epl/EplPdou.c [deleted file]
drivers/staging/epl/EplSdo.h [deleted file]
drivers/staging/epl/EplSdoAc.h [deleted file]
drivers/staging/epl/EplSdoAsndu.c [deleted file]
drivers/staging/epl/EplSdoAsySequ.c [deleted file]
drivers/staging/epl/EplSdoComu.c [deleted file]
drivers/staging/epl/EplSdoUdpu.c [deleted file]
drivers/staging/epl/EplStatusu.c [deleted file]
drivers/staging/epl/EplTarget.h [deleted file]
drivers/staging/epl/EplTimer.h [deleted file]
drivers/staging/epl/EplTimeruLinuxKernel.c [deleted file]
drivers/staging/epl/EplVersion.h [deleted file]
drivers/staging/epl/Kconfig [deleted file]
drivers/staging/epl/Makefile [deleted file]
drivers/staging/epl/SharedBuff.c [deleted file]
drivers/staging/epl/SharedBuff.h [deleted file]
drivers/staging/epl/ShbIpc-LinuxKernel.c [deleted file]
drivers/staging/epl/ShbIpc.h [deleted file]
drivers/staging/epl/ShbLinuxKernel.h [deleted file]
drivers/staging/epl/SocketLinuxKernel.c [deleted file]
drivers/staging/epl/SocketLinuxKernel.h [deleted file]
drivers/staging/epl/TimerHighReskX86.c [deleted file]
drivers/staging/epl/VirtualEthernetLinux.c [deleted file]
drivers/staging/epl/amix86.c [deleted file]
drivers/staging/epl/demo_main.c [deleted file]
drivers/staging/epl/edrv.h [deleted file]
drivers/staging/epl/global.h [deleted file]
drivers/staging/epl/kernel/EplDllk.h [deleted file]
drivers/staging/epl/kernel/EplDllkCal.h [deleted file]
drivers/staging/epl/kernel/EplErrorHandlerk.h [deleted file]
drivers/staging/epl/kernel/EplEventk.h [deleted file]
drivers/staging/epl/kernel/EplNmtk.h [deleted file]
drivers/staging/epl/kernel/EplObdk.h [deleted file]
drivers/staging/epl/kernel/EplPdok.h [deleted file]
drivers/staging/epl/kernel/EplPdokCal.h [deleted file]
drivers/staging/epl/kernel/EplTimerHighResk.h [deleted file]
drivers/staging/epl/kernel/EplTimerk.h [deleted file]
drivers/staging/epl/kernel/VirtualEthernet.h [deleted file]
drivers/staging/epl/proc_fs.c [deleted file]
drivers/staging/epl/proc_fs.h [deleted file]
drivers/staging/epl/user/EplCfgMau.h [deleted file]
drivers/staging/epl/user/EplDllu.h [deleted file]
drivers/staging/epl/user/EplDlluCal.h [deleted file]
drivers/staging/epl/user/EplEventu.h [deleted file]
drivers/staging/epl/user/EplIdentu.h [deleted file]
drivers/staging/epl/user/EplLedu.h [deleted file]
drivers/staging/epl/user/EplNmtCnu.h [deleted file]
drivers/staging/epl/user/EplNmtMnu.h [deleted file]
drivers/staging/epl/user/EplNmtu.h [deleted file]
drivers/staging/epl/user/EplNmtuCal.h [deleted file]
drivers/staging/epl/user/EplObdu.h [deleted file]
drivers/staging/epl/user/EplObduCal.h [deleted file]
drivers/staging/epl/user/EplPdou.h [deleted file]
drivers/staging/epl/user/EplSdoAsndu.h [deleted file]
drivers/staging/epl/user/EplSdoAsySequ.h [deleted file]
drivers/staging/epl/user/EplSdoComu.h [deleted file]
drivers/staging/epl/user/EplSdoUdpu.h [deleted file]
drivers/staging/epl/user/EplStatusu.h [deleted file]
drivers/staging/epl/user/EplTimeru.h [deleted file]

index 58274ca5e63c4a1572af5c8899fedf200fae5827..7b500a88060a49e153999d821368a486a757c453 100644 (file)
@@ -95,8 +95,6 @@ source "drivers/staging/mimio/Kconfig"
 
 source "drivers/staging/frontier/Kconfig"
 
-source "drivers/staging/epl/Kconfig"
-
 source "drivers/staging/android/Kconfig"
 
 source "drivers/staging/dream/Kconfig"
index 0bf10ac04d07e7e5cbbd2aa5be23c886cca3e53d..1ac7c8f23d0299292466a2b27c71c43eb14a7c30 100644 (file)
@@ -30,7 +30,6 @@ obj-$(CONFIG_RTL8192SU)               += rtl8192su/
 obj-$(CONFIG_USB_RSPI)         += rspiusb/
 obj-$(CONFIG_INPUT_MIMIO)      += mimio/
 obj-$(CONFIG_TRANZPORT)                += frontier/
-obj-$(CONFIG_EPL)              += epl/
 obj-$(CONFIG_ANDROID)          += android/
 obj-$(CONFIG_ANDROID)          += dream/
 obj-$(CONFIG_DST)              += dst/
diff --git a/drivers/staging/epl/Benchmark.h b/drivers/staging/epl/Benchmark.h
deleted file mode 100644 (file)
index 4cc01bd..0000000
+++ /dev/null
@@ -1,425 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  header file for benchmarking
-
-  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: Benchmark.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.5 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    ...
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/08/16 d.k.:  start of implementation
-
-****************************************************************************/
-
-#ifndef _BENCHMARK_H_
-#define _BENCHMARK_H_
-
-#include "global.h"
-
-#include <linux/kernel.h>
-
-#ifdef CONFIG_COLDFIRE
-#include <asm/coldfire.h>
-#include <asm/m5485gpio.h>
-
-#define BENCHMARK_SET(x)    MCF_GPIO_PODR_PCIBG |= (1 << (x))  // (x+1)
-#define BENCHMARK_RESET(x)  MCF_GPIO_PODR_PCIBG &= ~(1 << (x)) // (x+1)
-#define BENCHMARK_TOGGLE(x) MCF_GPIO_PODR_PCIBR ^= (1 << (x - 5))
-#else
-#undef BENCHMARK_MODULES
-#define BENCHMARK_MODULES           0x00000000
-#endif
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-#ifndef BENCHMARK_MODULES
-#define BENCHMARK_MODULES                   0x00000000
-#endif
-
-#define BENCHMARK_MOD_01                    0x00000001
-#define BENCHMARK_MOD_02                    0x00000002
-#define BENCHMARK_MOD_03                    0x00000004
-#define BENCHMARK_MOD_04                    0x00000008
-#define BENCHMARK_MOD_05                    0x00000010
-#define BENCHMARK_MOD_06                    0x00000020
-#define BENCHMARK_MOD_07                    0x00000040
-#define BENCHMARK_MOD_08                    0x00000080
-#define BENCHMARK_MOD_09                    0x00000100
-#define BENCHMARK_MOD_10                    0x00000200
-#define BENCHMARK_MOD_11                    0x00000400
-#define BENCHMARK_MOD_12                    0x00000800
-#define BENCHMARK_MOD_13                    0x00001000
-#define BENCHMARK_MOD_14                    0x00002000
-#define BENCHMARK_MOD_15                    0x00004000
-#define BENCHMARK_MOD_16                    0x00008000
-#define BENCHMARK_MOD_17                    0x00010000
-#define BENCHMARK_MOD_18                    0x00020000
-#define BENCHMARK_MOD_19                    0x00040000
-#define BENCHMARK_MOD_20                    0x00080000
-#define BENCHMARK_MOD_21                    0x00100000
-#define BENCHMARK_MOD_22                    0x00200000
-#define BENCHMARK_MOD_23                    0x00400000
-#define BENCHMARK_MOD_24                    0x00800000
-#define BENCHMARK_MOD_25                    0x01000000
-#define BENCHMARK_MOD_26                    0x02000000
-#define BENCHMARK_MOD_27                    0x04000000
-#define BENCHMARK_MOD_28                    0x08000000
-#define BENCHMARK_MOD_29                    0x10000000
-#define BENCHMARK_MOD_30                    0x20000000
-#define BENCHMARK_MOD_31                    0x40000000
-#define BENCHMARK_MOD_32                    0x80000000
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_01)
-#define BENCHMARK_MOD_01_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_01_RESET(x)       BENCHMARK_RESET(x)
-#define BENCHMARK_MOD_01_TOGGLE(x)      BENCHMARK_TOGGLE(x)
-#else
-#define BENCHMARK_MOD_01_SET(x)
-#define BENCHMARK_MOD_01_RESET(x)
-#define BENCHMARK_MOD_01_TOGGLE(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_02)
-#define BENCHMARK_MOD_02_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_02_RESET(x)       BENCHMARK_RESET(x)
-#define BENCHMARK_MOD_02_TOGGLE(x)      BENCHMARK_TOGGLE(x)
-#else
-#define BENCHMARK_MOD_02_SET(x)
-#define BENCHMARK_MOD_02_RESET(x)
-#define BENCHMARK_MOD_02_TOGGLE(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_03)
-#define BENCHMARK_MOD_03_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_03_RESET(x)       BENCHMARK_RESET(x)
-#define BENCHMARK_MOD_03_TOGGLE(x)      BENCHMARK_TOGGLE(x)
-#else
-#define BENCHMARK_MOD_03_SET(x)
-#define BENCHMARK_MOD_03_RESET(x)
-#define BENCHMARK_MOD_03_TOGGLE(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_04)
-#define BENCHMARK_MOD_04_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_04_RESET(x)       BENCHMARK_RESET(x)
-#define BENCHMARK_MOD_04_TOGGLE(x)      BENCHMARK_TOGGLE(x)
-#else
-#define BENCHMARK_MOD_04_SET(x)
-#define BENCHMARK_MOD_04_RESET(x)
-#define BENCHMARK_MOD_04_TOGGLE(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_05)
-#define BENCHMARK_MOD_05_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_05_RESET(x)       BENCHMARK_RESET(x)
-#define BENCHMARK_MOD_05_TOGGLE(x)      BENCHMARK_TOGGLE(x)
-#else
-#define BENCHMARK_MOD_05_SET(x)
-#define BENCHMARK_MOD_05_RESET(x)
-#define BENCHMARK_MOD_05_TOGGLE(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_06)
-#define BENCHMARK_MOD_06_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_06_RESET(x)       BENCHMARK_RESET(x)
-#define BENCHMARK_MOD_06_TOGGLE(x)      BENCHMARK_TOGGLE(x)
-#else
-#define BENCHMARK_MOD_06_SET(x)
-#define BENCHMARK_MOD_06_RESET(x)
-#define BENCHMARK_MOD_06_TOGGLE(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_07)
-#define BENCHMARK_MOD_07_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_07_RESET(x)       BENCHMARK_RESET(x)
-#define BENCHMARK_MOD_07_TOGGLE(x)      BENCHMARK_TOGGLE(x)
-#else
-#define BENCHMARK_MOD_07_SET(x)
-#define BENCHMARK_MOD_07_RESET(x)
-#define BENCHMARK_MOD_07_TOGGLE(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_08)
-#define BENCHMARK_MOD_08_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_08_RESET(x)       BENCHMARK_RESET(x)
-#define BENCHMARK_MOD_08_TOGGLE(x)      BENCHMARK_TOGGLE(x)
-#else
-#define BENCHMARK_MOD_08_SET(x)
-#define BENCHMARK_MOD_08_RESET(x)
-#define BENCHMARK_MOD_08_TOGGLE(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_09)
-#define BENCHMARK_MOD_09_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_09_RESET(x)       BENCHMARK_RESET(x)
-#define BENCHMARK_MOD_09_TOGGLE(x)      BENCHMARK_TOGGLE(x)
-#else
-#define BENCHMARK_MOD_09_SET(x)
-#define BENCHMARK_MOD_09_RESET(x)
-#define BENCHMARK_MOD_09_TOGGLE(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_10)
-#define BENCHMARK_MOD_10_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_10_RESET(x)       BENCHMARK_RESET(x)
-#else
-#define BENCHMARK_MOD_10_SET(x)
-#define BENCHMARK_MOD_10_RESET(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_11)
-#define BENCHMARK_MOD_11_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_11_RESET(x)       BENCHMARK_RESET(x)
-#else
-#define BENCHMARK_MOD_11_SET(x)
-#define BENCHMARK_MOD_11_RESET(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_12)
-#define BENCHMARK_MOD_12_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_12_RESET(x)       BENCHMARK_RESET(x)
-#else
-#define BENCHMARK_MOD_12_SET(x)
-#define BENCHMARK_MOD_12_RESET(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_13)
-#define BENCHMARK_MOD_13_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_13_RESET(x)       BENCHMARK_RESET(x)
-#else
-#define BENCHMARK_MOD_13_SET(x)
-#define BENCHMARK_MOD_13_RESET(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_14)
-#define BENCHMARK_MOD_14_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_14_RESET(x)       BENCHMARK_RESET(x)
-#else
-#define BENCHMARK_MOD_14_SET(x)
-#define BENCHMARK_MOD_14_RESET(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_15)
-#define BENCHMARK_MOD_15_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_15_RESET(x)       BENCHMARK_RESET(x)
-#else
-#define BENCHMARK_MOD_15_SET(x)
-#define BENCHMARK_MOD_15_RESET(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_16)
-#define BENCHMARK_MOD_16_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_16_RESET(x)       BENCHMARK_RESET(x)
-#else
-#define BENCHMARK_MOD_16_SET(x)
-#define BENCHMARK_MOD_16_RESET(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_17)
-#define BENCHMARK_MOD_17_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_17_RESET(x)       BENCHMARK_RESET(x)
-#else
-#define BENCHMARK_MOD_17_SET(x)
-#define BENCHMARK_MOD_17_RESET(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_18)
-#define BENCHMARK_MOD_18_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_18_RESET(x)       BENCHMARK_RESET(x)
-#else
-#define BENCHMARK_MOD_18_SET(x)
-#define BENCHMARK_MOD_18_RESET(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_19)
-#define BENCHMARK_MOD_19_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_19_RESET(x)       BENCHMARK_RESET(x)
-#else
-#define BENCHMARK_MOD_19_SET(x)
-#define BENCHMARK_MOD_19_RESET(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_20)
-#define BENCHMARK_MOD_20_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_20_RESET(x)       BENCHMARK_RESET(x)
-#else
-#define BENCHMARK_MOD_20_SET(x)
-#define BENCHMARK_MOD_20_RESET(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_21)
-#define BENCHMARK_MOD_21_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_21_RESET(x)       BENCHMARK_RESET(x)
-#else
-#define BENCHMARK_MOD_21_SET(x)
-#define BENCHMARK_MOD_21_RESET(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_22)
-#define BENCHMARK_MOD_22_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_22_RESET(x)       BENCHMARK_RESET(x)
-#else
-#define BENCHMARK_MOD_22_SET(x)
-#define BENCHMARK_MOD_22_RESET(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_23)
-#define BENCHMARK_MOD_23_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_23_RESET(x)       BENCHMARK_RESET(x)
-#else
-#define BENCHMARK_MOD_23_SET(x)
-#define BENCHMARK_MOD_23_RESET(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_24)
-#define BENCHMARK_MOD_24_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_24_RESET(x)       BENCHMARK_RESET(x)
-#else
-#define BENCHMARK_MOD_24_SET(x)
-#define BENCHMARK_MOD_24_RESET(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_25)
-#define BENCHMARK_MOD_25_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_25_RESET(x)       BENCHMARK_RESET(x)
-#else
-#define BENCHMARK_MOD_25_SET(x)
-#define BENCHMARK_MOD_25_RESET(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_26)
-#define BENCHMARK_MOD_26_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_26_RESET(x)       BENCHMARK_RESET(x)
-#else
-#define BENCHMARK_MOD_26_SET(x)
-#define BENCHMARK_MOD_26_RESET(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_27)
-#define BENCHMARK_MOD_27_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_27_RESET(x)       BENCHMARK_RESET(x)
-#else
-#define BENCHMARK_MOD_27_SET(x)
-#define BENCHMARK_MOD_27_RESET(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_28)
-#define BENCHMARK_MOD_28_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_28_RESET(x)       BENCHMARK_RESET(x)
-#else
-#define BENCHMARK_MOD_28_SET(x)
-#define BENCHMARK_MOD_28_RESET(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_29)
-#define BENCHMARK_MOD_29_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_29_RESET(x)       BENCHMARK_RESET(x)
-#else
-#define BENCHMARK_MOD_29_SET(x)
-#define BENCHMARK_MOD_29_RESET(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_30)
-#define BENCHMARK_MOD_30_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_30_RESET(x)       BENCHMARK_RESET(x)
-#else
-#define BENCHMARK_MOD_30_SET(x)
-#define BENCHMARK_MOD_30_RESET(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_31)
-#define BENCHMARK_MOD_31_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_31_RESET(x)       BENCHMARK_RESET(x)
-#else
-#define BENCHMARK_MOD_31_SET(x)
-#define BENCHMARK_MOD_31_RESET(x)
-#endif
-
-#if (BENCHMARK_MODULES & BENCHMARK_MOD_32)
-#define BENCHMARK_MOD_32_SET(x)         BENCHMARK_SET(x)
-#define BENCHMARK_MOD_32_RESET(x)       BENCHMARK_RESET(x)
-#else
-#define BENCHMARK_MOD_32_SET(x)
-#define BENCHMARK_MOD_32_RESET(x)
-#endif
-
-//---------------------------------------------------------------------------
-// modul global types
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local vars
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-#endif // _BENCHMARK_H_
diff --git a/drivers/staging/epl/Debug.h b/drivers/staging/epl/Debug.h
deleted file mode 100644 (file)
index 851a222..0000000
+++ /dev/null
@@ -1,694 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  Debug interface
-
-  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: Debug.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.4 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    ...
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-****************************************************************************/
-
-#ifndef _DEBUG_H_
-#define _DEBUG_H_
-
-#include "global.h"
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// global const defines
-//---------------------------------------------------------------------------
-
-// These definitions are important for level-debug traces.
-// A macro DEBUG_GLB_LVL() defines the current debug-level using following bis.
-// If the corresponding bit is set then trace message will be printed out
-// (only if NDEBUG is not defined). The upper debug-levels are reserved for
-// the debug-levels ALWAYS, ERROR and ASSERT.
-#define DEBUG_LVL_01                    0x00000001
-#define DEBUG_LVL_02                    0x00000002
-#define DEBUG_LVL_03                    0x00000004
-#define DEBUG_LVL_04                    0x00000008
-#define DEBUG_LVL_05                    0x00000010
-#define DEBUG_LVL_06                    0x00000020
-#define DEBUG_LVL_07                    0x00000040
-#define DEBUG_LVL_08                    0x00000080
-#define DEBUG_LVL_09                    0x00000100
-#define DEBUG_LVL_10                    0x00000200
-#define DEBUG_LVL_11                    0x00000400
-#define DEBUG_LVL_12                    0x00000800
-#define DEBUG_LVL_13                    0x00001000
-#define DEBUG_LVL_14                    0x00002000
-#define DEBUG_LVL_15                    0x00004000
-#define DEBUG_LVL_16                    0x00008000
-#define DEBUG_LVL_17                    0x00010000
-#define DEBUG_LVL_18                    0x00020000
-#define DEBUG_LVL_19                    0x00040000
-#define DEBUG_LVL_20                    0x00080000
-#define DEBUG_LVL_21                    0x00100000
-#define DEBUG_LVL_22                    0x00200000
-#define DEBUG_LVL_23                    0x00400000
-#define DEBUG_LVL_24                    0x00800000
-#define DEBUG_LVL_25                    0x01000000
-#define DEBUG_LVL_26                    0x02000000
-#define DEBUG_LVL_27                    0x04000000
-#define DEBUG_LVL_28                    0x08000000
-#define DEBUG_LVL_29                    0x10000000
-#define DEBUG_LVL_ASSERT                0x20000000
-#define DEBUG_LVL_ERROR                 0x40000000
-#define DEBUG_LVL_ALWAYS                0x80000000
-
-//---------------------------------------------------------------------------
-// global types
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// global vars
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// global function prototypes
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// global macros
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// this macro defines a version string
-
-
-//---------------------------------------------------------------------------
-// this macro defines a build info string (e.g. for using in printf())
-#define DEBUG_MAKE_BUILD_INFO(prefix,product,prodid,descr,verstr,author) "\n" \
-    prefix "***************************************************\n" \
-    prefix "Project:   " product ", " prodid                  "\n" \
-    prefix "Descript.: " descr                                "\n" \
-    prefix "Author:    " author                               "\n" \
-    prefix "Date:      " __DATE__                             "\n" \
-    prefix "Version:   " verstr                               "\n" \
-    prefix "***************************************************\n\n"
-
-//---------------------------------------------------------------------------
-// The default debug-level is: ERROR and ALWAYS.
-// You can define an other debug-level in project settings.
-#ifndef DEF_DEBUG_LVL
-#define DEF_DEBUG_LVL                   (DEBUG_LVL_ALWAYS | DEBUG_LVL_ERROR)
-#endif
-#ifndef DEBUG_GLB_LVL
-#define DEBUG_GLB_LVL()                 (DEF_DEBUG_LVL)
-#endif
-
-//---------------------------------------------------------------------------
-    // At microcontrollers we do reduce the memory usage by deleting DEBUG_TRACE-lines
-    // (compiler does delete the lines).
-    //
-    // Here the parameter 'lvl' can only be used with one debug-level.
-    //
-    // Example: DEBUG_TRACE1(DEBUG_LVL_ERROR, "error code %d", dwRet);
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_ALWAYS)
-#define DEBUG_LVL_ALWAYS_TRACE0(str)                TRACE0(str)
-#define DEBUG_LVL_ALWAYS_TRACE1(str,p1)             TRACE1(str,p1)
-#define DEBUG_LVL_ALWAYS_TRACE2(str,p1,p2)          TRACE2(str,p1,p2)
-#define DEBUG_LVL_ALWAYS_TRACE3(str,p1,p2,p3)       TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_ALWAYS_TRACE4(str,p1,p2,p3,p4)    TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_ALWAYS_TRACE0(str)
-#define DEBUG_LVL_ALWAYS_TRACE1(str,p1)
-#define DEBUG_LVL_ALWAYS_TRACE2(str,p1,p2)
-#define DEBUG_LVL_ALWAYS_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_ALWAYS_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_ERROR)
-#define DEBUG_LVL_ERROR_TRACE0(str)                 TRACE0(str)
-#define DEBUG_LVL_ERROR_TRACE1(str,p1)              TRACE1(str,p1)
-#define DEBUG_LVL_ERROR_TRACE2(str,p1,p2)           TRACE2(str,p1,p2)
-#define DEBUG_LVL_ERROR_TRACE3(str,p1,p2,p3)        TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_ERROR_TRACE4(str,p1,p2,p3,p4)     TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_ERROR_TRACE0(str)
-#define DEBUG_LVL_ERROR_TRACE1(str,p1)
-#define DEBUG_LVL_ERROR_TRACE2(str,p1,p2)
-#define DEBUG_LVL_ERROR_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_ERROR_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_ASSERT)
-#define DEBUG_LVL_ASSERT_TRACE0(str)                TRACE0(str)
-#define DEBUG_LVL_ASSERT_TRACE1(str,p1)             TRACE1(str,p1)
-#define DEBUG_LVL_ASSERT_TRACE2(str,p1,p2)          TRACE2(str,p1,p2)
-#define DEBUG_LVL_ASSERT_TRACE3(str,p1,p2,p3)       TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_ASSERT_TRACE4(str,p1,p2,p3,p4)    TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_ASSERT_TRACE0(str)
-#define DEBUG_LVL_ASSERT_TRACE1(str,p1)
-#define DEBUG_LVL_ASSERT_TRACE2(str,p1,p2)
-#define DEBUG_LVL_ASSERT_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_ASSERT_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_29)
-#define DEBUG_LVL_29_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_29_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_29_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_29_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_29_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_29_TRACE0(str)
-#define DEBUG_LVL_29_TRACE1(str,p1)
-#define DEBUG_LVL_29_TRACE2(str,p1,p2)
-#define DEBUG_LVL_29_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_29_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_28)
-#define DEBUG_LVL_28_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_28_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_28_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_28_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_28_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_28_TRACE0(str)
-#define DEBUG_LVL_28_TRACE1(str,p1)
-#define DEBUG_LVL_28_TRACE2(str,p1,p2)
-#define DEBUG_LVL_28_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_28_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_27)
-#define DEBUG_LVL_27_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_27_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_27_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_27_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_27_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_27_TRACE0(str)
-#define DEBUG_LVL_27_TRACE1(str,p1)
-#define DEBUG_LVL_27_TRACE2(str,p1,p2)
-#define DEBUG_LVL_27_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_27_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_26)
-#define DEBUG_LVL_26_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_26_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_26_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_26_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_26_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_26_TRACE0(str)
-#define DEBUG_LVL_26_TRACE1(str,p1)
-#define DEBUG_LVL_26_TRACE2(str,p1,p2)
-#define DEBUG_LVL_26_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_26_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_25)
-#define DEBUG_LVL_25_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_25_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_25_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_25_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_25_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_25_TRACE0(str)
-#define DEBUG_LVL_25_TRACE1(str,p1)
-#define DEBUG_LVL_25_TRACE2(str,p1,p2)
-#define DEBUG_LVL_25_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_25_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_24)
-#define DEBUG_LVL_24_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_24_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_24_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_24_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_24_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_24_TRACE0(str)
-#define DEBUG_LVL_24_TRACE1(str,p1)
-#define DEBUG_LVL_24_TRACE2(str,p1,p2)
-#define DEBUG_LVL_24_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_24_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_23)
-#define DEBUG_LVL_23_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_23_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_23_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_23_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_23_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_23_TRACE0(str)
-#define DEBUG_LVL_23_TRACE1(str,p1)
-#define DEBUG_LVL_23_TRACE2(str,p1,p2)
-#define DEBUG_LVL_23_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_23_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_22)
-#define DEBUG_LVL_22_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_22_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_22_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_22_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_22_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_22_TRACE0(str)
-#define DEBUG_LVL_22_TRACE1(str,p1)
-#define DEBUG_LVL_22_TRACE2(str,p1,p2)
-#define DEBUG_LVL_22_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_22_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_21)
-#define DEBUG_LVL_21_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_21_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_21_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_21_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_21_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_21_TRACE0(str)
-#define DEBUG_LVL_21_TRACE1(str,p1)
-#define DEBUG_LVL_21_TRACE2(str,p1,p2)
-#define DEBUG_LVL_21_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_21_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_20)
-#define DEBUG_LVL_20_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_20_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_20_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_20_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_20_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_20_TRACE0(str)
-#define DEBUG_LVL_20_TRACE1(str,p1)
-#define DEBUG_LVL_20_TRACE2(str,p1,p2)
-#define DEBUG_LVL_20_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_20_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_19)
-#define DEBUG_LVL_19_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_19_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_19_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_19_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_19_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_19_TRACE0(str)
-#define DEBUG_LVL_19_TRACE1(str,p1)
-#define DEBUG_LVL_19_TRACE2(str,p1,p2)
-#define DEBUG_LVL_19_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_19_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_18)
-#define DEBUG_LVL_18_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_18_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_18_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_18_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_18_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_18_TRACE0(str)
-#define DEBUG_LVL_18_TRACE1(str,p1)
-#define DEBUG_LVL_18_TRACE2(str,p1,p2)
-#define DEBUG_LVL_18_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_18_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_17)
-#define DEBUG_LVL_17_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_17_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_17_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_17_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_17_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_17_TRACE0(str)
-#define DEBUG_LVL_17_TRACE1(str,p1)
-#define DEBUG_LVL_17_TRACE2(str,p1,p2)
-#define DEBUG_LVL_17_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_17_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_16)
-#define DEBUG_LVL_16_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_16_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_16_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_16_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_16_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_16_TRACE0(str)
-#define DEBUG_LVL_16_TRACE1(str,p1)
-#define DEBUG_LVL_16_TRACE2(str,p1,p2)
-#define DEBUG_LVL_16_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_16_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_15)
-#define DEBUG_LVL_15_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_15_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_15_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_15_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_15_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_15_TRACE0(str)
-#define DEBUG_LVL_15_TRACE1(str,p1)
-#define DEBUG_LVL_15_TRACE2(str,p1,p2)
-#define DEBUG_LVL_15_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_15_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_14)
-#define DEBUG_LVL_14_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_14_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_14_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_14_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_14_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_14_TRACE0(str)
-#define DEBUG_LVL_14_TRACE1(str,p1)
-#define DEBUG_LVL_14_TRACE2(str,p1,p2)
-#define DEBUG_LVL_14_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_14_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_13)
-#define DEBUG_LVL_13_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_13_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_13_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_13_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_13_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_13_TRACE0(str)
-#define DEBUG_LVL_13_TRACE1(str,p1)
-#define DEBUG_LVL_13_TRACE2(str,p1,p2)
-#define DEBUG_LVL_13_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_13_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_12)
-#define DEBUG_LVL_12_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_12_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_12_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_12_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_12_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_12_TRACE0(str)
-#define DEBUG_LVL_12_TRACE1(str,p1)
-#define DEBUG_LVL_12_TRACE2(str,p1,p2)
-#define DEBUG_LVL_12_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_12_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_11)
-#define DEBUG_LVL_11_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_11_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_11_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_11_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_11_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_11_TRACE0(str)
-#define DEBUG_LVL_11_TRACE1(str,p1)
-#define DEBUG_LVL_11_TRACE2(str,p1,p2)
-#define DEBUG_LVL_11_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_11_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_10)
-#define DEBUG_LVL_10_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_10_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_10_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_10_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_10_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_10_TRACE0(str)
-#define DEBUG_LVL_10_TRACE1(str,p1)
-#define DEBUG_LVL_10_TRACE2(str,p1,p2)
-#define DEBUG_LVL_10_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_10_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_09)
-#define DEBUG_LVL_09_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_09_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_09_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_09_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_09_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_09_TRACE0(str)
-#define DEBUG_LVL_09_TRACE1(str,p1)
-#define DEBUG_LVL_09_TRACE2(str,p1,p2)
-#define DEBUG_LVL_09_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_09_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_08)
-#define DEBUG_LVL_08_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_08_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_08_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_08_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_08_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_08_TRACE0(str)
-#define DEBUG_LVL_08_TRACE1(str,p1)
-#define DEBUG_LVL_08_TRACE2(str,p1,p2)
-#define DEBUG_LVL_08_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_08_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_07)
-#define DEBUG_LVL_07_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_07_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_07_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_07_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_07_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_07_TRACE0(str)
-#define DEBUG_LVL_07_TRACE1(str,p1)
-#define DEBUG_LVL_07_TRACE2(str,p1,p2)
-#define DEBUG_LVL_07_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_07_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_06)
-#define DEBUG_LVL_06_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_06_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_06_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_06_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_06_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_06_TRACE0(str)
-#define DEBUG_LVL_06_TRACE1(str,p1)
-#define DEBUG_LVL_06_TRACE2(str,p1,p2)
-#define DEBUG_LVL_06_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_06_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_05)
-#define DEBUG_LVL_05_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_05_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_05_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_05_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_05_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_05_TRACE0(str)
-#define DEBUG_LVL_05_TRACE1(str,p1)
-#define DEBUG_LVL_05_TRACE2(str,p1,p2)
-#define DEBUG_LVL_05_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_05_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_04)
-#define DEBUG_LVL_04_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_04_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_04_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_04_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_04_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_04_TRACE0(str)
-#define DEBUG_LVL_04_TRACE1(str,p1)
-#define DEBUG_LVL_04_TRACE2(str,p1,p2)
-#define DEBUG_LVL_04_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_04_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_03)
-#define DEBUG_LVL_03_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_03_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_03_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_03_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_03_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_03_TRACE0(str)
-#define DEBUG_LVL_03_TRACE1(str,p1)
-#define DEBUG_LVL_03_TRACE2(str,p1,p2)
-#define DEBUG_LVL_03_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_03_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_02)
-#define DEBUG_LVL_02_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_02_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_02_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_02_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_02_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_02_TRACE0(str)
-#define DEBUG_LVL_02_TRACE1(str,p1)
-#define DEBUG_LVL_02_TRACE2(str,p1,p2)
-#define DEBUG_LVL_02_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_02_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#if (DEBUG_GLB_LVL() & DEBUG_LVL_01)
-#define DEBUG_LVL_01_TRACE0(str)                    TRACE0(str)
-#define DEBUG_LVL_01_TRACE1(str,p1)                 TRACE1(str,p1)
-#define DEBUG_LVL_01_TRACE2(str,p1,p2)              TRACE2(str,p1,p2)
-#define DEBUG_LVL_01_TRACE3(str,p1,p2,p3)           TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_01_TRACE4(str,p1,p2,p3,p4)        TRACE4(str,p1,p2,p3,p4)
-#else
-#define DEBUG_LVL_01_TRACE0(str)
-#define DEBUG_LVL_01_TRACE1(str,p1)
-#define DEBUG_LVL_01_TRACE2(str,p1,p2)
-#define DEBUG_LVL_01_TRACE3(str,p1,p2,p3)
-#define DEBUG_LVL_01_TRACE4(str,p1,p2,p3,p4)
-#endif
-
-#define DEBUG_TRACE0(lvl,str)                           lvl##_TRACE0(str)
-#define DEBUG_TRACE1(lvl,str,p1)                        lvl##_TRACE1(str,p1)
-#define DEBUG_TRACE2(lvl,str,p1,p2)                     lvl##_TRACE2(str,p1,p2)
-#define DEBUG_TRACE3(lvl,str,p1,p2,p3)                  lvl##_TRACE3(str,p1,p2,p3)
-#define DEBUG_TRACE4(lvl,str,p1,p2,p3,p4)               lvl##_TRACE4(str,p1,p2,p3,p4)
-
-//---------------------------------------------------------------------------
-// The macro DEBUG_DUMP_DATA() can be used with the same debug-levels to dump
-// out data bytes. Function DumpData() has to be included.
-// NOTE: DUMP_DATA has to be defined in project settings.
-#if (!defined (NDEBUG) && defined (DUMP_DATA))
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-       void DumpData(char *szStr_p, u8 *pbData_p, u16 wSize_p);
-
-#ifdef __cplusplus
-}                              // von extern "C"
-#endif
-#define DEBUG_DUMP_DATA(lvl,str,ptr,siz)    if ((DEBUG_GLB_LVL() & (lvl))==(lvl)) \
-                                                    DumpData (str, (u8 *)(ptr), (u16)(siz));
-#else
-
-#define DEBUG_DUMP_DATA(lvl,str,ptr,siz)
-
-#endif
-
-//---------------------------------------------------------------------------
-// The macro DEBUG_ASSERT() can be used to print out an error string if the
-// parametered expresion does not result TRUE.
-// NOTE: If DEBUG_KEEP_ASSERT is defined, then DEBUG_ASSERT-line will not be
-//       deleted from compiler (in release version too).
-#if !defined (NDEBUG) || defined (DEBUG_KEEP_ASSERT)
-
-       // For microcontrollers process will be stopped using endless loop.
-
-#define DEBUG_ASSERT0(expr,str)         if (!(expr )) { \
-                                                    DEBUG_LVL_ASSERT_TRACE3 ( \
-                                                        "Assertion failed: line %d file '%s'\n" \
-                                                        "    -> '%s'\n", __LINE__, __FILE__, str); \
-                                                    while (1); }
-
-#define DEBUG_ASSERT1(expr,str,p1)      if (!(expr )) { \
-                                                    DEBUG_LVL_ASSERT_TRACE4 ( \
-                                                        "Assertion failed: line %d file '%s'\n" \
-                                                        "    -> '%s'\n" \
-                                                        "    -> 0x%08lX\n", __LINE__, __FILE__, str, (u32) p1); \
-                                                    while (1); }
-
-
-#else
-
-#define DEBUG_ASSERT0(expr,str)
-#define DEBUG_ASSERT1(expr,str,p1)
-
-#endif
-
-//---------------------------------------------------------------------------
-// The macro DEBUG_ONLY() implements code, if NDEBUG is not defined.
-#if !defined (DEBUG_ONLY)
-#if !defined (NDEBUG)
-
-#define DEBUG_ONLY(expr)    expr
-
-#else
-
-#define DEBUG_ONLY(expr)
-
-#endif
-#endif
-
-#endif // _DEBUG_H_
diff --git a/drivers/staging/epl/Edrv8139.c b/drivers/staging/epl/Edrv8139.c
deleted file mode 100644 (file)
index 44e3f7b..0000000
+++ /dev/null
@@ -1,1246 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  Ethernet driver for Realtek RTL8139 chips
-                except the RTL8139C+, because it has a different
-                Tx descriptor handling.
-
-  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: Edrv8139.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.10 $  $Date: 2008/11/21 09:00:38 $
-
-                $State: Exp $
-
-                Build Environment:
-                Dev C++ and GNU-Compiler for m68k
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2008/02/05 d.k.:   start of implementation
-
-****************************************************************************/
-
-#include "global.h"
-#include "EplInc.h"
-#include "edrv.h"
-
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/pci.h>
-#include <linux/interrupt.h>
-#include <linux/init.h>
-#include <linux/errno.h>
-#include <linux/major.h>
-#include <asm/io.h>
-#include <asm/uaccess.h>
-#include <asm/atomic.h>
-#include <asm/irq.h>
-#include <linux/sched.h>
-#include <linux/delay.h>
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-// Buffer handling:
-// All buffers are created statically (i.e. at compile time resp. at
-// initialisation via kmalloc() ) and not dynamically on request (i.e. via
-// EdrvAllocTxMsgBuffer().
-// EdrvAllocTxMsgBuffer() searches for an unused buffer which is large enough.
-// EdrvInit() may allocate some buffers with sizes less than maximum frame
-// size (i.e. 1514 bytes), e.g. for SoC, SoA, StatusResponse, IdentResponse,
-// NMT requests / commands. The less the size of the buffer the less the
-// number of the buffer.
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-#ifndef EDRV_MAX_TX_BUFFERS
-#define EDRV_MAX_TX_BUFFERS     20
-#endif
-
-#define EDRV_MAX_FRAME_SIZE     0x600
-
-#define EDRV_RX_BUFFER_SIZE     0x8610 // 32 kB + 16 Byte + 1,5 kB (WRAP is enabled)
-#define EDRV_RX_BUFFER_LENGTH   (EDRV_RX_BUFFER_SIZE & 0xF800) // buffer size cut down to 2 kB alignment
-
-#define EDRV_TX_BUFFER_SIZE     (EDRV_MAX_TX_BUFFERS * EDRV_MAX_FRAME_SIZE)    // n * (MTU + 14 + 4)
-
-#define DRV_NAME                "epl"
-
-#define EDRV_REGW_INT_MASK      0x3C   // interrupt mask register
-#define EDRV_REGW_INT_STATUS    0x3E   // interrupt status register
-#define EDRV_REGW_INT_ROK       0x0001 // Receive OK interrupt
-#define EDRV_REGW_INT_RER       0x0002 // Receive error interrupt
-#define EDRV_REGW_INT_TOK       0x0004 // Transmit OK interrupt
-#define EDRV_REGW_INT_TER       0x0008 // Transmit error interrupt
-#define EDRV_REGW_INT_RXOVW     0x0010 // Rx buffer overflow interrupt
-#define EDRV_REGW_INT_PUN       0x0020 // Packet underrun/ link change interrupt
-#define EDRV_REGW_INT_FOVW      0x0040 // Rx FIFO overflow interrupt
-#define EDRV_REGW_INT_LENCHG    0x2000 // Cable length change interrupt
-#define EDRV_REGW_INT_TIMEOUT   0x4000 // Time out interrupt
-#define EDRV_REGW_INT_SERR      0x8000 // System error interrupt
-#define EDRV_REGW_INT_MASK_DEF  (EDRV_REGW_INT_ROK \
-                                 | EDRV_REGW_INT_RER \
-                                 | EDRV_REGW_INT_TOK \
-                                 | EDRV_REGW_INT_TER \
-                                 | EDRV_REGW_INT_RXOVW \
-                                 | EDRV_REGW_INT_FOVW \
-                                 | EDRV_REGW_INT_PUN \
-                                 | EDRV_REGW_INT_TIMEOUT \
-                                 | EDRV_REGW_INT_SERR) // default interrupt mask
-
-#define EDRV_REGB_COMMAND       0x37   // command register
-#define EDRV_REGB_COMMAND_RST   0x10
-#define EDRV_REGB_COMMAND_RE    0x08
-#define EDRV_REGB_COMMAND_TE    0x04
-#define EDRV_REGB_COMMAND_BUFE  0x01
-
-#define EDRV_REGB_CMD9346       0x50   // 93C46 command register
-#define EDRV_REGB_CMD9346_LOCK  0x00   // lock configuration registers
-#define EDRV_REGB_CMD9346_UNLOCK 0xC0  // unlock configuration registers
-
-#define EDRV_REGDW_RCR          0x44   // Rx configuration register
-#define EDRV_REGDW_RCR_NO_FTH   0x0000E000     // no receive FIFO threshold
-#define EDRV_REGDW_RCR_RBLEN32K 0x00001000     // 32 kB receive buffer
-#define EDRV_REGDW_RCR_MXDMAUNL 0x00000700     // unlimited maximum DMA burst size
-#define EDRV_REGDW_RCR_NOWRAP   0x00000080     // do not wrap frame at end of buffer
-#define EDRV_REGDW_RCR_AER      0x00000020     // accept error frames (CRC, alignment, collided)
-#define EDRV_REGDW_RCR_AR       0x00000010     // accept runt
-#define EDRV_REGDW_RCR_AB       0x00000008     // accept broadcast frames
-#define EDRV_REGDW_RCR_AM       0x00000004     // accept multicast frames
-#define EDRV_REGDW_RCR_APM      0x00000002     // accept physical match frames
-#define EDRV_REGDW_RCR_AAP      0x00000001     // accept all frames
-#define EDRV_REGDW_RCR_DEF      (EDRV_REGDW_RCR_NO_FTH \
-                                 | EDRV_REGDW_RCR_RBLEN32K \
-                                 | EDRV_REGDW_RCR_MXDMAUNL \
-                                 | EDRV_REGDW_RCR_NOWRAP \
-                                 | EDRV_REGDW_RCR_AB \
-                                 | EDRV_REGDW_RCR_AM \
-                                 | EDRV_REGDW_RCR_APM) // default value
-
-#define EDRV_REGDW_TCR          0x40   // Tx configuration register
-#define EDRV_REGDW_TCR_VER_MASK 0x7CC00000     // mask for hardware version
-#define EDRV_REGDW_TCR_VER_C    0x74000000     // RTL8139C
-#define EDRV_REGDW_TCR_VER_D    0x74400000     // RTL8139D
-#define EDRV_REGDW_TCR_IFG96    0x03000000     // default interframe gap (960 ns)
-#define EDRV_REGDW_TCR_CRC      0x00010000     // disable appending of CRC by the controller
-#define EDRV_REGDW_TCR_MXDMAUNL 0x00000700     // maximum DMA burst size of 2048 b
-#define EDRV_REGDW_TCR_TXRETRY  0x00000000     // 16 retries
-#define EDRV_REGDW_TCR_DEF      (EDRV_REGDW_TCR_IFG96 \
-                                 | EDRV_REGDW_TCR_MXDMAUNL \
-                                 | EDRV_REGDW_TCR_TXRETRY)
-
-#define EDRV_REGW_MULINT        0x5C   // multiple interrupt select register
-
-#define EDRV_REGDW_MPC          0x4C   // missed packet counter register
-
-#define EDRV_REGDW_TSAD0        0x20   // Transmit start address of descriptor 0
-#define EDRV_REGDW_TSAD1        0x24   // Transmit start address of descriptor 1
-#define EDRV_REGDW_TSAD2        0x28   // Transmit start address of descriptor 2
-#define EDRV_REGDW_TSAD3        0x2C   // Transmit start address of descriptor 3
-#define EDRV_REGDW_TSD0         0x10   // Transmit status of descriptor 0
-#define EDRV_REGDW_TSD_CRS      0x80000000     // Carrier sense lost
-#define EDRV_REGDW_TSD_TABT     0x40000000     // Transmit Abort
-#define EDRV_REGDW_TSD_OWC      0x20000000     // Out of window collision
-#define EDRV_REGDW_TSD_TXTH_DEF 0x00020000     // Transmit FIFO threshold of 64 bytes
-#define EDRV_REGDW_TSD_TOK      0x00008000     // Transmit OK
-#define EDRV_REGDW_TSD_TUN      0x00004000     // Transmit FIFO underrun
-#define EDRV_REGDW_TSD_OWN      0x00002000     // Owner
-
-#define EDRV_REGDW_RBSTART      0x30   // Receive buffer start address
-
-#define EDRV_REGW_CAPR          0x38   // Current address of packet read
-
-#define EDRV_REGDW_IDR0         0x00   // ID register 0
-#define EDRV_REGDW_IDR4         0x04   // ID register 4
-
-#define EDRV_REGDW_MAR0         0x08   // Multicast address register 0
-#define EDRV_REGDW_MAR4         0x0C   // Multicast address register 4
-
-// defines for the status word in the receive buffer
-#define EDRV_RXSTAT_MAR         0x8000 // Multicast address received
-#define EDRV_RXSTAT_PAM         0x4000 // Physical address matched
-#define EDRV_RXSTAT_BAR         0x2000 // Broadcast address received
-#define EDRV_RXSTAT_ISE         0x0020 // Invalid symbol error
-#define EDRV_RXSTAT_RUNT        0x0010 // Runt packet received
-#define EDRV_RXSTAT_LONG        0x0008 // Long packet
-#define EDRV_RXSTAT_CRC         0x0004 // CRC error
-#define EDRV_RXSTAT_FAE         0x0002 // Frame alignment error
-#define EDRV_RXSTAT_ROK         0x0001 // Receive OK
-
-#define EDRV_REGDW_WRITE(dwReg, dwVal)  writel(dwVal, EdrvInstance_l.m_pIoAddr + dwReg)
-#define EDRV_REGW_WRITE(dwReg, wVal)    writew(wVal, EdrvInstance_l.m_pIoAddr + dwReg)
-#define EDRV_REGB_WRITE(dwReg, bVal)    writeb(bVal, EdrvInstance_l.m_pIoAddr + dwReg)
-#define EDRV_REGDW_READ(dwReg)          readl(EdrvInstance_l.m_pIoAddr + dwReg)
-#define EDRV_REGW_READ(dwReg)           readw(EdrvInstance_l.m_pIoAddr + dwReg)
-#define EDRV_REGB_READ(dwReg)           readb(EdrvInstance_l.m_pIoAddr + dwReg)
-
-// TracePoint support for realtime-debugging
-#ifdef _DBG_TRACE_POINTS_
-void TgtDbgSignalTracePoint(u8 bTracePointNumber_p);
-void TgtDbgPostTraceValue(u32 dwTraceValue_p);
-#define TGT_DBG_SIGNAL_TRACE_POINT(p)   TgtDbgSignalTracePoint(p)
-#define TGT_DBG_POST_TRACE_VALUE(v)     TgtDbgPostTraceValue(v)
-#else
-#define TGT_DBG_SIGNAL_TRACE_POINT(p)
-#define TGT_DBG_POST_TRACE_VALUE(v)
-#endif
-
-#define EDRV_COUNT_SEND                 TGT_DBG_SIGNAL_TRACE_POINT(2)
-#define EDRV_COUNT_TIMEOUT              TGT_DBG_SIGNAL_TRACE_POINT(3)
-#define EDRV_COUNT_PCI_ERR              TGT_DBG_SIGNAL_TRACE_POINT(4)
-#define EDRV_COUNT_TX                   TGT_DBG_SIGNAL_TRACE_POINT(5)
-#define EDRV_COUNT_RX                   TGT_DBG_SIGNAL_TRACE_POINT(6)
-#define EDRV_COUNT_LATECOLLISION        TGT_DBG_SIGNAL_TRACE_POINT(10)
-#define EDRV_COUNT_TX_COL_RL            TGT_DBG_SIGNAL_TRACE_POINT(11)
-#define EDRV_COUNT_TX_FUN               TGT_DBG_SIGNAL_TRACE_POINT(12)
-#define EDRV_COUNT_TX_ERR               TGT_DBG_SIGNAL_TRACE_POINT(13)
-#define EDRV_COUNT_RX_CRC               TGT_DBG_SIGNAL_TRACE_POINT(14)
-#define EDRV_COUNT_RX_ERR               TGT_DBG_SIGNAL_TRACE_POINT(15)
-#define EDRV_COUNT_RX_FOVW              TGT_DBG_SIGNAL_TRACE_POINT(16)
-#define EDRV_COUNT_RX_PUN               TGT_DBG_SIGNAL_TRACE_POINT(17)
-#define EDRV_COUNT_RX_FAE               TGT_DBG_SIGNAL_TRACE_POINT(18)
-#define EDRV_COUNT_RX_OVW               TGT_DBG_SIGNAL_TRACE_POINT(19)
-
-#define EDRV_TRACE_CAPR(x)              TGT_DBG_POST_TRACE_VALUE(((x) & 0xFFFF) | 0x06000000)
-#define EDRV_TRACE_RX_CRC(x)            TGT_DBG_POST_TRACE_VALUE(((x) & 0xFFFF) | 0x0E000000)
-#define EDRV_TRACE_RX_ERR(x)            TGT_DBG_POST_TRACE_VALUE(((x) & 0xFFFF) | 0x0F000000)
-#define EDRV_TRACE_RX_PUN(x)            TGT_DBG_POST_TRACE_VALUE(((x) & 0xFFFF) | 0x11000000)
-#define EDRV_TRACE(x)                   TGT_DBG_POST_TRACE_VALUE(((x) & 0xFFFF0000) | 0x0000FEC0)
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-/*
-typedef struct
-{
-    BOOL            m_fUsed;
-    unsigned int    m_uiSize;
-    MCD_bufDescFec *m_pBufDescr;
-
-} tEdrvTxBufferIntern;
-*/
-
-// Private structure
-typedef struct {
-       struct pci_dev *m_pPciDev;      // pointer to PCI device structure
-       void *m_pIoAddr;        // pointer to register space of Ethernet controller
-       u8 *m_pbRxBuf;  // pointer to Rx buffer
-       dma_addr_t m_pRxBufDma;
-       u8 *m_pbTxBuf;  // pointer to Tx buffer
-       dma_addr_t m_pTxBufDma;
-       BOOL m_afTxBufUsed[EDRV_MAX_TX_BUFFERS];
-       unsigned int m_uiCurTxDesc;
-
-       tEdrvInitParam m_InitParam;
-       tEdrvTxBuffer *m_pLastTransmittedTxBuffer;
-
-} tEdrvInstance;
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-static int EdrvInitOne(struct pci_dev *pPciDev,
-                      const struct pci_device_id *pId);
-
-static void EdrvRemoveOne(struct pci_dev *pPciDev);
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-// buffers and buffer descriptors and pointers
-
-static struct pci_device_id aEdrvPciTbl[] = {
-       {0x10ec, 0x8139, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
-       {0,}
-};
-
-MODULE_DEVICE_TABLE(pci, aEdrvPciTbl);
-
-static tEdrvInstance EdrvInstance_l;
-
-static struct pci_driver EdrvDriver = {
-       .name = DRV_NAME,
-       .id_table = aEdrvPciTbl,
-       .probe = EdrvInitOne,
-       .remove = EdrvRemoveOne,
-};
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          C L A S S  <edrv>                                              */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-//
-// Description:
-//
-//
-/***************************************************************************/
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   D E F I N I T I O N S                          //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local vars
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-static u8 EdrvCalcHash(u8 * pbMAC_p);
-
-//---------------------------------------------------------------------------
-//
-// Function:    EdrvInit
-//
-// Description: function for init of the Ethernet controller
-//
-// Parameters:  pEdrvInitParam_p    = pointer to struct including the init-parameters
-//
-// Returns:     Errorcode           = kEplSuccessful
-//                                  = kEplNoResource
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EdrvInit(tEdrvInitParam * pEdrvInitParam_p)
-{
-       tEplKernel Ret;
-       int iResult;
-
-       Ret = kEplSuccessful;
-
-       // clear instance structure
-       EPL_MEMSET(&EdrvInstance_l, 0, sizeof(EdrvInstance_l));
-
-       // save the init data
-       EdrvInstance_l.m_InitParam = *pEdrvInitParam_p;
-
-       // register PCI driver
-       iResult = pci_register_driver(&EdrvDriver);
-       if (iResult != 0) {
-               printk("%s pci_register_driver failed with %d\n", __func__,
-                      iResult);
-               Ret = kEplNoResource;
-               goto Exit;
-       }
-
-       if (EdrvInstance_l.m_pPciDev == NULL) {
-               printk("%s m_pPciDev=NULL\n", __func__);
-               Ret = kEplNoResource;
-               goto Exit;
-       }
-       // read MAC address from controller
-       printk("%s local MAC = ", __func__);
-       for (iResult = 0; iResult < 6; iResult++) {
-               pEdrvInitParam_p->m_abMyMacAddr[iResult] =
-                   EDRV_REGB_READ((EDRV_REGDW_IDR0 + iResult));
-               printk("%02X ",
-                      (unsigned int)pEdrvInitParam_p->m_abMyMacAddr[iResult]);
-       }
-       printk("\n");
-
-      Exit:
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EdrvShutdown
-//
-// Description: Shutdown the Ethernet controller
-//
-// Parameters:  void
-//
-// Returns:     Errorcode   = kEplSuccessful
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EdrvShutdown(void)
-{
-
-       // unregister PCI driver
-       printk("%s calling pci_unregister_driver()\n", __func__);
-       pci_unregister_driver(&EdrvDriver);
-
-       return kEplSuccessful;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EdrvDefineRxMacAddrEntry
-//
-// Description: Set a multicast entry into the Ethernet controller
-//
-// Parameters:  pbMacAddr_p     = pointer to multicast entry to set
-//
-// Returns:     Errorcode       = kEplSuccessful
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EdrvDefineRxMacAddrEntry(u8 * pbMacAddr_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       u32 dwData;
-       u8 bHash;
-
-       bHash = EdrvCalcHash(pbMacAddr_p);
-/*
-    dwData = ether_crc(6, pbMacAddr_p);
-
-    printk("EdrvDefineRxMacAddrEntry('%02X:%02X:%02X:%02X:%02X:%02X') hash = %u / %u  ether_crc = 0x%08lX\n",
-        (u16) pbMacAddr_p[0], (u16) pbMacAddr_p[1], (u16) pbMacAddr_p[2],
-        (u16) pbMacAddr_p[3], (u16) pbMacAddr_p[4], (u16) pbMacAddr_p[5],
-        (u16) bHash, (u16) (dwData >> 26), dwData);
-*/
-       if (bHash > 31) {
-               dwData = EDRV_REGDW_READ(EDRV_REGDW_MAR4);
-               dwData |= 1 << (bHash - 32);
-               EDRV_REGDW_WRITE(EDRV_REGDW_MAR4, dwData);
-       } else {
-               dwData = EDRV_REGDW_READ(EDRV_REGDW_MAR0);
-               dwData |= 1 << bHash;
-               EDRV_REGDW_WRITE(EDRV_REGDW_MAR0, dwData);
-       }
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EdrvUndefineRxMacAddrEntry
-//
-// Description: Reset a multicast entry in the Ethernet controller
-//
-// Parameters:  pbMacAddr_p     = pointer to multicast entry to reset
-//
-// Returns:     Errorcode       = kEplSuccessful
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EdrvUndefineRxMacAddrEntry(u8 * pbMacAddr_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       u32 dwData;
-       u8 bHash;
-
-       bHash = EdrvCalcHash(pbMacAddr_p);
-
-       if (bHash > 31) {
-               dwData = EDRV_REGDW_READ(EDRV_REGDW_MAR4);
-               dwData &= ~(1 << (bHash - 32));
-               EDRV_REGDW_WRITE(EDRV_REGDW_MAR4, dwData);
-       } else {
-               dwData = EDRV_REGDW_READ(EDRV_REGDW_MAR0);
-               dwData &= ~(1 << bHash);
-               EDRV_REGDW_WRITE(EDRV_REGDW_MAR0, dwData);
-       }
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EdrvAllocTxMsgBuffer
-//
-// Description: Register a Tx-Buffer
-//
-// Parameters:  pBuffer_p   = pointer to Buffer structure
-//
-// Returns:     Errorcode   = kEplSuccessful
-//                          = kEplEdrvNoFreeBufEntry
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EdrvAllocTxMsgBuffer(tEdrvTxBuffer * pBuffer_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       u32 i;
-
-       if (pBuffer_p->m_uiMaxBufferLen > EDRV_MAX_FRAME_SIZE) {
-               Ret = kEplEdrvNoFreeBufEntry;
-               goto Exit;
-       }
-       // search a free Tx buffer with appropriate size
-       for (i = 0; i < EDRV_MAX_TX_BUFFERS; i++) {
-               if (EdrvInstance_l.m_afTxBufUsed[i] == FALSE) {
-                       // free channel found
-                       EdrvInstance_l.m_afTxBufUsed[i] = TRUE;
-                       pBuffer_p->m_uiBufferNumber = i;
-                       pBuffer_p->m_pbBuffer =
-                           EdrvInstance_l.m_pbTxBuf +
-                           (i * EDRV_MAX_FRAME_SIZE);
-                       pBuffer_p->m_uiMaxBufferLen = EDRV_MAX_FRAME_SIZE;
-                       break;
-               }
-       }
-       if (i >= EDRV_MAX_TX_BUFFERS) {
-               Ret = kEplEdrvNoFreeBufEntry;
-               goto Exit;
-       }
-
-      Exit:
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EdrvReleaseTxMsgBuffer
-//
-// Description: Register a Tx-Buffer
-//
-// Parameters:  pBuffer_p   = pointer to Buffer structure
-//
-// Returns:     Errorcode   = kEplSuccessful
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EdrvReleaseTxMsgBuffer(tEdrvTxBuffer * pBuffer_p)
-{
-       unsigned int uiBufferNumber;
-
-       uiBufferNumber = pBuffer_p->m_uiBufferNumber;
-
-       if (uiBufferNumber < EDRV_MAX_TX_BUFFERS) {
-               EdrvInstance_l.m_afTxBufUsed[uiBufferNumber] = FALSE;
-       }
-
-       return kEplSuccessful;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EdrvSendTxMsg
-//
-// Description: immediately starts the transmission of the buffer
-//
-// Parameters:  pBuffer_p   = buffer descriptor to transmit
-//
-// Returns:     Errorcode   = kEplSuccessful
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EdrvSendTxMsg(tEdrvTxBuffer * pBuffer_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       unsigned int uiBufferNumber;
-       u32 dwTemp;
-
-       uiBufferNumber = pBuffer_p->m_uiBufferNumber;
-
-       if ((uiBufferNumber >= EDRV_MAX_TX_BUFFERS)
-           || (EdrvInstance_l.m_afTxBufUsed[uiBufferNumber] == FALSE)) {
-               Ret = kEplEdrvBufNotExisting;
-               goto Exit;
-       }
-
-       if (EdrvInstance_l.m_pLastTransmittedTxBuffer != NULL) {        // transmission is already active
-               Ret = kEplInvalidOperation;
-               dwTemp =
-                   EDRV_REGDW_READ((EDRV_REGDW_TSD0 +
-                                    (EdrvInstance_l.m_uiCurTxDesc *
-                                     sizeof(u32))));
-               printk("%s InvOp TSD%u = 0x%08X", __func__,
-                      EdrvInstance_l.m_uiCurTxDesc, dwTemp);
-               printk("  Cmd = 0x%02X\n",
-                      (u16) EDRV_REGB_READ(EDRV_REGB_COMMAND));
-               goto Exit;
-       }
-       // save pointer to buffer structure for TxHandler
-       EdrvInstance_l.m_pLastTransmittedTxBuffer = pBuffer_p;
-
-       EDRV_COUNT_SEND;
-
-       // pad with zeros if necessary, because controller does not do it
-       if (pBuffer_p->m_uiTxMsgLen < MIN_ETH_SIZE) {
-               EPL_MEMSET(pBuffer_p->m_pbBuffer + pBuffer_p->m_uiTxMsgLen, 0,
-                          MIN_ETH_SIZE - pBuffer_p->m_uiTxMsgLen);
-               pBuffer_p->m_uiTxMsgLen = MIN_ETH_SIZE;
-       }
-       // set DMA address of buffer
-       EDRV_REGDW_WRITE((EDRV_REGDW_TSAD0 +
-                         (EdrvInstance_l.m_uiCurTxDesc * sizeof(u32))),
-                        (EdrvInstance_l.m_pTxBufDma +
-                         (uiBufferNumber * EDRV_MAX_FRAME_SIZE)));
-       dwTemp =
-           EDRV_REGDW_READ((EDRV_REGDW_TSAD0 +
-                            (EdrvInstance_l.m_uiCurTxDesc * sizeof(u32))));
-//    printk("%s TSAD%u = 0x%08lX", __func__, EdrvInstance_l.m_uiCurTxDesc, dwTemp);
-
-       // start transmission
-       EDRV_REGDW_WRITE((EDRV_REGDW_TSD0 +
-                         (EdrvInstance_l.m_uiCurTxDesc * sizeof(u32))),
-                        (EDRV_REGDW_TSD_TXTH_DEF | pBuffer_p->m_uiTxMsgLen));
-       dwTemp =
-           EDRV_REGDW_READ((EDRV_REGDW_TSD0 +
-                            (EdrvInstance_l.m_uiCurTxDesc * sizeof(u32))));
-//    printk(" TSD%u = 0x%08lX / 0x%08lX\n", EdrvInstance_l.m_uiCurTxDesc, dwTemp, (u32)(EDRV_REGDW_TSD_TXTH_DEF | pBuffer_p->m_uiTxMsgLen));
-
-      Exit:
-       return Ret;
-}
-
-#if 0
-//---------------------------------------------------------------------------
-//
-// Function:    EdrvTxMsgReady
-//
-// Description: starts copying the buffer to the ethernet controller's FIFO
-//
-// Parameters:  pbBuffer_p - bufferdescriptor to transmit
-//
-// Returns:     Errorcode - kEplSuccessful
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EdrvTxMsgReady(tEdrvTxBuffer * pBuffer_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       unsigned int uiBufferNumber;
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EdrvTxMsgStart
-//
-// Description: starts transmission of the ethernet controller's FIFO
-//
-// Parameters:  pbBuffer_p - bufferdescriptor to transmit
-//
-// Returns:     Errorcode - kEplSuccessful
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EdrvTxMsgStart(tEdrvTxBuffer * pBuffer_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       return Ret;
-}
-#endif
-
-//---------------------------------------------------------------------------
-//
-// Function:    EdrvReinitRx
-//
-// Description: reinitialize the Rx process, because of error
-//
-// Parameters:  void
-//
-// Returns:     void
-//
-// State:
-//
-//---------------------------------------------------------------------------
-static void EdrvReinitRx(void)
-{
-       u8 bCmd;
-
-       // simply switch off and on the receiver
-       // this will reset the CAPR register
-       bCmd = EDRV_REGB_READ(EDRV_REGB_COMMAND);
-       EDRV_REGB_WRITE(EDRV_REGB_COMMAND, (bCmd & ~EDRV_REGB_COMMAND_RE));
-       EDRV_REGB_WRITE(EDRV_REGB_COMMAND, bCmd);
-
-       // set receive configuration register
-       EDRV_REGDW_WRITE(EDRV_REGDW_RCR, EDRV_REGDW_RCR_DEF);
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:     EdrvInterruptHandler
-//
-// Description:  interrupt handler
-//
-// Parameters:   void
-//
-// Returns:      void
-//
-// State:
-//
-//---------------------------------------------------------------------------
-#if 0
-void EdrvInterruptHandler(void)
-{
-}
-#endif
-
-static int TgtEthIsr(int nIrqNum_p, void *ppDevInstData_p)
-{
-//    EdrvInterruptHandler();
-       tEdrvRxBuffer RxBuffer;
-       tEdrvTxBuffer *pTxBuffer;
-       u16 wStatus;
-       u32 dwTxStatus;
-       u32 dwRxStatus;
-       u16 wCurRx;
-       u8 *pbRxBuf;
-       unsigned int uiLength;
-       int iHandled = IRQ_HANDLED;
-
-//    printk("¤");
-
-       // read the interrupt status
-       wStatus = EDRV_REGW_READ(EDRV_REGW_INT_STATUS);
-
-       // acknowledge the interrupts
-       EDRV_REGW_WRITE(EDRV_REGW_INT_STATUS, wStatus);
-
-       if (wStatus == 0) {
-               iHandled = IRQ_NONE;
-               goto Exit;
-       }
-       // process tasks
-       if ((wStatus & (EDRV_REGW_INT_TER | EDRV_REGW_INT_TOK)) != 0) { // transmit interrupt
-
-               if (EdrvInstance_l.m_pbTxBuf == NULL) {
-                       printk("%s Tx buffers currently not allocated\n",
-                              __func__);
-                       goto Exit;
-               }
-               // read transmit status
-               dwTxStatus =
-                   EDRV_REGDW_READ((EDRV_REGDW_TSD0 +
-                                    (EdrvInstance_l.m_uiCurTxDesc *
-                                     sizeof(u32))));
-               if ((dwTxStatus & (EDRV_REGDW_TSD_TOK | EDRV_REGDW_TSD_TABT | EDRV_REGDW_TSD_TUN)) != 0) {      // transmit finished
-                       EdrvInstance_l.m_uiCurTxDesc =
-                           (EdrvInstance_l.m_uiCurTxDesc + 1) & 0x03;
-                       pTxBuffer = EdrvInstance_l.m_pLastTransmittedTxBuffer;
-                       EdrvInstance_l.m_pLastTransmittedTxBuffer = NULL;
-
-                       if ((dwTxStatus & EDRV_REGDW_TSD_TOK) != 0) {
-                               EDRV_COUNT_TX;
-                       } else if ((dwTxStatus & EDRV_REGDW_TSD_TUN) != 0) {
-                               EDRV_COUNT_TX_FUN;
-                       } else {        // assume EDRV_REGDW_TSD_TABT
-                               EDRV_COUNT_TX_COL_RL;
-                       }
-
-//            printk("T");
-                       if (pTxBuffer != NULL) {
-                               // call Tx handler of Data link layer
-                               EdrvInstance_l.m_InitParam.
-                                   m_pfnTxHandler(pTxBuffer);
-                       }
-               } else {
-                       EDRV_COUNT_TX_ERR;
-               }
-       }
-
-       if ((wStatus & (EDRV_REGW_INT_RER | EDRV_REGW_INT_FOVW | EDRV_REGW_INT_RXOVW | EDRV_REGW_INT_PUN)) != 0) {      // receive error interrupt
-
-               if ((wStatus & EDRV_REGW_INT_FOVW) != 0) {
-                       EDRV_COUNT_RX_FOVW;
-               } else if ((wStatus & EDRV_REGW_INT_RXOVW) != 0) {
-                       EDRV_COUNT_RX_OVW;
-               } else if ((wStatus & EDRV_REGW_INT_PUN) != 0) {        // Packet underrun
-                       EDRV_TRACE_RX_PUN(wStatus);
-                       EDRV_COUNT_RX_PUN;
-               } else {        /*if ((wStatus & EDRV_REGW_INT_RER) != 0) */
-
-                       EDRV_TRACE_RX_ERR(wStatus);
-                       EDRV_COUNT_RX_ERR;
-               }
-
-               // reinitialize Rx process
-               EdrvReinitRx();
-       }
-
-       if ((wStatus & EDRV_REGW_INT_ROK) != 0) {       // receive interrupt
-
-               if (EdrvInstance_l.m_pbRxBuf == NULL) {
-                       printk("%s Rx buffers currently not allocated\n",
-                              __func__);
-                       goto Exit;
-               }
-               // read current offset in receive buffer
-               wCurRx =
-                   (EDRV_REGW_READ(EDRV_REGW_CAPR) +
-                    0x10) % EDRV_RX_BUFFER_LENGTH;
-
-               while ((EDRV_REGB_READ(EDRV_REGB_COMMAND) & EDRV_REGB_COMMAND_BUFE) == 0) {     // frame available
-
-                       // calculate pointer to current frame in receive buffer
-                       pbRxBuf = EdrvInstance_l.m_pbRxBuf + wCurRx;
-
-                       // read receive status u32
-                       dwRxStatus = le32_to_cpu(*((u32 *) pbRxBuf));
-
-                       // calculate length of received frame
-                       uiLength = dwRxStatus >> 16;
-
-                       if (uiLength == 0xFFF0) {       // frame is unfinished (maybe early Rx interrupt is active)
-                               break;
-                       }
-
-                       if ((dwRxStatus & EDRV_RXSTAT_ROK) == 0) {      // error occured while receiving this frame
-                               // ignore it
-                               if ((dwRxStatus & EDRV_RXSTAT_FAE) != 0) {
-                                       EDRV_COUNT_RX_FAE;
-                               } else if ((dwRxStatus & EDRV_RXSTAT_CRC) != 0) {
-                                       EDRV_TRACE_RX_CRC(dwRxStatus);
-                                       EDRV_COUNT_RX_CRC;
-                               } else {
-                                       EDRV_TRACE_RX_ERR(dwRxStatus);
-                                       EDRV_COUNT_RX_ERR;
-                               }
-
-                               // reinitialize Rx process
-                               EdrvReinitRx();
-
-                               break;
-                       } else {        // frame is OK
-                               RxBuffer.m_BufferInFrame =
-                                   kEdrvBufferLastInFrame;
-                               RxBuffer.m_uiRxMsgLen = uiLength - ETH_CRC_SIZE;
-                               RxBuffer.m_pbBuffer =
-                                   pbRxBuf + sizeof(dwRxStatus);
-
-//                printk("R");
-                               EDRV_COUNT_RX;
-
-                               // call Rx handler of Data link layer
-                               EdrvInstance_l.m_InitParam.
-                                   m_pfnRxHandler(&RxBuffer);
-                       }
-
-                       // calulate new offset (u32 aligned)
-                       wCurRx =
-                           (u16) ((wCurRx + uiLength + sizeof(dwRxStatus) +
-                                    3) & ~0x3);
-                       EDRV_TRACE_CAPR(wCurRx - 0x10);
-                       EDRV_REGW_WRITE(EDRV_REGW_CAPR, wCurRx - 0x10);
-
-                       // reread current offset in receive buffer
-                       wCurRx =
-                           (EDRV_REGW_READ(EDRV_REGW_CAPR) +
-                            0x10) % EDRV_RX_BUFFER_LENGTH;
-
-               }
-       }
-
-       if ((wStatus & EDRV_REGW_INT_SERR) != 0) {      // PCI error
-               EDRV_COUNT_PCI_ERR;
-       }
-
-       if ((wStatus & EDRV_REGW_INT_TIMEOUT) != 0) {   // Timeout
-               EDRV_COUNT_TIMEOUT;
-       }
-
-      Exit:
-       return iHandled;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EdrvInitOne
-//
-// Description: initializes one PCI device
-//
-// Parameters:  pPciDev             = pointer to corresponding PCI device structure
-//              pId                 = PCI device ID
-//
-// Returns:     (int)               = error code
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static int EdrvInitOne(struct pci_dev *pPciDev, const struct pci_device_id *pId)
-{
-       int iResult = 0;
-       u32 dwTemp;
-
-       if (EdrvInstance_l.m_pPciDev != NULL) { // Edrv is already connected to a PCI device
-               printk("%s device %s discarded\n", __func__,
-                      pci_name(pPciDev));
-               iResult = -ENODEV;
-               goto Exit;
-       }
-
-       if (pPciDev->revision >= 0x20) {
-               printk
-                   ("%s device %s is an enhanced 8139C+ version, which is not supported\n",
-                    __func__, pci_name(pPciDev));
-               iResult = -ENODEV;
-               goto Exit;
-       }
-
-       EdrvInstance_l.m_pPciDev = pPciDev;
-
-       // enable device
-       printk("%s enable device\n", __func__);
-       iResult = pci_enable_device(pPciDev);
-       if (iResult != 0) {
-               goto Exit;
-       }
-
-       if ((pci_resource_flags(pPciDev, 1) & IORESOURCE_MEM) == 0) {
-               iResult = -ENODEV;
-               goto Exit;
-       }
-
-       printk("%s request regions\n", __func__);
-       iResult = pci_request_regions(pPciDev, DRV_NAME);
-       if (iResult != 0) {
-               goto Exit;
-       }
-
-       printk("%s ioremap\n", __func__);
-       EdrvInstance_l.m_pIoAddr =
-           ioremap(pci_resource_start(pPciDev, 1),
-                   pci_resource_len(pPciDev, 1));
-       if (EdrvInstance_l.m_pIoAddr == NULL) { // remap of controller's register space failed
-               iResult = -EIO;
-               goto Exit;
-       }
-       // enable PCI busmaster
-       printk("%s enable busmaster\n", __func__);
-       pci_set_master(pPciDev);
-
-       // reset controller
-       printk("%s reset controller\n", __func__);
-       EDRV_REGB_WRITE(EDRV_REGB_COMMAND, EDRV_REGB_COMMAND_RST);
-
-       // wait until reset has finished
-       for (iResult = 500; iResult > 0; iResult--) {
-               if ((EDRV_REGB_READ(EDRV_REGB_COMMAND) & EDRV_REGB_COMMAND_RST)
-                   == 0) {
-                       break;
-               }
-
-               schedule_timeout(10);
-       }
-
-       // check hardware version, i.e. chip ID
-       dwTemp = EDRV_REGDW_READ(EDRV_REGDW_TCR);
-       if (((dwTemp & EDRV_REGDW_TCR_VER_MASK) != EDRV_REGDW_TCR_VER_C)
-           && ((dwTemp & EDRV_REGDW_TCR_VER_MASK) != EDRV_REGDW_TCR_VER_D)) {  // unsupported chip
-               printk("%s Unsupported chip! TCR = 0x%08X\n", __func__,
-                      dwTemp);
-               iResult = -ENODEV;
-               goto Exit;
-       }
-       // disable interrupts
-       printk("%s disable interrupts\n", __func__);
-       EDRV_REGW_WRITE(EDRV_REGW_INT_MASK, 0);
-       // acknowledge all pending interrupts
-       EDRV_REGW_WRITE(EDRV_REGW_INT_STATUS,
-                       EDRV_REGW_READ(EDRV_REGW_INT_STATUS));
-
-       // install interrupt handler
-       printk("%s install interrupt handler\n", __func__);
-       iResult =
-           request_irq(pPciDev->irq, TgtEthIsr, IRQF_SHARED,
-                       DRV_NAME /*pPciDev->dev.name */ , pPciDev);
-       if (iResult != 0) {
-               goto Exit;
-       }
-
-/*
-    // unlock configuration registers
-    printk("%s unlock configuration registers\n", __func__);
-    EDRV_REGB_WRITE(EDRV_REGB_CMD9346, EDRV_REGB_CMD9346_UNLOCK);
-
-    // check if user specified a MAC address
-    printk("%s check specified MAC address\n", __func__);
-    for (iResult = 0; iResult < 6; iResult++)
-    {
-        if (EdrvInstance_l.m_InitParam.m_abMyMacAddr[iResult] != 0)
-        {
-            printk("%s set local MAC address\n", __func__);
-            // write this MAC address to controller
-            EDRV_REGDW_WRITE(EDRV_REGDW_IDR0,
-                le32_to_cpu(*((u32*)&EdrvInstance_l.m_InitParam.m_abMyMacAddr[0])));
-            dwTemp = EDRV_REGDW_READ(EDRV_REGDW_IDR0);
-
-            EDRV_REGDW_WRITE(EDRV_REGDW_IDR4,
-                le32_to_cpu(*((u32*)&EdrvInstance_l.m_InitParam.m_abMyMacAddr[4])));
-            dwTemp = EDRV_REGDW_READ(EDRV_REGDW_IDR4);
-            break;
-        }
-    }
-    iResult = 0;
-
-    // lock configuration registers
-    EDRV_REGB_WRITE(EDRV_REGB_CMD9346, EDRV_REGB_CMD9346_LOCK);
-*/
-
-       // allocate buffers
-       printk("%s allocate buffers\n", __func__);
-       EdrvInstance_l.m_pbTxBuf =
-           pci_alloc_consistent(pPciDev, EDRV_TX_BUFFER_SIZE,
-                                &EdrvInstance_l.m_pTxBufDma);
-       if (EdrvInstance_l.m_pbTxBuf == NULL) {
-               iResult = -ENOMEM;
-               goto Exit;
-       }
-
-       EdrvInstance_l.m_pbRxBuf =
-           pci_alloc_consistent(pPciDev, EDRV_RX_BUFFER_SIZE,
-                                &EdrvInstance_l.m_pRxBufDma);
-       if (EdrvInstance_l.m_pbRxBuf == NULL) {
-               iResult = -ENOMEM;
-               goto Exit;
-       }
-       // reset pointers for Tx buffers
-       printk("%s reset pointers fo Tx buffers\n", __func__);
-       EDRV_REGDW_WRITE(EDRV_REGDW_TSAD0, 0);
-       dwTemp = EDRV_REGDW_READ(EDRV_REGDW_TSAD0);
-       EDRV_REGDW_WRITE(EDRV_REGDW_TSAD1, 0);
-       dwTemp = EDRV_REGDW_READ(EDRV_REGDW_TSAD1);
-       EDRV_REGDW_WRITE(EDRV_REGDW_TSAD2, 0);
-       dwTemp = EDRV_REGDW_READ(EDRV_REGDW_TSAD2);
-       EDRV_REGDW_WRITE(EDRV_REGDW_TSAD3, 0);
-       dwTemp = EDRV_REGDW_READ(EDRV_REGDW_TSAD3);
-
-       printk("    Command = 0x%02X\n",
-              (u16) EDRV_REGB_READ(EDRV_REGB_COMMAND));
-
-       // set pointer for receive buffer in controller
-       printk("%s set pointer to Rx buffer\n", __func__);
-       EDRV_REGDW_WRITE(EDRV_REGDW_RBSTART, EdrvInstance_l.m_pRxBufDma);
-
-       // enable transmitter and receiver
-       printk("%s enable Tx and Rx", __func__);
-       EDRV_REGB_WRITE(EDRV_REGB_COMMAND,
-                       (EDRV_REGB_COMMAND_RE | EDRV_REGB_COMMAND_TE));
-       printk("  Command = 0x%02X\n",
-              (u16) EDRV_REGB_READ(EDRV_REGB_COMMAND));
-
-       // clear missed packet counter to enable Rx/Tx process
-       EDRV_REGDW_WRITE(EDRV_REGDW_MPC, 0);
-
-       // set transmit configuration register
-       printk("%s set Tx conf register", __func__);
-       EDRV_REGDW_WRITE(EDRV_REGDW_TCR, EDRV_REGDW_TCR_DEF);
-       printk(" = 0x%08X\n", EDRV_REGDW_READ(EDRV_REGDW_TCR));
-
-       // set receive configuration register
-       printk("%s set Rx conf register", __func__);
-       EDRV_REGDW_WRITE(EDRV_REGDW_RCR, EDRV_REGDW_RCR_DEF);
-       printk(" = 0x%08X\n", EDRV_REGDW_READ(EDRV_REGDW_RCR));
-
-       // reset multicast MAC address filter
-       EDRV_REGDW_WRITE(EDRV_REGDW_MAR0, 0);
-       dwTemp = EDRV_REGDW_READ(EDRV_REGDW_MAR0);
-       EDRV_REGDW_WRITE(EDRV_REGDW_MAR4, 0);
-       dwTemp = EDRV_REGDW_READ(EDRV_REGDW_MAR4);
-
-/*
-    // enable transmitter and receiver
-    printk("%s enable Tx and Rx", __func__);
-    EDRV_REGB_WRITE(EDRV_REGB_COMMAND, (EDRV_REGB_COMMAND_RE | EDRV_REGB_COMMAND_TE));
-    printk("  Command = 0x%02X\n", (u16) EDRV_REGB_READ(EDRV_REGB_COMMAND));
-*/
-       // disable early interrupts
-       EDRV_REGW_WRITE(EDRV_REGW_MULINT, 0);
-
-       // enable interrupts
-       printk("%s enable interrupts\n", __func__);
-       EDRV_REGW_WRITE(EDRV_REGW_INT_MASK, EDRV_REGW_INT_MASK_DEF);
-
-      Exit:
-       printk("%s finished with %d\n", __func__, iResult);
-       return iResult;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EdrvRemoveOne
-//
-// Description: shuts down one PCI device
-//
-// Parameters:  pPciDev             = pointer to corresponding PCI device structure
-//
-// Returns:     (void)
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static void EdrvRemoveOne(struct pci_dev *pPciDev)
-{
-
-       if (EdrvInstance_l.m_pPciDev != pPciDev) {      // trying to remove unknown device
-               BUG_ON(EdrvInstance_l.m_pPciDev != pPciDev);
-               goto Exit;
-       }
-       // disable transmitter and receiver
-       EDRV_REGB_WRITE(EDRV_REGB_COMMAND, 0);
-
-       // disable interrupts
-       EDRV_REGW_WRITE(EDRV_REGW_INT_MASK, 0);
-
-       // remove interrupt handler
-       free_irq(pPciDev->irq, pPciDev);
-
-       // free buffers
-       if (EdrvInstance_l.m_pbTxBuf != NULL) {
-               pci_free_consistent(pPciDev, EDRV_TX_BUFFER_SIZE,
-                                   EdrvInstance_l.m_pbTxBuf,
-                                   EdrvInstance_l.m_pTxBufDma);
-               EdrvInstance_l.m_pbTxBuf = NULL;
-       }
-
-       if (EdrvInstance_l.m_pbRxBuf != NULL) {
-               pci_free_consistent(pPciDev, EDRV_RX_BUFFER_SIZE,
-                                   EdrvInstance_l.m_pbRxBuf,
-                                   EdrvInstance_l.m_pRxBufDma);
-               EdrvInstance_l.m_pbRxBuf = NULL;
-       }
-       // unmap controller's register space
-       if (EdrvInstance_l.m_pIoAddr != NULL) {
-               iounmap(EdrvInstance_l.m_pIoAddr);
-       }
-       // disable the PCI device
-       pci_disable_device(pPciDev);
-
-       // release memory regions
-       pci_release_regions(pPciDev);
-
-       EdrvInstance_l.m_pPciDev = NULL;
-
-      Exit:;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EdrvCalcHash
-//
-// Description: function calculates the entry for the hash-table from MAC
-//              address
-//
-// Parameters:  pbMAC_p - pointer to MAC address
-//
-// Returns:     hash value
-//
-// State:
-//
-//---------------------------------------------------------------------------
-#define HASH_BITS              6       // used bits in hash
-#define CRC32_POLY    0x04C11DB6       //
-//#define CRC32_POLY    0xEDB88320  //
-// G(x) = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1
-
-static u8 EdrvCalcHash(u8 * pbMAC_p)
-{
-       u32 dwByteCounter;
-       u32 dwBitCounter;
-       u32 dwData;
-       u32 dwCrc;
-       u32 dwCarry;
-       u8 *pbData;
-       u8 bHash;
-
-       pbData = pbMAC_p;
-
-       // calculate crc32 value of mac address
-       dwCrc = 0xFFFFFFFF;
-
-       for (dwByteCounter = 0; dwByteCounter < 6; dwByteCounter++) {
-               dwData = *pbData;
-               pbData++;
-               for (dwBitCounter = 0; dwBitCounter < 8;
-                    dwBitCounter++, dwData >>= 1) {
-                       dwCarry = (((dwCrc >> 31) ^ dwData) & 1);
-                       dwCrc = dwCrc << 1;
-                       if (dwCarry != 0) {
-                               dwCrc = (dwCrc ^ CRC32_POLY) | dwCarry;
-                       }
-               }
-       }
-
-//    printk("MyCRC = 0x%08lX\n", dwCrc);
-       // only upper 6 bits (HASH_BITS) are used
-       // which point to specific bit in the hash registers
-       bHash = (u8) ((dwCrc >> (32 - HASH_BITS)) & 0x3f);
-
-       return bHash;
-}
diff --git a/drivers/staging/epl/EdrvFec.h b/drivers/staging/epl/EdrvFec.h
deleted file mode 100644 (file)
index 56728d1..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  interface for ethernetdriver
-                "fast ethernet controller" (FEC)
-                freescale coldfire MCF528x and compatible FEC
-
-  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: EdrvFec.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.3 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                Dev C++ and GNU-Compiler for m68k
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2005/08/01 m.b.:   start of implementation
-
-****************************************************************************/
-
-#ifndef _EDRVFEC_H_
-#define _EDRVFEC_H_
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-// do this in config header
-#define TARGET_HARDWARE TGTHW_SPLC_CF54
-
-// base addresses
-#if ((TARGET_HARDWARE & TGT_CPU_MASK_) == TGT_CPU_5282)
-
-#elif ((TARGET_HARDWARE & TGT_CPU_MASK_) == TGT_CPU_5485)
-
-#else
-
-#error 'ERROR: Target was never implemented!'
-
-#endif
-
-//---------------------------------------------------------------------------
-// types
-//---------------------------------------------------------------------------
-
-// Rx and Tx buffer descriptor format
-typedef struct {
-       u16 m_wStatus;          // control / status  ---  used by edrv, do not change in application
-       u16 m_wLength;          // transfer length
-       u8 *m_pbData;           // buffer address
-} tBufferDescr;
-
-#if ((TARGET_HARDWARE & TGT_CPU_MASK_) == TGT_CPU_5282)
-
-#elif ((TARGET_HARDWARE & TGT_CPU_MASK_) == TGT_CPU_5485)
-
-#endif
-
-//---------------------------------------------------------------------------
-// function prototypes
-//---------------------------------------------------------------------------
-
-#endif // #ifndef _EDRV_FEC_H_
diff --git a/drivers/staging/epl/EdrvSim.h b/drivers/staging/epl/EdrvSim.h
deleted file mode 100644 (file)
index 191ec14..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  interface for ethernet driver simulation
-
-  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: EdrvSim.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.3 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                Dev C++ and GNU-Compiler for m68k
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/15 d.k.:   start of implementation
-
-****************************************************************************/
-
-#ifndef _EDRVSIM_H_
-#define _EDRVSIM_H_
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// types
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// function prototypes
-//---------------------------------------------------------------------------
-
-void EdrvRxInterruptHandler(u8 bBufferInFrame_p, u8 * pbEthernetData_p,
-                           u16 wDataLen_p);
-
-#endif // #ifndef _EDRVSIM_H_
diff --git a/drivers/staging/epl/Epl.h b/drivers/staging/epl/Epl.h
deleted file mode 100644 (file)
index 7f22b04..0000000
+++ /dev/null
@@ -1,272 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for EPL API layer
-
-  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: Epl.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_API_H_
-#define _EPL_API_H_
-
-#include "EplInc.h"
-#include "EplSdo.h"
-#include "EplObd.h"
-#include "EplLed.h"
-#include "EplEvent.h"
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// typedef
-//---------------------------------------------------------------------------
-
-typedef struct {
-       unsigned int m_uiNodeId;
-       tEplNmtState m_NmtState;
-       tEplNmtNodeEvent m_NodeEvent;
-       u16 m_wErrorCode;       // EPL error code if m_NodeEvent == kEplNmtNodeEventError
-       BOOL m_fMandatory;
-
-} tEplApiEventNode;
-
-typedef struct {
-       tEplNmtState m_NmtState;        // local NMT state
-       tEplNmtBootEvent m_BootEvent;
-       u16 m_wErrorCode;       // EPL error code if m_BootEvent == kEplNmtBootEventError
-
-} tEplApiEventBoot;
-
-typedef struct {
-       tEplLedType m_LedType;  // type of the LED (e.g. Status or Error)
-       BOOL m_fOn;             // state of the LED (e.g. on or off)
-
-} tEplApiEventLed;
-
-typedef enum {
-       kEplApiEventNmtStateChange = 0x10,      // m_NmtStateChange
-//    kEplApiEventRequestNmt     = 0x11,    // m_bNmtCmd
-       kEplApiEventCriticalError = 0x12,       // m_InternalError, Stack halted
-       kEplApiEventWarning = 0x13,     // m_InternalError, Stack running
-       kEplApiEventNode = 0x20,        // m_Node
-       kEplApiEventBoot = 0x21,        // m_Boot
-       kEplApiEventSdo = 0x62, // m_Sdo
-       kEplApiEventObdAccess = 0x69,   // m_ObdCbParam
-       kEplApiEventLed = 0x70, // m_Led
-
-} tEplApiEventType;
-
-typedef union {
-       tEplEventNmtStateChange m_NmtStateChange;
-       tEplEventError m_InternalError;
-       tEplSdoComFinished m_Sdo;
-       tEplObdCbParam m_ObdCbParam;
-       tEplApiEventNode m_Node;
-       tEplApiEventBoot m_Boot;
-       tEplApiEventLed m_Led;
-
-} tEplApiEventArg;
-
-typedef tEplKernel(*tEplApiCbEvent) (tEplApiEventType EventType_p,     // IN: event type (enum)
-                                    tEplApiEventArg *pEventArg_p,      // IN: event argument (union)
-                                     void *pUserArg_p);
-
-typedef struct {
-       unsigned int m_uiSizeOfStruct;
-       BOOL m_fAsyncOnly;      // do not need to register PRes
-       unsigned int m_uiNodeId;        // local node ID
-       u8 m_abMacAddress[6];   // local MAC address
-
-       // 0x1F82: NMT_FeatureFlags_U32
-       u32 m_dwFeatureFlags;
-       // Cycle Length (0x1006: NMT_CycleLen_U32) in [us]
-       u32 m_dwCycleLen;       // required for error detection
-       // 0x1F98: NMT_CycleTiming_REC
-       // 0x1F98.1: IsochrTxMaxPayload_U16
-       unsigned int m_uiIsochrTxMaxPayload;    // const
-       // 0x1F98.2: IsochrRxMaxPayload_U16
-       unsigned int m_uiIsochrRxMaxPayload;    // const
-       // 0x1F98.3: PResMaxLatency_U32
-       u32 m_dwPresMaxLatency; // const in [ns], only required for IdentRes
-       // 0x1F98.4: PReqActPayloadLimit_U16
-       unsigned int m_uiPreqActPayloadLimit;   // required for initialisation (+28 bytes)
-       // 0x1F98.5: PResActPayloadLimit_U16
-       unsigned int m_uiPresActPayloadLimit;   // required for initialisation of Pres frame (+28 bytes)
-       // 0x1F98.6: ASndMaxLatency_U32
-       u32 m_dwAsndMaxLatency; // const in [ns], only required for IdentRes
-       // 0x1F98.7: MultiplCycleCnt_U8
-       unsigned int m_uiMultiplCycleCnt;       // required for error detection
-       // 0x1F98.8: AsyncMTU_U16
-       unsigned int m_uiAsyncMtu;      // required to set up max frame size
-       // 0x1F98.9: Prescaler_U16
-       unsigned int m_uiPrescaler;     // required for sync
-       // $$$ Multiplexed Slot
-
-       // 0x1C14: DLL_LossOfFrameTolerance_U32 in [ns]
-       u32 m_dwLossOfFrameTolerance;
-
-       // 0x1F8A: NMT_MNCycleTiming_REC
-       // 0x1F8A.1: WaitSoCPReq_U32 in [ns]
-       u32 m_dwWaitSocPreq;
-
-       // 0x1F8A.2: AsyncSlotTimeout_U32 in [ns]
-       u32 m_dwAsyncSlotTimeout;
-
-       u32 m_dwDeviceType;     // NMT_DeviceType_U32
-       u32 m_dwVendorId;       // NMT_IdentityObject_REC.VendorId_U32
-       u32 m_dwProductCode;    // NMT_IdentityObject_REC.ProductCode_U32
-       u32 m_dwRevisionNumber; // NMT_IdentityObject_REC.RevisionNo_U32
-       u32 m_dwSerialNumber;   // NMT_IdentityObject_REC.SerialNo_U32
-       u64 m_qwVendorSpecificExt1;
-       u32 m_dwVerifyConfigurationDate;        // CFM_VerifyConfiguration_REC.ConfDate_U32
-       u32 m_dwVerifyConfigurationTime;        // CFM_VerifyConfiguration_REC.ConfTime_U32
-       u32 m_dwApplicationSwDate;      // PDL_LocVerApplSw_REC.ApplSwDate_U32 on programmable device or date portion of NMT_ManufactSwVers_VS on non-programmable device
-       u32 m_dwApplicationSwTime;      // PDL_LocVerApplSw_REC.ApplSwTime_U32 on programmable device or time portion of NMT_ManufactSwVers_VS on non-programmable device
-       u32 m_dwIpAddress;
-       u32 m_dwSubnetMask;
-       u32 m_dwDefaultGateway;
-       u8 m_sHostname[32];
-       u8 m_abVendorSpecificExt2[48];
-
-       char *m_pszDevName;     // NMT_ManufactDevName_VS (0x1008/0 local OD)
-       char *m_pszHwVersion;   // NMT_ManufactHwVers_VS  (0x1009/0 local OD)
-       char *m_pszSwVersion;   // NMT_ManufactSwVers_VS  (0x100A/0 local OD)
-
-       tEplApiCbEvent m_pfnCbEvent;
-       void *m_pEventUserArg;
-       tEplSyncCb m_pfnCbSync;
-
-} tEplApiInitParam;
-
-typedef struct {
-       void *m_pImage;
-       unsigned int m_uiSize;
-
-} tEplApiProcessImage;
-
-//---------------------------------------------------------------------------
-// function prototypes
-//---------------------------------------------------------------------------
-
-tEplKernel EplApiInitialize(tEplApiInitParam *pInitParam_p);
-
-tEplKernel EplApiShutdown(void);
-
-tEplKernel EplApiReadObject(tEplSdoComConHdl *pSdoComConHdl_p,
-                           unsigned int uiNodeId_p,
-                           unsigned int uiIndex_p,
-                           unsigned int uiSubindex_p,
-                           void *pDstData_le_p,
-                           unsigned int *puiSize_p,
-                           tEplSdoType SdoType_p, void *pUserArg_p);
-
-tEplKernel EplApiWriteObject(tEplSdoComConHdl *pSdoComConHdl_p,
-                            unsigned int uiNodeId_p,
-                            unsigned int uiIndex_p,
-                            unsigned int uiSubindex_p,
-                            void *pSrcData_le_p,
-                            unsigned int uiSize_p,
-                            tEplSdoType SdoType_p, void *pUserArg_p);
-
-tEplKernel EplApiFreeSdoChannel(tEplSdoComConHdl SdoComConHdl_p);
-
-tEplKernel EplApiReadLocalObject(unsigned int uiIndex_p,
-                                unsigned int uiSubindex_p,
-                                void *pDstData_p,
-                                unsigned int *puiSize_p);
-
-tEplKernel EplApiWriteLocalObject(unsigned int uiIndex_p,
-                                 unsigned int uiSubindex_p,
-                                 void *pSrcData_p,
-                                 unsigned int uiSize_p);
-
-tEplKernel EplApiCbObdAccess(tEplObdCbParam *pParam_p);
-
-tEplKernel EplApiLinkObject(unsigned int uiObjIndex_p,
-                           void *pVar_p,
-                           unsigned int *puiVarEntries_p,
-                           tEplObdSize *pEntrySize_p,
-                           unsigned int uiFirstSubindex_p);
-
-tEplKernel EplApiExecNmtCommand(tEplNmtEvent NmtEvent_p);
-
-tEplKernel EplApiProcess(void);
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-tEplKernel EplApiMnTriggerStateChange(unsigned int uiNodeId_p,
-                                     tEplNmtNodeCommand NodeCommand_p);
-#endif
-
-tEplKernel EplApiGetIdentResponse(unsigned int uiNodeId_p,
-                                 tEplIdentResponse **ppIdentResponse_p);
-
-// functions for process image will be implemented in separate file
-tEplKernel EplApiProcessImageSetup(void);
-tEplKernel EplApiProcessImageExchangeIn(tEplApiProcessImage *pPI_p);
-tEplKernel EplApiProcessImageExchangeOut(tEplApiProcessImage *pPI_p);
-
-#endif // #ifndef _EPL_API_H_
diff --git a/drivers/staging/epl/EplAmi.h b/drivers/staging/epl/EplAmi.h
deleted file mode 100644 (file)
index 3b46ea1..0000000
+++ /dev/null
@@ -1,323 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  Definitions for Abstract Memory Interface
-
-  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: EplAmi.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.2 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                GCC
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-   06.03.2000  -rs
-               Implementation
-
-   16.09.2002  -as
-               To save code space the functions AmiSetByte and AmiGetByte
-               are replaced by macros. For targets which assign u8 by
-               an 16Bit type, the definition of macros must changed to
-               functions.
-
-   23.02.2005  r.d.:
-               Functions included for extended data types such as UNSIGNED24,
-               UNSIGNED40, ...
-
-   13.06.2006  d.k.:
-               Extended the interface for EPL with the different functions
-               for little endian and big endian
-
-****************************************************************************/
-
-#ifndef _EPLAMI_H_
-#define _EPLAMI_H_
-
-
-//---------------------------------------------------------------------------
-//  types
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-//  Prototypen
-//---------------------------------------------------------------------------
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-//---------------------------------------------------------------------------
-//
-// write functions
-//
-// To save code space the function AmiSetByte is replaced by
-// an macro.
-// void  AmiSetByte  (void * pAddr_p, u8 bByteVal_p);
-
-#define AmiSetByteToBe(pAddr_p, bByteVal_p)  {*(u8 *)(pAddr_p) = (bByteVal_p);}
-#define AmiSetByteToLe(pAddr_p, bByteVal_p)  {*(u8 *)(pAddr_p) = (bByteVal_p);}
-
-void AmiSetWordToBe(void *pAddr_p, u16 wWordVal_p);
-void AmiSetDwordToBe(void *pAddr_p, u32 dwDwordVal_p);
-void AmiSetWordToLe(void *pAddr_p, u16 wWordVal_p);
-void AmiSetDwordToLe(void *pAddr_p, u32 dwDwordVal_p);
-
-//---------------------------------------------------------------------------
-//
-// read functions
-//
-// To save code space the function AmiGetByte is replaced by
-// an macro.
-// u8   AmiGetByte  (void * pAddr_p);
-
-#define AmiGetByteFromBe(pAddr_p)  (*(u8 *)(pAddr_p))
-#define AmiGetByteFromLe(pAddr_p)  (*(u8 *)(pAddr_p))
-
-u16 AmiGetWordFromBe(void *pAddr_p);
-u32 AmiGetDwordFromBe(void *pAddr_p);
-u16 AmiGetWordFromLe(void *pAddr_p);
-u32 AmiGetDwordFromLe(void *pAddr_p);
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiSetDword24()
-//
-// Description: sets a 24 bit value to a buffer
-//
-// Parameters:  pAddr_p         = pointer to destination buffer
-//              dwDwordVal_p    = value to set
-//
-// Return:      void
-//
-//---------------------------------------------------------------------------
-
-void AmiSetDword24ToBe(void *pAddr_p, u32 dwDwordVal_p);
-void AmiSetDword24ToLe(void *pAddr_p, u32 dwDwordVal_p);
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiGetDword24()
-//
-// Description: reads a 24 bit value from a buffer
-//
-// Parameters:  pAddr_p         = pointer to source buffer
-//
-// Return:      u32           = read value
-//
-//---------------------------------------------------------------------------
-
-u32 AmiGetDword24FromBe(void *pAddr_p);
-u32 AmiGetDword24FromLe(void *pAddr_p);
-
-//#ifdef USE_VAR64
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiSetQword40()
-//
-// Description: sets a 40 bit value to a buffer
-//
-// Parameters:  pAddr_p         = pointer to destination buffer
-//              qwQwordVal_p    = quadruple word value
-//
-// Return:      void
-//
-//---------------------------------------------------------------------------
-
-void AmiSetQword40ToBe(void *pAddr_p, u64 qwQwordVal_p);
-void AmiSetQword40ToLe(void *pAddr_p, u64 qwQwordVal_p);
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiGetQword40()
-//
-// Description: reads a 40 bit value from a buffer
-//
-// Parameters:  pAddr_p         = pointer to source buffer
-//
-// Return:      u64
-//
-//---------------------------------------------------------------------------
-
-u64 AmiGetQword40FromBe(void *pAddr_p);
-u64 AmiGetQword40FromLe(void *pAddr_p);
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiSetQword48()
-//
-// Description: sets a 48 bit value to a buffer
-//
-// Parameters:  pAddr_p         = pointer to destination buffer
-//              qwQwordVal_p    = quadruple word value
-//
-// Return:      void
-//
-//---------------------------------------------------------------------------
-
-void AmiSetQword48ToBe(void *pAddr_p, u64 qwQwordVal_p);
-void AmiSetQword48ToLe(void *pAddr_p, u64 qwQwordVal_p);
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiGetQword48()
-//
-// Description: reads a 48 bit value from a buffer
-//
-// Parameters:  pAddr_p         = pointer to source buffer
-//
-// Return:      u64
-//
-//---------------------------------------------------------------------------
-
-u64 AmiGetQword48FromBe(void *pAddr_p);
-u64 AmiGetQword48FromLe(void *pAddr_p);
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiSetQword56()
-//
-// Description: sets a 56 bit value to a buffer
-//
-// Parameters:  pAddr_p         = pointer to destination buffer
-//              qwQwordVal_p    = quadruple word value
-//
-// Return:      void
-//
-//---------------------------------------------------------------------------
-
-void AmiSetQword56ToBe(void *pAddr_p, u64 qwQwordVal_p);
-void AmiSetQword56ToLe(void *pAddr_p, u64 qwQwordVal_p);
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiGetQword56()
-//
-// Description: reads a 56 bit value from a buffer
-//
-// Parameters:  pAddr_p         = pointer to source buffer
-//
-// Return:      u64
-//
-//---------------------------------------------------------------------------
-
-u64 AmiGetQword56FromBe(void *pAddr_p);
-u64 AmiGetQword56FromLe(void *pAddr_p);
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiSetQword64()
-//
-// Description: sets a 64 bit value to a buffer
-//
-// Parameters:  pAddr_p         = pointer to destination buffer
-//              qwQwordVal_p    = quadruple word value
-//
-// Return:      void
-//
-//---------------------------------------------------------------------------
-
-void AmiSetQword64ToBe(void *pAddr_p, u64 qwQwordVal_p);
-void AmiSetQword64ToLe(void *pAddr_p, u64 qwQwordVal_p);
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiGetQword64()
-//
-// Description: reads a 64 bit value from a buffer
-//
-// Parameters:  pAddr_p         = pointer to source buffer
-//
-// Return:      void
-//
-//---------------------------------------------------------------------------
-
-u64 AmiGetQword64FromBe(void *pAddr_p);
-u64 AmiGetQword64FromLe(void *pAddr_p);
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiSetTimeOfDay()
-//
-// Description: sets a TIME_OF_DAY (CANopen) value to a buffer
-//
-// Parameters:  pAddr_p         = pointer to destination buffer
-//              pTimeOfDay_p    = pointer to struct TIME_OF_DAY
-//
-// Return:      void
-//
-//---------------------------------------------------------------------------
-void AmiSetTimeOfDay(void *pAddr_p, tTimeOfDay *pTimeOfDay_p);
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiGetTimeOfDay()
-//
-// Description: reads a TIME_OF_DAY (CANopen) value from a buffer
-//
-// Parameters:  pAddr_p         = pointer to source buffer
-//              pTimeOfDay_p    = pointer to struct TIME_OF_DAY
-//
-// Return:      void
-//
-//---------------------------------------------------------------------------
-void AmiGetTimeOfDay(void *pAddr_p, tTimeOfDay *pTimeOfDay_p);
-
-#ifdef __cplusplus
-}
-#endif
-#endif                         // ifndef _EPLAMI_H_
-// Die letzte Zeile muß unbedingt eine leere Zeile sein, weil manche Compiler// damit ein Problem haben, wenn das nicht so ist (z.B. GNU oder Borland C++ Builder).
diff --git a/drivers/staging/epl/EplApiGeneric.c b/drivers/staging/epl/EplApiGeneric.c
deleted file mode 100644 (file)
index c441956..0000000
+++ /dev/null
@@ -1,2054 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for generic EPL API module
-
-  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: EplApiGeneric.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.21 $  $Date: 2008/11/21 09:00:38 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/09/05 d.k.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#include "Epl.h"
-#include "kernel/EplDllk.h"
-#include "kernel/EplErrorHandlerk.h"
-#include "kernel/EplEventk.h"
-#include "kernel/EplNmtk.h"
-#include "kernel/EplObdk.h"
-#include "kernel/EplTimerk.h"
-#include "kernel/EplDllkCal.h"
-#include "kernel/EplPdokCal.h"
-#include "user/EplDlluCal.h"
-#include "user/EplLedu.h"
-#include "user/EplNmtCnu.h"
-#include "user/EplNmtMnu.h"
-#include "user/EplSdoComu.h"
-#include "user/EplIdentu.h"
-#include "user/EplStatusu.h"
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_PDOK)) != 0)
-#include "kernel/EplPdok.h"
-#endif
-
-#include "SharedBuff.h"
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDK)) == 0)
-#error "EPL API layer needs EPL module OBDK!"
-#endif
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          C L A S S  EplApi                                              */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-//
-// Description:
-//
-//
-/***************************************************************************/
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   D E F I N I T I O N S                          //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-typedef struct {
-       tEplApiInitParam m_InitParam;
-
-} tEplApiInstance;
-
-//---------------------------------------------------------------------------
-// local vars
-//---------------------------------------------------------------------------
-
-static tEplApiInstance EplApiInstance_g;
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-// NMT state change event callback function
-static tEplKernel EplApiCbNmtStateChange(tEplEventNmtStateChange NmtStateChange_p);
-
-// update DLL configuration from OD
-static tEplKernel EplApiUpdateDllConfig(BOOL fUpdateIdentity_p);
-
-// update OD from init param
-static tEplKernel EplApiUpdateObd(void);
-
-// process events from user event queue
-static tEplKernel EplApiProcessEvent(tEplEvent *pEplEvent_p);
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) != 0)
-// callback function of SDO module
-static tEplKernel EplApiCbSdoCon(tEplSdoComFinished *pSdoComFinished_p);
-#endif
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-// callback functions of NmtMnu module
-static tEplKernel EplApiCbNodeEvent(unsigned int uiNodeId_p,
-                                   tEplNmtNodeEvent NodeEvent_p,
-                                   tEplNmtState NmtState_p,
-                                   u16 wErrorCode_p, BOOL fMandatory_p);
-
-static tEplKernel EplApiCbBootEvent(tEplNmtBootEvent BootEvent_p,
-                                   tEplNmtState NmtState_p,
-                                   u16 wErrorCode_p);
-#endif
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_LEDU)) != 0)
-// callback function of Ledu module
-static tEplKernel EplApiCbLedStateChange(tEplLedType LedType_p, BOOL fOn_p);
-#endif
-
-// OD initialization function (implemented in Objdict.c)
-tEplKernel EplObdInitRam(tEplObdInitParam *pInitParam_p);
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplApiInitialize()
-//
-// Description: add and initialize new instance of EPL stack.
-//              After return from this function the application must start
-//              the NMT state machine via
-//              EplApiExecNmtCommand(kEplNmtEventSwReset)
-//              and thereby the whole EPL stack :-)
-//
-// Parameters:  pInitParam_p            = initialisation parameters
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplApiInitialize(tEplApiInitParam *pInitParam_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplObdInitParam ObdInitParam;
-       tEplDllkInitParam DllkInitParam;
-#ifndef EPL_NO_FIFO
-       tShbError ShbError;
-#endif
-
-       // reset instance structure
-       EPL_MEMSET(&EplApiInstance_g, 0, sizeof(EplApiInstance_g));
-
-       EPL_MEMCPY(&EplApiInstance_g.m_InitParam, pInitParam_p,
-                  min(sizeof(tEplApiInitParam),
-                      pInitParam_p->m_uiSizeOfStruct));
-
-       // check event callback function pointer
-       if (EplApiInstance_g.m_InitParam.m_pfnCbEvent == NULL) {        // application must always have an event callback function
-               Ret = kEplApiInvalidParam;
-               goto Exit;
-       }
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDK)) != 0)
-       // init OD
-// FIXME
-//    Ret = EplObdInitRam(&ObdInitParam);
-//    if (Ret != kEplSuccessful)
-//    {
-//        goto Exit;
-//    }
-
-       // initialize EplObd module
-       Ret = EplObdInit(&ObdInitParam);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-#endif
-
-#ifndef EPL_NO_FIFO
-       ShbError = ShbInit();
-       if (ShbError != kShbOk) {
-               Ret = kEplNoResource;
-               goto Exit;
-       }
-#endif
-
-       // initialize EplEventk module
-       Ret = EplEventkInit(EplApiInstance_g.m_InitParam.m_pfnCbSync);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // initialize EplEventu module
-       Ret = EplEventuInit(EplApiProcessEvent);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // init EplTimerk module
-       Ret = EplTimerkInit();
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // initialize EplNmtk module before DLL
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTK)) != 0)
-       Ret = EplNmtkInit();
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-#endif
-
-       // initialize EplDllk module
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLK)) != 0)
-       EPL_MEMCPY(DllkInitParam.m_be_abSrcMac,
-                  EplApiInstance_g.m_InitParam.m_abMacAddress, 6);
-       Ret = EplDllkAddInstance(&DllkInitParam);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // initialize EplErrorHandlerk module
-       Ret = EplErrorHandlerkInit();
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // initialize EplDllkCal module
-       Ret = EplDllkCalAddInstance();
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-#endif
-
-       // initialize EplDlluCal module
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLU)) != 0)
-       Ret = EplDlluCalAddInstance();
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-#endif
-
-       // initialize EplPdok module
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_PDOK)) != 0)
-       Ret = EplPdokAddInstance();
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-
-       Ret = EplPdokCalAddInstance();
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-#endif
-
-       // initialize EplNmtCnu module
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_CN)) != 0)
-       Ret = EplNmtCnuAddInstance(EplApiInstance_g.m_InitParam.m_uiNodeId);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-#endif
-
-       // initialize EplNmtu module
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTU)) != 0)
-       Ret = EplNmtuInit();
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // register NMT event callback function
-       Ret = EplNmtuRegisterStateChangeCb(EplApiCbNmtStateChange);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-#endif
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-       // initialize EplNmtMnu module
-       Ret = EplNmtMnuInit(EplApiCbNodeEvent, EplApiCbBootEvent);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // initialize EplIdentu module
-       Ret = EplIdentuInit();
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // initialize EplStatusu module
-       Ret = EplStatusuInit();
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-#endif
-
-       // initialize EplLedu module
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_LEDU)) != 0)
-       Ret = EplLeduInit(EplApiCbLedStateChange);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-#endif
-
-       // init SDO module
-#if ((((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOS)) != 0) || \
-     (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) != 0))
-       // init sdo command layer
-       Ret = EplSdoComInit();
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-#endif
-
-       // the application must start NMT state machine
-       // via EplApiExecNmtCommand(kEplNmtEventSwReset)
-       // and thereby the whole EPL stack
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplApiShutdown()
-//
-// Description: deletes an instance of EPL stack
-//
-// Parameters:  (none)
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplApiShutdown(void)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       // $$$ d.k.: check if NMT state is NMT_GS_OFF
-
-       // $$$ d.k.: maybe delete event queues at first, but this implies that
-       //           no other module must not use the event queues for communication
-       //           during shutdown.
-
-       // delete instance for all modules
-
-       // deinitialize EplSdoCom module
-#if ((((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOS)) != 0) || \
-     (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) != 0))
-       Ret = EplSdoComDelInstance();
-//    PRINTF1("EplSdoComDelInstance():  0x%X\n", Ret);
-#endif
-
-       // deinitialize EplLedu module
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_LEDU)) != 0)
-       Ret = EplLeduDelInstance();
-//    PRINTF1("EplLeduDelInstance():    0x%X\n", Ret);
-#endif
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-       // deinitialize EplNmtMnu module
-       Ret = EplNmtMnuDelInstance();
-//    PRINTF1("EplNmtMnuDelInstance():  0x%X\n", Ret);
-
-       // deinitialize EplIdentu module
-       Ret = EplIdentuDelInstance();
-//    PRINTF1("EplIdentuDelInstance():  0x%X\n", Ret);
-
-       // deinitialize EplStatusu module
-       Ret = EplStatusuDelInstance();
-//    PRINTF1("EplStatusuDelInstance():  0x%X\n", Ret);
-#endif
-
-       // deinitialize EplNmtCnu module
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_CN)) != 0)
-       Ret = EplNmtCnuDelInstance();
-//    PRINTF1("EplNmtCnuDelInstance():  0x%X\n", Ret);
-#endif
-
-       // deinitialize EplNmtu module
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTU)) != 0)
-       Ret = EplNmtuDelInstance();
-//    PRINTF1("EplNmtuDelInstance():    0x%X\n", Ret);
-#endif
-
-       // deinitialize EplDlluCal module
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLU)) != 0)
-       Ret = EplDlluCalDelInstance();
-//    PRINTF1("EplDlluCalDelInstance(): 0x%X\n", Ret);
-
-#endif
-
-       // deinitialize EplEventu module
-       Ret = EplEventuDelInstance();
-//    PRINTF1("EplEventuDelInstance():  0x%X\n", Ret);
-
-       // deinitialize EplNmtk module
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTK)) != 0)
-       Ret = EplNmtkDelInstance();
-//    PRINTF1("EplNmtkDelInstance():    0x%X\n", Ret);
-#endif
-
-       // deinitialize EplDllk module
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLK)) != 0)
-       Ret = EplDllkDelInstance();
-//    PRINTF1("EplDllkDelInstance():    0x%X\n", Ret);
-
-       // deinitialize EplDllkCal module
-       Ret = EplDllkCalDelInstance();
-//    PRINTF1("EplDllkCalDelInstance(): 0x%X\n", Ret);
-#endif
-
-       // deinitialize EplEventk module
-       Ret = EplEventkDelInstance();
-//    PRINTF1("EplEventkDelInstance():  0x%X\n", Ret);
-
-       // deinitialize EplTimerk module
-       Ret = EplTimerkDelInstance();
-//    PRINTF1("EplTimerkDelInstance():  0x%X\n", Ret);
-
-#ifndef EPL_NO_FIFO
-       ShbExit();
-#endif
-
-       return Ret;
-}
-
-//----------------------------------------------------------------------------
-// Function:    EplApiExecNmtCommand()
-//
-// Description: executes a NMT command, i.e. post the NMT command/event to the
-//              NMTk module. NMT commands which are not appropriate in the current
-//              NMT state are silently ignored. Please keep in mind that the
-//              NMT state may change until the NMT command is actually executed.
-//
-// Parameters:  NmtEvent_p              = NMT command/event
-//
-// Returns:     tEplKernel              = error code
-//
-// State:
-//----------------------------------------------------------------------------
-
-tEplKernel EplApiExecNmtCommand(tEplNmtEvent NmtEvent_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTU)) != 0)
-       Ret = EplNmtuNmtEvent(NmtEvent_p);
-#endif
-
-       return Ret;
-}
-
-//----------------------------------------------------------------------------
-// Function:    EplApiLinkObject()
-//
-// Description: Function maps array of application variables onto specified object in OD
-//
-// Parameters:  uiObjIndex_p            = Function maps variables for this object index
-//              pVar_p                  = Pointer to data memory area for the specified object
-//              puiVarEntries_p         = IN: pointer to number of entries to map
-//                                        OUT: pointer to number of actually used entries
-//              pEntrySize_p            = IN: pointer to size of one entry;
-//                                            if size is zero, the actual size will be read from OD
-//                                        OUT: pointer to entire size of all entries mapped
-//              uiFirstSubindex_p       = This is the first subindex to be mapped.
-//
-// Returns:     tEplKernel              = error code
-//
-// State:
-//----------------------------------------------------------------------------
-
-tEplKernel EplApiLinkObject(unsigned int uiObjIndex_p,
-                           void *pVar_p,
-                           unsigned int *puiVarEntries_p,
-                           tEplObdSize *pEntrySize_p,
-                           unsigned int uiFirstSubindex_p)
-{
-       u8 bVarEntries;
-       u8 bIndexEntries;
-       u8 *pbData;
-       unsigned int uiSubindex;
-       tEplVarParam VarParam;
-       tEplObdSize EntrySize;
-       tEplObdSize UsedSize;
-
-       tEplKernel RetCode = kEplSuccessful;
-
-       if ((pVar_p == NULL)
-           || (puiVarEntries_p == NULL)
-           || (*puiVarEntries_p == 0)
-           || (pEntrySize_p == NULL)) {
-               RetCode = kEplApiInvalidParam;
-               goto Exit;
-       }
-
-       pbData = (u8 *)pVar_p;
-       bVarEntries = (u8) * puiVarEntries_p;
-       UsedSize = 0;
-
-       // init VarParam structure with default values
-       VarParam.m_uiIndex = uiObjIndex_p;
-       VarParam.m_ValidFlag = kVarValidAll;
-
-       if (uiFirstSubindex_p != 0) {   // check if object exists by reading subindex 0x00,
-               // because user wants to link a variable to a subindex unequal 0x00
-               // read number of entries
-               EntrySize = (tEplObdSize) sizeof(bIndexEntries);
-               RetCode = EplObdReadEntry(uiObjIndex_p,
-                                         0x00,
-                                         (void *)&bIndexEntries,
-                                         &EntrySize);
-
-               if ((RetCode != kEplSuccessful) || (bIndexEntries == 0x00)) {
-                       // Object doesn't exist or invalid entry number
-                       RetCode = kEplObdIndexNotExist;
-                       goto Exit;
-               }
-       } else {                // user wants to link a variable to subindex 0x00
-               // that's OK
-               bIndexEntries = 0;
-       }
-
-       // Correct number of entries if number read from OD is greater
-       // than the specified number.
-       // This is done, so that we do not set more entries than subindexes the
-       // object actually has.
-       if ((bIndexEntries > (bVarEntries + uiFirstSubindex_p - 1)) &&
-           (bVarEntries != 0x00)) {
-               bIndexEntries = (u8) (bVarEntries + uiFirstSubindex_p - 1);
-       }
-       // map entries
-       for (uiSubindex = uiFirstSubindex_p; uiSubindex <= bIndexEntries;
-            uiSubindex++) {
-               // if passed entry size is 0, then get size from OD
-               if (*pEntrySize_p == 0x00) {
-                       // read entry size
-                       EntrySize = EplObdGetDataSize(uiObjIndex_p, uiSubindex);
-
-                       if (EntrySize == 0x00) {
-                               // invalid entry size (maybe object doesn't exist or entry of type DOMAIN is empty)
-                               RetCode = kEplObdSubindexNotExist;
-                               break;
-                       }
-               } else {        // use passed entry size
-                       EntrySize = *pEntrySize_p;
-               }
-
-               VarParam.m_uiSubindex = uiSubindex;
-
-               // set pointer to user var
-               VarParam.m_Size = EntrySize;
-               VarParam.m_pData = pbData;
-
-               UsedSize += EntrySize;
-               pbData += EntrySize;
-
-               RetCode = EplObdDefineVar(&VarParam);
-               if (RetCode != kEplSuccessful) {
-                       break;
-               }
-       }
-
-       // set number of mapped entries and entry size
-       *puiVarEntries_p = ((bIndexEntries - uiFirstSubindex_p) + 1);
-       *pEntrySize_p = UsedSize;
-
-      Exit:
-
-       return (RetCode);
-
-}
-
-// ----------------------------------------------------------------------------
-//
-// Function:    EplApiReadObject()
-//
-// Description: reads the specified entry from the OD of the specified node.
-//              If this node is a remote node, it performs a SDO transfer, which
-//              means this function returns kEplApiTaskDeferred and the application
-//              is informed via the event callback function when the task is completed.
-//
-// Parameters:  pSdoComConHdl_p         = INOUT: pointer to SDO connection handle (may be NULL in case of local OD access)
-//              uiNodeId_p              = IN: node ID (0 = itself)
-//              uiIndex_p               = IN: index of object in OD
-//              uiSubindex_p            = IN: sub-index of object in OD
-//              pDstData_le_p           = OUT: pointer to data in little endian
-//              puiSize_p               = INOUT: pointer to size of data
-//              SdoType_p               = IN: type of SDO transfer
-//              pUserArg_p              = IN: user-definable argument pointer,
-//                                            which will be passed to the event callback function
-//
-// Return:      tEplKernel              = error code
-//
-// ----------------------------------------------------------------------------
-
-tEplKernel EplApiReadObject(tEplSdoComConHdl *pSdoComConHdl_p,
-                           unsigned int uiNodeId_p,
-                           unsigned int uiIndex_p,
-                           unsigned int uiSubindex_p,
-                           void *pDstData_le_p,
-                           unsigned int *puiSize_p,
-                           tEplSdoType SdoType_p, void *pUserArg_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       if ((uiIndex_p == 0) || (pDstData_le_p == NULL) || (puiSize_p == NULL)
-           || (*puiSize_p == 0)) {
-               Ret = kEplApiInvalidParam;
-               goto Exit;
-       }
-
-       if (uiNodeId_p == 0 || uiNodeId_p == EplObdGetNodeId()) {       // local OD access can be performed
-               tEplObdSize ObdSize;
-
-               ObdSize = (tEplObdSize) * puiSize_p;
-               Ret =
-                   EplObdReadEntryToLe(uiIndex_p, uiSubindex_p, pDstData_le_p,
-                                       &ObdSize);
-               *puiSize_p = (unsigned int)ObdSize;
-       } else {                // perform SDO transfer
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) != 0)
-               tEplSdoComTransParamByIndex TransParamByIndex;
-//    tEplSdoComConHdl            SdoComConHdl;
-
-               // check if application provides space for handle
-               if (pSdoComConHdl_p == NULL) {
-                       Ret = kEplApiInvalidParam;
-                       goto Exit;
-//            pSdoComConHdl_p = &SdoComConHdl;
-               }
-               // init command layer connection
-               Ret = EplSdoComDefineCon(pSdoComConHdl_p, uiNodeId_p,   // target node id
-                                        SdoType_p);    // SDO type
-               if ((Ret != kEplSuccessful) && (Ret != kEplSdoComHandleExists)) {
-                       goto Exit;
-               }
-               TransParamByIndex.m_pData = pDstData_le_p;
-               TransParamByIndex.m_SdoAccessType = kEplSdoAccessTypeRead;
-               TransParamByIndex.m_SdoComConHdl = *pSdoComConHdl_p;
-               TransParamByIndex.m_uiDataSize = *puiSize_p;
-               TransParamByIndex.m_uiIndex = uiIndex_p;
-               TransParamByIndex.m_uiSubindex = uiSubindex_p;
-               TransParamByIndex.m_pfnSdoFinishedCb = EplApiCbSdoCon;
-               TransParamByIndex.m_pUserArg = pUserArg_p;
-
-               Ret = EplSdoComInitTransferByIndex(&TransParamByIndex);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-               Ret = kEplApiTaskDeferred;
-
-#else
-               Ret = kEplApiInvalidParam;
-#endif
-       }
-
-      Exit:
-       return Ret;
-}
-
-// ----------------------------------------------------------------------------
-//
-// Function:    EplApiWriteObject()
-//
-// Description: writes the specified entry to the OD of the specified node.
-//              If this node is a remote node, it performs a SDO transfer, which
-//              means this function returns kEplApiTaskDeferred and the application
-//              is informed via the event callback function when the task is completed.
-//
-// Parameters:  pSdoComConHdl_p         = INOUT: pointer to SDO connection handle (may be NULL in case of local OD access)
-//              uiNodeId_p              = IN: node ID (0 = itself)
-//              uiIndex_p               = IN: index of object in OD
-//              uiSubindex_p            = IN: sub-index of object in OD
-//              pSrcData_le_p           = IN: pointer to data in little endian
-//              uiSize_p                = IN: size of data in bytes
-//              SdoType_p               = IN: type of SDO transfer
-//              pUserArg_p              = IN: user-definable argument pointer,
-//                                            which will be passed to the event callback function
-//
-// Return:      tEplKernel              = error code
-//
-// ----------------------------------------------------------------------------
-
-tEplKernel EplApiWriteObject(tEplSdoComConHdl *pSdoComConHdl_p,
-                            unsigned int uiNodeId_p,
-                            unsigned int uiIndex_p,
-                            unsigned int uiSubindex_p,
-                            void *pSrcData_le_p,
-                            unsigned int uiSize_p,
-                            tEplSdoType SdoType_p, void *pUserArg_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       if ((uiIndex_p == 0) || (pSrcData_le_p == NULL) || (uiSize_p == 0)) {
-               Ret = kEplApiInvalidParam;
-               goto Exit;
-       }
-
-       if (uiNodeId_p == 0 || uiNodeId_p == EplObdGetNodeId()) {       // local OD access can be performed
-
-               Ret =
-                   EplObdWriteEntryFromLe(uiIndex_p, uiSubindex_p,
-                                          pSrcData_le_p, uiSize_p);
-       } else {                // perform SDO transfer
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) != 0)
-               tEplSdoComTransParamByIndex TransParamByIndex;
-//    tEplSdoComConHdl            SdoComConHdl;
-
-               // check if application provides space for handle
-               if (pSdoComConHdl_p == NULL) {
-                       Ret = kEplApiInvalidParam;
-                       goto Exit;
-//            pSdoComConHdl_p = &SdoComConHdl;
-               }
-               // d.k.: How to recycle command layer connection?
-               //       Try to redefine it, which will return kEplSdoComHandleExists
-               //       and the existing command layer handle.
-               //       If the returned handle is busy, EplSdoComInitTransferByIndex()
-               //       will return with error.
-               // $$$ d.k.: Collisions may occur with Configuration Manager, if both the application and
-               //           Configuration Manager, are trying to communicate with the very same node.
-               //     possible solution: disallow communication by application if Configuration Manager is busy
-
-               // init command layer connection
-               Ret = EplSdoComDefineCon(pSdoComConHdl_p, uiNodeId_p,   // target node id
-                                        SdoType_p);    // SDO type
-               if ((Ret != kEplSuccessful) && (Ret != kEplSdoComHandleExists)) {
-                       goto Exit;
-               }
-               TransParamByIndex.m_pData = pSrcData_le_p;
-               TransParamByIndex.m_SdoAccessType = kEplSdoAccessTypeWrite;
-               TransParamByIndex.m_SdoComConHdl = *pSdoComConHdl_p;
-               TransParamByIndex.m_uiDataSize = uiSize_p;
-               TransParamByIndex.m_uiIndex = uiIndex_p;
-               TransParamByIndex.m_uiSubindex = uiSubindex_p;
-               TransParamByIndex.m_pfnSdoFinishedCb = EplApiCbSdoCon;
-               TransParamByIndex.m_pUserArg = pUserArg_p;
-
-               Ret = EplSdoComInitTransferByIndex(&TransParamByIndex);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-               Ret = kEplApiTaskDeferred;
-
-#else
-               Ret = kEplApiInvalidParam;
-#endif
-       }
-
-      Exit:
-       return Ret;
-}
-
-// ----------------------------------------------------------------------------
-//
-// Function:    EplApiFreeSdoChannel()
-//
-// Description: frees the specified SDO channel.
-//              This function must be called after each call to EplApiReadObject()/EplApiWriteObject()
-//              which returns kEplApiTaskDeferred and the application
-//              is informed via the event callback function when the task is completed.
-//
-// Parameters:  SdoComConHdl_p          = IN: SDO connection handle
-//
-// Return:      tEplKernel              = error code
-//
-// ----------------------------------------------------------------------------
-
-tEplKernel EplApiFreeSdoChannel(tEplSdoComConHdl SdoComConHdl_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) != 0)
-
-       // init command layer connection
-       Ret = EplSdoComUndefineCon(SdoComConHdl_p);
-
-#else
-       Ret = kEplApiInvalidParam;
-#endif
-
-       return Ret;
-}
-
-// ----------------------------------------------------------------------------
-//
-// Function:    EplApiReadLocalObject()
-//
-// Description: reads the specified entry from the local OD.
-//
-// Parameters:  uiIndex_p               = IN: index of object in OD
-//              uiSubindex_p            = IN: sub-index of object in OD
-//              pDstData_p              = OUT: pointer to data in platform byte order
-//              puiSize_p               = INOUT: pointer to size of data
-//
-// Return:      tEplKernel              = error code
-//
-// ----------------------------------------------------------------------------
-
-tEplKernel EplApiReadLocalObject(unsigned int uiIndex_p,
-                                unsigned int uiSubindex_p,
-                                void *pDstData_p, unsigned int *puiSize_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplObdSize ObdSize;
-
-       ObdSize = (tEplObdSize) * puiSize_p;
-       Ret = EplObdReadEntry(uiIndex_p, uiSubindex_p, pDstData_p, &ObdSize);
-       *puiSize_p = (unsigned int)ObdSize;
-
-       return Ret;
-}
-
-// ----------------------------------------------------------------------------
-//
-// Function:    EplApiWriteLocalObject()
-//
-// Description: writes the specified entry to the local OD.
-//
-// Parameters:  uiIndex_p               = IN: index of object in OD
-//              uiSubindex_p            = IN: sub-index of object in OD
-//              pSrcData_p              = IN: pointer to data in platform byte order
-//              uiSize_p                = IN: size of data in bytes
-//
-// Return:      tEplKernel              = error code
-//
-// ----------------------------------------------------------------------------
-
-tEplKernel EplApiWriteLocalObject(unsigned int uiIndex_p,
-                                 unsigned int uiSubindex_p,
-                                 void *pSrcData_p,
-                                 unsigned int uiSize_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       Ret =
-           EplObdWriteEntry(uiIndex_p, uiSubindex_p, pSrcData_p,
-                            (tEplObdSize) uiSize_p);
-
-       return Ret;
-}
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-// ----------------------------------------------------------------------------
-//
-// Function:    EplApiMnTriggerStateChange()
-//
-// Description: triggers the specified node command for the specified node.
-//
-// Parameters:  uiNodeId_p              = node ID for which the node command will be executed
-//              NodeCommand_p           = node command
-//
-// Return:      tEplKernel              = error code
-//
-// ----------------------------------------------------------------------------
-
-tEplKernel EplApiMnTriggerStateChange(unsigned int uiNodeId_p,
-                                     tEplNmtNodeCommand NodeCommand_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       Ret = EplNmtMnuTriggerStateChange(uiNodeId_p, NodeCommand_p);
-
-       return Ret;
-}
-
-#endif // (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplApiCbObdAccess
-//
-// Description: callback function for OD accesses
-//
-// Parameters:  pParam_p                = OBD parameter
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplApiCbObdAccess(tEplObdCbParam *pParam_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-#if (EPL_API_OBD_FORWARD_EVENT != FALSE)
-       tEplApiEventArg EventArg;
-
-       // call user callback
-       // must be disabled for EplApiLinuxKernel.c, because of reentrancy problem
-       // for local OD access. This is not so bad as user callback function in
-       // application does not use OD callbacks at the moment.
-       EventArg.m_ObdCbParam = *pParam_p;
-       Ret = EplApiInstance_g.m_InitParam.m_pfnCbEvent(kEplApiEventObdAccess,
-                                                       &EventArg,
-                                                       EplApiInstance_g.
-                                                       m_InitParam.
-                                                       m_pEventUserArg);
-#endif
-
-       switch (pParam_p->m_uiIndex) {
-               //case 0x1006:    // NMT_CycleLen_U32 (valid on reset)
-       case 0x1C14:            // DLL_LossOfFrameTolerance_U32
-               //case 0x1F98:    // NMT_CycleTiming_REC (valid on reset)
-               {
-                       if (pParam_p->m_ObdEvent == kEplObdEvPostWrite) {
-                               // update DLL configuration
-                               Ret = EplApiUpdateDllConfig(FALSE);
-                       }
-                       break;
-               }
-
-       case 0x1020:            // CFM_VerifyConfiguration_REC.ConfId_U32 != 0
-               {
-                       if ((pParam_p->m_ObdEvent == kEplObdEvPostWrite)
-                           && (pParam_p->m_uiSubIndex == 3)
-                           && (*((u32 *) pParam_p->m_pArg) != 0)) {
-                               u32 dwVerifyConfInvalid = 0;
-                               // set CFM_VerifyConfiguration_REC.VerifyConfInvalid_U32 to 0
-                               Ret =
-                                   EplObdWriteEntry(0x1020, 4,
-                                                    &dwVerifyConfInvalid, 4);
-                               // ignore any error because this objekt is optional
-                               Ret = kEplSuccessful;
-                       }
-                       break;
-               }
-
-       case 0x1F9E:            // NMT_ResetCmd_U8
-               {
-                       if (pParam_p->m_ObdEvent == kEplObdEvPreWrite) {
-                               u8 bNmtCommand;
-
-                               bNmtCommand = *((u8 *) pParam_p->m_pArg);
-                               // check value range
-                               switch ((tEplNmtCommand) bNmtCommand) {
-                               case kEplNmtCmdResetNode:
-                               case kEplNmtCmdResetCommunication:
-                               case kEplNmtCmdResetConfiguration:
-                               case kEplNmtCmdSwReset:
-                               case kEplNmtCmdInvalidService:
-                                       // valid command identifier specified
-                                       break;
-
-                               default:
-                                       pParam_p->m_dwAbortCode =
-                                           EPL_SDOAC_VALUE_RANGE_EXCEEDED;
-                                       Ret = kEplObdAccessViolation;
-                                       break;
-                               }
-                       } else if (pParam_p->m_ObdEvent == kEplObdEvPostWrite) {
-                               u8 bNmtCommand;
-
-                               bNmtCommand = *((u8 *) pParam_p->m_pArg);
-                               // check value range
-                               switch ((tEplNmtCommand) bNmtCommand) {
-                               case kEplNmtCmdResetNode:
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTU)) != 0)
-                                       Ret =
-                                           EplNmtuNmtEvent
-                                           (kEplNmtEventResetNode);
-#endif
-                                       break;
-
-                               case kEplNmtCmdResetCommunication:
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTU)) != 0)
-                                       Ret =
-                                           EplNmtuNmtEvent
-                                           (kEplNmtEventResetCom);
-#endif
-                                       break;
-
-                               case kEplNmtCmdResetConfiguration:
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTU)) != 0)
-                                       Ret =
-                                           EplNmtuNmtEvent
-                                           (kEplNmtEventResetConfig);
-#endif
-                                       break;
-
-                               case kEplNmtCmdSwReset:
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTU)) != 0)
-                                       Ret =
-                                           EplNmtuNmtEvent
-                                           (kEplNmtEventSwReset);
-#endif
-                                       break;
-
-                               case kEplNmtCmdInvalidService:
-                                       break;
-
-                               default:
-                                       pParam_p->m_dwAbortCode =
-                                           EPL_SDOAC_VALUE_RANGE_EXCEEDED;
-                                       Ret = kEplObdAccessViolation;
-                                       break;
-                               }
-                       }
-                       break;
-               }
-
-       default:
-               break;
-       }
-
-//Exit:
-       return Ret;
-}
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplApiProcessEvent
-//
-// Description: processes events from event queue and forwards these to
-//              the application's event callback function
-//
-// Parameters:  pEplEvent_p =   pointer to event
-//
-// Returns:     tEplKernel  = errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplApiProcessEvent(tEplEvent *pEplEvent_p)
-{
-       tEplKernel Ret;
-       tEplEventError *pEventError;
-       tEplApiEventType EventType;
-
-       Ret = kEplSuccessful;
-
-       // process event
-       switch (pEplEvent_p->m_EventType) {
-               // error event
-       case kEplEventTypeError:
-               {
-                       pEventError = (tEplEventError *) pEplEvent_p->m_pArg;
-                       switch (pEventError->m_EventSource) {
-                               // treat the errors from the following sources as critical
-                       case kEplEventSourceEventk:
-                       case kEplEventSourceEventu:
-                       case kEplEventSourceDllk:
-                               {
-                                       EventType = kEplApiEventCriticalError;
-                                       // halt the stack by entering NMT state Off
-                                       Ret =
-                                           EplNmtuNmtEvent
-                                           (kEplNmtEventCriticalError);
-                                       break;
-                               }
-
-                               // the other errors are just warnings
-                       default:
-                               {
-                                       EventType = kEplApiEventWarning;
-                                       break;
-                               }
-                       }
-
-                       // call user callback
-                       Ret =
-                           EplApiInstance_g.m_InitParam.m_pfnCbEvent(EventType,
-                                                                     (tEplApiEventArg
-                                                                      *)
-                                                                     pEventError,
-                                                                     EplApiInstance_g.
-                                                                     m_InitParam.
-                                                                     m_pEventUserArg);
-                       // discard error from callback function, because this could generate an endless loop
-                       Ret = kEplSuccessful;
-                       break;
-               }
-
-               // at present, there are no other events for this module
-       default:
-               break;
-       }
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplApiCbNmtStateChange
-//
-// Description: callback function for NMT state changes
-//
-// Parameters:  NmtStateChange_p        = NMT state change event
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplApiCbNmtStateChange(tEplEventNmtStateChange NmtStateChange_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       u8 bNmtState;
-       tEplApiEventArg EventArg;
-
-       // save NMT state in OD
-       bNmtState = (u8) NmtStateChange_p.m_NewNmtState;
-       Ret = EplObdWriteEntry(0x1F8C, 0, &bNmtState, 1);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // do work which must be done in that state
-       switch (NmtStateChange_p.m_NewNmtState) {
-               // EPL stack is not running
-       case kEplNmtGsOff:
-               break;
-
-               // first init of the hardware
-       case kEplNmtGsInitialising:
-#if 0
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_UDP)) != 0)
-               // configure SDO via UDP (i.e. bind it to the EPL ethernet interface)
-               Ret =
-                   EplSdoUdpuConfig(EplApiInstance_g.m_InitParam.m_dwIpAddress,
-                                    EPL_C_SDO_EPL_PORT);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-#endif
-#endif
-
-               break;
-
-               // init of the manufacturer-specific profile area and the
-               // standardised device profile area
-       case kEplNmtGsResetApplication:
-               {
-                       // reset application part of OD
-                       Ret = EplObdAccessOdPart(kEplObdPartApp,
-                                                kEplObdDirLoad);
-                       if (Ret != kEplSuccessful) {
-                               goto Exit;
-                       }
-
-                       break;
-               }
-
-               // init of the communication profile area
-       case kEplNmtGsResetCommunication:
-               {
-                       // reset communication part of OD
-                       Ret = EplObdAccessOdPart(kEplObdPartGen,
-                                                kEplObdDirLoad);
-
-                       if (Ret != kEplSuccessful) {
-                               goto Exit;
-                       }
-                       // $$$ d.k.: update OD only if OD was not loaded from non-volatile memory
-                       Ret = EplApiUpdateObd();
-                       if (Ret != kEplSuccessful) {
-                               goto Exit;
-                       }
-
-                       break;
-               }
-
-               // build the configuration with infos from OD
-       case kEplNmtGsResetConfiguration:
-               {
-
-                       Ret = EplApiUpdateDllConfig(TRUE);
-                       if (Ret != kEplSuccessful) {
-                               goto Exit;
-                       }
-
-                       break;
-               }
-
-               //-----------------------------------------------------------
-               // CN part of the state machine
-
-               // node liste for EPL-Frames and check timeout
-       case kEplNmtCsNotActive:
-               {
-                       // indicate completion of reset in NMT_ResetCmd_U8
-                       bNmtState = (u8) kEplNmtCmdInvalidService;
-                       Ret = EplObdWriteEntry(0x1F9E, 0, &bNmtState, 1);
-                       if (Ret != kEplSuccessful) {
-                               goto Exit;
-                       }
-
-                       break;
-               }
-
-               // node process only async frames
-       case kEplNmtCsPreOperational1:
-               {
-                       break;
-               }
-
-               // node process isochronus and asynchronus frames
-       case kEplNmtCsPreOperational2:
-               {
-                       break;
-               }
-
-               // node should be configured und application is ready
-       case kEplNmtCsReadyToOperate:
-               {
-                       break;
-               }
-
-               // normal work state
-       case kEplNmtCsOperational:
-               {
-                       break;
-               }
-
-               // node stopped by MN
-               // -> only process asynchronus frames
-       case kEplNmtCsStopped:
-               {
-                       break;
-               }
-
-               // no EPL cycle
-               // -> normal ethernet communication
-       case kEplNmtCsBasicEthernet:
-               {
-                       break;
-               }
-
-               //-----------------------------------------------------------
-               // MN part of the state machine
-
-               // node listens for EPL-Frames and check timeout
-       case kEplNmtMsNotActive:
-               {
-                       break;
-               }
-
-               // node processes only async frames
-       case kEplNmtMsPreOperational1:
-               {
-                       break;
-               }
-
-               // node processes isochronous and asynchronous frames
-       case kEplNmtMsPreOperational2:
-               {
-                       break;
-               }
-
-               // node should be configured und application is ready
-       case kEplNmtMsReadyToOperate:
-               {
-                       break;
-               }
-
-               // normal work state
-       case kEplNmtMsOperational:
-               {
-                       break;
-               }
-
-               // no EPL cycle
-               // -> normal ethernet communication
-       case kEplNmtMsBasicEthernet:
-               {
-                       break;
-               }
-
-       default:
-               {
-                       TRACE0
-                           ("EplApiCbNmtStateChange(): unhandled NMT state\n");
-               }
-       }
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_LEDU)) != 0)
-       // forward event to Led module
-       Ret = EplLeduCbNmtStateChange(NmtStateChange_p);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-#endif
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-       // forward event to NmtMn module
-       Ret = EplNmtMnuCbNmtStateChange(NmtStateChange_p);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-#endif
-
-       // call user callback
-       EventArg.m_NmtStateChange = NmtStateChange_p;
-       Ret =
-           EplApiInstance_g.m_InitParam.
-           m_pfnCbEvent(kEplApiEventNmtStateChange, &EventArg,
-                        EplApiInstance_g.m_InitParam.m_pEventUserArg);
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplApiUpdateDllConfig
-//
-// Description: update configuration of DLL
-//
-// Parameters:  fUpdateIdentity_p       = TRUE, if identity must be updated
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplApiUpdateDllConfig(BOOL fUpdateIdentity_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplDllConfigParam DllConfigParam;
-       tEplDllIdentParam DllIdentParam;
-       tEplObdSize ObdSize;
-       u16 wTemp;
-       u8 bTemp;
-
-       // configure Dll
-       EPL_MEMSET(&DllConfigParam, 0, sizeof(DllConfigParam));
-       DllConfigParam.m_uiNodeId = EplObdGetNodeId();
-
-       // Cycle Length (0x1006: NMT_CycleLen_U32) in [us]
-       ObdSize = 4;
-       Ret =
-           EplObdReadEntry(0x1006, 0, &DllConfigParam.m_dwCycleLen, &ObdSize);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // 0x1F82: NMT_FeatureFlags_U32
-       ObdSize = 4;
-       Ret =
-           EplObdReadEntry(0x1F82, 0, &DllConfigParam.m_dwFeatureFlags,
-                           &ObdSize);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // d.k. There is no dependance between FeatureFlags and async-only CN
-       DllConfigParam.m_fAsyncOnly = EplApiInstance_g.m_InitParam.m_fAsyncOnly;
-
-       // 0x1C14: DLL_LossOfFrameTolerance_U32 in [ns]
-       ObdSize = 4;
-       Ret =
-           EplObdReadEntry(0x1C14, 0, &DllConfigParam.m_dwLossOfFrameTolerance,
-                           &ObdSize);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // 0x1F98: NMT_CycleTiming_REC
-       // 0x1F98.1: IsochrTxMaxPayload_U16
-       ObdSize = 2;
-       Ret = EplObdReadEntry(0x1F98, 1, &wTemp, &ObdSize);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       DllConfigParam.m_uiIsochrTxMaxPayload = wTemp;
-
-       // 0x1F98.2: IsochrRxMaxPayload_U16
-       ObdSize = 2;
-       Ret = EplObdReadEntry(0x1F98, 2, &wTemp, &ObdSize);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       DllConfigParam.m_uiIsochrRxMaxPayload = wTemp;
-
-       // 0x1F98.3: PResMaxLatency_U32
-       ObdSize = 4;
-       Ret =
-           EplObdReadEntry(0x1F98, 3, &DllConfigParam.m_dwPresMaxLatency,
-                           &ObdSize);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // 0x1F98.4: PReqActPayloadLimit_U16
-       ObdSize = 2;
-       Ret = EplObdReadEntry(0x1F98, 4, &wTemp, &ObdSize);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       DllConfigParam.m_uiPreqActPayloadLimit = wTemp;
-
-       // 0x1F98.5: PResActPayloadLimit_U16
-       ObdSize = 2;
-       Ret = EplObdReadEntry(0x1F98, 5, &wTemp, &ObdSize);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       DllConfigParam.m_uiPresActPayloadLimit = wTemp;
-
-       // 0x1F98.6: ASndMaxLatency_U32
-       ObdSize = 4;
-       Ret =
-           EplObdReadEntry(0x1F98, 6, &DllConfigParam.m_dwAsndMaxLatency,
-                           &ObdSize);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // 0x1F98.7: MultiplCycleCnt_U8
-       ObdSize = 1;
-       Ret = EplObdReadEntry(0x1F98, 7, &bTemp, &ObdSize);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       DllConfigParam.m_uiMultiplCycleCnt = bTemp;
-
-       // 0x1F98.8: AsyncMTU_U16
-       ObdSize = 2;
-       Ret = EplObdReadEntry(0x1F98, 8, &wTemp, &ObdSize);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       DllConfigParam.m_uiAsyncMtu = wTemp;
-
-       // $$$ Prescaler
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-       // 0x1F8A.1: WaitSoCPReq_U32 in [ns]
-       ObdSize = 4;
-       Ret =
-           EplObdReadEntry(0x1F8A, 1, &DllConfigParam.m_dwWaitSocPreq,
-                           &ObdSize);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // 0x1F8A.2: AsyncSlotTimeout_U32 in [ns] (optional)
-       ObdSize = 4;
-       Ret =
-           EplObdReadEntry(0x1F8A, 2, &DllConfigParam.m_dwAsyncSlotTimeout,
-                           &ObdSize);
-/*    if(Ret != kEplSuccessful)
-    {
-        goto Exit;
-    }*/
-#endif
-
-       DllConfigParam.m_uiSizeOfStruct = sizeof(DllConfigParam);
-       Ret = EplDllkConfig(&DllConfigParam);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-
-       if (fUpdateIdentity_p != FALSE) {
-               // configure Identity
-               EPL_MEMSET(&DllIdentParam, 0, sizeof(DllIdentParam));
-               ObdSize = 4;
-               Ret =
-                   EplObdReadEntry(0x1000, 0, &DllIdentParam.m_dwDeviceType,
-                                   &ObdSize);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-
-               ObdSize = 4;
-               Ret =
-                   EplObdReadEntry(0x1018, 1, &DllIdentParam.m_dwVendorId,
-                                   &ObdSize);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-               ObdSize = 4;
-               Ret =
-                   EplObdReadEntry(0x1018, 2, &DllIdentParam.m_dwProductCode,
-                                   &ObdSize);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-               ObdSize = 4;
-               Ret =
-                   EplObdReadEntry(0x1018, 3,
-                                   &DllIdentParam.m_dwRevisionNumber,
-                                   &ObdSize);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-               ObdSize = 4;
-               Ret =
-                   EplObdReadEntry(0x1018, 4, &DllIdentParam.m_dwSerialNumber,
-                                   &ObdSize);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-
-               DllIdentParam.m_dwIpAddress =
-                   EplApiInstance_g.m_InitParam.m_dwIpAddress;
-               DllIdentParam.m_dwSubnetMask =
-                   EplApiInstance_g.m_InitParam.m_dwSubnetMask;
-               EPL_MEMCPY(DllIdentParam.m_sHostname,
-                          EplApiInstance_g.m_InitParam.m_sHostname,
-                          sizeof(DllIdentParam.m_sHostname));
-
-               ObdSize = 4;
-               Ret =
-                   EplObdReadEntry(0x1020, 1,
-                                   &DllIdentParam.m_dwVerifyConfigurationDate,
-                                   &ObdSize);
-               // ignore any error, because this object is optional
-
-               ObdSize = 4;
-               Ret =
-                   EplObdReadEntry(0x1020, 2,
-                                   &DllIdentParam.m_dwVerifyConfigurationTime,
-                                   &ObdSize);
-               // ignore any error, because this object is optional
-
-               // $$$ d.k.: fill rest of ident structure
-
-               DllIdentParam.m_uiSizeOfStruct = sizeof(DllIdentParam);
-               Ret = EplDllkSetIdentity(&DllIdentParam);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplApiUpdateObd
-//
-// Description: update OD from init param
-//
-// Parameters:  (none)
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplApiUpdateObd(void)
-{
-       tEplKernel Ret = kEplSuccessful;
-       u16 wTemp;
-       u8 bTemp;
-
-       // set node id in OD
-       Ret = EplObdSetNodeId(EplApiInstance_g.m_InitParam.m_uiNodeId,  // node id
-                             kEplObdNodeIdHardware);   // set by hardware
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-
-       if (EplApiInstance_g.m_InitParam.m_dwCycleLen != -1) {
-               Ret =
-                   EplObdWriteEntry(0x1006, 0,
-                                    &EplApiInstance_g.m_InitParam.m_dwCycleLen,
-                                    4);
-/*    if(Ret != kEplSuccessful)
-    {
-        goto Exit;
-    }*/
-       }
-
-       if (EplApiInstance_g.m_InitParam.m_dwLossOfFrameTolerance != -1) {
-               Ret =
-                   EplObdWriteEntry(0x1C14, 0,
-                                    &EplApiInstance_g.m_InitParam.
-                                    m_dwLossOfFrameTolerance, 4);
-               /*        if(Ret != kEplSuccessful)
-                  {
-                  goto Exit;
-                  } */
-       }
-       // d.k. There is no dependance between FeatureFlags and async-only CN.
-       if (EplApiInstance_g.m_InitParam.m_dwFeatureFlags != -1) {
-               Ret =
-                   EplObdWriteEntry(0x1F82, 0,
-                                    &EplApiInstance_g.m_InitParam.
-                                    m_dwFeatureFlags, 4);
-               /*    if(Ret != kEplSuccessful)
-                  {
-                  goto Exit;
-                  } */
-       }
-
-       wTemp = (u16) EplApiInstance_g.m_InitParam.m_uiIsochrTxMaxPayload;
-       Ret = EplObdWriteEntry(0x1F98, 1, &wTemp, 2);
-/*    if(Ret != kEplSuccessful)
-    {
-        goto Exit;
-    }*/
-
-       wTemp = (u16) EplApiInstance_g.m_InitParam.m_uiIsochrRxMaxPayload;
-       Ret = EplObdWriteEntry(0x1F98, 2, &wTemp, 2);
-/*    if(Ret != kEplSuccessful)
-    {
-        goto Exit;
-    }*/
-
-       Ret =
-           EplObdWriteEntry(0x1F98, 3,
-                            &EplApiInstance_g.m_InitParam.m_dwPresMaxLatency,
-                            4);
-/*    if(Ret != kEplSuccessful)
-    {
-        goto Exit;
-    }*/
-
-       if (EplApiInstance_g.m_InitParam.m_uiPreqActPayloadLimit <=
-           EPL_C_DLL_ISOCHR_MAX_PAYL) {
-               wTemp =
-                   (u16) EplApiInstance_g.m_InitParam.m_uiPreqActPayloadLimit;
-               Ret = EplObdWriteEntry(0x1F98, 4, &wTemp, 2);
-/*    if(Ret != kEplSuccessful)
-    {
-        goto Exit;
-    }*/
-       }
-
-       if (EplApiInstance_g.m_InitParam.m_uiPresActPayloadLimit <=
-           EPL_C_DLL_ISOCHR_MAX_PAYL) {
-               wTemp =
-                   (u16) EplApiInstance_g.m_InitParam.m_uiPresActPayloadLimit;
-               Ret = EplObdWriteEntry(0x1F98, 5, &wTemp, 2);
-/*    if(Ret != kEplSuccessful)
-    {
-        goto Exit;
-    }*/
-       }
-
-       Ret =
-           EplObdWriteEntry(0x1F98, 6,
-                            &EplApiInstance_g.m_InitParam.m_dwAsndMaxLatency,
-                            4);
-/*    if(Ret != kEplSuccessful)
-    {
-        goto Exit;
-    }*/
-
-       if (EplApiInstance_g.m_InitParam.m_uiMultiplCycleCnt <= 0xFF) {
-               bTemp = (u8) EplApiInstance_g.m_InitParam.m_uiMultiplCycleCnt;
-               Ret = EplObdWriteEntry(0x1F98, 7, &bTemp, 1);
-/*    if(Ret != kEplSuccessful)
-    {
-        goto Exit;
-    }*/
-       }
-
-       if (EplApiInstance_g.m_InitParam.m_uiAsyncMtu <=
-           EPL_C_DLL_MAX_ASYNC_MTU) {
-               wTemp = (u16) EplApiInstance_g.m_InitParam.m_uiAsyncMtu;
-               Ret = EplObdWriteEntry(0x1F98, 8, &wTemp, 2);
-/*    if(Ret != kEplSuccessful)
-    {
-        goto Exit;
-    }*/
-       }
-
-       if (EplApiInstance_g.m_InitParam.m_uiPrescaler <= 1000) {
-               wTemp = (u16) EplApiInstance_g.m_InitParam.m_uiPrescaler;
-               Ret = EplObdWriteEntry(0x1F98, 9, &wTemp, 2);
-               // ignore return code
-               Ret = kEplSuccessful;
-       }
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-       if (EplApiInstance_g.m_InitParam.m_dwWaitSocPreq != -1) {
-               Ret =
-                   EplObdWriteEntry(0x1F8A, 1,
-                                    &EplApiInstance_g.m_InitParam.
-                                    m_dwWaitSocPreq, 4);
-               /*        if(Ret != kEplSuccessful)
-                  {
-                  goto Exit;
-                  } */
-       }
-
-       if ((EplApiInstance_g.m_InitParam.m_dwAsyncSlotTimeout != 0)
-           && (EplApiInstance_g.m_InitParam.m_dwAsyncSlotTimeout != -1)) {
-               Ret =
-                   EplObdWriteEntry(0x1F8A, 2,
-                                    &EplApiInstance_g.m_InitParam.
-                                    m_dwAsyncSlotTimeout, 4);
-               /*        if(Ret != kEplSuccessful)
-                  {
-                  goto Exit;
-                  } */
-       }
-#endif
-
-       // configure Identity
-       if (EplApiInstance_g.m_InitParam.m_dwDeviceType != -1) {
-               Ret =
-                   EplObdWriteEntry(0x1000, 0,
-                                    &EplApiInstance_g.m_InitParam.
-                                    m_dwDeviceType, 4);
-/*        if(Ret != kEplSuccessful)
-        {
-            goto Exit;
-        }*/
-       }
-
-       if (EplApiInstance_g.m_InitParam.m_dwVendorId != -1) {
-               Ret =
-                   EplObdWriteEntry(0x1018, 1,
-                                    &EplApiInstance_g.m_InitParam.m_dwVendorId,
-                                    4);
-/*        if(Ret != kEplSuccessful)
-        {
-            goto Exit;
-        }*/
-       }
-
-       if (EplApiInstance_g.m_InitParam.m_dwProductCode != -1) {
-               Ret =
-                   EplObdWriteEntry(0x1018, 2,
-                                    &EplApiInstance_g.m_InitParam.
-                                    m_dwProductCode, 4);
-/*        if(Ret != kEplSuccessful)
-        {
-            goto Exit;
-        }*/
-       }
-
-       if (EplApiInstance_g.m_InitParam.m_dwRevisionNumber != -1) {
-               Ret =
-                   EplObdWriteEntry(0x1018, 3,
-                                    &EplApiInstance_g.m_InitParam.
-                                    m_dwRevisionNumber, 4);
-/*        if(Ret != kEplSuccessful)
-        {
-            goto Exit;
-        }*/
-       }
-
-       if (EplApiInstance_g.m_InitParam.m_dwSerialNumber != -1) {
-               Ret =
-                   EplObdWriteEntry(0x1018, 4,
-                                    &EplApiInstance_g.m_InitParam.
-                                    m_dwSerialNumber, 4);
-/*        if(Ret != kEplSuccessful)
-        {
-            goto Exit;
-        }*/
-       }
-
-       if (EplApiInstance_g.m_InitParam.m_pszDevName != NULL) {
-               // write Device Name (0x1008)
-               Ret =
-                   EplObdWriteEntry(0x1008, 0,
-                                    (void *)EplApiInstance_g.
-                                    m_InitParam.m_pszDevName,
-                                    (tEplObdSize) strlen(EplApiInstance_g.
-                                                         m_InitParam.
-                                                         m_pszDevName));
-/*        if (Ret != kEplSuccessful)
-        {
-            goto Exit;
-        }*/
-       }
-
-       if (EplApiInstance_g.m_InitParam.m_pszHwVersion != NULL) {
-               // write Hardware version (0x1009)
-               Ret =
-                   EplObdWriteEntry(0x1009, 0,
-                                    (void *)EplApiInstance_g.
-                                    m_InitParam.m_pszHwVersion,
-                                    (tEplObdSize) strlen(EplApiInstance_g.
-                                                         m_InitParam.
-                                                         m_pszHwVersion));
-/*        if (Ret != kEplSuccessful)
-        {
-            goto Exit;
-        }*/
-       }
-
-       if (EplApiInstance_g.m_InitParam.m_pszSwVersion != NULL) {
-               // write Software version (0x100A)
-               Ret =
-                   EplObdWriteEntry(0x100A, 0,
-                                    (void *)EplApiInstance_g.
-                                    m_InitParam.m_pszSwVersion,
-                                    (tEplObdSize) strlen(EplApiInstance_g.
-                                                         m_InitParam.
-                                                         m_pszSwVersion));
-/*        if (Ret != kEplSuccessful)
-        {
-            goto Exit;
-        }*/
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplApiCbSdoCon
-//
-// Description: callback function for SDO transfers
-//
-// Parameters:  pSdoComFinished_p       = SDO parameter
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) != 0)
-static tEplKernel EplApiCbSdoCon(tEplSdoComFinished *pSdoComFinished_p)
-{
-       tEplKernel Ret;
-       tEplApiEventArg EventArg;
-
-       Ret = kEplSuccessful;
-
-       // call user callback
-       EventArg.m_Sdo = *pSdoComFinished_p;
-       Ret = EplApiInstance_g.m_InitParam.m_pfnCbEvent(kEplApiEventSdo,
-                                                       &EventArg,
-                                                       EplApiInstance_g.
-                                                       m_InitParam.
-                                                       m_pEventUserArg);
-
-       return Ret;
-
-}
-#endif
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplApiCbNodeEvent
-//
-// Description: callback function for node events
-//
-// Parameters:  uiNodeId_p              = node ID of the CN
-//              NodeEvent_p             = event from the specified CN
-//              NmtState_p              = current NMT state of the CN
-//              wErrorCode_p            = EPL error code if NodeEvent_p==kEplNmtNodeEventError
-//              fMandatory_p            = flag if CN is mandatory
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplApiCbNodeEvent(unsigned int uiNodeId_p,
-                                   tEplNmtNodeEvent NodeEvent_p,
-                                   tEplNmtState NmtState_p,
-                                   u16 wErrorCode_p, BOOL fMandatory_p)
-{
-       tEplKernel Ret;
-       tEplApiEventArg EventArg;
-
-       Ret = kEplSuccessful;
-
-       // call user callback
-       EventArg.m_Node.m_uiNodeId = uiNodeId_p;
-       EventArg.m_Node.m_NodeEvent = NodeEvent_p;
-       EventArg.m_Node.m_NmtState = NmtState_p;
-       EventArg.m_Node.m_wErrorCode = wErrorCode_p;
-       EventArg.m_Node.m_fMandatory = fMandatory_p;
-
-       Ret = EplApiInstance_g.m_InitParam.m_pfnCbEvent(kEplApiEventNode,
-                                                       &EventArg,
-                                                       EplApiInstance_g.
-                                                       m_InitParam.
-                                                       m_pEventUserArg);
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplApiCbBootEvent
-//
-// Description: callback function for boot events
-//
-// Parameters:  BootEvent_p             = event from the boot-up process
-//              NmtState_p              = current local NMT state
-//              wErrorCode_p            = EPL error code if BootEvent_p==kEplNmtBootEventError
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplApiCbBootEvent(tEplNmtBootEvent BootEvent_p,
-                                   tEplNmtState NmtState_p,
-                                   u16 wErrorCode_p)
-{
-       tEplKernel Ret;
-       tEplApiEventArg EventArg;
-
-       Ret = kEplSuccessful;
-
-       // call user callback
-       EventArg.m_Boot.m_BootEvent = BootEvent_p;
-       EventArg.m_Boot.m_NmtState = NmtState_p;
-       EventArg.m_Boot.m_wErrorCode = wErrorCode_p;
-
-       Ret = EplApiInstance_g.m_InitParam.m_pfnCbEvent(kEplApiEventBoot,
-                                                       &EventArg,
-                                                       EplApiInstance_g.
-                                                       m_InitParam.
-                                                       m_pEventUserArg);
-
-       return Ret;
-
-}
-
-#endif // (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_LEDU)) != 0)
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplApiCbLedStateChange
-//
-// Description: callback function for LED change events.
-//
-// Parameters:  LedType_p       = type of LED
-//              fOn_p           = state of LED
-//
-// Returns:     tEplKernel      = errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplApiCbLedStateChange(tEplLedType LedType_p, BOOL fOn_p)
-{
-       tEplKernel Ret;
-       tEplApiEventArg EventArg;
-
-       Ret = kEplSuccessful;
-
-       // call user callback
-       EventArg.m_Led.m_LedType = LedType_p;
-       EventArg.m_Led.m_fOn = fOn_p;
-
-       Ret = EplApiInstance_g.m_InitParam.m_pfnCbEvent(kEplApiEventLed,
-                                                       &EventArg,
-                                                       EplApiInstance_g.
-                                                       m_InitParam.
-                                                       m_pEventUserArg);
-
-       return Ret;
-
-}
-
-#endif
-
-// EOF
diff --git a/drivers/staging/epl/EplApiLinux.h b/drivers/staging/epl/EplApiLinux.h
deleted file mode 100644 (file)
index 92cd125..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for EPL API layer for Linux (kernel and user space)
-
-  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: EplApiLinux.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.5 $  $Date: 2008/08/25 12:17:41 $
-
-                $State: Exp $
-
-                Build Environment:
-                KEIL uVision 2
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/10/11 d.k.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#ifndef _EPL_API_LINUX_H_
-#define _EPL_API_LINUX_H_
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-#define EPLLIN_DEV_NAME     "epl"      // used for "/dev" and "/proc" entry
-
-//---------------------------------------------------------------------------
-//  Commands for <ioctl>
-//---------------------------------------------------------------------------
-
-#define EPLLIN_CMD_INITIALIZE               0  // ulArg_p ~ tEplApiInitParam*
-#define EPLLIN_CMD_PI_IN                    1  // ulArg_p ~ tEplApiProcessImage*
-#define EPLLIN_CMD_PI_OUT                   2  // ulArg_p ~ tEplApiProcessImage*
-#define EPLLIN_CMD_WRITE_OBJECT             3  // ulArg_p ~ tEplLinSdoObject*
-#define EPLLIN_CMD_READ_OBJECT              4  // ulArg_p ~ tEplLinSdoObject*
-#define EPLLIN_CMD_WRITE_LOCAL_OBJECT       5  // ulArg_p ~ tEplLinLocalObject*
-#define EPLLIN_CMD_READ_LOCAL_OBJECT        6  // ulArg_p ~ tEplLinLocalObject*
-#define EPLLIN_CMD_FREE_SDO_CHANNEL         7  // ulArg_p ~ tEplSdoComConHdl
-#define EPLLIN_CMD_NMT_COMMAND              8  // ulArg_p ~ tEplNmtEvent
-#define EPLLIN_CMD_GET_EVENT                9  // ulArg_p ~ tEplLinEvent*
-#define EPLLIN_CMD_MN_TRIGGER_STATE_CHANGE 10  // ulArg_p ~ tEplLinNodeCmdObject*
-#define EPLLIN_CMD_PI_SETUP                11  // ulArg_p ~ 0
-#define EPLLIN_CMD_SHUTDOWN                12  // ulArg_p ~ 0
-
-//---------------------------------------------------------------------------
-// typedef
-//---------------------------------------------------------------------------
-
-typedef struct {
-       unsigned int m_uiEventArgSize;
-       tEplApiEventArg *m_pEventArg;
-       tEplApiEventType *m_pEventType;
-       tEplKernel m_RetCbEvent;
-
-} tEplLinEvent;
-
-typedef struct {
-       tEplSdoComConHdl m_SdoComConHdl;
-       BOOL m_fValidSdoComConHdl;
-       unsigned int m_uiNodeId;
-       unsigned int m_uiIndex;
-       unsigned int m_uiSubindex;
-       void *m_le_pData;
-       unsigned int m_uiSize;
-       tEplSdoType m_SdoType;
-       void *m_pUserArg;
-
-} tEplLinSdoObject;
-
-typedef struct {
-       unsigned int m_uiIndex;
-       unsigned int m_uiSubindex;
-       void *m_pData;
-       unsigned int m_uiSize;
-
-} tEplLinLocalObject;
-
-typedef struct {
-       unsigned int m_uiNodeId;
-       tEplNmtNodeCommand m_NodeCommand;
-
-} tEplLinNodeCmdObject;
-
-//---------------------------------------------------------------------------
-// function prototypes
-//---------------------------------------------------------------------------
-
-#endif // #ifndef _EPL_API_LINUX_H_
diff --git a/drivers/staging/epl/EplApiLinuxKernel.c b/drivers/staging/epl/EplApiLinuxKernel.c
deleted file mode 100644 (file)
index cb3e275..0000000
+++ /dev/null
@@ -1,1173 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  Linux kernel module as wrapper of EPL API layer,
-                i.e. counterpart to a Linux application
-
-  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: EplApiLinuxKernel.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.9 $  $Date: 2008/11/21 09:00:38 $
-
-                $State: Exp $
-
-                Build Environment:
-                GNU-Compiler for m68k
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/10/11 d.k.:  Initial Version
-  2008/04/10 m.u.:  Changed to new char driver init
-
-****************************************************************************/
-
-// kernel modul and driver
-
-#include <linux/module.h>
-#include <linux/fs.h>
-#include <linux/cdev.h>
-#include <linux/types.h>
-
-//#include <linux/module.h>
-//#include <linux/kernel.h>
-//#include <linux/init.h>
-//#include <linux/errno.h>
-
-// scheduling
-#include <linux/sched.h>
-
-// memory access
-#include <asm/uaccess.h>
-#include <linux/vmalloc.h>
-
-#include "Epl.h"
-#include "EplApiLinux.h"
-//#include "kernel/EplPdokCal.h"
-#include "proc_fs.h"
-
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-// Metainformation
-MODULE_LICENSE("Dual BSD/GPL");
-#ifdef MODULE_AUTHOR
-MODULE_AUTHOR("Daniel.Krueger@SYSTEC-electronic.com");
-MODULE_DESCRIPTION("EPL API driver");
-#endif
-
-//---------------------------------------------------------------------------
-//  Configuration
-//---------------------------------------------------------------------------
-
-#define EPLLIN_DRV_NAME     "systec_epl"       // used for <register_chrdev>
-
-//---------------------------------------------------------------------------
-//  Constant definitions
-//---------------------------------------------------------------------------
-
-// TracePoint support for realtime-debugging
-#ifdef _DBG_TRACE_POINTS_
-void TgtDbgSignalTracePoint(u8 bTracePointNumber_p);
-#define TGT_DBG_SIGNAL_TRACE_POINT(p)   TgtDbgSignalTracePoint(p)
-#else
-#define TGT_DBG_SIGNAL_TRACE_POINT(p)
-#endif
-
-#define EVENT_STATE_INIT        0
-#define EVENT_STATE_IOCTL       1      // ioctl entered and ready to receive EPL event
-#define EVENT_STATE_READY       2      // EPL event can be forwarded to user application
-#define EVENT_STATE_TERM        3      // terminate processing
-
-#define EPL_STATE_NOTOPEN       0
-#define EPL_STATE_NOTINIT       1
-#define EPL_STATE_RUNNING       2
-#define EPL_STATE_SHUTDOWN      3
-
-//---------------------------------------------------------------------------
-//  Global variables
-//---------------------------------------------------------------------------
-
-    // device number (major and minor)
-static dev_t nDevNum_g;
-static struct cdev *pEpl_cdev_g;
-
-static volatile unsigned int uiEplState_g = EPL_STATE_NOTOPEN;
-
-static struct semaphore SemaphoreCbEvent_g;    // semaphore for EplLinCbEvent
-static wait_queue_head_t WaitQueueCbEvent_g;   // wait queue EplLinCbEvent
-static wait_queue_head_t WaitQueueProcess_g;   // wait queue for EplApiProcess (user process)
-static wait_queue_head_t WaitQueueRelease_g;   // wait queue for EplLinRelease
-static atomic_t AtomicEventState_g = ATOMIC_INIT(EVENT_STATE_INIT);
-static tEplApiEventType EventType_g;   // event type (enum)
-static tEplApiEventArg *pEventArg_g;   // event argument (union)
-static tEplKernel RetCbEvent_g;        // return code from event callback function
-static wait_queue_head_t WaitQueueCbSync_g;    // wait queue EplLinCbSync
-static wait_queue_head_t WaitQueuePI_In_g;     // wait queue for EplApiProcessImageExchangeIn (user process)
-static atomic_t AtomicSyncState_g = ATOMIC_INIT(EVENT_STATE_INIT);
-
-//---------------------------------------------------------------------------
-//  Local types
-//---------------------------------------------------------------------------
-
-typedef struct {
-       void *m_pUserArg;
-       void *m_pData;
-
-} tEplLinSdoBufHeader;
-
-//---------------------------------------------------------------------------
-//  Local variables
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-//  Prototypes of internal functions
-//---------------------------------------------------------------------------
-
-tEplKernel EplLinCbEvent(tEplApiEventType EventType_p, // IN: event type (enum)
-                        tEplApiEventArg *pEventArg_p,  // IN: event argument (union)
-                        void *pUserArg_p);
-
-tEplKernel EplLinCbSync(void);
-
-static int __init EplLinInit(void);
-static void __exit EplLinExit(void);
-
-static int EplLinOpen(struct inode *pDeviceFile_p, struct file *pInstance_p);
-static int EplLinRelease(struct inode *pDeviceFile_p, struct file *pInstance_p);
-static ssize_t EplLinRead(struct file *pInstance_p, char *pDstBuff_p,
-                         size_t BuffSize_p, loff_t * pFileOffs_p);
-static ssize_t EplLinWrite(struct file *pInstance_p, const char *pSrcBuff_p,
-                          size_t BuffSize_p, loff_t * pFileOffs_p);
-static int EplLinIoctl(struct inode *pDeviceFile_p, struct file *pInstance_p,
-                      unsigned int uiIoctlCmd_p, unsigned long ulArg_p);
-
-//---------------------------------------------------------------------------
-//  Kernel Module specific Data Structures
-//---------------------------------------------------------------------------
-
-module_init(EplLinInit);
-module_exit(EplLinExit);
-
-static struct file_operations EplLinFileOps_g = {
-       .owner = THIS_MODULE,
-       .open = EplLinOpen,
-       .release = EplLinRelease,
-       .read = EplLinRead,
-       .write = EplLinWrite,
-       .ioctl = EplLinIoctl,
-
-};
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//  Initailize Driver
-//---------------------------------------------------------------------------
-//  -> insmod driver
-//---------------------------------------------------------------------------
-
-static int __init EplLinInit(void)
-{
-
-       tEplKernel EplRet;
-       int iErr;
-       int iRet;
-
-       TRACE0("EPL: + EplLinInit...\n");
-       TRACE2("EPL:   Driver build: %s / %s\n", __DATE__, __TIME__);
-
-       iRet = 0;
-
-       // initialize global variables
-       atomic_set(&AtomicEventState_g, EVENT_STATE_INIT);
-       sema_init(&SemaphoreCbEvent_g, 1);
-       init_waitqueue_head(&WaitQueueCbEvent_g);
-       init_waitqueue_head(&WaitQueueProcess_g);
-       init_waitqueue_head(&WaitQueueRelease_g);
-
-       // register character device handler
-       // only one Minor required
-       TRACE2("EPL:   Installing Driver '%s', Version %s...\n",
-              EPLLIN_DRV_NAME, EPL_PRODUCT_VERSION);
-       iRet = alloc_chrdev_region(&nDevNum_g, 0, 1, EPLLIN_DRV_NAME);
-       if (iRet == 0) {
-               TRACE2
-                   ("EPL:   Driver '%s' installed successful, assigned MajorNumber=%d\n",
-                    EPLLIN_DRV_NAME, MAJOR(nDevNum_g));
-       } else {
-               TRACE1
-                   ("EPL:   ERROR: Driver '%s' is unable to get a free MajorNumber!\n",
-                    EPLLIN_DRV_NAME);
-               iRet = -EIO;
-               goto Exit;
-       }
-
-       // register cdev structure
-       pEpl_cdev_g = cdev_alloc();
-       pEpl_cdev_g->ops = &EplLinFileOps_g;
-       pEpl_cdev_g->owner = THIS_MODULE;
-       iErr = cdev_add(pEpl_cdev_g, nDevNum_g, 1);
-       if (iErr) {
-               TRACE2("EPL:   ERROR %d: Driver '%s' could not be added!\n",
-                      iErr, EPLLIN_DRV_NAME);
-               iRet = -EIO;
-               goto Exit;
-       }
-
-       // create device node in PROCFS
-       EplRet = EplLinProcInit();
-       if (EplRet != kEplSuccessful) {
-               goto Exit;
-       }
-
-      Exit:
-
-       TRACE1("EPL: - EplLinInit (iRet=%d)\n", iRet);
-       return (iRet);
-
-}
-
-//---------------------------------------------------------------------------
-//  Remove Driver
-//---------------------------------------------------------------------------
-//  -> rmmod driver
-//---------------------------------------------------------------------------
-
-static void __exit EplLinExit(void)
-{
-
-       tEplKernel EplRet;
-
-       // delete instance for all modules
-//    EplRet = EplApiShutdown();
-//    printk("EplApiShutdown():  0x%X\n", EplRet);
-
-       // deinitialize proc fs
-       EplRet = EplLinProcFree();
-       printk("EplLinProcFree():        0x%X\n", EplRet);
-
-       TRACE0("EPL: + EplLinExit...\n");
-
-       // remove cdev structure
-       cdev_del(pEpl_cdev_g);
-
-       // unregister character device handler
-       unregister_chrdev_region(nDevNum_g, 1);
-
-       TRACE1("EPL:   Driver '%s' removed.\n", EPLLIN_DRV_NAME);
-
-       TRACE0("EPL: - EplLinExit\n");
-
-}
-
-//---------------------------------------------------------------------------
-//  Open Driver
-//---------------------------------------------------------------------------
-//  -> open("/dev/driver", O_RDWR)...
-//---------------------------------------------------------------------------
-
-static int EplLinOpen(struct inode *pDeviceFile_p,     // information about the device to open
-                     struct file *pInstance_p) // information about driver instance
-{
-
-       int iRet;
-
-       TRACE0("EPL: + EplLinOpen...\n");
-
-       if (uiEplState_g != EPL_STATE_NOTOPEN) {        // stack already initialized
-               iRet = -EALREADY;
-       } else {
-               atomic_set(&AtomicEventState_g, EVENT_STATE_INIT);
-               sema_init(&SemaphoreCbEvent_g, 1);
-               init_waitqueue_head(&WaitQueueCbEvent_g);
-               init_waitqueue_head(&WaitQueueProcess_g);
-               init_waitqueue_head(&WaitQueueRelease_g);
-               atomic_set(&AtomicSyncState_g, EVENT_STATE_INIT);
-               init_waitqueue_head(&WaitQueueCbSync_g);
-               init_waitqueue_head(&WaitQueuePI_In_g);
-
-               uiEplState_g = EPL_STATE_NOTINIT;
-               iRet = 0;
-       }
-
-       TRACE1("EPL: - EplLinOpen (iRet=%d)\n", iRet);
-       return (iRet);
-
-}
-
-//---------------------------------------------------------------------------
-//  Close Driver
-//---------------------------------------------------------------------------
-//  -> close(device)...
-//---------------------------------------------------------------------------
-
-static int EplLinRelease(struct inode *pDeviceFile_p,  // information about the device to open
-                        struct file *pInstance_p)      // information about driver instance
-{
-
-       tEplKernel EplRet = kEplSuccessful;
-       int iRet;
-
-       TRACE0("EPL: + EplLinRelease...\n");
-
-       if (uiEplState_g != EPL_STATE_NOTINIT) {
-               // pass control to sync kernel thread, but signal termination
-               atomic_set(&AtomicSyncState_g, EVENT_STATE_TERM);
-               wake_up_interruptible(&WaitQueueCbSync_g);
-               wake_up_interruptible(&WaitQueuePI_In_g);
-
-               // pass control to event queue kernel thread
-               atomic_set(&AtomicEventState_g, EVENT_STATE_TERM);
-               wake_up_interruptible(&WaitQueueCbEvent_g);
-
-               if (uiEplState_g == EPL_STATE_RUNNING) {        // post NmtEventSwitchOff
-                       EplRet = EplApiExecNmtCommand(kEplNmtEventSwitchOff);
-
-               }
-
-               if (EplRet == kEplSuccessful) {
-                       TRACE0("EPL:   waiting for NMT_GS_OFF\n");
-                       wait_event_interruptible(WaitQueueRelease_g,
-                                                (uiEplState_g ==
-                                                 EPL_STATE_SHUTDOWN));
-               } else {        // post NmtEventSwitchOff failed
-                       TRACE0("EPL:   event post failed\n");
-               }
-
-               // $$$ d.k.: What if waiting was interrupted by signal?
-
-               TRACE0("EPL:   call EplApiShutdown()\n");
-               // EPL stack can be safely shut down
-               // delete instance for all EPL modules
-               EplRet = EplApiShutdown();
-               printk("EplApiShutdown():  0x%X\n", EplRet);
-       }
-
-       uiEplState_g = EPL_STATE_NOTOPEN;
-       iRet = 0;
-
-       TRACE1("EPL: - EplLinRelease (iRet=%d)\n", iRet);
-       return (iRet);
-
-}
-
-//---------------------------------------------------------------------------
-//  Read Data from Driver
-//---------------------------------------------------------------------------
-//  -> read(...)
-//---------------------------------------------------------------------------
-
-static ssize_t EplLinRead(struct file *pInstance_p,    // information about driver instance
-                         char *pDstBuff_p,     // address of buffer to fill with data
-                         size_t BuffSize_p,    // length of the buffer
-                         loff_t * pFileOffs_p) // offset in the file
-{
-
-       int iRet;
-
-       TRACE0("EPL: + EplLinRead...\n");
-
-       TRACE0("EPL:   Sorry, this operation isn't supported.\n");
-       iRet = -EINVAL;
-
-       TRACE1("EPL: - EplLinRead (iRet=%d)\n", iRet);
-       return (iRet);
-
-}
-
-//---------------------------------------------------------------------------
-//  Write Data to Driver
-//---------------------------------------------------------------------------
-//  -> write(...)
-//---------------------------------------------------------------------------
-
-static ssize_t EplLinWrite(struct file *pInstance_p,   // information about driver instance
-                          const char *pSrcBuff_p,      // address of buffer to get data from
-                          size_t BuffSize_p,   // length of the buffer
-                          loff_t * pFileOffs_p)        // offset in the file
-{
-
-       int iRet;
-
-       TRACE0("EPL: + EplLinWrite...\n");
-
-       TRACE0("EPL:   Sorry, this operation isn't supported.\n");
-       iRet = -EINVAL;
-
-       TRACE1("EPL: - EplLinWrite (iRet=%d)\n", iRet);
-       return (iRet);
-
-}
-
-//---------------------------------------------------------------------------
-//  Generic Access to Driver
-//---------------------------------------------------------------------------
-//  -> ioctl(...)
-//---------------------------------------------------------------------------
-
-static int EplLinIoctl(struct inode *pDeviceFile_p,    // information about the device to open
-                      struct file *pInstance_p,        // information about driver instance
-                      unsigned int uiIoctlCmd_p,       // Ioctl command to execute
-                      unsigned long ulArg_p)   // Ioctl command specific argument/parameter
-{
-
-       tEplKernel EplRet;
-       int iErr;
-       int iRet;
-
-//    TRACE1("EPL: + EplLinIoctl (uiIoctlCmd_p=%d)...\n", uiIoctlCmd_p);
-
-       iRet = -EINVAL;
-
-       switch (uiIoctlCmd_p) {
-               // ----------------------------------------------------------
-       case EPLLIN_CMD_INITIALIZE:
-               {
-                       tEplApiInitParam EplApiInitParam;
-
-                       iErr =
-                           copy_from_user(&EplApiInitParam,
-                                          (const void *)ulArg_p,
-                                          sizeof(EplApiInitParam));
-                       if (iErr != 0) {
-                               iRet = -EIO;
-                               goto Exit;
-                       }
-
-                       EplApiInitParam.m_pfnCbEvent = EplLinCbEvent;
-                       EplApiInitParam.m_pfnCbSync = EplLinCbSync;
-
-                       EplRet = EplApiInitialize(&EplApiInitParam);
-
-                       uiEplState_g = EPL_STATE_RUNNING;
-
-                       iRet = (int)EplRet;
-                       break;
-               }
-
-               // ----------------------------------------------------------
-       case EPLLIN_CMD_SHUTDOWN:
-               {               // shutdown the threads
-
-                       // pass control to sync kernel thread, but signal termination
-                       atomic_set(&AtomicSyncState_g, EVENT_STATE_TERM);
-                       wake_up_interruptible(&WaitQueueCbSync_g);
-                       wake_up_interruptible(&WaitQueuePI_In_g);
-
-                       // pass control to event queue kernel thread
-                       atomic_set(&AtomicEventState_g, EVENT_STATE_TERM);
-                       wake_up_interruptible(&WaitQueueCbEvent_g);
-
-                       if (uiEplState_g == EPL_STATE_RUNNING) {        // post NmtEventSwitchOff
-                               EplRet =
-                                   EplApiExecNmtCommand(kEplNmtEventSwitchOff);
-
-                       }
-
-                       iRet = 0;
-                       break;
-               }
-
-               // ----------------------------------------------------------
-       case EPLLIN_CMD_READ_LOCAL_OBJECT:
-               {
-                       tEplLinLocalObject LocalObject;
-                       void *pData;
-
-                       iErr =
-                           copy_from_user(&LocalObject, (const void *)ulArg_p,
-                                          sizeof(LocalObject));
-                       if (iErr != 0) {
-                               iRet = -EIO;
-                               goto Exit;
-                       }
-
-                       if ((LocalObject.m_pData == NULL)
-                           || (LocalObject.m_uiSize == 0)) {
-                               iRet = (int)kEplApiInvalidParam;
-                               goto Exit;
-                       }
-
-                       pData = vmalloc(LocalObject.m_uiSize);
-                       if (pData == NULL) {    // no memory available
-                               iRet = -ENOMEM;
-                               goto Exit;
-                       }
-
-                       EplRet =
-                           EplApiReadLocalObject(LocalObject.m_uiIndex,
-                                                 LocalObject.m_uiSubindex,
-                                                 pData, &LocalObject.m_uiSize);
-
-                       if (EplRet == kEplSuccessful) {
-                               iErr =
-                                   copy_to_user(LocalObject.m_pData, pData,
-                                                LocalObject.m_uiSize);
-
-                               vfree(pData);
-
-                               if (iErr != 0) {
-                                       iRet = -EIO;
-                                       goto Exit;
-                               }
-                               // return actual size (LocalObject.m_uiSize)
-                               iErr = put_user(LocalObject.m_uiSize,
-                                               (unsigned int *)(ulArg_p +
-                                                                (unsigned long)
-                                                                &LocalObject.
-                                                                m_uiSize -
-                                                                (unsigned long)
-                                                                &LocalObject));
-                               if (iErr != 0) {
-                                       iRet = -EIO;
-                                       goto Exit;
-                               }
-
-                       } else {
-                               vfree(pData);
-                       }
-
-                       iRet = (int)EplRet;
-                       break;
-               }
-
-               // ----------------------------------------------------------
-       case EPLLIN_CMD_WRITE_LOCAL_OBJECT:
-               {
-                       tEplLinLocalObject LocalObject;
-                       void *pData;
-
-                       iErr =
-                           copy_from_user(&LocalObject, (const void *)ulArg_p,
-                                          sizeof(LocalObject));
-                       if (iErr != 0) {
-                               iRet = -EIO;
-                               goto Exit;
-                       }
-
-                       if ((LocalObject.m_pData == NULL)
-                           || (LocalObject.m_uiSize == 0)) {
-                               iRet = (int)kEplApiInvalidParam;
-                               goto Exit;
-                       }
-
-                       pData = vmalloc(LocalObject.m_uiSize);
-                       if (pData == NULL) {    // no memory available
-                               iRet = -ENOMEM;
-                               goto Exit;
-                       }
-                       iErr =
-                           copy_from_user(pData, LocalObject.m_pData,
-                                          LocalObject.m_uiSize);
-                       if (iErr != 0) {
-                               iRet = -EIO;
-                               goto Exit;
-                       }
-
-                       EplRet =
-                           EplApiWriteLocalObject(LocalObject.m_uiIndex,
-                                                  LocalObject.m_uiSubindex,
-                                                  pData, LocalObject.m_uiSize);
-
-                       vfree(pData);
-
-                       iRet = (int)EplRet;
-                       break;
-               }
-
-       case EPLLIN_CMD_READ_OBJECT:
-               {
-                       tEplLinSdoObject SdoObject;
-                       void *pData;
-                       tEplLinSdoBufHeader *pBufHeader;
-                       tEplSdoComConHdl *pSdoComConHdl;
-
-                       iErr =
-                           copy_from_user(&SdoObject, (const void *)ulArg_p,
-                                          sizeof(SdoObject));
-                       if (iErr != 0) {
-                               iRet = -EIO;
-                               goto Exit;
-                       }
-
-                       if ((SdoObject.m_le_pData == NULL)
-                           || (SdoObject.m_uiSize == 0)) {
-                               iRet = (int)kEplApiInvalidParam;
-                               goto Exit;
-                       }
-
-                       pBufHeader =
-                           (tEplLinSdoBufHeader *)
-                           vmalloc(sizeof(tEplLinSdoBufHeader) +
-                                   SdoObject.m_uiSize);
-                       if (pBufHeader == NULL) {       // no memory available
-                               iRet = -ENOMEM;
-                               goto Exit;
-                       }
-                       // initiate temporary buffer
-                       pBufHeader->m_pUserArg = SdoObject.m_pUserArg;  // original user argument pointer
-                       pBufHeader->m_pData = SdoObject.m_le_pData;     // original data pointer from app
-                       pData = pBufHeader + sizeof(tEplLinSdoBufHeader);
-
-                       if (SdoObject.m_fValidSdoComConHdl != FALSE) {
-                               pSdoComConHdl = &SdoObject.m_SdoComConHdl;
-                       } else {
-                               pSdoComConHdl = NULL;
-                       }
-
-                       EplRet =
-                           EplApiReadObject(pSdoComConHdl,
-                                            SdoObject.m_uiNodeId,
-                                            SdoObject.m_uiIndex,
-                                            SdoObject.m_uiSubindex, pData,
-                                            &SdoObject.m_uiSize,
-                                            SdoObject.m_SdoType, pBufHeader);
-
-                       // return actual SDO handle (SdoObject.m_SdoComConHdl)
-                       iErr = put_user(SdoObject.m_SdoComConHdl,
-                                       (unsigned int *)(ulArg_p +
-                                                        (unsigned long)
-                                                        &SdoObject.
-                                                        m_SdoComConHdl -
-                                                        (unsigned long)
-                                                        &SdoObject));
-                       if (iErr != 0) {
-                               iRet = -EIO;
-                               goto Exit;
-                       }
-
-                       if (EplRet == kEplSuccessful) {
-                               iErr =
-                                   copy_to_user(SdoObject.m_le_pData, pData,
-                                                SdoObject.m_uiSize);
-
-                               vfree(pBufHeader);
-
-                               if (iErr != 0) {
-                                       iRet = -EIO;
-                                       goto Exit;
-                               }
-                               // return actual size (SdoObject.m_uiSize)
-                               iErr = put_user(SdoObject.m_uiSize,
-                                               (unsigned int *)(ulArg_p +
-                                                                (unsigned long)
-                                                                &SdoObject.
-                                                                m_uiSize -
-                                                                (unsigned long)
-                                                                &SdoObject));
-                               if (iErr != 0) {
-                                       iRet = -EIO;
-                                       goto Exit;
-                               }
-                       } else if (EplRet != kEplApiTaskDeferred) {     // error ocurred
-                               vfree(pBufHeader);
-                               if (iErr != 0) {
-                                       iRet = -EIO;
-                                       goto Exit;
-                               }
-                       }
-
-                       iRet = (int)EplRet;
-                       break;
-               }
-
-       case EPLLIN_CMD_WRITE_OBJECT:
-               {
-                       tEplLinSdoObject SdoObject;
-                       void *pData;
-                       tEplLinSdoBufHeader *pBufHeader;
-                       tEplSdoComConHdl *pSdoComConHdl;
-
-                       iErr =
-                           copy_from_user(&SdoObject, (const void *)ulArg_p,
-                                          sizeof(SdoObject));
-                       if (iErr != 0) {
-                               iRet = -EIO;
-                               goto Exit;
-                       }
-
-                       if ((SdoObject.m_le_pData == NULL)
-                           || (SdoObject.m_uiSize == 0)) {
-                               iRet = (int)kEplApiInvalidParam;
-                               goto Exit;
-                       }
-
-                       pBufHeader =
-                           (tEplLinSdoBufHeader *)
-                           vmalloc(sizeof(tEplLinSdoBufHeader) +
-                                   SdoObject.m_uiSize);
-                       if (pBufHeader == NULL) {       // no memory available
-                               iRet = -ENOMEM;
-                               goto Exit;
-                       }
-                       // initiate temporary buffer
-                       pBufHeader->m_pUserArg = SdoObject.m_pUserArg;  // original user argument pointer
-                       pBufHeader->m_pData = SdoObject.m_le_pData;     // original data pointer from app
-                       pData = pBufHeader + sizeof(tEplLinSdoBufHeader);
-
-                       iErr =
-                           copy_from_user(pData, SdoObject.m_le_pData,
-                                          SdoObject.m_uiSize);
-
-                       if (iErr != 0) {
-                               iRet = -EIO;
-                               goto Exit;
-                       }
-
-                       if (SdoObject.m_fValidSdoComConHdl != FALSE) {
-                               pSdoComConHdl = &SdoObject.m_SdoComConHdl;
-                       } else {
-                               pSdoComConHdl = NULL;
-                       }
-
-                       EplRet =
-                           EplApiWriteObject(pSdoComConHdl,
-                                             SdoObject.m_uiNodeId,
-                                             SdoObject.m_uiIndex,
-                                             SdoObject.m_uiSubindex, pData,
-                                             SdoObject.m_uiSize,
-                                             SdoObject.m_SdoType, pBufHeader);
-
-                       // return actual SDO handle (SdoObject.m_SdoComConHdl)
-                       iErr = put_user(SdoObject.m_SdoComConHdl,
-                                       (unsigned int *)(ulArg_p +
-                                                        (unsigned long)
-                                                        &SdoObject.
-                                                        m_SdoComConHdl -
-                                                        (unsigned long)
-                                                        &SdoObject));
-                       if (iErr != 0) {
-                               iRet = -EIO;
-                               goto Exit;
-                       }
-
-                       if (EplRet != kEplApiTaskDeferred) {    // succeeded or error ocurred, but task not deferred
-                               vfree(pBufHeader);
-                       }
-
-                       iRet = (int)EplRet;
-                       break;
-               }
-
-               // ----------------------------------------------------------
-       case EPLLIN_CMD_FREE_SDO_CHANNEL:
-               {
-                       // forward SDO handle to EPL stack
-                       EplRet =
-                           EplApiFreeSdoChannel((tEplSdoComConHdl) ulArg_p);
-
-                       iRet = (int)EplRet;
-                       break;
-               }
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-               // ----------------------------------------------------------
-       case EPLLIN_CMD_MN_TRIGGER_STATE_CHANGE:
-               {
-                       tEplLinNodeCmdObject NodeCmdObject;
-
-                       iErr =
-                           copy_from_user(&NodeCmdObject,
-                                          (const void *)ulArg_p,
-                                          sizeof(NodeCmdObject));
-                       if (iErr != 0) {
-                               iRet = -EIO;
-                               goto Exit;
-                       }
-
-                       EplRet =
-                           EplApiMnTriggerStateChange(NodeCmdObject.m_uiNodeId,
-                                                      NodeCmdObject.
-                                                      m_NodeCommand);
-                       iRet = (int)EplRet;
-                       break;
-               }
-#endif
-
-               // ----------------------------------------------------------
-       case EPLLIN_CMD_GET_EVENT:
-               {
-                       tEplLinEvent Event;
-
-                       // save event structure
-                       iErr =
-                           copy_from_user(&Event, (const void *)ulArg_p,
-                                          sizeof(Event));
-                       if (iErr != 0) {
-                               iRet = -EIO;
-                               goto Exit;
-                       }
-                       // save return code from application's event callback function
-                       RetCbEvent_g = Event.m_RetCbEvent;
-
-                       if (RetCbEvent_g == kEplShutdown) {
-                               // pass control to event queue kernel thread, but signal termination
-                               atomic_set(&AtomicEventState_g,
-                                          EVENT_STATE_TERM);
-                               wake_up_interruptible(&WaitQueueCbEvent_g);
-                               // exit with error -> EplApiProcess() will leave the infinite loop
-                               iRet = 1;
-                               goto Exit;
-                       }
-                       // pass control to event queue kernel thread
-                       atomic_set(&AtomicEventState_g, EVENT_STATE_IOCTL);
-                       wake_up_interruptible(&WaitQueueCbEvent_g);
-
-                       // fall asleep itself in own wait queue
-                       iErr = wait_event_interruptible(WaitQueueProcess_g,
-                                                       (atomic_read
-                                                        (&AtomicEventState_g)
-                                                        == EVENT_STATE_READY)
-                                                       ||
-                                                       (atomic_read
-                                                        (&AtomicEventState_g)
-                                                        == EVENT_STATE_TERM));
-                       if (iErr != 0) {        // waiting was interrupted by signal
-                               // pass control to event queue kernel thread, but signal termination
-                               atomic_set(&AtomicEventState_g,
-                                          EVENT_STATE_TERM);
-                               wake_up_interruptible(&WaitQueueCbEvent_g);
-                               // exit with this error -> EplApiProcess() will leave the infinite loop
-                               iRet = iErr;
-                               goto Exit;
-                       } else if (atomic_read(&AtomicEventState_g) == EVENT_STATE_TERM) {      // termination in progress
-                               // pass control to event queue kernel thread, but signal termination
-                               wake_up_interruptible(&WaitQueueCbEvent_g);
-                               // exit with this error -> EplApiProcess() will leave the infinite loop
-                               iRet = 1;
-                               goto Exit;
-                       }
-                       // copy event to user space
-                       iErr =
-                           copy_to_user(Event.m_pEventType, &EventType_g,
-                                        sizeof(EventType_g));
-                       if (iErr != 0) {        // not all data could be copied
-                               iRet = -EIO;
-                               goto Exit;
-                       }
-                       // $$$ d.k. perform SDO event processing
-                       if (EventType_g == kEplApiEventSdo) {
-                               void *pData;
-                               tEplLinSdoBufHeader *pBufHeader;
-
-                               pBufHeader =
-                                   (tEplLinSdoBufHeader *) pEventArg_g->m_Sdo.
-                                   m_pUserArg;
-                               pData =
-                                   pBufHeader + sizeof(tEplLinSdoBufHeader);
-
-                               if (pEventArg_g->m_Sdo.m_SdoAccessType ==
-                                   kEplSdoAccessTypeRead) {
-                                       // copy read data to user space
-                                       iErr =
-                                           copy_to_user(pBufHeader->m_pData,
-                                                        pData,
-                                                        pEventArg_g->m_Sdo.
-                                                        m_uiTransferredByte);
-                                       if (iErr != 0) {        // not all data could be copied
-                                               iRet = -EIO;
-                                               goto Exit;
-                                       }
-                               }
-                               pEventArg_g->m_Sdo.m_pUserArg =
-                                   pBufHeader->m_pUserArg;
-                               vfree(pBufHeader);
-                       }
-
-                       iErr =
-                           copy_to_user(Event.m_pEventArg, pEventArg_g,
-                                        min(sizeof(tEplApiEventArg),
-                                            Event.m_uiEventArgSize));
-                       if (iErr != 0) {        // not all data could be copied
-                               iRet = -EIO;
-                               goto Exit;
-                       }
-                       // return to EplApiProcess(), which will call the application's event callback function
-                       iRet = 0;
-
-                       break;
-               }
-
-               // ----------------------------------------------------------
-       case EPLLIN_CMD_PI_SETUP:
-               {
-                       EplRet = EplApiProcessImageSetup();
-                       iRet = (int)EplRet;
-
-                       break;
-               }
-
-               // ----------------------------------------------------------
-       case EPLLIN_CMD_PI_IN:
-               {
-                       tEplApiProcessImage ProcessImageIn;
-
-                       // save process image structure
-                       iErr =
-                           copy_from_user(&ProcessImageIn,
-                                          (const void *)ulArg_p,
-                                          sizeof(ProcessImageIn));
-                       if (iErr != 0) {
-                               iRet = -EIO;
-                               goto Exit;
-                       }
-                       // pass control to event queue kernel thread
-                       atomic_set(&AtomicSyncState_g, EVENT_STATE_IOCTL);
-
-                       // fall asleep itself in own wait queue
-                       iErr = wait_event_interruptible(WaitQueuePI_In_g,
-                                                       (atomic_read
-                                                        (&AtomicSyncState_g) ==
-                                                        EVENT_STATE_READY)
-                                                       ||
-                                                       (atomic_read
-                                                        (&AtomicSyncState_g) ==
-                                                        EVENT_STATE_TERM));
-                       if (iErr != 0) {        // waiting was interrupted by signal
-                               // pass control to sync kernel thread, but signal termination
-                               atomic_set(&AtomicSyncState_g,
-                                          EVENT_STATE_TERM);
-                               wake_up_interruptible(&WaitQueueCbSync_g);
-                               // exit with this error -> application will leave the infinite loop
-                               iRet = iErr;
-                               goto Exit;
-                       } else if (atomic_read(&AtomicSyncState_g) == EVENT_STATE_TERM) {       // termination in progress
-                               // pass control to sync kernel thread, but signal termination
-                               wake_up_interruptible(&WaitQueueCbSync_g);
-                               // exit with this error -> application will leave the infinite loop
-                               iRet = 1;
-                               goto Exit;
-                       }
-                       // exchange process image
-                       EplRet = EplApiProcessImageExchangeIn(&ProcessImageIn);
-
-                       // return to EplApiProcessImageExchangeIn()
-                       iRet = (int)EplRet;
-
-                       break;
-               }
-
-               // ----------------------------------------------------------
-       case EPLLIN_CMD_PI_OUT:
-               {
-                       tEplApiProcessImage ProcessImageOut;
-
-                       // save process image structure
-                       iErr =
-                           copy_from_user(&ProcessImageOut,
-                                          (const void *)ulArg_p,
-                                          sizeof(ProcessImageOut));
-                       if (iErr != 0) {
-                               iRet = -EIO;
-                               goto Exit;
-                       }
-
-                       if (atomic_read(&AtomicSyncState_g) !=
-                           EVENT_STATE_READY) {
-                               iRet = (int)kEplInvalidOperation;
-                               goto Exit;
-                       }
-                       // exchange process image
-                       EplRet =
-                           EplApiProcessImageExchangeOut(&ProcessImageOut);
-
-                       // pass control to sync kernel thread
-                       atomic_set(&AtomicSyncState_g, EVENT_STATE_TERM);
-                       wake_up_interruptible(&WaitQueueCbSync_g);
-
-                       // return to EplApiProcessImageExchangeout()
-                       iRet = (int)EplRet;
-
-                       break;
-               }
-
-               // ----------------------------------------------------------
-       case EPLLIN_CMD_NMT_COMMAND:
-               {
-                       // forward NMT command to EPL stack
-                       EplRet = EplApiExecNmtCommand((tEplNmtEvent) ulArg_p);
-
-                       iRet = (int)EplRet;
-
-                       break;
-               }
-
-               // ----------------------------------------------------------
-       default:
-               {
-                       break;
-               }
-       }
-
-      Exit:
-
-//    TRACE1("EPL: - EplLinIoctl (iRet=%d)\n", iRet);
-       return (iRet);
-
-}
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-tEplKernel EplLinCbEvent(tEplApiEventType EventType_p, // IN: event type (enum)
-                        tEplApiEventArg *pEventArg_p,  // IN: event argument (union)
-                        void *pUserArg_p)
-{
-       tEplKernel EplRet = kEplSuccessful;
-       int iErr;
-
-       // block any further call to this function, i.e. enter critical section
-       iErr = down_interruptible(&SemaphoreCbEvent_g);
-       if (iErr != 0) {        // waiting was interrupted by signal
-               EplRet = kEplShutdown;
-               goto Exit;
-       }
-       // wait for EplApiProcess() to call ioctl
-       // normally it should be waiting already for us to pass a new event
-       iErr = wait_event_interruptible(WaitQueueCbEvent_g,
-                                       (atomic_read(&AtomicEventState_g) ==
-                                        EVENT_STATE_IOCTL)
-                                       || (atomic_read(&AtomicEventState_g) ==
-                                           EVENT_STATE_TERM));
-       if ((iErr != 0) || (atomic_read(&AtomicEventState_g) == EVENT_STATE_TERM)) {    // waiting was interrupted by signal
-               EplRet = kEplShutdown;
-               goto LeaveCriticalSection;
-       }
-       // save event information for ioctl
-       EventType_g = EventType_p;
-       pEventArg_g = pEventArg_p;
-
-       // pass control to application's event callback function, i.e. EplApiProcess()
-       atomic_set(&AtomicEventState_g, EVENT_STATE_READY);
-       wake_up_interruptible(&WaitQueueProcess_g);
-
-       // now, the application's event callback function processes the event
-
-       // wait for completion of application's event callback function, i.e. EplApiProcess() calls ioctl again
-       iErr = wait_event_interruptible(WaitQueueCbEvent_g,
-                                       (atomic_read(&AtomicEventState_g) ==
-                                        EVENT_STATE_IOCTL)
-                                       || (atomic_read(&AtomicEventState_g) ==
-                                           EVENT_STATE_TERM));
-       if ((iErr != 0) || (atomic_read(&AtomicEventState_g) == EVENT_STATE_TERM)) {    // waiting was interrupted by signal
-               EplRet = kEplShutdown;
-               goto LeaveCriticalSection;
-       }
-       // read return code from application's event callback function
-       EplRet = RetCbEvent_g;
-
-      LeaveCriticalSection:
-       up(&SemaphoreCbEvent_g);
-
-      Exit:
-       // check if NMT_GS_OFF is reached
-       if (EventType_p == kEplApiEventNmtStateChange) {
-               if (pEventArg_p->m_NmtStateChange.m_NewNmtState == kEplNmtGsOff) {      // NMT state machine was shut down
-                       TRACE0("EPL:   EplLinCbEvent(NMT_GS_OFF)\n");
-                       uiEplState_g = EPL_STATE_SHUTDOWN;
-                       atomic_set(&AtomicEventState_g, EVENT_STATE_TERM);
-                       wake_up(&WaitQueueRelease_g);
-               } else {        // NMT state machine is running
-                       uiEplState_g = EPL_STATE_RUNNING;
-               }
-       }
-
-       return EplRet;
-}
-
-tEplKernel EplLinCbSync(void)
-{
-       tEplKernel EplRet = kEplSuccessful;
-       int iErr;
-
-       // check if user process waits for sync
-       if (atomic_read(&AtomicSyncState_g) == EVENT_STATE_IOCTL) {
-               // pass control to application, i.e. EplApiProcessImageExchangeIn()
-               atomic_set(&AtomicSyncState_g, EVENT_STATE_READY);
-               wake_up_interruptible(&WaitQueuePI_In_g);
-
-               // now, the application processes the sync event
-
-               // wait for call of EplApiProcessImageExchangeOut()
-               iErr = wait_event_interruptible(WaitQueueCbSync_g,
-                                               (atomic_read(&AtomicSyncState_g)
-                                                == EVENT_STATE_IOCTL)
-                                               ||
-                                               (atomic_read(&AtomicSyncState_g)
-                                                == EVENT_STATE_TERM));
-               if ((iErr != 0) || (atomic_read(&AtomicEventState_g) == EVENT_STATE_IOCTL)) {   // waiting was interrupted by signal or application called wrong function
-                       EplRet = kEplShutdown;
-               }
-       } else {                // application is currently not waiting for sync
-               // continue without interruption
-               // TPDO are set valid by caller (i.e. EplEventkProcess())
-       }
-
-       TGT_DBG_SIGNAL_TRACE_POINT(1);
-
-       return EplRet;
-}
-
-// EOF
diff --git a/drivers/staging/epl/EplApiProcessImage.c b/drivers/staging/epl/EplApiProcessImage.c
deleted file mode 100644 (file)
index 7d55086..0000000
+++ /dev/null
@@ -1,328 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for EPL API module (process image)
-
-  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: EplApiProcessImage.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.7 $  $Date: 2008/11/13 17:13:09 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/10/10 d.k.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#include "Epl.h"
-
-#include <linux/uaccess.h>
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          C L A S S  EplApi                                              */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-//
-// Description:
-//
-//
-/***************************************************************************/
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   D E F I N I T I O N S                          //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-#if ((EPL_API_PROCESS_IMAGE_SIZE_IN > 0) || (EPL_API_PROCESS_IMAGE_SIZE_OUT > 0))
-typedef struct {
-#if EPL_API_PROCESS_IMAGE_SIZE_IN > 0
-       u8 m_abProcessImageInput[EPL_API_PROCESS_IMAGE_SIZE_IN];
-#endif
-#if EPL_API_PROCESS_IMAGE_SIZE_OUT > 0
-       u8 m_abProcessImageOutput[EPL_API_PROCESS_IMAGE_SIZE_OUT];
-#endif
-
-} tEplApiProcessImageInstance;
-
-//---------------------------------------------------------------------------
-// local vars
-//---------------------------------------------------------------------------
-
-static tEplApiProcessImageInstance EplApiProcessImageInstance_g;
-#endif
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplApiProcessImageSetup()
-//
-// Description: sets up static process image
-//
-// Parameters:  (none)
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplApiProcessImageSetup(void)
-{
-       tEplKernel Ret = kEplSuccessful;
-#if ((EPL_API_PROCESS_IMAGE_SIZE_IN > 0) || (EPL_API_PROCESS_IMAGE_SIZE_OUT > 0))
-       unsigned int uiVarEntries;
-       tEplObdSize ObdSize;
-#endif
-
-#if EPL_API_PROCESS_IMAGE_SIZE_IN > 0
-       uiVarEntries = EPL_API_PROCESS_IMAGE_SIZE_IN;
-       ObdSize = 1;
-       Ret = EplApiLinkObject(0x2000,
-                              EplApiProcessImageInstance_g.
-                              m_abProcessImageInput, &uiVarEntries, &ObdSize,
-                              1);
-
-       uiVarEntries = EPL_API_PROCESS_IMAGE_SIZE_IN;
-       ObdSize = 1;
-       Ret = EplApiLinkObject(0x2001,
-                              EplApiProcessImageInstance_g.
-                              m_abProcessImageInput, &uiVarEntries, &ObdSize,
-                              1);
-
-       ObdSize = 2;
-       uiVarEntries = EPL_API_PROCESS_IMAGE_SIZE_IN / ObdSize;
-       Ret = EplApiLinkObject(0x2010,
-                              EplApiProcessImageInstance_g.
-                              m_abProcessImageInput, &uiVarEntries, &ObdSize,
-                              1);
-
-       ObdSize = 2;
-       uiVarEntries = EPL_API_PROCESS_IMAGE_SIZE_IN / ObdSize;
-       Ret = EplApiLinkObject(0x2011,
-                              EplApiProcessImageInstance_g.
-                              m_abProcessImageInput, &uiVarEntries, &ObdSize,
-                              1);
-
-       ObdSize = 4;
-       uiVarEntries = EPL_API_PROCESS_IMAGE_SIZE_IN / ObdSize;
-       Ret = EplApiLinkObject(0x2020,
-                              EplApiProcessImageInstance_g.
-                              m_abProcessImageInput, &uiVarEntries, &ObdSize,
-                              1);
-
-       ObdSize = 4;
-       uiVarEntries = EPL_API_PROCESS_IMAGE_SIZE_IN / ObdSize;
-       Ret = EplApiLinkObject(0x2021,
-                              EplApiProcessImageInstance_g.
-                              m_abProcessImageInput, &uiVarEntries, &ObdSize,
-                              1);
-#endif
-
-#if EPL_API_PROCESS_IMAGE_SIZE_OUT > 0
-       uiVarEntries = EPL_API_PROCESS_IMAGE_SIZE_OUT;
-       ObdSize = 1;
-       Ret = EplApiLinkObject(0x2030,
-                              EplApiProcessImageInstance_g.
-                              m_abProcessImageOutput, &uiVarEntries, &ObdSize,
-                              1);
-
-       uiVarEntries = EPL_API_PROCESS_IMAGE_SIZE_OUT;
-       ObdSize = 1;
-       Ret = EplApiLinkObject(0x2031,
-                              EplApiProcessImageInstance_g.
-                              m_abProcessImageOutput, &uiVarEntries, &ObdSize,
-                              1);
-
-       ObdSize = 2;
-       uiVarEntries = EPL_API_PROCESS_IMAGE_SIZE_OUT / ObdSize;
-       Ret = EplApiLinkObject(0x2040,
-                              EplApiProcessImageInstance_g.
-                              m_abProcessImageOutput, &uiVarEntries, &ObdSize,
-                              1);
-
-       ObdSize = 2;
-       uiVarEntries = EPL_API_PROCESS_IMAGE_SIZE_OUT / ObdSize;
-       Ret = EplApiLinkObject(0x2041,
-                              EplApiProcessImageInstance_g.
-                              m_abProcessImageOutput, &uiVarEntries, &ObdSize,
-                              1);
-
-       ObdSize = 4;
-       uiVarEntries = EPL_API_PROCESS_IMAGE_SIZE_OUT / ObdSize;
-       Ret = EplApiLinkObject(0x2050,
-                              EplApiProcessImageInstance_g.
-                              m_abProcessImageOutput, &uiVarEntries, &ObdSize,
-                              1);
-
-       ObdSize = 4;
-       uiVarEntries = EPL_API_PROCESS_IMAGE_SIZE_OUT / ObdSize;
-       Ret = EplApiLinkObject(0x2051,
-                              EplApiProcessImageInstance_g.
-                              m_abProcessImageOutput, &uiVarEntries, &ObdSize,
-                              1);
-#endif
-
-       return Ret;
-}
-
-//----------------------------------------------------------------------------
-// Function:    EplApiProcessImageExchangeIn()
-//
-// Description: replaces passed input process image with the one of EPL stack
-//
-// Parameters:  pPI_p                   = input process image
-//
-// Returns:     tEplKernel              = error code
-//
-// State:
-//----------------------------------------------------------------------------
-
-tEplKernel EplApiProcessImageExchangeIn(tEplApiProcessImage *pPI_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-#if EPL_API_PROCESS_IMAGE_SIZE_IN > 0
-       copy_to_user(pPI_p->m_pImage,
-                    EplApiProcessImageInstance_g.m_abProcessImageInput,
-                    min(pPI_p->m_uiSize,
-                        sizeof(EplApiProcessImageInstance_g.
-                               m_abProcessImageInput)));
-#endif
-
-       return Ret;
-}
-
-//----------------------------------------------------------------------------
-// Function:    EplApiProcessImageExchangeOut()
-//
-// Description: copies passed output process image to EPL stack.
-//
-// Parameters:  pPI_p                   = output process image
-//
-// Returns:     tEplKernel              = error code
-//
-// State:
-//----------------------------------------------------------------------------
-
-tEplKernel EplApiProcessImageExchangeOut(tEplApiProcessImage *pPI_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-#if EPL_API_PROCESS_IMAGE_SIZE_OUT > 0
-       copy_from_user(EplApiProcessImageInstance_g.m_abProcessImageOutput,
-                      pPI_p->m_pImage,
-                      min(pPI_p->m_uiSize,
-                          sizeof(EplApiProcessImageInstance_g.
-                                 m_abProcessImageOutput)));
-#endif
-
-       return Ret;
-}
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-// EOF
diff --git a/drivers/staging/epl/EplCfg.h b/drivers/staging/epl/EplCfg.h
deleted file mode 100644 (file)
index 38e958a..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  configuration file
-
-  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: EplCfg.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.4 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    ...
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/06    k.t.: Start of Implementation
-
-****************************************************************************/
-
-#ifndef _EPLCFG_H_
-#define _EPLCFG_H_
-
-// =========================================================================
-// generic defines which for whole EPL Stack
-// =========================================================================
-#define EPL_USE_DELETEINST_FUNC TRUE
-
-// needed to support datatypes over 32 bit by global.h
-#define USE_VAR64
-
-// EPL_MAX_INSTANCES specifies count of instances of all EPL modules.
-// If it is greater than 1 the first parameter of all
-// functions is the instance number.
-#define EPL_MAX_INSTANCES               1
-
-// This defines the target hardware. Here is encoded wich CPU and wich external
-// peripherals are connected. For possible values refere to target.h. If
-// necessary value is not available EPL stack has to
-// be adapted and tested.
-#define TARGET_HARDWARE                 TGTHW_PC_WRAPP
-
-// use no FIFOs, make direct calls
-//#define EPL_NO_FIFO
-
-// use no IPC between user- and kernelspace modules, make direct calls
-#define EPL_NO_USER_KERNEL
-
-#ifndef BENCHMARK_MODULES
-#define BENCHMARK_MODULES       0      //0xEE800042L
-#endif
-
-// Default defug level:
-// Only debug traces of these modules will be compiled which flags are set in define DEF_DEBUG_LVL.
-#ifndef DEF_DEBUG_LVL
-#define DEF_DEBUG_LVL           0xEC000000L
-#endif
-//   EPL_DBGLVL_OBD         =   0x00000004L
-// * EPL_DBGLVL_ASSERT      =   0x20000000L
-// * EPL_DBGLVL_ERROR       =   0x40000000L
-// * EPL_DBGLVL_ALWAYS      =   0x80000000L
-
-// EPL_MODULE_INTEGRATION defines all modules which are included in
-// EPL application. Please add or delete modules for your application.
-#define EPL_MODULE_INTEGRATION EPL_MODULE_OBDK \
-                               | EPL_MODULE_PDOK \
-                               | EPL_MODULE_NMT_MN \
-                               | EPL_MODULE_SDOS \
-                               | EPL_MODULE_SDOC \
-                               | EPL_MODULE_SDO_ASND \
-                               | EPL_MODULE_SDO_UDP \
-                               | EPL_MODULE_NMT_CN \
-                               | EPL_MODULE_NMTU \
-                               | EPL_MODULE_NMTK \
-                               | EPL_MODULE_DLLK \
-                               | EPL_MODULE_DLLU \
-                               | EPL_MODULE_VETH
-//                               | EPL_MODULE_OBDU
-
-// =========================================================================
-// EPL ethernet driver (Edrv) specific defines
-// =========================================================================
-
-// switch this define to TRUE if Edrv supports fast tx frames
-#define EDRV_FAST_TXFRAMES              FALSE
-//#define EDRV_FAST_TXFRAMES              TRUE
-
-// switch this define to TRUE if Edrv supports early receive interrupts
-#define EDRV_EARLY_RX_INT               FALSE
-//#define EDRV_EARLY_RX_INT               TRUE
-
-// enables setting of several port pins for benchmarking purposes
-#define EDRV_BENCHMARK                  FALSE
-//#define EDRV_BENCHMARK                  TRUE // MCF_GPIO_PODR_PCIBR
-
-// Call Tx handler (i.e. EplDllCbFrameTransmitted()) already if DMA has finished,
-// otherwise call the Tx handler if frame was actually transmitted over ethernet.
-#define EDRV_DMA_TX_HANDLER             FALSE
-//#define EDRV_DMA_TX_HANDLER             TRUE
-
-// number of used ethernet controller
-//#define EDRV_USED_ETH_CTRL              1
-
-// =========================================================================
-// Data Link Layer (DLL) specific defines
-// =========================================================================
-
-// switch this define to TRUE if Edrv supports fast tx frames
-// and DLL shall pass PRes as ready to Edrv after SoC
-#define EPL_DLL_PRES_READY_AFTER_SOC    FALSE
-//#define EPL_DLL_PRES_READY_AFTER_SOC    TRUE
-
-// switch this define to TRUE if Edrv supports fast tx frames
-// and DLL shall pass PRes as ready to Edrv after SoA
-#define EPL_DLL_PRES_READY_AFTER_SOA    FALSE
-//#define EPL_DLL_PRES_READY_AFTER_SOA    TRUE
-
-// =========================================================================
-// OBD specific defines
-// =========================================================================
-
-// switch this define to TRUE if Epl should compare object range
-// automaticly
-#define EPL_OBD_CHECK_OBJECT_RANGE          FALSE
-//#define EPL_OBD_CHECK_OBJECT_RANGE          TRUE
-
-// set this define to TRUE if there are strings or domains in OD, which
-// may be changed in object size and/or object data pointer by its object
-// callback function (called event kObdEvWrStringDomain)
-//#define EPL_OBD_USE_STRING_DOMAIN_IN_RAM    FALSE
-#define EPL_OBD_USE_STRING_DOMAIN_IN_RAM    TRUE
-
-#define EPL_OBD_USE_VARIABLE_SUBINDEX_TAB TRUE
-
-// =========================================================================
-// Timer module specific defines
-// =========================================================================
-
-// if TRUE it uses the Timer module implementation of EPL user also in EPL kernel
-#define EPL_TIMER_USE_USER              TRUE
-
-// if TRUE the high resolution timer module will be used
-#define EPL_TIMER_USE_HIGHRES              TRUE
-//#define EPL_TIMER_USE_HIGHRES              FALSE
-
-#endif //_EPLCFG_H_
diff --git a/drivers/staging/epl/EplDef.h b/drivers/staging/epl/EplDef.h
deleted file mode 100644 (file)
index 1dc8108..0000000
+++ /dev/null
@@ -1,355 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for EPL default constants
-
-  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: EplDef.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.15 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/05/22 d.k.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#ifndef _EPL_DEF_H_
-#define _EPL_DEF_H_
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-#define EPL_C_ADR_BROADCAST         0xFF       // EPL broadcast address
-#define EPL_C_ADR_DIAG_DEF_NODE_ID  0xFD       // EPL default address of dignostic device
-#define EPL_C_ADR_DUMMY_NODE_ID     0xFC       // EPL dummy node address
-#define EPL_C_ADR_INVALID           0x00       // invalid EPL address
-#define EPL_C_ADR_MN_DEF_NODE_ID    0xF0       // EPL default address of MN
-#define EPL_C_ADR_RT1_DEF_NODE_ID   0xFE       // EPL default address of router type 1
-#define EPL_C_DLL_ASND_PRIO_NMTRQST 7  // increased ASnd request priority to be used by NMT Requests
-#define EPL_C_DLL_ASND_PRIO_STD     0  // standard ASnd request priority
-#define EPL_C_DLL_ETHERTYPE_EPL     0x88AB
-#define EPL_C_DLL_ISOCHR_MAX_PAYL   1490       // Byte: maximum size of PReq and PRes payload data, requires C_IP_MAX_MTU
-#define EPL_C_DLL_MAX_ASYNC_MTU     1500       // Byte: maximum asynchronous payload in bytes
-#define EPL_C_DLL_MAX_PAYL_OFFSET   1499       // Byte: maximum offset of Ethernet frame payload, requires C_IP_MAX_MTU
-#define EPL_C_DLL_MAX_RS            7
-#define EPL_C_DLL_MIN_ASYNC_MTU     282        // Byte: minimum asynchronous payload in bytes.
-#define EPL_C_DLL_MIN_PAYL_OFFSET   45 // Byte: minimum offset of Ethernet frame payload
-#define EPL_C_DLL_MULTICAST_ASND    0x01111E000004LL   // EPL ASnd multicast MAC address, canonical form
-#define EPL_C_DLL_MULTICAST_PRES    0x01111E000002LL   // EPL PRes multicast MAC address, canonical form
-#define EPL_C_DLL_MULTICAST_SOA     0x01111E000003LL   // EPL SoA multicast MAC address, canonical form
-#define EPL_C_DLL_MULTICAST_SOC     0x01111E000001LL   // EPL Soc multicast MAC address, canonical form
-#define EPL_C_DLL_PREOP1_START_CYCLES 10       // number of unassigning SoA frames at start of NMT_MS_PRE_OPERATIONAL_1
-#define EPL_C_DLL_T_BITTIME         10 // ns: Transmission time per bit on 100 Mbit/s network
-#define EPL_C_DLL_T_EPL_PDO_HEADER  10 // Byte: size of PReq and PRes EPL PDO message header
-#define EPL_C_DLL_T_ETH2_WRAPPER    18 // Byte: size of Ethernet type II wrapper consisting of header and checksum
-#define EPL_C_DLL_T_IFG             640        // ns: Ethernet Interframe Gap
-#define EPL_C_DLL_T_MIN_FRAME       5120       // ns: Size of minimum Ethernet frame (without preamble)
-#define EPL_C_DLL_T_PREAMBLE        960        // ns: Size of Ethernet frame preamble
-
-#define EPL_C_DLL_MINSIZE_SOC       36 // minimum size of SoC without padding and CRC
-#define EPL_C_DLL_MINSIZE_PREQ      60 // minimum size of PRec without CRC
-#define EPL_C_DLL_MINSIZE_PRES      60 // minimum size of PRes without CRC
-#define EPL_C_DLL_MINSIZE_SOA       24 // minimum size of SoA without padding and CRC
-#define EPL_C_DLL_MINSIZE_IDENTRES  176        // minimum size of IdentResponse without CRC
-#define EPL_C_DLL_MINSIZE_STATUSRES 72 // minimum size of StatusResponse without CRC
-#define EPL_C_DLL_MINSIZE_NMTCMD    20 // minimum size of NmtCommand without CommandData, padding and CRC
-#define EPL_C_DLL_MINSIZE_NMTCMDEXT 52 // minimum size of NmtCommand without padding and CRC
-#define EPL_C_DLL_MINSIZE_NMTREQ    20 // minimum size of NmtRequest without CommandData, padding and CRC
-#define EPL_C_DLL_MINSIZE_NMTREQEXT 52 // minimum size of NmtRequest without padding and CRC
-
-#define EPL_C_ERR_MONITOR_DELAY     10 // Error monitoring start delay (not used in DS 1.0.0)
-#define EPL_C_IP_ADR_INVALID        0x00000000L        // invalid IP address (0.0.0.0) used to indicate no change
-#define EPL_C_IP_INVALID_MTU        0  // Byte: invalid MTU size used to indicate no change
-#define EPL_C_IP_MAX_MTU            1518       // Byte: maximum size in bytes of the IP stack which must be processed.
-#define EPL_C_IP_MIN_MTU            300        // Byte: minimum size in bytes of the IP stack which must be processed.
-#define EPL_C_NMT_STATE_TOLERANCE   5  // Cycles: maximum reaction time to NMT state commands
-#define EPL_C_NMT_STATREQ_CYCLE     5  // sec: StatusRequest cycle time to be applied to AsyncOnly CNs
-#define EPL_C_SDO_EPL_PORT          3819
-
-#define EPL_C_DLL_MAX_ASND_SERVICE_IDS  5      // see tEplDllAsndServiceId in EplDll.h
-
-// Default configuration
-// ======================
-
-#ifndef EPL_D_PDO_Granularity_U8
-#define EPL_D_PDO_Granularity_U8    8  // minimum size of objects to be mapped in bits UNSIGNED8 O O 1 1
-#endif
-
-#ifndef EPL_NMT_MAX_NODE_ID
-#define EPL_NMT_MAX_NODE_ID         254        // maximum node-ID
-#endif
-
-#ifndef EPL_D_NMT_MaxCNNumber_U8
-#define EPL_D_NMT_MaxCNNumber_U8    239        // maximum number of supported regular CNs in the Node ID range 1 .. 239 UNSIGNED8 O O 239 239
-#endif
-
-// defines for EPL API layer static process image
-#ifndef EPL_API_PROCESS_IMAGE_SIZE_IN
-#define EPL_API_PROCESS_IMAGE_SIZE_IN   0
-#endif
-
-#ifndef EPL_API_PROCESS_IMAGE_SIZE_OUT
-#define EPL_API_PROCESS_IMAGE_SIZE_OUT  0
-#endif
-
-// configure whether OD access events shall be forwarded
-// to user callback function.
-// Because of reentrancy for local OD accesses, this has to be disabled
-// when application resides in other address space as the stack (e.g. if
-// EplApiLinuxUser.c and EplApiLinuxKernel.c are used)
-#ifndef EPL_API_OBD_FORWARD_EVENT
-#define EPL_API_OBD_FORWARD_EVENT       TRUE
-#endif
-
-#ifndef EPL_OBD_MAX_STRING_SIZE
-#define EPL_OBD_MAX_STRING_SIZE        32      // is used for objects 0x1008/0x1009/0x100A
-#endif
-
-#ifndef EPL_OBD_USE_STORE_RESTORE
-#define EPL_OBD_USE_STORE_RESTORE       FALSE
-#endif
-
-#ifndef EPL_OBD_CHECK_OBJECT_RANGE
-#define EPL_OBD_CHECK_OBJECT_RANGE      TRUE
-#endif
-
-#ifndef EPL_OBD_USE_STRING_DOMAIN_IN_RAM
-#define EPL_OBD_USE_STRING_DOMAIN_IN_RAM    TRUE
-#endif
-
-#ifndef EPL_OBD_USE_VARIABLE_SUBINDEX_TAB
-#define EPL_OBD_USE_VARIABLE_SUBINDEX_TAB   TRUE
-#endif
-
-#ifndef EPL_OBD_USE_KERNEL
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDU)) == 0)
-#define EPL_OBD_USE_KERNEL                  TRUE
-#else
-#define EPL_OBD_USE_KERNEL                  FALSE
-#endif
-#endif
-
-#ifndef EPL_OBD_INCLUDE_A000_TO_DEVICE_PART
-#define EPL_OBD_INCLUDE_A000_TO_DEVICE_PART FALSE
-#endif
-
-#ifndef EPL_VETH_NAME
-#define EPL_VETH_NAME       "epl"      // name of net device in Linux
-#endif
-
-/*
-#define EPL_D_CFG_ConfigManager_BOOL // Ability of a MN node to perform Configuration Manager functions BOOLEAN O - N -
-#define EPL_D_CFM_VerifyConf_BOOL   // Support of objects CFM_VerifyConfiguration_REC, CFM_ExpConfDateList_AU32, CFM_ExpConfTimeList_AU32 BOOLEAN O O N N
-#define EPL_D_CFM_VerifyConfId_BOOL // Support of objects CFM_VerifyConfiguration_REC.ConfId_U32 and CFM_ExpConfIdList_AU32 BOOLEAN O O N N
-#define EPL_D_DLL_CNFeatureIsochr_BOOL // CN\92s ability to perform isochronous functions BOOLEAN - O - Y
-#define EPL_D_DLL_CNFeatureMultiplex_BOOL // node\92s ability to perform control of multiplexed isochronous communication BOOLEAN - O - N
-#define EPL_D_DLL_FeatureCN_BOOL // node\92s ability to perform CN functions BOOLEAN O O Y Y
-#define EPL_D_DLL_FeatureMN_BOOL // node\92s ability to perform MN functions BOOLEAN M O - N
-#define EPL_D_DLL_MNFeatureMultiplex_BOOL // MN\92s ability to perform control of multiplexed isochronous communication BOOLEAN O - Y -
-#define EPL_D_DLL_MNFeaturePResTx_BOOL // MN\92s ability to transmit PRes BOOLEAN O - Y -
-#define EPL_D_NMT_ASndRxMaxPayload_U16 // size of ASnd frame receive buffer UNSIGNED16 M M - -
-#define EPL_D_NMT_ASndTxMaxPayload_U16 // size of ASnd frame transmit buffer UNSIGNED16 M M - -
-#define EPL_D_NMT_CNASnd2SoC_U32 // minimum delay between end of reception of ASnd and start of reception of SoC UNSIGNED32 - M - -
-#define EPL_D_NMT_CNASndMaxLatency_U32 // delay between end of SoA reception and start of ASnd transmission UNSIGNED32 - M - -
-#define EPL_D_NMT_CNPResMaxLatency_U32 // delay between end of PReq reception and start of PRes transmission UNSIGNED32 - M - -
-#define EPL_D_NMT_CNSoC2PReq_U32 // CN SoC handling maximum time, a subsequent PReq won\92t be handled before SoC handling was finished UNSIGNED32 - M - -
-#define EPL_D_NMT_DeviceType_U32 // Device Type ID UNSIGNED32 M M - -
-#define EPL_D_NMT_EPLVers_U8 EPL // Version implemented by the device UNSIGNED8 M M - -
-#define EPL_D_NMT_ExtStateCmd_BOOL // abitilty to support Extended NMT State Commands BOOLEAN O O Y Y
-#define EPL_D_NMT_InfoSvc_BOOL // ability to support NMT Info Services BOOLEAN O - Y -
-#define EPL_D_NMT_InterfaceAddr_Xh_OSTR // Physical Address of Interface No. Xh OCTET_STRING M M - -
-#define EPL_D_NMT_InterfaceDescr_Xh_VSTR // Description text of Interface No. Xh VISIBLE_STRINGM M - -
-#define EPL_D_NMT_InterfaceMtu_Xh_U32 // MTU of Interface No. Xh UNSIGNED32 M M - -
-#define EPL_D_NMT_InterfaceType_Xh_U8 // Type of Interface No. Xh UNSIGNED8 M M - -
-#define EPL_D_NMT_IsochrRxMaxPayload_U16 // size of isochronous frame receive buffer UNSIGNED16 M M - -
-#define EPL_D_NMT_IsochrTxMaxPayload_U16 // size of isochronous frame transmit buffer UNSIGNED16 M M - -
-#define EPL_D_NMT_ManufactDevName_VS // Manufacturer Device Name VISIBLE_STRING O O - -
-#define EPL_D_NMT_ManufactHwVers_VS // Manufacturer HW version VISIBLE_STRING O O - -
-#define EPL_D_NMT_ManufactSwVers_VS // Manufacturer SW version VISIBLE_STRING O O - -
-#define EPL_D_NMT_MaxCNNodeID_U8 // maximum Node ID available for regular CNs the entry provides an upper limit to the NodeID available for cross traffic PDO reception from a regular CN UNSIGNED8 O O 239 239
-#define EPL_D_NMT_MaxCNNumber_U8 // maximum number of supported regular CNs in the Node ID range 1 .. 239 UNSIGNED8 O O 239 239
-#define EPL_D_NMT_MaxHeartbeats_U8 // number of guard channels UNSIGNED8 O O 254 254
-#define EPL_D_NMT_MNASnd2SoC_U32 // minimum delay between end of reception of ASnd and start of transmission of SoC UNSIGNED32 M - - -
-#define EPL_D_NMT_MNMultiplCycMax_U8 // maximum number of EPL cycles per multiplexed cycle UNSIGNED8 O - 0 -
-#define EPL_D_NMT_MNPRes2PReq_U32 // delay between end of PRes reception and start of PReq transmission UNSIGNED32 M - - -
-#define EPL_D_NMT_MNPRes2PRes_U32 // delay between end of reception of PRes from CNn and start of transmission of PRes by MN UNSIGNED32 M - - -
-#define EPL_D_NMT_MNPResRx2SoA_U32 // delay between end of reception of PRes from CNn and start of transmission of SoA by MN UNSIGNED32 M - - -
-#define EPL_D_NMT_MNPResTx2SoA_U32 // delay between end of PRes transmission by MN and start of transmission of SoA by MN UNSIGNED32 M - - -
-#define EPL_D_NMT_MNSoA2ASndTx_U32 // delay between end of transmission of SoA and start of transmission of ASnd by MN UNSIGNED32 M - - -
-#define EPL_D_NMT_MNSoC2PReq_U32 // MN minimum delay between end of SoC transmission and start of PReq transmission UNSIGNED32 M - - -
-#define EPL_D_NMT_NMTSvcViaUDPIP_BOOL // Ability of a node to perform NMT services via UDP/IP BOOLEAN O - Y -
-#define EPL_D_NMT_NodeIDByHW_BOOL // Ability of a node to support NodeID setup by HW BOOLEAN O O Y Y
-#define EPL_D_NMT_NodeIDBySW_BOOL // Ability of a node to support NodeID setup by SW BOOLEAN O O N N
-#define EPL_D_NMT_ProductCode_U32 // Identity Object Product Code UNSIGNED32 M M - -
-#define EPL_D_NMT_RevisionNo_U32 // Identity Object Revision Number UNSIGNED32 M M - -
-#define EPL_D_NMT_SerialNo_U32 // Identity Object Serial Number UNSIGNED32 M M - -
-#define EPL_D_NMT_SimpleBoot_BOOL // Ability of a MN node to perform Simple Boot Process, if not set Indivual Boot Process shall be proviced BOOLEAN M - - -
-#define EPL_D_NMT_VendorID_U32 // Identity Object Vendor ID UNSIGNED32 M M - -
-#define EPL_D_NWL_Forward_BOOL // Ability of node to forward datagrams BOOLEAN O O N N
-#define EPL_D_NWL_IPSupport_BOOL // Ability of the node cummunicate via IP BOOLEAN - - Y Y
-#define EPL_D_PDO_DynamicMapping_BOOL // Ability of a node to perform dynamic PDO mapping BOOLEAN O O Y Y
-#define EPL_D_PDO_MaxDescrMem_U32 // maximum cumulative memory consumption of TPDO and RPDO describing objects in byte UNSIGNED32 O O MAX_U32 MAX_U32
-#define EPL_D_PDO_RPDOChannels_U8 // number of supported RPDO channels UNSIGNED8 O O 256 256
-#define EPL_D_PDO_RPDOMaxMem_U32 // Maximum memory available for RPDO data per EPL cycle in byte UNSIGNED32 O O MAX_U32 MAX_U32
-#define EPL_D_PDO_RPDOObjects_U8 // Number of supported mapped objects per RPDO channel UNSIGNED8 O O 254 254
-#define EPL_D_PDO_TPDOChannels_U8 // number of supported TPDO channels UNSIGNED8 O - 256 -
-#define EPL_D_PDO_TPDOMaxMem_U32 // Maximum memory available for TPDO data per EPL cycle in byte UNSIGNED32 O O MAX_U32 MAX_U32
-#define EPL_D_PDO_TPDOObjects_U8 // Number of supported mapped objects per TPDO channel UNSIGNED8 O O 254 254
-#define EPL_D_SDO_ViaASnd_BOOL // Ability of a CN to perform SDO transfer by EPL ASnd BOOLEAN - M - -
-#define EPL_D_SDO_ViaPDO_BOOL // Ability of a node to perform SDO transfer by PDO BOOLEAN O O N N
-#define EPL_D_SDO_ViaUDPIP_BOOL // Ability of a CN to perform SDO transfer by UDP/IP BOOLEAN - M - -
-#define EPL_D_SYN_OptimizedSync_BOOL // Ability of node to perform optimized synchronisation BOOLEAN O O N N
-*/
-
-// Emergency error codes
-// ======================
-#define EPL_E_NO_ERROR                  0x0000
-// 0xFxxx manufacturer specific error codes
-#define EPL_E_NMT_NO_IDENT_RES          0xF001
-#define EPL_E_NMT_NO_STATUS_RES         0xF002
-
-// 0x816x HW errors
-#define EPL_E_DLL_BAD_PHYS_MODE         0x8161
-#define EPL_E_DLL_COLLISION             0x8162
-#define EPL_E_DLL_COLLISION_TH          0x8163
-#define EPL_E_DLL_CRC_TH                0x8164
-#define EPL_E_DLL_LOSS_OF_LINK          0x8165
-#define EPL_E_DLL_MAC_BUFFER            0x8166
-// 0x82xx Protocol errors
-#define EPL_E_DLL_ADDRESS_CONFLICT      0x8201
-#define EPL_E_DLL_MULTIPLE_MN           0x8202
-// 0x821x Frame size errors
-#define EPL_E_PDO_SHORT_RX              0x8210
-#define EPL_E_PDO_MAP_VERS              0x8211
-#define EPL_E_NMT_ASND_MTU_DIF          0x8212
-#define EPL_E_NMT_ASND_MTU_LIM          0x8213
-#define EPL_E_NMT_ASND_TX_LIM           0x8214
-// 0x823x Timing errors
-#define EPL_E_NMT_CYCLE_LEN             0x8231
-#define EPL_E_DLL_CYCLE_EXCEED          0x8232
-#define EPL_E_DLL_CYCLE_EXCEED_TH       0x8233
-#define EPL_E_NMT_IDLE_LIM              0x8234
-#define EPL_E_DLL_JITTER_TH             0x8235
-#define EPL_E_DLL_LATE_PRES_TH          0x8236
-#define EPL_E_NMT_PREQ_CN               0x8237
-#define EPL_E_NMT_PREQ_LIM              0x8238
-#define EPL_E_NMT_PRES_CN               0x8239
-#define EPL_E_NMT_PRES_RX_LIM           0x823A
-#define EPL_E_NMT_PRES_TX_LIM           0x823B
-// 0x824x Frame errors
-#define EPL_E_DLL_INVALID_FORMAT        0x8241
-#define EPL_E_DLL_LOSS_PREQ_TH          0x8242
-#define EPL_E_DLL_LOSS_PRES_TH          0x8243
-#define EPL_E_DLL_LOSS_SOA_TH           0x8244
-#define EPL_E_DLL_LOSS_SOC_TH           0x8245
-// 0x84xx BootUp Errors
-#define EPL_E_NMT_BA1                   0x8410 // other MN in MsNotActive active
-#define EPL_E_NMT_BA1_NO_MN_SUPPORT     0x8411 // MN is not supported
-#define EPL_E_NMT_BPO1                  0x8420 // mandatory CN was not found or failed in BootStep1
-#define EPL_E_NMT_BPO1_GET_IDENT        0x8421 // IdentRes was not received
-#define EPL_E_NMT_BPO1_DEVICE_TYPE      0x8422 // wrong device type
-#define EPL_E_NMT_BPO1_VENDOR_ID        0x8423 // wrong vendor ID
-#define EPL_E_NMT_BPO1_PRODUCT_CODE     0x8424 // wrong product code
-#define EPL_E_NMT_BPO1_REVISION_NO      0x8425 // wrong revision number
-#define EPL_E_NMT_BPO1_SERIAL_NO        0x8426 // wrong serial number
-#define EPL_E_NMT_BPO1_CF_VERIFY        0x8428 // verification of configuration failed
-#define EPL_E_NMT_BPO2                  0x8430 // mandatory CN failed in BootStep2
-#define EPL_E_NMT_BRO                   0x8440 // CheckCommunication failed for mandatory CN
-#define EPL_E_NMT_WRONG_STATE           0x8480 // mandatory CN has wrong NMT state
-
-// Defines for object 0x1F80 NMT_StartUp_U32
-// ==========================================
-#define EPL_NMTST_STARTALLNODES         0x00000002L    // Bit 1
-#define EPL_NMTST_NO_AUTOSTART          0x00000004L    // Bit 2
-#define EPL_NMTST_NO_STARTNODE          0x00000008L    // Bit 3
-#define EPL_NMTST_RESETALL_MAND_CN      0x00000010L    // Bit 4
-#define EPL_NMTST_STOPALL_MAND_CN       0x00000040L    // Bit 6
-#define EPL_NMTST_NO_AUTOPREOP2         0x00000080L    // Bit 7
-#define EPL_NMTST_NO_AUTOREADYTOOP      0x00000100L    // Bit 8
-#define EPL_NMTST_EXT_CNIDENTCHECK      0x00000200L    // Bit 9
-#define EPL_NMTST_SWVERSIONCHECK        0x00000400L    // Bit 10
-#define EPL_NMTST_CONFCHECK             0x00000800L    // Bit 11
-#define EPL_NMTST_NO_RETURN_PREOP1      0x00001000L    // Bit 12
-#define EPL_NMTST_BASICETHERNET         0x00002000L    // Bit 13
-
-// Defines for object 0x1F81 NMT_NodeAssignment_AU32
-// ==================================================
-#define EPL_NODEASSIGN_NODE_EXISTS      0x00000001L    // Bit 0
-#define EPL_NODEASSIGN_NODE_IS_CN       0x00000002L    // Bit 1
-#define EPL_NODEASSIGN_START_CN         0x00000004L    // Bit 2
-#define EPL_NODEASSIGN_MANDATORY_CN     0x00000008L    // Bit 3
-#define EPL_NODEASSIGN_KEEPALIVE        0x00000010L    //currently not used in EPL V2 standard
-#define EPL_NODEASSIGN_SWVERSIONCHECK   0x00000020L    // Bit 5
-#define EPL_NODEASSIGN_SWUPDATE         0x00000040L    // Bit 6
-#define EPL_NODEASSIGN_ASYNCONLY_NODE   0x00000100L    // Bit 8
-#define EPL_NODEASSIGN_MULTIPLEXED_CN   0x00000200L    // Bit 9
-#define EPL_NODEASSIGN_RT1              0x00000400L    // Bit 10
-#define EPL_NODEASSIGN_RT2              0x00000800L    // Bit 11
-#define EPL_NODEASSIGN_MN_PRES          0x00001000L    // Bit 12
-#define EPL_NODEASSIGN_VALID            0x80000000L    // Bit 31
-
-//---------------------------------------------------------------------------
-// typedef
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// function prototypes
-//---------------------------------------------------------------------------
-
-#endif // #ifndef _EPL_DEF_H_
diff --git a/drivers/staging/epl/EplDll.h b/drivers/staging/epl/EplDll.h
deleted file mode 100644 (file)
index b960199..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for DLL module
-
-  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: EplDll.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.4 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/08 d.k.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#ifndef _EPL_DLL_H_
-#define _EPL_DLL_H_
-
-#include "EplInc.h"
-#include "EplFrame.h"
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-#ifndef EPL_DLL_MAX_ASND_SERVICE_ID
-#define EPL_DLL_MAX_ASND_SERVICE_ID (EPL_C_DLL_MAX_ASND_SERVICE_IDS + 1)       // last is kEplDllAsndSdo == 5
-#endif
-
-//---------------------------------------------------------------------------
-// typedef
-//---------------------------------------------------------------------------
-
-typedef enum {
-       kEplDllAsndNotDefined = 0x00,
-       kEplDllAsndIdentResponse = 0x01,
-       kEplDllAsndStatusResponse = 0x02,
-       kEplDllAsndNmtRequest = 0x03,
-       kEplDllAsndNmtCommand = 0x04,
-       kEplDllAsndSdo = 0x05
-} tEplDllAsndServiceId;
-
-typedef enum {
-       kEplDllAsndFilterNone = 0x00,
-       kEplDllAsndFilterLocal = 0x01,  // receive only ASnd frames with local or broadcast node ID
-       kEplDllAsndFilterAny = 0x02,    // receive any ASnd frame
-} tEplDllAsndFilter;
-
-typedef enum {
-       kEplDllReqServiceNo = 0x00,
-       kEplDllReqServiceIdent = 0x01,
-       kEplDllReqServiceStatus = 0x02,
-       kEplDllReqServiceNmtRequest = 0x03,
-       kEplDllReqServiceUnspecified = 0xFF,
-
-} tEplDllReqServiceId;
-
-typedef enum {
-       kEplDllAsyncReqPrioNmt = 0x07,  // PRIO_NMT_REQUEST
-       kEplDllAsyncReqPrio6 = 0x06,
-       kEplDllAsyncReqPrio5 = 0x05,
-       kEplDllAsyncReqPrio4 = 0x04,
-       kEplDllAsyncReqPrioGeneric = 0x03,      // PRIO_GENERIC_REQUEST
-       kEplDllAsyncReqPrio2 = 0x02,    // till WSP 0.1.3: PRIO_ABOVE_GENERIC
-       kEplDllAsyncReqPrio1 = 0x01,    // till WSP 0.1.3: PRIO_BELOW_GENERIC
-       kEplDllAsyncReqPrio0 = 0x00,    // till WSP 0.1.3: PRIO_GENERIC_REQUEST
-
-} tEplDllAsyncReqPriority;
-
-typedef struct {
-       unsigned int m_uiFrameSize;
-       tEplFrame *m_pFrame;
-       tEplNetTime m_NetTime;
-
-} tEplFrameInfo;
-
-typedef struct {
-       unsigned int m_uiSizeOfStruct;
-       BOOL m_fAsyncOnly;      // do not need to register PRes-Frame
-       unsigned int m_uiNodeId;        // local node ID
-
-       // 0x1F82: NMT_FeatureFlags_U32
-       u32 m_dwFeatureFlags;
-       // Cycle Length (0x1006: NMT_CycleLen_U32) in [us]
-       u32 m_dwCycleLen;       // required for error detection
-       // 0x1F98: NMT_CycleTiming_REC
-       // 0x1F98.1: IsochrTxMaxPayload_U16
-       unsigned int m_uiIsochrTxMaxPayload;    // const
-       // 0x1F98.2: IsochrRxMaxPayload_U16
-       unsigned int m_uiIsochrRxMaxPayload;    // const
-       // 0x1F98.3: PResMaxLatency_U32
-       u32 m_dwPresMaxLatency; // const in [ns], only required for IdentRes
-       // 0x1F98.4: PReqActPayloadLimit_U16
-       unsigned int m_uiPreqActPayloadLimit;   // required for initialisation (+24 bytes)
-       // 0x1F98.5: PResActPayloadLimit_U16
-       unsigned int m_uiPresActPayloadLimit;   // required for initialisation of Pres frame (+24 bytes)
-       // 0x1F98.6: ASndMaxLatency_U32
-       u32 m_dwAsndMaxLatency; // const in [ns], only required for IdentRes
-       // 0x1F98.7: MultiplCycleCnt_U8
-       unsigned int m_uiMultiplCycleCnt;       // required for error detection
-       // 0x1F98.8: AsyncMTU_U16
-       unsigned int m_uiAsyncMtu;      // required to set up max frame size
-       // $$$ 0x1F98.9: Prescaler_U16
-       // $$$ Multiplexed Slot
-
-       // 0x1C14: DLL_LossOfFrameTolerance_U32 in [ns]
-       u32 m_dwLossOfFrameTolerance;
-
-       // 0x1F8A: NMT_MNCycleTiming_REC
-       // 0x1F8A.1: WaitSoCPReq_U32 in [ns]
-       u32 m_dwWaitSocPreq;
-
-       // 0x1F8A.2: AsyncSlotTimeout_U32 in [ns]
-       u32 m_dwAsyncSlotTimeout;
-
-} tEplDllConfigParam;
-
-typedef struct {
-       unsigned int m_uiSizeOfStruct;
-       u32 m_dwDeviceType;     // NMT_DeviceType_U32
-       u32 m_dwVendorId;       // NMT_IdentityObject_REC.VendorId_U32
-       u32 m_dwProductCode;    // NMT_IdentityObject_REC.ProductCode_U32
-       u32 m_dwRevisionNumber; // NMT_IdentityObject_REC.RevisionNo_U32
-       u32 m_dwSerialNumber;   // NMT_IdentityObject_REC.SerialNo_U32
-       u64 m_qwVendorSpecificExt1;
-       u32 m_dwVerifyConfigurationDate;        // CFM_VerifyConfiguration_REC.ConfDate_U32
-       u32 m_dwVerifyConfigurationTime;        // CFM_VerifyConfiguration_REC.ConfTime_U32
-       u32 m_dwApplicationSwDate;      // PDL_LocVerApplSw_REC.ApplSwDate_U32 on programmable device or date portion of NMT_ManufactSwVers_VS on non-programmable device
-       u32 m_dwApplicationSwTime;      // PDL_LocVerApplSw_REC.ApplSwTime_U32 on programmable device or time portion of NMT_ManufactSwVers_VS on non-programmable device
-       u32 m_dwIpAddress;
-       u32 m_dwSubnetMask;
-       u32 m_dwDefaultGateway;
-       u8 m_sHostname[32];
-       u8 m_abVendorSpecificExt2[48];
-
-} tEplDllIdentParam;
-
-typedef struct {
-       unsigned int m_uiNodeId;
-       u16 m_wPreqPayloadLimit;        // object 0x1F8B: NMT_MNPReqPayloadLimitList_AU16
-       u16 m_wPresPayloadLimit;        // object 0x1F8D: NMT_PResPayloadLimitList_AU16
-       u32 m_dwPresTimeout;    // object 0x1F92: NMT_MNCNPResTimeout_AU32
-
-} tEplDllNodeInfo;
-
-//---------------------------------------------------------------------------
-// function prototypes
-//---------------------------------------------------------------------------
-
-#endif // #ifndef _EPL_DLL_H_
diff --git a/drivers/staging/epl/EplDllCal.h b/drivers/staging/epl/EplDllCal.h
deleted file mode 100644 (file)
index 70b27b1..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for DLL Communication Abstraction Layer module
-
-  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: EplDllCal.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.4 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/20 d.k.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#ifndef _EPL_DLLCAL_H_
-#define _EPL_DLLCAL_H_
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-/*#ifndef EPL_DLLCAL_BUFFER_ID_RX
-#define EPL_DLLCAL_BUFFER_ID_RX    "EplSblDllCalRx"
-#endif
-
-#ifndef EPL_DLLCAL_BUFFER_SIZE_RX
-#define EPL_DLLCAL_BUFFER_SIZE_RX  32767
-#endif
-*/
-#ifndef EPL_DLLCAL_BUFFER_ID_TX_NMT
-#define EPL_DLLCAL_BUFFER_ID_TX_NMT     "EplSblDllCalTxNmt"
-#endif
-
-#ifndef EPL_DLLCAL_BUFFER_SIZE_TX_NMT
-#define EPL_DLLCAL_BUFFER_SIZE_TX_NMT   32767
-#endif
-
-#ifndef EPL_DLLCAL_BUFFER_ID_TX_GEN
-#define EPL_DLLCAL_BUFFER_ID_TX_GEN     "EplSblDllCalTxGen"
-#endif
-
-#ifndef EPL_DLLCAL_BUFFER_SIZE_TX_GEN
-#define EPL_DLLCAL_BUFFER_SIZE_TX_GEN   32767
-#endif
-
-//---------------------------------------------------------------------------
-// typedef
-//---------------------------------------------------------------------------
-
-typedef struct {
-       tEplDllAsndServiceId m_ServiceId;
-       tEplDllAsndFilter m_Filter;
-
-} tEplDllCalAsndServiceIdFilter;
-
-typedef struct {
-       tEplDllReqServiceId m_Service;
-       unsigned int m_uiNodeId;
-       u8 m_bSoaFlag1;
-
-} tEplDllCalIssueRequest;
-
-//---------------------------------------------------------------------------
-// function prototypes
-//---------------------------------------------------------------------------
-
-#endif // #ifndef _EPL_DLLKCAL_H_
diff --git a/drivers/staging/epl/EplDllk.c b/drivers/staging/epl/EplDllk.c
deleted file mode 100644 (file)
index 0572c3d..0000000
+++ /dev/null
@@ -1,4052 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for kernel DLL module
-
-  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: EplDllk.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.21 $  $Date: 2008/11/13 17:13:09 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/12 d.k.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#include "kernel/EplDllk.h"
-#include "kernel/EplDllkCal.h"
-#include "kernel/EplEventk.h"
-#include "kernel/EplNmtk.h"
-#include "edrv.h"
-#include "Benchmark.h"
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_PDOK)) != 0)
-#include "kernel/EplPdok.h"
-#endif
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_VETH)) != 0)
-#include "kernel/VirtualEthernet.h"
-#endif
-
-//#if EPL_TIMER_USE_HIGHRES != FALSE
-#include "kernel/EplTimerHighResk.h"
-//#endif
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLK)) != 0)
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTK)) == 0)
-#error "EPL module DLLK needs EPL module NMTK!"
-#endif
-
-#if (EPL_DLL_PRES_READY_AFTER_SOA != FALSE) && (EPL_DLL_PRES_READY_AFTER_SOC != FALSE)
-#error "EPL module DLLK: select only one of EPL_DLL_PRES_READY_AFTER_SOA and EPL_DLL_PRES_READY_AFTER_SOC."
-#endif
-
-#if ((EPL_DLL_PRES_READY_AFTER_SOA != FALSE) || (EPL_DLL_PRES_READY_AFTER_SOC != FALSE)) \
-    && (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) == 0)
-#error "EPL module DLLK: currently, EPL_DLL_PRES_READY_AFTER_* is not supported if EPL_MODULE_NMT_MN is enabled."
-#endif
-
-#if (EDRV_FAST_TXFRAMES == FALSE) && \
-    ((EPL_DLL_PRES_READY_AFTER_SOA != FALSE) || (EPL_DLL_PRES_READY_AFTER_SOC != FALSE))
-#error "EPL module DLLK: EPL_DLL_PRES_READY_AFTER_* is enabled, but not EDRV_FAST_TXFRAMES."
-#endif
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-// TracePoint support for realtime-debugging
-#ifdef _DBG_TRACE_POINTS_
-void TgtDbgSignalTracePoint(u8 bTracePointNumber_p);
-void TgtDbgPostTraceValue(u32 dwTraceValue_p);
-#define TGT_DBG_SIGNAL_TRACE_POINT(p)   TgtDbgSignalTracePoint(p)
-#define TGT_DBG_POST_TRACE_VALUE(v)     TgtDbgPostTraceValue(v)
-#else
-#define TGT_DBG_SIGNAL_TRACE_POINT(p)
-#define TGT_DBG_POST_TRACE_VALUE(v)
-#endif
-#define EPL_DLLK_DBG_POST_TRACE_VALUE(Event_p, uiNodeId_p, wErrorCode_p) \
-    TGT_DBG_POST_TRACE_VALUE((kEplEventSinkDllk << 28) | (Event_p << 24) \
-                             | (uiNodeId_p << 16) | wErrorCode_p)
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          C L A S S  EplDllk                                             */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-//
-// Description:
-//
-//
-/***************************************************************************/
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   D E F I N I T I O N S                          //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-// defines for indexes of tEplDllInstance.m_pTxFrameInfo
-#define EPL_DLLK_TXFRAME_IDENTRES   0  // IdentResponse on CN / MN
-#define EPL_DLLK_TXFRAME_STATUSRES  1  // StatusResponse on CN / MN
-#define EPL_DLLK_TXFRAME_NMTREQ     2  // NMT Request from FIFO on CN / MN
-#define EPL_DLLK_TXFRAME_NONEPL     3  // non-EPL frame from FIFO on CN / MN
-#define EPL_DLLK_TXFRAME_PRES       4  // PRes on CN / MN
-#define EPL_DLLK_TXFRAME_SOC        5  // SoC on MN
-#define EPL_DLLK_TXFRAME_SOA        6  // SoA on MN
-#define EPL_DLLK_TXFRAME_PREQ       7  // PReq on MN
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-#define EPL_DLLK_TXFRAME_COUNT      (7 + EPL_D_NMT_MaxCNNumber_U8 + 2) // on MN: 7 + MaxPReq of regular CNs + 1 Diag + 1 Router
-#else
-#define EPL_DLLK_TXFRAME_COUNT      5  // on CN: 5
-#endif
-
-#define EPL_DLLK_BUFLEN_EMPTY       0  // buffer is empty
-#define EPL_DLLK_BUFLEN_FILLING     1  // just the buffer is being filled
-#define EPL_DLLK_BUFLEN_MIN         60 // minimum ethernet frame length
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-typedef enum {
-       kEplDllGsInit = 0x00,   // MN/CN: initialisation (< PreOp2)
-       kEplDllCsWaitPreq = 0x01,       // CN: wait for PReq frame
-       kEplDllCsWaitSoc = 0x02,        // CN: wait for SoC frame
-       kEplDllCsWaitSoa = 0x03,        // CN: wait for SoA frame
-       kEplDllMsNonCyclic = 0x04,      // MN: reduced EPL cycle (PreOp1)
-       kEplDllMsWaitSocTrig = 0x05,    // MN: wait for SoC trigger (cycle timer)
-       kEplDllMsWaitPreqTrig = 0x06,   // MN: wait for (first) PReq trigger (WaitSoCPReq_U32)
-       kEplDllMsWaitPres = 0x07,       // MN: wait for PRes frame from CN
-       kEplDllMsWaitSoaTrig = 0x08,    // MN: wait for SoA trigger (PRes transmitted)
-       kEplDllMsWaitAsndTrig = 0x09,   // MN: wait for ASnd trigger (SoA transmitted)
-       kEplDllMsWaitAsnd = 0x0A,       // MN: wait for ASnd frame if SoA contained invitation
-
-} tEplDllState;
-
-typedef struct {
-       u8 m_be_abSrcMac[6];
-       tEdrvTxBuffer *m_pTxBuffer;     // Buffers for Tx-Frames
-       unsigned int m_uiMaxTxFrames;
-       u8 m_bFlag1;            // Flag 1 with EN, EC for PRes, StatusRes
-       u8 m_bMnFlag1;  // Flag 1 with EA, ER from PReq, SoA of MN
-       u8 m_bFlag2;            // Flag 2 with PR and RS for PRes, StatusRes, IdentRes
-       tEplDllConfigParam m_DllConfigParam;
-       tEplDllIdentParam m_DllIdentParam;
-       tEplDllState m_DllState;
-       tEplDllkCbAsync m_pfnCbAsync;
-       tEplDllAsndFilter m_aAsndFilter[EPL_DLL_MAX_ASND_SERVICE_ID];
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-       tEplDllkNodeInfo *m_pFirstNodeInfo;
-       tEplDllkNodeInfo *m_pCurNodeInfo;
-       tEplDllkNodeInfo m_aNodeInfo[EPL_NMT_MAX_NODE_ID];
-       tEplDllReqServiceId m_LastReqServiceId;
-       unsigned int m_uiLastTargetNodeId;
-#endif
-
-#if EPL_TIMER_USE_HIGHRES != FALSE
-       tEplTimerHdl m_TimerHdlCycle;   // used for EPL cycle monitoring on CN and generation on MN
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-       tEplTimerHdl m_TimerHdlResponse;        // used for CN response monitoring
-#endif                         //(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-#endif
-
-       unsigned int m_uiCycleCount;    // cycle counter (needed for multiplexed cycle support)
-       unsigned long long m_ullFrameTimeout;   // frame timeout (cycle length + loss of frame tolerance)
-
-} tEplDllkInstance;
-
-//---------------------------------------------------------------------------
-// local vars
-//---------------------------------------------------------------------------
-
-// if no dynamic memory allocation shall be used
-// define structures statically
-static tEplDllkInstance EplDllkInstance_g;
-
-static tEdrvTxBuffer aEplDllkTxBuffer_l[EPL_DLLK_TXFRAME_COUNT];
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-// change DLL state on event
-static tEplKernel EplDllkChangeState(tEplNmtEvent NmtEvent_p,
-                                    tEplNmtState NmtState_p);
-
-// called from EdrvInterruptHandler()
-static void EplDllkCbFrameReceived(tEdrvRxBuffer * pRxBuffer_p);
-
-// called from EdrvInterruptHandler()
-static void EplDllkCbFrameTransmitted(tEdrvTxBuffer * pTxBuffer_p);
-
-// check frame and set missing information
-static tEplKernel EplDllkCheckFrame(tEplFrame * pFrame_p,
-                                   unsigned int uiFrameSize_p);
-
-// called by high resolution timer module to monitor EPL cycle as CN
-#if EPL_TIMER_USE_HIGHRES != FALSE
-static tEplKernel EplDllkCbCnTimer(tEplTimerEventArg *pEventArg_p);
-#endif
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-// MN: returns internal node info structure
-static tEplDllkNodeInfo *EplDllkGetNodeInfo(unsigned int uiNodeId_p);
-
-// transmit SoA
-static tEplKernel EplDllkMnSendSoa(tEplNmtState NmtState_p,
-                                  tEplDllState * pDllStateProposed_p,
-                                  BOOL fEnableInvitation_p);
-
-static tEplKernel EplDllkMnSendSoc(void);
-
-static tEplKernel EplDllkMnSendPreq(tEplNmtState NmtState_p,
-                                   tEplDllState * pDllStateProposed_p);
-
-static tEplKernel EplDllkAsyncFrameNotReceived(tEplDllReqServiceId
-                                              ReqServiceId_p,
-                                              unsigned int uiNodeId_p);
-
-static tEplKernel EplDllkCbMnTimerCycle(tEplTimerEventArg *pEventArg_p);
-
-static tEplKernel EplDllkCbMnTimerResponse(tEplTimerEventArg *pEventArg_p);
-
-#endif
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkAddInstance()
-//
-// Description: add and initialize new instance of EPL stack
-//
-// Parameters:  pInitParam_p            = initialisation parameters like MAC address
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkAddInstance(tEplDllkInitParam * pInitParam_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       unsigned int uiIndex;
-       tEdrvInitParam EdrvInitParam;
-
-       // reset instance structure
-       EPL_MEMSET(&EplDllkInstance_g, 0, sizeof(EplDllkInstance_g));
-
-#if EPL_TIMER_USE_HIGHRES != FALSE
-       Ret = EplTimerHighReskInit();
-       if (Ret != kEplSuccessful) {    // error occured while initializing high resolution timer module
-               goto Exit;
-       }
-#endif
-
-       // if dynamic memory allocation available
-       // allocate instance structure
-       // allocate TPDO and RPDO table with default size
-
-       // initialize and link pointers in instance structure to frame tables
-       EplDllkInstance_g.m_pTxBuffer = aEplDllkTxBuffer_l;
-       EplDllkInstance_g.m_uiMaxTxFrames =
-           ARRAY_SIZE(aEplDllkTxBuffer_l);
-
-       // initialize state
-       EplDllkInstance_g.m_DllState = kEplDllGsInit;
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-       // set up node info structure
-       for (uiIndex = 0; uiIndex < tabentries(EplDllkInstance_g.m_aNodeInfo);
-            uiIndex++) {
-               EplDllkInstance_g.m_aNodeInfo[uiIndex].m_uiNodeId = uiIndex + 1;
-               EplDllkInstance_g.m_aNodeInfo[uiIndex].m_wPresPayloadLimit =
-                   0xFFFF;
-       }
-#endif
-
-       // initialize Edrv
-       EPL_MEMCPY(EdrvInitParam.m_abMyMacAddr, pInitParam_p->m_be_abSrcMac, 6);
-       EdrvInitParam.m_pfnRxHandler = EplDllkCbFrameReceived;
-       EdrvInitParam.m_pfnTxHandler = EplDllkCbFrameTransmitted;
-       Ret = EdrvInit(&EdrvInitParam);
-       if (Ret != kEplSuccessful) {    // error occured while initializing ethernet driver
-               goto Exit;
-       }
-       // copy local MAC address from Ethernet driver back to local instance structure
-       // because Ethernet driver may have read it from controller EEPROM
-       EPL_MEMCPY(EplDllkInstance_g.m_be_abSrcMac, EdrvInitParam.m_abMyMacAddr,
-                  6);
-       EPL_MEMCPY(pInitParam_p->m_be_abSrcMac, EdrvInitParam.m_abMyMacAddr, 6);
-
-       // initialize TxBuffer array
-       for (uiIndex = 0; uiIndex < EplDllkInstance_g.m_uiMaxTxFrames;
-            uiIndex++) {
-               EplDllkInstance_g.m_pTxBuffer[uiIndex].m_pbBuffer = NULL;
-       }
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_VETH)) != 0)
-       Ret = VEthAddInstance(pInitParam_p);
-#endif
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkDelInstance()
-//
-// Description: deletes an instance of EPL stack
-//
-// Parameters:  (none)
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkDelInstance(void)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       // reset state
-       EplDllkInstance_g.m_DllState = kEplDllGsInit;
-
-#if EPL_TIMER_USE_HIGHRES != FALSE
-       Ret = EplTimerHighReskDelInstance();
-#endif
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_VETH)) != 0)
-       Ret = VEthDelInstance();
-#endif
-
-       Ret = EdrvShutdown();
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkCreateTxFrame
-//
-// Description: creates the buffer for a Tx frame and registers it to the
-//              ethernet driver
-//
-// Parameters:  puiHandle_p             = OUT: handle to frame buffer
-//              ppFrame_p               = OUT: pointer to pointer of EPL frame
-//              puiFrameSize_p          = IN/OUT: pointer to size of frame
-//                                        returned size is always equal or larger than
-//                                        requested size, if that is not possible
-//                                        an error will be returned
-//              MsgType_p               = EPL message type
-//              ServiceId_p             = Service ID in case of ASnd frame, otherwise
-//                                        kEplDllAsndNotDefined
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkCreateTxFrame(unsigned int *puiHandle_p,
-                               tEplFrame ** ppFrame_p,
-                               unsigned int *puiFrameSize_p,
-                               tEplMsgType MsgType_p,
-                               tEplDllAsndServiceId ServiceId_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplFrame *pTxFrame;
-       unsigned int uiHandle = EplDllkInstance_g.m_uiMaxTxFrames;
-       tEdrvTxBuffer *pTxBuffer = NULL;
-
-       if (MsgType_p == kEplMsgTypeAsnd) {
-               // search for fixed Tx buffers
-               if (ServiceId_p == kEplDllAsndIdentResponse) {
-                       uiHandle = EPL_DLLK_TXFRAME_IDENTRES;
-               } else if (ServiceId_p == kEplDllAsndStatusResponse) {
-                       uiHandle = EPL_DLLK_TXFRAME_STATUSRES;
-               } else if ((ServiceId_p == kEplDllAsndNmtRequest)
-                          || (ServiceId_p == kEplDllAsndNmtCommand)) {
-                       uiHandle = EPL_DLLK_TXFRAME_NMTREQ;
-               }
-
-               if (uiHandle >= EplDllkInstance_g.m_uiMaxTxFrames) {    // look for free entry
-                       uiHandle = EPL_DLLK_TXFRAME_PREQ;
-                       pTxBuffer = &EplDllkInstance_g.m_pTxBuffer[uiHandle];
-                       for (; uiHandle < EplDllkInstance_g.m_uiMaxTxFrames;
-                            uiHandle++, pTxBuffer++) {
-                               if (pTxBuffer->m_pbBuffer == NULL) {    // free entry found
-                                       break;
-                               }
-                       }
-               }
-       } else if (MsgType_p == kEplMsgTypeNonEpl) {
-               uiHandle = EPL_DLLK_TXFRAME_NONEPL;
-       } else if (MsgType_p == kEplMsgTypePres) {
-               uiHandle = EPL_DLLK_TXFRAME_PRES;
-       } else if (MsgType_p == kEplMsgTypeSoc) {
-               uiHandle = EPL_DLLK_TXFRAME_SOC;
-       } else if (MsgType_p == kEplMsgTypeSoa) {
-               uiHandle = EPL_DLLK_TXFRAME_SOA;
-       } else {                // look for free entry
-               uiHandle = EPL_DLLK_TXFRAME_PREQ;
-               pTxBuffer = &EplDllkInstance_g.m_pTxBuffer[uiHandle];
-               for (; uiHandle < EplDllkInstance_g.m_uiMaxTxFrames;
-                    uiHandle++, pTxBuffer++) {
-                       if (pTxBuffer->m_pbBuffer == NULL) {    // free entry found
-                               break;
-                       }
-               }
-               if (pTxBuffer->m_pbBuffer != NULL) {
-                       Ret = kEplEdrvNoFreeBufEntry;
-                       goto Exit;
-               }
-       }
-
-       // test if requested entry is free
-       pTxBuffer = &EplDllkInstance_g.m_pTxBuffer[uiHandle];
-       if (pTxBuffer->m_pbBuffer != NULL) {    // entry is not free
-               Ret = kEplEdrvNoFreeBufEntry;
-               goto Exit;
-       }
-       // setup Tx buffer
-       pTxBuffer->m_EplMsgType = MsgType_p;
-       pTxBuffer->m_uiMaxBufferLen = *puiFrameSize_p;
-
-       Ret = EdrvAllocTxMsgBuffer(pTxBuffer);
-       if (Ret != kEplSuccessful) {    // error occured while registering Tx frame
-               goto Exit;
-       }
-       // because buffer size may be larger than requested
-       // memorize real length of frame
-       pTxBuffer->m_uiTxMsgLen = *puiFrameSize_p;
-
-       // fill whole frame with 0
-       EPL_MEMSET(pTxBuffer->m_pbBuffer, 0, pTxBuffer->m_uiMaxBufferLen);
-
-       pTxFrame = (tEplFrame *) pTxBuffer->m_pbBuffer;
-
-       if (MsgType_p != kEplMsgTypeNonEpl) {   // fill out Frame only if it is an EPL frame
-               // ethertype
-               AmiSetWordToBe(&pTxFrame->m_be_wEtherType,
-                              EPL_C_DLL_ETHERTYPE_EPL);
-               // source node ID
-               AmiSetByteToLe(&pTxFrame->m_le_bSrcNodeId,
-                              (u8) EplDllkInstance_g.m_DllConfigParam.
-                              m_uiNodeId);
-               // source MAC address
-               EPL_MEMCPY(&pTxFrame->m_be_abSrcMac[0],
-                          &EplDllkInstance_g.m_be_abSrcMac[0], 6);
-               switch (MsgType_p) {
-               case kEplMsgTypeAsnd:
-                       // destination MAC address
-                       AmiSetQword48ToBe(&pTxFrame->m_be_abDstMac[0],
-                                         EPL_C_DLL_MULTICAST_ASND);
-                       // destination node ID
-                       switch (ServiceId_p) {
-                       case kEplDllAsndIdentResponse:
-                       case kEplDllAsndStatusResponse:
-                               {       // IdentResponses and StatusResponses are Broadcast
-                                       AmiSetByteToLe(&pTxFrame->
-                                                      m_le_bDstNodeId,
-                                                      (u8)
-                                                      EPL_C_ADR_BROADCAST);
-                                       break;
-                               }
-
-                       default:
-                               break;
-                       }
-                       // ASnd Service ID
-                       AmiSetByteToLe(&pTxFrame->m_Data.m_Asnd.m_le_bServiceId,
-                                      ServiceId_p);
-                       break;
-
-               case kEplMsgTypeSoc:
-                       // destination MAC address
-                       AmiSetQword48ToBe(&pTxFrame->m_be_abDstMac[0],
-                                         EPL_C_DLL_MULTICAST_SOC);
-                       // destination node ID
-                       AmiSetByteToLe(&pTxFrame->m_le_bDstNodeId,
-                                      (u8) EPL_C_ADR_BROADCAST);
-                       // reset Flags
-                       //AmiSetByteToLe(&pTxFrame->m_Data.m_Soc.m_le_bFlag1, (u8) 0);
-                       //AmiSetByteToLe(&pTxFrame->m_Data.m_Soc.m_le_bFlag2, (u8) 0);
-                       break;
-
-               case kEplMsgTypeSoa:
-                       // destination MAC address
-                       AmiSetQword48ToBe(&pTxFrame->m_be_abDstMac[0],
-                                         EPL_C_DLL_MULTICAST_SOA);
-                       // destination node ID
-                       AmiSetByteToLe(&pTxFrame->m_le_bDstNodeId,
-                                      (u8) EPL_C_ADR_BROADCAST);
-                       // reset Flags
-                       //AmiSetByteToLe(&pTxFrame->m_Data.m_Soa.m_le_bFlag1, (u8) 0);
-                       //AmiSetByteToLe(&pTxFrame->m_Data.m_Soa.m_le_bFlag2, (u8) 0);
-                       // EPL profile version
-                       AmiSetByteToLe(&pTxFrame->m_Data.m_Soa.m_le_bEplVersion,
-                                      (u8) EPL_SPEC_VERSION);
-                       break;
-
-               case kEplMsgTypePres:
-                       // destination MAC address
-                       AmiSetQword48ToBe(&pTxFrame->m_be_abDstMac[0],
-                                         EPL_C_DLL_MULTICAST_PRES);
-                       // destination node ID
-                       AmiSetByteToLe(&pTxFrame->m_le_bDstNodeId,
-                                      (u8) EPL_C_ADR_BROADCAST);
-                       // reset Flags
-                       //AmiSetByteToLe(&pTxFrame->m_Data.m_Pres.m_le_bFlag1, (u8) 0);
-                       //AmiSetByteToLe(&pTxFrame->m_Data.m_Pres.m_le_bFlag2, (u8) 0);
-                       // PDO size
-                       //AmiSetWordToLe(&pTxFrame->m_Data.m_Pres.m_le_wSize, 0);
-                       break;
-
-               case kEplMsgTypePreq:
-                       // reset Flags
-                       //AmiSetByteToLe(&pTxFrame->m_Data.m_Preq.m_le_bFlag1, (u8) 0);
-                       //AmiSetByteToLe(&pTxFrame->m_Data.m_Preq.m_le_bFlag2, (u8) 0);
-                       // PDO size
-                       //AmiSetWordToLe(&pTxFrame->m_Data.m_Preq.m_le_wSize, 0);
-                       break;
-
-               default:
-                       break;
-               }
-               // EPL message type
-               AmiSetByteToLe(&pTxFrame->m_le_bMessageType, (u8) MsgType_p);
-       }
-
-       *ppFrame_p = pTxFrame;
-       *puiFrameSize_p = pTxBuffer->m_uiMaxBufferLen;
-       *puiHandle_p = uiHandle;
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkDeleteTxFrame
-//
-// Description: deletes the buffer for a Tx frame and frees it in the
-//              ethernet driver
-//
-// Parameters:  uiHandle_p              = IN: handle to frame buffer
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkDeleteTxFrame(unsigned int uiHandle_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEdrvTxBuffer *pTxBuffer = NULL;
-
-       if (uiHandle_p >= EplDllkInstance_g.m_uiMaxTxFrames) {  // handle is not valid
-               Ret = kEplDllIllegalHdl;
-               goto Exit;
-       }
-
-       pTxBuffer = &EplDllkInstance_g.m_pTxBuffer[uiHandle_p];
-
-       // mark buffer as free so that frame will not be send in future anymore
-       // $$$ d.k. What's up with running transmissions?
-       pTxBuffer->m_uiTxMsgLen = EPL_DLLK_BUFLEN_EMPTY;
-       pTxBuffer->m_pbBuffer = NULL;
-
-       // delete Tx buffer
-       Ret = EdrvReleaseTxMsgBuffer(pTxBuffer);
-       if (Ret != kEplSuccessful) {    // error occured while releasing Tx frame
-               goto Exit;
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkProcess
-//
-// Description: process the passed event
-//
-// Parameters:  pEvent_p                = event to be processed
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkProcess(tEplEvent * pEvent_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplFrame *pTxFrame;
-       tEdrvTxBuffer *pTxBuffer;
-       unsigned int uiHandle;
-       unsigned int uiFrameSize;
-       u8 abMulticastMac[6];
-       tEplDllAsyncReqPriority AsyncReqPriority;
-       unsigned int uiFrameCount;
-       tEplNmtState NmtState;
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_PDOK)) != 0)
-       tEplFrameInfo FrameInfo;
-#endif
-
-       switch (pEvent_p->m_EventType) {
-       case kEplEventTypeDllkCreate:
-               {
-                       // $$$ reset ethernet driver
-
-                       NmtState = *((tEplNmtState *) pEvent_p->m_pArg);
-
-                       // initialize flags for PRes and StatusRes
-                       EplDllkInstance_g.m_bFlag1 = EPL_FRAME_FLAG1_EC;
-                       EplDllkInstance_g.m_bMnFlag1 = 0;
-                       EplDllkInstance_g.m_bFlag2 = 0;
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-                       // initialize linked node list
-                       EplDllkInstance_g.m_pFirstNodeInfo = NULL;
-#endif
-
-                       // register TxFrames in Edrv
-
-                       // IdentResponse
-                       uiFrameSize = EPL_C_DLL_MINSIZE_IDENTRES;
-                       Ret =
-                           EplDllkCreateTxFrame(&uiHandle, &pTxFrame,
-                                                &uiFrameSize, kEplMsgTypeAsnd,
-                                                kEplDllAsndIdentResponse);
-                       if (Ret != kEplSuccessful) {    // error occured while registering Tx frame
-                               goto Exit;
-                       }
-                       // EPL profile version
-                       AmiSetByteToLe(&pTxFrame->m_Data.m_Asnd.m_Payload.
-                                      m_IdentResponse.m_le_bEplProfileVersion,
-                                      (u8) EPL_SPEC_VERSION);
-                       // FeatureFlags
-                       AmiSetDwordToLe(&pTxFrame->m_Data.m_Asnd.m_Payload.
-                                       m_IdentResponse.m_le_dwFeatureFlags,
-                                       EplDllkInstance_g.m_DllConfigParam.
-                                       m_dwFeatureFlags);
-                       // MTU
-                       AmiSetWordToLe(&pTxFrame->m_Data.m_Asnd.m_Payload.
-                                      m_IdentResponse.m_le_wMtu,
-                                      (u16) EplDllkInstance_g.
-                                      m_DllConfigParam.m_uiAsyncMtu);
-                       // PollInSize
-                       AmiSetWordToLe(&pTxFrame->m_Data.m_Asnd.m_Payload.
-                                      m_IdentResponse.m_le_wPollInSize,
-                                      (u16) EplDllkInstance_g.
-                                      m_DllConfigParam.
-                                      m_uiPreqActPayloadLimit);
-                       // PollOutSize
-                       AmiSetWordToLe(&pTxFrame->m_Data.m_Asnd.m_Payload.
-                                      m_IdentResponse.m_le_wPollOutSize,
-                                      (u16) EplDllkInstance_g.
-                                      m_DllConfigParam.
-                                      m_uiPresActPayloadLimit);
-                       // ResponseTime / PresMaxLatency
-                       AmiSetDwordToLe(&pTxFrame->m_Data.m_Asnd.m_Payload.
-                                       m_IdentResponse.m_le_dwResponseTime,
-                                       EplDllkInstance_g.m_DllConfigParam.
-                                       m_dwPresMaxLatency);
-                       // DeviceType
-                       AmiSetDwordToLe(&pTxFrame->m_Data.m_Asnd.m_Payload.
-                                       m_IdentResponse.m_le_dwDeviceType,
-                                       EplDllkInstance_g.m_DllIdentParam.
-                                       m_dwDeviceType);
-                       // VendorId
-                       AmiSetDwordToLe(&pTxFrame->m_Data.m_Asnd.m_Payload.
-                                       m_IdentResponse.m_le_dwVendorId,
-                                       EplDllkInstance_g.m_DllIdentParam.
-                                       m_dwVendorId);
-                       // ProductCode
-                       AmiSetDwordToLe(&pTxFrame->m_Data.m_Asnd.m_Payload.
-                                       m_IdentResponse.m_le_dwProductCode,
-                                       EplDllkInstance_g.m_DllIdentParam.
-                                       m_dwProductCode);
-                       // RevisionNumber
-                       AmiSetDwordToLe(&pTxFrame->m_Data.m_Asnd.m_Payload.
-                                       m_IdentResponse.m_le_dwRevisionNumber,
-                                       EplDllkInstance_g.m_DllIdentParam.
-                                       m_dwRevisionNumber);
-                       // SerialNumber
-                       AmiSetDwordToLe(&pTxFrame->m_Data.m_Asnd.m_Payload.
-                                       m_IdentResponse.m_le_dwSerialNumber,
-                                       EplDllkInstance_g.m_DllIdentParam.
-                                       m_dwSerialNumber);
-                       // VendorSpecificExt1
-                       AmiSetQword64ToLe(&pTxFrame->m_Data.m_Asnd.m_Payload.
-                                         m_IdentResponse.
-                                         m_le_qwVendorSpecificExt1,
-                                         EplDllkInstance_g.m_DllIdentParam.
-                                         m_qwVendorSpecificExt1);
-                       // VerifyConfigurationDate
-                       AmiSetDwordToLe(&pTxFrame->m_Data.m_Asnd.m_Payload.
-                                       m_IdentResponse.
-                                       m_le_dwVerifyConfigurationDate,
-                                       EplDllkInstance_g.m_DllIdentParam.
-                                       m_dwVerifyConfigurationDate);
-                       // VerifyConfigurationTime
-                       AmiSetDwordToLe(&pTxFrame->m_Data.m_Asnd.m_Payload.
-                                       m_IdentResponse.
-                                       m_le_dwVerifyConfigurationTime,
-                                       EplDllkInstance_g.m_DllIdentParam.
-                                       m_dwVerifyConfigurationTime);
-                       // ApplicationSwDate
-                       AmiSetDwordToLe(&pTxFrame->m_Data.m_Asnd.m_Payload.
-                                       m_IdentResponse.
-                                       m_le_dwApplicationSwDate,
-                                       EplDllkInstance_g.m_DllIdentParam.
-                                       m_dwApplicationSwDate);
-                       // ApplicationSwTime
-                       AmiSetDwordToLe(&pTxFrame->m_Data.m_Asnd.m_Payload.
-                                       m_IdentResponse.
-                                       m_le_dwApplicationSwTime,
-                                       EplDllkInstance_g.m_DllIdentParam.
-                                       m_dwApplicationSwTime);
-                       // IPAddress
-                       AmiSetDwordToLe(&pTxFrame->m_Data.m_Asnd.m_Payload.
-                                       m_IdentResponse.m_le_dwIpAddress,
-                                       EplDllkInstance_g.m_DllIdentParam.
-                                       m_dwIpAddress);
-                       // SubnetMask
-                       AmiSetDwordToLe(&pTxFrame->m_Data.m_Asnd.m_Payload.
-                                       m_IdentResponse.m_le_dwSubnetMask,
-                                       EplDllkInstance_g.m_DllIdentParam.
-                                       m_dwSubnetMask);
-                       // DefaultGateway
-                       AmiSetDwordToLe(&pTxFrame->m_Data.m_Asnd.m_Payload.
-                                       m_IdentResponse.m_le_dwDefaultGateway,
-                                       EplDllkInstance_g.m_DllIdentParam.
-                                       m_dwDefaultGateway);
-                       // HostName
-                       EPL_MEMCPY(&pTxFrame->m_Data.m_Asnd.m_Payload.
-                                  m_IdentResponse.m_le_sHostname[0],
-                                  &EplDllkInstance_g.m_DllIdentParam.
-                                  m_sHostname[0],
-                                  sizeof(EplDllkInstance_g.m_DllIdentParam.
-                                         m_sHostname));
-                       // VendorSpecificExt2
-                       EPL_MEMCPY(&pTxFrame->m_Data.m_Asnd.m_Payload.
-                                  m_IdentResponse.m_le_abVendorSpecificExt2[0],
-                                  &EplDllkInstance_g.m_DllIdentParam.
-                                  m_abVendorSpecificExt2[0],
-                                  sizeof(EplDllkInstance_g.m_DllIdentParam.
-                                         m_abVendorSpecificExt2));
-
-                       // StatusResponse
-                       uiFrameSize = EPL_C_DLL_MINSIZE_STATUSRES;
-                       Ret =
-                           EplDllkCreateTxFrame(&uiHandle, &pTxFrame,
-                                                &uiFrameSize, kEplMsgTypeAsnd,
-                                                kEplDllAsndStatusResponse);
-                       if (Ret != kEplSuccessful) {    // error occured while registering Tx frame
-                               goto Exit;
-                       }
-                       // PRes $$$ maybe move this to PDO module
-                       if ((EplDllkInstance_g.m_DllConfigParam.m_fAsyncOnly ==
-                            FALSE)
-                           && (EplDllkInstance_g.m_DllConfigParam.m_uiPresActPayloadLimit >= 36)) {    // it is not configured as async-only CN,
-                               // so take part in isochronous phase and register PRes frame
-                               uiFrameSize =
-                                   EplDllkInstance_g.m_DllConfigParam.
-                                   m_uiPresActPayloadLimit + 24;
-                               Ret =
-                                   EplDllkCreateTxFrame(&uiHandle, &pTxFrame,
-                                                        &uiFrameSize,
-                                                        kEplMsgTypePres,
-                                                        kEplDllAsndNotDefined);
-                               if (Ret != kEplSuccessful) {    // error occured while registering Tx frame
-                                       goto Exit;
-                               }
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_PDOK)) != 0)
-                               // initially encode TPDO -> inform PDO module
-                               FrameInfo.m_pFrame = pTxFrame;
-                               FrameInfo.m_uiFrameSize = uiFrameSize;
-                               Ret = EplPdokCbPdoTransmitted(&FrameInfo);
-#endif
-                               // reset cycle counter
-                               EplDllkInstance_g.m_uiCycleCount = 0;
-                       } else {        // it is an async-only CN
-                               // fool EplDllkChangeState() to think that PRes was not expected
-                               EplDllkInstance_g.m_uiCycleCount = 1;
-                       }
-
-                       // NMT request
-                       uiFrameSize = EPL_C_IP_MAX_MTU;
-                       Ret =
-                           EplDllkCreateTxFrame(&uiHandle, &pTxFrame,
-                                                &uiFrameSize, kEplMsgTypeAsnd,
-                                                kEplDllAsndNmtRequest);
-                       if (Ret != kEplSuccessful) {    // error occured while registering Tx frame
-                               goto Exit;
-                       }
-                       // mark Tx buffer as empty
-                       EplDllkInstance_g.m_pTxBuffer[uiHandle].m_uiTxMsgLen =
-                           EPL_DLLK_BUFLEN_EMPTY;
-
-                       // non-EPL frame
-                       uiFrameSize = EPL_C_IP_MAX_MTU;
-                       Ret =
-                           EplDllkCreateTxFrame(&uiHandle, &pTxFrame,
-                                                &uiFrameSize,
-                                                kEplMsgTypeNonEpl,
-                                                kEplDllAsndNotDefined);
-                       if (Ret != kEplSuccessful) {    // error occured while registering Tx frame
-                               goto Exit;
-                       }
-                       // mark Tx buffer as empty
-                       EplDllkInstance_g.m_pTxBuffer[uiHandle].m_uiTxMsgLen =
-                           EPL_DLLK_BUFLEN_EMPTY;
-
-                       // register multicast MACs in ethernet driver
-                       AmiSetQword48ToBe(&abMulticastMac[0],
-                                         EPL_C_DLL_MULTICAST_SOC);
-                       Ret = EdrvDefineRxMacAddrEntry(abMulticastMac);
-                       AmiSetQword48ToBe(&abMulticastMac[0],
-                                         EPL_C_DLL_MULTICAST_SOA);
-                       Ret = EdrvDefineRxMacAddrEntry(abMulticastMac);
-                       AmiSetQword48ToBe(&abMulticastMac[0],
-                                         EPL_C_DLL_MULTICAST_PRES);
-                       Ret = EdrvDefineRxMacAddrEntry(abMulticastMac);
-                       AmiSetQword48ToBe(&abMulticastMac[0],
-                                         EPL_C_DLL_MULTICAST_ASND);
-                       Ret = EdrvDefineRxMacAddrEntry(abMulticastMac);
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-                       if (NmtState >= kEplNmtMsNotActive) {   // local node is MN
-                               unsigned int uiIndex;
-
-                               // SoC
-                               uiFrameSize = EPL_C_DLL_MINSIZE_SOC;
-                               Ret =
-                                   EplDllkCreateTxFrame(&uiHandle, &pTxFrame,
-                                                        &uiFrameSize,
-                                                        kEplMsgTypeSoc,
-                                                        kEplDllAsndNotDefined);
-                               if (Ret != kEplSuccessful) {    // error occured while registering Tx frame
-                                       goto Exit;
-                               }
-                               // SoA
-                               uiFrameSize = EPL_C_DLL_MINSIZE_SOA;
-                               Ret =
-                                   EplDllkCreateTxFrame(&uiHandle, &pTxFrame,
-                                                        &uiFrameSize,
-                                                        kEplMsgTypeSoa,
-                                                        kEplDllAsndNotDefined);
-                               if (Ret != kEplSuccessful) {    // error occured while registering Tx frame
-                                       goto Exit;
-                               }
-
-                               for (uiIndex = 0;
-                                    uiIndex <
-                                    tabentries(EplDllkInstance_g.m_aNodeInfo);
-                                    uiIndex++) {
-//                    EplDllkInstance_g.m_aNodeInfo[uiIndex].m_uiNodeId = uiIndex + 1;
-                                       EplDllkInstance_g.m_aNodeInfo[uiIndex].
-                                           m_wPresPayloadLimit =
-                                           (u16) EplDllkInstance_g.
-                                           m_DllConfigParam.
-                                           m_uiIsochrRxMaxPayload;
-                               }
-
-                               // calculate cycle length
-                               EplDllkInstance_g.m_ullFrameTimeout = 1000LL
-                                   *
-                                   ((unsigned long long)EplDllkInstance_g.
-                                    m_DllConfigParam.m_dwCycleLen);
-                       }
-#endif //(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-
-                       Ret = EplDllkCalAsyncClearBuffer();
-
-                       break;
-               }
-
-       case kEplEventTypeDllkDestroy:
-               {
-                       // destroy all data structures
-
-                       NmtState = *((tEplNmtState *) pEvent_p->m_pArg);
-
-                       // delete Tx frames
-                       Ret = EplDllkDeleteTxFrame(EPL_DLLK_TXFRAME_IDENTRES);
-                       if (Ret != kEplSuccessful) {    // error occured while deregistering Tx frame
-                               goto Exit;
-                       }
-
-                       Ret = EplDllkDeleteTxFrame(EPL_DLLK_TXFRAME_STATUSRES);
-                       if (Ret != kEplSuccessful) {    // error occured while deregistering Tx frame
-                               goto Exit;
-                       }
-
-                       Ret = EplDllkDeleteTxFrame(EPL_DLLK_TXFRAME_PRES);
-                       if (Ret != kEplSuccessful) {    // error occured while deregistering Tx frame
-                               goto Exit;
-                       }
-
-                       Ret = EplDllkDeleteTxFrame(EPL_DLLK_TXFRAME_NMTREQ);
-                       if (Ret != kEplSuccessful) {    // error occured while deregistering Tx frame
-                               goto Exit;
-                       }
-
-                       Ret = EplDllkDeleteTxFrame(EPL_DLLK_TXFRAME_NONEPL);
-                       if (Ret != kEplSuccessful) {    // error occured while deregistering Tx frame
-                               goto Exit;
-                       }
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-                       if (NmtState >= kEplNmtMsNotActive) {   // local node was MN
-                               unsigned int uiIndex;
-
-                               Ret =
-                                   EplDllkDeleteTxFrame(EPL_DLLK_TXFRAME_SOC);
-                               if (Ret != kEplSuccessful) {    // error occured while deregistering Tx frame
-                                       goto Exit;
-                               }
-
-                               Ret =
-                                   EplDllkDeleteTxFrame(EPL_DLLK_TXFRAME_SOA);
-                               if (Ret != kEplSuccessful) {    // error occured while deregistering Tx frame
-                                       goto Exit;
-                               }
-
-                               for (uiIndex = 0;
-                                    uiIndex <
-                                    tabentries(EplDllkInstance_g.m_aNodeInfo);
-                                    uiIndex++) {
-                                       if (EplDllkInstance_g.
-                                           m_aNodeInfo[uiIndex].
-                                           m_pPreqTxBuffer != NULL) {
-                                               uiHandle =
-                                                   EplDllkInstance_g.
-                                                   m_aNodeInfo[uiIndex].
-                                                   m_pPreqTxBuffer -
-                                                   EplDllkInstance_g.
-                                                   m_pTxBuffer;
-                                               EplDllkInstance_g.
-                                                   m_aNodeInfo[uiIndex].
-                                                   m_pPreqTxBuffer = NULL;
-                                               Ret =
-                                                   EplDllkDeleteTxFrame
-                                                   (uiHandle);
-                                               if (Ret != kEplSuccessful) {    // error occured while deregistering Tx frame
-                                                       goto Exit;
-                                               }
-
-                                       }
-                                       EplDllkInstance_g.m_aNodeInfo[uiIndex].
-                                           m_wPresPayloadLimit = 0xFFFF;
-                               }
-                       }
-#endif //(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-
-                       // deregister multicast MACs in ethernet driver
-                       AmiSetQword48ToBe(&abMulticastMac[0],
-                                         EPL_C_DLL_MULTICAST_SOC);
-                       Ret = EdrvUndefineRxMacAddrEntry(abMulticastMac);
-                       AmiSetQword48ToBe(&abMulticastMac[0],
-                                         EPL_C_DLL_MULTICAST_SOA);
-                       Ret = EdrvUndefineRxMacAddrEntry(abMulticastMac);
-                       AmiSetQword48ToBe(&abMulticastMac[0],
-                                         EPL_C_DLL_MULTICAST_PRES);
-                       Ret = EdrvUndefineRxMacAddrEntry(abMulticastMac);
-                       AmiSetQword48ToBe(&abMulticastMac[0],
-                                         EPL_C_DLL_MULTICAST_ASND);
-                       Ret = EdrvUndefineRxMacAddrEntry(abMulticastMac);
-
-                       // delete timer
-#if EPL_TIMER_USE_HIGHRES != FALSE
-                       Ret =
-                           EplTimerHighReskDeleteTimer(&EplDllkInstance_g.
-                                                       m_TimerHdlCycle);
-#endif
-
-                       break;
-               }
-
-       case kEplEventTypeDllkFillTx:
-               {
-                       // fill TxBuffer of specified priority with new frame if empty
-
-                       pTxFrame = NULL;
-                       AsyncReqPriority =
-                           *((tEplDllAsyncReqPriority *) pEvent_p->m_pArg);
-                       switch (AsyncReqPriority) {
-                       case kEplDllAsyncReqPrioNmt:    // NMT request priority
-                               {
-                                       pTxBuffer =
-                                           &EplDllkInstance_g.
-                                           m_pTxBuffer
-                                           [EPL_DLLK_TXFRAME_NMTREQ];
-                                       if (pTxBuffer->m_pbBuffer != NULL) {    // NmtRequest does exist
-                                               // check if frame is empty and not being filled
-                                               if (pTxBuffer->m_uiTxMsgLen ==
-                                                   EPL_DLLK_BUFLEN_EMPTY) {
-                                                       // mark Tx buffer as filling is in process
-                                                       pTxBuffer->
-                                                           m_uiTxMsgLen =
-                                                           EPL_DLLK_BUFLEN_FILLING;
-                                                       // set max buffer size as input parameter
-                                                       uiFrameSize =
-                                                           pTxBuffer->
-                                                           m_uiMaxBufferLen;
-                                                       // copy frame from shared loop buffer to Tx buffer
-                                                       Ret =
-                                                           EplDllkCalAsyncGetTxFrame
-                                                           (pTxBuffer->
-                                                            m_pbBuffer,
-                                                            &uiFrameSize,
-                                                            AsyncReqPriority);
-                                                       if (Ret ==
-                                                           kEplSuccessful) {
-                                                               pTxFrame =
-                                                                   (tEplFrame
-                                                                    *)
-                                                                   pTxBuffer->
-                                                                   m_pbBuffer;
-                                                               Ret =
-                                                                   EplDllkCheckFrame
-                                                                   (pTxFrame,
-                                                                    uiFrameSize);
-
-                                                               // set buffer valid
-                                                               pTxBuffer->
-                                                                   m_uiTxMsgLen
-                                                                   =
-                                                                   uiFrameSize;
-                                                       } else if (Ret == kEplDllAsyncTxBufferEmpty) {  // empty Tx buffer is not a real problem
-                                                               // so just ignore it
-                                                               Ret =
-                                                                   kEplSuccessful;
-                                                               // mark Tx buffer as empty
-                                                               pTxBuffer->
-                                                                   m_uiTxMsgLen
-                                                                   =
-                                                                   EPL_DLLK_BUFLEN_EMPTY;
-                                                       }
-                                               }
-                                       }
-                                       break;
-                               }
-
-                       default:        // generic priority
-                               {
-                                       pTxBuffer =
-                                           &EplDllkInstance_g.
-                                           m_pTxBuffer
-                                           [EPL_DLLK_TXFRAME_NONEPL];
-                                       if (pTxBuffer->m_pbBuffer != NULL) {    // non-EPL frame does exist
-                                               // check if frame is empty and not being filled
-                                               if (pTxBuffer->m_uiTxMsgLen ==
-                                                   EPL_DLLK_BUFLEN_EMPTY) {
-                                                       // mark Tx buffer as filling is in process
-                                                       pTxBuffer->
-                                                           m_uiTxMsgLen =
-                                                           EPL_DLLK_BUFLEN_FILLING;
-                                                       // set max buffer size as input parameter
-                                                       uiFrameSize =
-                                                           pTxBuffer->
-                                                           m_uiMaxBufferLen;
-                                                       // copy frame from shared loop buffer to Tx buffer
-                                                       Ret =
-                                                           EplDllkCalAsyncGetTxFrame
-                                                           (pTxBuffer->
-                                                            m_pbBuffer,
-                                                            &uiFrameSize,
-                                                            AsyncReqPriority);
-                                                       if (Ret ==
-                                                           kEplSuccessful) {
-                                                               pTxFrame =
-                                                                   (tEplFrame
-                                                                    *)
-                                                                   pTxBuffer->
-                                                                   m_pbBuffer;
-                                                               Ret =
-                                                                   EplDllkCheckFrame
-                                                                   (pTxFrame,
-                                                                    uiFrameSize);
-
-                                                               // set buffer valid
-                                                               pTxBuffer->
-                                                                   m_uiTxMsgLen
-                                                                   =
-                                                                   uiFrameSize;
-                                                       } else if (Ret == kEplDllAsyncTxBufferEmpty) {  // empty Tx buffer is not a real problem
-                                                               // so just ignore it
-                                                               Ret =
-                                                                   kEplSuccessful;
-                                                               // mark Tx buffer as empty
-                                                               pTxBuffer->
-                                                                   m_uiTxMsgLen
-                                                                   =
-                                                                   EPL_DLLK_BUFLEN_EMPTY;
-                                                       }
-                                               }
-                                       }
-                                       break;
-                               }
-                       }
-
-                       NmtState = EplNmtkGetNmtState();
-
-                       if ((NmtState == kEplNmtCsBasicEthernet) || (NmtState == kEplNmtMsBasicEthernet)) {     // send frame immediately
-                               if (pTxFrame != NULL) { // frame is present
-                                       // padding is done by Edrv or ethernet controller
-                                       Ret = EdrvSendTxMsg(pTxBuffer);
-                               } else {        // no frame moved to TxBuffer
-                                       // check if TxBuffers contain unsent frames
-                                       if (EplDllkInstance_g.m_pTxBuffer[EPL_DLLK_TXFRAME_NMTREQ].m_uiTxMsgLen > EPL_DLLK_BUFLEN_EMPTY) {      // NMT request Tx buffer contains a frame
-                                               Ret =
-                                                   EdrvSendTxMsg
-                                                   (&EplDllkInstance_g.
-                                                    m_pTxBuffer
-                                                    [EPL_DLLK_TXFRAME_NMTREQ]);
-                                       } else if (EplDllkInstance_g.m_pTxBuffer[EPL_DLLK_TXFRAME_NONEPL].m_uiTxMsgLen > EPL_DLLK_BUFLEN_EMPTY) {       // non-EPL Tx buffer contains a frame
-                                               Ret =
-                                                   EdrvSendTxMsg
-                                                   (&EplDllkInstance_g.
-                                                    m_pTxBuffer
-                                                    [EPL_DLLK_TXFRAME_NONEPL]);
-                                       }
-                                       if (Ret == kEplInvalidOperation) {      // ignore error if caused by already active transmission
-                                               Ret = kEplSuccessful;
-                                       }
-                               }
-                               // reset PRes flag 2
-                               EplDllkInstance_g.m_bFlag2 = 0;
-                       } else {
-                               // update Flag 2 (PR, RS)
-                               Ret =
-                                   EplDllkCalAsyncGetTxCount(&AsyncReqPriority,
-                                                             &uiFrameCount);
-                               if (AsyncReqPriority == kEplDllAsyncReqPrioNmt) {       // non-empty FIFO with hightest priority is for NMT requests
-                                       if (EplDllkInstance_g.m_pTxBuffer[EPL_DLLK_TXFRAME_NMTREQ].m_uiTxMsgLen > EPL_DLLK_BUFLEN_EMPTY) {      // NMT request Tx buffer contains a frame
-                                               // add one more frame
-                                               uiFrameCount++;
-                                       }
-                               } else {        // non-empty FIFO with highest priority is for generic frames
-                                       if (EplDllkInstance_g.m_pTxBuffer[EPL_DLLK_TXFRAME_NMTREQ].m_uiTxMsgLen > EPL_DLLK_BUFLEN_EMPTY) {      // NMT request Tx buffer contains a frame
-                                               // use NMT request FIFO, because of higher priority
-                                               uiFrameCount = 1;
-                                               AsyncReqPriority =
-                                                   kEplDllAsyncReqPrioNmt;
-                                       } else if (EplDllkInstance_g.m_pTxBuffer[EPL_DLLK_TXFRAME_NONEPL].m_uiTxMsgLen > EPL_DLLK_BUFLEN_EMPTY) {       // non-EPL Tx buffer contains a frame
-                                               // use NMT request FIFO, because of higher priority
-                                               // add one more frame
-                                               uiFrameCount++;
-                                       }
-                               }
-
-                               if (uiFrameCount > 7) { // limit frame request to send counter to 7
-                                       uiFrameCount = 7;
-                               }
-                               if (uiFrameCount > 0) {
-                                       EplDllkInstance_g.m_bFlag2 =
-                                           (u8) (((AsyncReqPriority <<
-                                                     EPL_FRAME_FLAG2_PR_SHIFT)
-                                                    & EPL_FRAME_FLAG2_PR)
-                                                   | (uiFrameCount &
-                                                      EPL_FRAME_FLAG2_RS));
-                               } else {
-                                       EplDllkInstance_g.m_bFlag2 = 0;
-                               }
-                       }
-
-                       break;
-               }
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-       case kEplEventTypeDllkStartReducedCycle:
-               {
-                       // start the reduced cycle by programming the cycle timer
-                       // it is issued by NMT MN module, when PreOp1 is entered
-
-                       // clear the asynchronous queues
-                       Ret = EplDllkCalAsyncClearQueues();
-
-                       // reset cycle counter (everytime a SoA is triggerd in PreOp1 the counter is incremented
-                       // and when it reaches EPL_C_DLL_PREOP1_START_CYCLES the SoA may contain invitations)
-                       EplDllkInstance_g.m_uiCycleCount = 0;
-
-                       // remove any CN from isochronous phase
-                       while (EplDllkInstance_g.m_pFirstNodeInfo != NULL) {
-                               EplDllkDeleteNode(EplDllkInstance_g.
-                                                 m_pFirstNodeInfo->m_uiNodeId);
-                       }
-
-                       // change state to NonCyclic,
-                       // hence EplDllkChangeState() will not ignore the next call
-                       EplDllkInstance_g.m_DllState = kEplDllMsNonCyclic;
-
-#if EPL_TIMER_USE_HIGHRES != FALSE
-                       if (EplDllkInstance_g.m_DllConfigParam.
-                           m_dwAsyncSlotTimeout != 0) {
-                               Ret =
-                                   EplTimerHighReskModifyTimerNs
-                                   (&EplDllkInstance_g.m_TimerHdlCycle,
-                                    EplDllkInstance_g.m_DllConfigParam.
-                                    m_dwAsyncSlotTimeout,
-                                    EplDllkCbMnTimerCycle, 0L, FALSE);
-                       }
-#endif
-
-                       break;
-               }
-#endif
-
-#if EPL_DLL_PRES_READY_AFTER_SOA != FALSE
-       case kEplEventTypeDllkPresReady:
-               {
-                       // post PRes to transmit FIFO
-
-                       NmtState = EplNmtkGetNmtState();
-
-                       if (NmtState != kEplNmtCsBasicEthernet) {
-                               // Does PRes exist?
-                               if (EplDllkInstance_g.m_pTxBuffer[EPL_DLLK_TXFRAME_PRES].m_pbBuffer != NULL) {  // PRes does exist
-                                       pTxFrame =
-                                           (tEplFrame *) EplDllkInstance_g.
-                                           m_pTxBuffer[EPL_DLLK_TXFRAME_PRES].
-                                           m_pbBuffer;
-                                       // update frame (NMT state, RD, RS, PR, MS, EN flags)
-                                       if (NmtState < kEplNmtCsPreOperational2) {      // NMT state is not PreOp2, ReadyToOp or Op
-                                               // fake NMT state PreOp2, because PRes will be sent only in PreOp2 or greater
-                                               NmtState =
-                                                   kEplNmtCsPreOperational2;
-                                       }
-                                       AmiSetByteToLe(&pTxFrame->m_Data.m_Pres.
-                                                      m_le_bNmtStatus,
-                                                      (u8) NmtState);
-                                       AmiSetByteToLe(&pTxFrame->m_Data.m_Pres.
-                                                      m_le_bFlag2,
-                                                      EplDllkInstance_g.
-                                                      m_bFlag2);
-                                       if (NmtState != kEplNmtCsOperational) { // mark PDO as invalid in NMT state Op
-                                               // $$$ reset only RD flag; set other flags appropriately
-                                               AmiSetByteToLe(&pTxFrame->
-                                                              m_Data.m_Pres.
-                                                              m_le_bFlag1, 0);
-                                       }
-                                       // $$$ make function that updates Pres, StatusRes
-                                       // mark PRes frame as ready for transmission
-                                       Ret =
-                                           EdrvTxMsgReady(&EplDllkInstance_g.
-                                                          m_pTxBuffer
-                                                          [EPL_DLLK_TXFRAME_PRES]);
-                               }
-                       }
-
-                       break;
-               }
-#endif
-       default:
-               {
-                       ASSERTMSG(FALSE,
-                                 "EplDllkProcess(): unhandled event type!\n");
-               }
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkConfig
-//
-// Description: configure parameters of DLL
-//
-// Parameters:  pDllConfigParam_p       = configuration parameters
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkConfig(tEplDllConfigParam * pDllConfigParam_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-// d.k. check of NMT state disabled, because CycleLen is programmed at run time by MN without reset of CN
-/*tEplNmtState    NmtState;
-
-    NmtState = EplNmtkGetNmtState();
-
-    if (NmtState > kEplNmtGsResetConfiguration)
-    {   // only allowed in state DLL_GS_INIT
-        Ret = kEplInvalidOperation;
-        goto Exit;
-    }
-*/
-       EPL_MEMCPY(&EplDllkInstance_g.m_DllConfigParam, pDllConfigParam_p,
-                  (pDllConfigParam_p->m_uiSizeOfStruct <
-                   sizeof(tEplDllConfigParam) ? pDllConfigParam_p->
-                   m_uiSizeOfStruct : sizeof(tEplDllConfigParam)));
-
-       if ((EplDllkInstance_g.m_DllConfigParam.m_dwCycleLen != 0)
-           && (EplDllkInstance_g.m_DllConfigParam.m_dwLossOfFrameTolerance != 0)) {    // monitor EPL cycle, calculate frame timeout
-               EplDllkInstance_g.m_ullFrameTimeout = (1000LL
-                                                      *
-                                                      ((unsigned long long)
-                                                       EplDllkInstance_g.
-                                                       m_DllConfigParam.
-                                                       m_dwCycleLen))
-                   +
-                   ((unsigned long long)EplDllkInstance_g.m_DllConfigParam.
-                    m_dwLossOfFrameTolerance);
-       } else {
-               EplDllkInstance_g.m_ullFrameTimeout = 0LL;
-       }
-
-       if (EplDllkInstance_g.m_DllConfigParam.m_fAsyncOnly != FALSE) { // it is configured as async-only CN
-               // disable multiplexed cycle, that m_uiCycleCount will not be incremented spuriously on SoC
-               EplDllkInstance_g.m_DllConfigParam.m_uiMultiplCycleCnt = 0;
-       }
-//Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkSetIdentity
-//
-// Description: configure identity of local node for IdentResponse
-//
-// Parameters:  pDllIdentParam_p        = identity
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkSetIdentity(tEplDllIdentParam * pDllIdentParam_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       EPL_MEMCPY(&EplDllkInstance_g.m_DllIdentParam, pDllIdentParam_p,
-                  (pDllIdentParam_p->m_uiSizeOfStruct <
-                   sizeof(tEplDllIdentParam) ? pDllIdentParam_p->
-                   m_uiSizeOfStruct : sizeof(tEplDllIdentParam)));
-
-       // $$$ if IdentResponse frame exists update it
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkRegAsyncHandler
-//
-// Description: registers handler for non-EPL frames
-//
-// Parameters:  pfnDllkCbAsync_p        = pointer to callback function
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkRegAsyncHandler(tEplDllkCbAsync pfnDllkCbAsync_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       if (EplDllkInstance_g.m_pfnCbAsync == NULL) {   // no handler registered yet
-               EplDllkInstance_g.m_pfnCbAsync = pfnDllkCbAsync_p;
-       } else {                // handler already registered
-               Ret = kEplDllCbAsyncRegistered;
-       }
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkDeregAsyncHandler
-//
-// Description: deregisters handler for non-EPL frames
-//
-// Parameters:  pfnDllkCbAsync_p        = pointer to callback function
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkDeregAsyncHandler(tEplDllkCbAsync pfnDllkCbAsync_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       if (EplDllkInstance_g.m_pfnCbAsync == pfnDllkCbAsync_p) {       // same handler is registered
-               // deregister it
-               EplDllkInstance_g.m_pfnCbAsync = NULL;
-       } else {                // wrong handler or no handler registered
-               Ret = kEplDllCbAsyncRegistered;
-       }
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkSetAsndServiceIdFilter()
-//
-// Description: sets the specified node ID filter for the specified
-//              AsndServiceId. It registers C_DLL_MULTICAST_ASND in ethernet
-//              driver if any AsndServiceId is open.
-//
-// Parameters:  ServiceId_p             = ASnd Service ID
-//              Filter_p                = node ID filter
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkSetAsndServiceIdFilter(tEplDllAsndServiceId ServiceId_p,
-                                        tEplDllAsndFilter Filter_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       if (ServiceId_p < tabentries(EplDllkInstance_g.m_aAsndFilter)) {
-               EplDllkInstance_g.m_aAsndFilter[ServiceId_p] = Filter_p;
-       }
-
-       return Ret;
-}
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkSetFlag1OfNode()
-//
-// Description: sets Flag1 (for PReq and SoA) of the specified node ID.
-//
-// Parameters:  uiNodeId_p              = node ID
-//              bSoaFlag1_p             = flag1
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkSetFlag1OfNode(unsigned int uiNodeId_p, u8 bSoaFlag1_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplDllkNodeInfo *pNodeInfo;
-
-       pNodeInfo = EplDllkGetNodeInfo(uiNodeId_p);
-       if (pNodeInfo == NULL) {        // no node info structure available
-               Ret = kEplDllNoNodeInfo;
-               goto Exit;
-       }
-       // store flag1 in internal node info structure
-       pNodeInfo->m_bSoaFlag1 = bSoaFlag1_p;
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkGetFirstNodeInfo()
-//
-// Description: returns first info structure of first node in isochronous phase.
-//              It is only useful for ErrorHandlerk module.
-//
-// Parameters:  ppNodeInfo_p            = pointer to pointer of internal node info structure
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkGetFirstNodeInfo(tEplDllkNodeInfo ** ppNodeInfo_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       *ppNodeInfo_p = EplDllkInstance_g.m_pFirstNodeInfo;
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkAddNode()
-//
-// Description: adds the specified node to the isochronous phase.
-//
-// Parameters:  pNodeInfo_p             = pointer of node info structure
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkAddNode(tEplDllNodeInfo * pNodeInfo_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplDllkNodeInfo *pIntNodeInfo;
-       tEplDllkNodeInfo **ppIntNodeInfo;
-       unsigned int uiHandle;
-       tEplFrame *pFrame;
-       unsigned int uiFrameSize;
-
-       pIntNodeInfo = EplDllkGetNodeInfo(pNodeInfo_p->m_uiNodeId);
-       if (pIntNodeInfo == NULL) {     // no node info structure available
-               Ret = kEplDllNoNodeInfo;
-               goto Exit;
-       }
-
-       EPL_DLLK_DBG_POST_TRACE_VALUE(kEplEventTypeDllkAddNode,
-                                     pNodeInfo_p->m_uiNodeId, 0);
-
-       // copy node configuration
-       pIntNodeInfo->m_dwPresTimeout = pNodeInfo_p->m_dwPresTimeout;
-       pIntNodeInfo->m_wPresPayloadLimit = pNodeInfo_p->m_wPresPayloadLimit;
-
-       // $$$ d.k.: actually add node only if MN. On CN it is sufficient to update the node configuration
-       if (pNodeInfo_p->m_uiNodeId == EplDllkInstance_g.m_DllConfigParam.m_uiNodeId) { // we shall send PRes ourself
-               // insert our node at the end of the list
-               ppIntNodeInfo = &EplDllkInstance_g.m_pFirstNodeInfo;
-               while ((*ppIntNodeInfo != NULL)
-                      && ((*ppIntNodeInfo)->m_pNextNodeInfo != NULL)) {
-                       ppIntNodeInfo = &(*ppIntNodeInfo)->m_pNextNodeInfo;
-               }
-               if (*ppIntNodeInfo != NULL) {
-                       if ((*ppIntNodeInfo)->m_uiNodeId == pNodeInfo_p->m_uiNodeId) {  // node was already added to list
-                               // $$$ d.k. maybe this should be an error
-                               goto Exit;
-                       } else {        // add our node at the end of the list
-                               ppIntNodeInfo =
-                                   &(*ppIntNodeInfo)->m_pNextNodeInfo;
-                       }
-               }
-               // set "PReq"-TxBuffer to PRes-TxBuffer
-               pIntNodeInfo->m_pPreqTxBuffer =
-                   &EplDllkInstance_g.m_pTxBuffer[EPL_DLLK_TXFRAME_PRES];
-       } else {                // normal CN shall be added to isochronous phase
-               // insert node into list in ascending order
-               ppIntNodeInfo = &EplDllkInstance_g.m_pFirstNodeInfo;
-               while ((*ppIntNodeInfo != NULL)
-                      && ((*ppIntNodeInfo)->m_uiNodeId <
-                          pNodeInfo_p->m_uiNodeId)
-                      && ((*ppIntNodeInfo)->m_uiNodeId !=
-                          EplDllkInstance_g.m_DllConfigParam.m_uiNodeId)) {
-                       ppIntNodeInfo = &(*ppIntNodeInfo)->m_pNextNodeInfo;
-               }
-               if ((*ppIntNodeInfo != NULL) && ((*ppIntNodeInfo)->m_uiNodeId == pNodeInfo_p->m_uiNodeId)) {    // node was already added to list
-                       // $$$ d.k. maybe this should be an error
-                       goto Exit;
-               }
-       }
-
-       // initialize elements of internal node info structure
-       pIntNodeInfo->m_bSoaFlag1 = 0;
-       pIntNodeInfo->m_fSoftDelete = FALSE;
-       pIntNodeInfo->m_NmtState = kEplNmtCsNotActive;
-       if (pIntNodeInfo->m_pPreqTxBuffer == NULL) {    // create TxBuffer entry
-               uiFrameSize = pNodeInfo_p->m_wPreqPayloadLimit + 24;
-               Ret =
-                   EplDllkCreateTxFrame(&uiHandle, &pFrame, &uiFrameSize,
-                                        kEplMsgTypePreq,
-                                        kEplDllAsndNotDefined);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-               pIntNodeInfo->m_pPreqTxBuffer =
-                   &EplDllkInstance_g.m_pTxBuffer[uiHandle];
-               AmiSetByteToLe(&pFrame->m_le_bDstNodeId,
-                              (u8) pNodeInfo_p->m_uiNodeId);
-
-               // set up destination MAC address
-               EPL_MEMCPY(pFrame->m_be_abDstMac, pIntNodeInfo->m_be_abMacAddr,
-                          6);
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_PDOK)) != 0)
-               {
-                       tEplFrameInfo FrameInfo;
-
-                       // initially encode TPDO -> inform PDO module
-                       FrameInfo.m_pFrame = pFrame;
-                       FrameInfo.m_uiFrameSize = uiFrameSize;
-                       Ret = EplPdokCbPdoTransmitted(&FrameInfo);
-               }
-#endif
-       }
-       pIntNodeInfo->m_ulDllErrorEvents = 0L;
-       // add node to list
-       pIntNodeInfo->m_pNextNodeInfo = *ppIntNodeInfo;
-       *ppIntNodeInfo = pIntNodeInfo;
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkDeleteNode()
-//
-// Description: removes the specified node from the isochronous phase.
-//
-// Parameters:  uiNodeId_p              = node ID
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkDeleteNode(unsigned int uiNodeId_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplDllkNodeInfo *pIntNodeInfo;
-       tEplDllkNodeInfo **ppIntNodeInfo;
-       unsigned int uiHandle;
-
-       pIntNodeInfo = EplDllkGetNodeInfo(uiNodeId_p);
-       if (pIntNodeInfo == NULL) {     // no node info structure available
-               Ret = kEplDllNoNodeInfo;
-               goto Exit;
-       }
-
-       EPL_DLLK_DBG_POST_TRACE_VALUE(kEplEventTypeDllkDelNode, uiNodeId_p, 0);
-
-       // search node in whole list
-       ppIntNodeInfo = &EplDllkInstance_g.m_pFirstNodeInfo;
-       while ((*ppIntNodeInfo != NULL)
-              && ((*ppIntNodeInfo)->m_uiNodeId != uiNodeId_p)) {
-               ppIntNodeInfo = &(*ppIntNodeInfo)->m_pNextNodeInfo;
-       }
-       if ((*ppIntNodeInfo == NULL) || ((*ppIntNodeInfo)->m_uiNodeId != uiNodeId_p)) { // node was not found in list
-               // $$$ d.k. maybe this should be an error
-               goto Exit;
-       }
-       // remove node from list
-       *ppIntNodeInfo = pIntNodeInfo->m_pNextNodeInfo;
-
-       if ((pIntNodeInfo->m_pPreqTxBuffer != NULL)
-           && (pIntNodeInfo->m_pPreqTxBuffer != &EplDllkInstance_g.m_pTxBuffer[EPL_DLLK_TXFRAME_PRES])) {      // delete TxBuffer entry
-               uiHandle =
-                   pIntNodeInfo->m_pPreqTxBuffer -
-                   EplDllkInstance_g.m_pTxBuffer;
-               pIntNodeInfo->m_pPreqTxBuffer = NULL;
-               Ret = EplDllkDeleteTxFrame(uiHandle);
-/*        if (Ret != kEplSuccessful)
-        {
-            goto Exit;
-        }*/
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkSoftDeleteNode()
-//
-// Description: removes the specified node not immediately from the isochronous phase.
-//              Instead the will be removed after error (late/loss PRes) without
-//              charging the error.
-//
-// Parameters:  uiNodeId_p              = node ID
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkSoftDeleteNode(unsigned int uiNodeId_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplDllkNodeInfo *pIntNodeInfo;
-
-       pIntNodeInfo = EplDllkGetNodeInfo(uiNodeId_p);
-       if (pIntNodeInfo == NULL) {     // no node info structure available
-               Ret = kEplDllNoNodeInfo;
-               goto Exit;
-       }
-
-       EPL_DLLK_DBG_POST_TRACE_VALUE(kEplEventTypeDllkSoftDelNode,
-                                     uiNodeId_p, 0);
-
-       pIntNodeInfo->m_fSoftDelete = TRUE;
-
-      Exit:
-       return Ret;
-}
-
-#endif //(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkChangeState
-//
-// Description: change DLL state on event and diagnose some communication errors
-//
-// Parameters:  NmtEvent_p              = DLL event (wrapped in NMT event)
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplDllkChangeState(tEplNmtEvent NmtEvent_p,
-                                    tEplNmtState NmtState_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplEvent Event;
-       tEplErrorHandlerkEvent DllEvent;
-
-       DllEvent.m_ulDllErrorEvents = 0;
-       DllEvent.m_uiNodeId = 0;
-       DllEvent.m_NmtState = NmtState_p;
-
-       switch (NmtState_p) {
-       case kEplNmtGsOff:
-       case kEplNmtGsInitialising:
-       case kEplNmtGsResetApplication:
-       case kEplNmtGsResetCommunication:
-       case kEplNmtGsResetConfiguration:
-       case kEplNmtCsBasicEthernet:
-               // enter DLL_GS_INIT
-               EplDllkInstance_g.m_DllState = kEplDllGsInit;
-               break;
-
-       case kEplNmtCsNotActive:
-       case kEplNmtCsPreOperational1:
-               // reduced EPL cycle is active
-               if (NmtEvent_p == kEplNmtEventDllCeSoc) {       // SoC received
-                       // enter DLL_CS_WAIT_PREQ
-                       EplDllkInstance_g.m_DllState = kEplDllCsWaitPreq;
-               } else {
-                       // enter DLL_GS_INIT
-                       EplDllkInstance_g.m_DllState = kEplDllGsInit;
-               }
-               break;
-
-       case kEplNmtCsPreOperational2:
-       case kEplNmtCsReadyToOperate:
-       case kEplNmtCsOperational:
-               // full EPL cycle is active
-
-               switch (EplDllkInstance_g.m_DllState) {
-               case kEplDllCsWaitPreq:
-                       switch (NmtEvent_p) {
-                               // DLL_CT2
-                       case kEplNmtEventDllCePreq:
-                               // enter DLL_CS_WAIT_SOA
-                               DllEvent.m_ulDllErrorEvents |=
-                                   EPL_DLL_ERR_CN_RECVD_PREQ;
-                               EplDllkInstance_g.m_DllState = kEplDllCsWaitSoa;
-                               break;
-
-                               // DLL_CT8
-                       case kEplNmtEventDllCeFrameTimeout:
-                               if (NmtState_p == kEplNmtCsPreOperational2) {   // ignore frame timeout in PreOp2,
-                                       // because the previously configured cycle len
-                                       // may be wrong.
-                                       // 2008/10/15 d.k. If it would not be ignored,
-                                       // we would go cyclically to PreOp1 and on next
-                                       // SoC back to PreOp2.
-                                       break;
-                               }
-                               // report DLL_CEV_LOSS_SOC and DLL_CEV_LOSS_SOA
-                               DllEvent.m_ulDllErrorEvents |=
-                                   EPL_DLL_ERR_CN_LOSS_SOA |
-                                   EPL_DLL_ERR_CN_LOSS_SOC;
-
-                               // enter DLL_CS_WAIT_SOC
-                               EplDllkInstance_g.m_DllState = kEplDllCsWaitSoc;
-                               break;
-
-                       case kEplNmtEventDllCeSoa:
-                               // check if multiplexed and PReq should have been received in this cycle
-                               // and if >= NMT_CS_READY_TO_OPERATE
-                               if ((EplDllkInstance_g.m_uiCycleCount == 0)
-                                   && (NmtState_p >= kEplNmtCsReadyToOperate)) {       // report DLL_CEV_LOSS_OF_PREQ
-                                       DllEvent.m_ulDllErrorEvents |=
-                                           EPL_DLL_ERR_CN_LOSS_PREQ;
-                               }
-                               // enter DLL_CS_WAIT_SOC
-                               EplDllkInstance_g.m_DllState = kEplDllCsWaitSoc;
-                               break;
-
-                               // DLL_CT7
-                       case kEplNmtEventDllCeSoc:
-                       case kEplNmtEventDllCeAsnd:
-                               // report DLL_CEV_LOSS_SOA
-                               DllEvent.m_ulDllErrorEvents |=
-                                   EPL_DLL_ERR_CN_LOSS_SOA;
-
-                       case kEplNmtEventDllCePres:
-                       default:
-                               // remain in this state
-                               break;
-                       }
-                       break;
-
-               case kEplDllCsWaitSoc:
-                       switch (NmtEvent_p) {
-                               // DLL_CT1
-                       case kEplNmtEventDllCeSoc:
-                               // start of cycle and isochronous phase
-                               // enter DLL_CS_WAIT_PREQ
-                               EplDllkInstance_g.m_DllState =
-                                   kEplDllCsWaitPreq;
-                               break;
-
-                               // DLL_CT4
-//                        case kEplNmtEventDllCePres:
-                       case kEplNmtEventDllCeFrameTimeout:
-                               if (NmtState_p == kEplNmtCsPreOperational2) {   // ignore frame timeout in PreOp2,
-                                       // because the previously configured cycle len
-                                       // may be wrong.
-                                       // 2008/10/15 d.k. If it would not be ignored,
-                                       // we would go cyclically to PreOp1 and on next
-                                       // SoC back to PreOp2.
-                                       break;
-                               }
-                               // fall through
-
-                       case kEplNmtEventDllCePreq:
-                       case kEplNmtEventDllCeSoa:
-                               // report DLL_CEV_LOSS_SOC
-                               DllEvent.m_ulDllErrorEvents |=
-                                   EPL_DLL_ERR_CN_LOSS_SOC;
-
-                       case kEplNmtEventDllCeAsnd:
-                       default:
-                               // remain in this state
-                               break;
-                       }
-                       break;
-
-               case kEplDllCsWaitSoa:
-                       switch (NmtEvent_p) {
-                       case kEplNmtEventDllCeFrameTimeout:
-                               // DLL_CT3
-                               if (NmtState_p == kEplNmtCsPreOperational2) {   // ignore frame timeout in PreOp2,
-                                       // because the previously configured cycle len
-                                       // may be wrong.
-                                       // 2008/10/15 d.k. If it would not be ignored,
-                                       // we would go cyclically to PreOp1 and on next
-                                       // SoC back to PreOp2.
-                                       break;
-                               }
-                               // fall through
-
-                       case kEplNmtEventDllCePreq:
-                               // report DLL_CEV_LOSS_SOC and DLL_CEV_LOSS_SOA
-                               DllEvent.m_ulDllErrorEvents |=
-                                   EPL_DLL_ERR_CN_LOSS_SOA |
-                                   EPL_DLL_ERR_CN_LOSS_SOC;
-
-                       case kEplNmtEventDllCeSoa:
-                               // enter DLL_CS_WAIT_SOC
-                               EplDllkInstance_g.m_DllState = kEplDllCsWaitSoc;
-                               break;
-
-                               // DLL_CT9
-                       case kEplNmtEventDllCeSoc:
-                               // report DLL_CEV_LOSS_SOA
-                               DllEvent.m_ulDllErrorEvents |=
-                                   EPL_DLL_ERR_CN_LOSS_SOA;
-
-                               // enter DLL_CS_WAIT_PREQ
-                               EplDllkInstance_g.m_DllState =
-                                   kEplDllCsWaitPreq;
-                               break;
-
-                               // DLL_CT10
-                       case kEplNmtEventDllCeAsnd:
-                               // report DLL_CEV_LOSS_SOA
-                               DllEvent.m_ulDllErrorEvents |=
-                                   EPL_DLL_ERR_CN_LOSS_SOA;
-
-                       case kEplNmtEventDllCePres:
-                       default:
-                               // remain in this state
-                               break;
-                       }
-                       break;
-
-               case kEplDllGsInit:
-                       // enter DLL_CS_WAIT_PREQ
-                       EplDllkInstance_g.m_DllState = kEplDllCsWaitPreq;
-                       break;
-
-               default:
-                       break;
-               }
-               break;
-
-       case kEplNmtCsStopped:
-               // full EPL cycle is active, but without PReq/PRes
-
-               switch (EplDllkInstance_g.m_DllState) {
-               case kEplDllCsWaitPreq:
-                       switch (NmtEvent_p) {
-                               // DLL_CT2
-                       case kEplNmtEventDllCePreq:
-                               // enter DLL_CS_WAIT_SOA
-                               EplDllkInstance_g.m_DllState = kEplDllCsWaitSoa;
-                               break;
-
-                               // DLL_CT8
-                       case kEplNmtEventDllCeFrameTimeout:
-                               // report DLL_CEV_LOSS_SOC and DLL_CEV_LOSS_SOA
-                               DllEvent.m_ulDllErrorEvents |=
-                                   EPL_DLL_ERR_CN_LOSS_SOA |
-                                   EPL_DLL_ERR_CN_LOSS_SOC;
-
-                       case kEplNmtEventDllCeSoa:
-                               // NMT_CS_STOPPED active
-                               // it is Ok if no PReq was received
-
-                               // enter DLL_CS_WAIT_SOC
-                               EplDllkInstance_g.m_DllState = kEplDllCsWaitSoc;
-                               break;
-
-                               // DLL_CT7
-                       case kEplNmtEventDllCeSoc:
-                       case kEplNmtEventDllCeAsnd:
-                               // report DLL_CEV_LOSS_SOA
-                               DllEvent.m_ulDllErrorEvents |=
-                                   EPL_DLL_ERR_CN_LOSS_SOA;
-
-                       case kEplNmtEventDllCePres:
-                       default:
-                               // remain in this state
-                               break;
-                       }
-                       break;
-
-               case kEplDllCsWaitSoc:
-                       switch (NmtEvent_p) {
-                               // DLL_CT1
-                       case kEplNmtEventDllCeSoc:
-                               // start of cycle and isochronous phase
-                               // enter DLL_CS_WAIT_SOA
-                               EplDllkInstance_g.m_DllState = kEplDllCsWaitSoa;
-                               break;
-
-                               // DLL_CT4
-//                        case kEplNmtEventDllCePres:
-                       case kEplNmtEventDllCePreq:
-                       case kEplNmtEventDllCeSoa:
-                       case kEplNmtEventDllCeFrameTimeout:
-                               // report DLL_CEV_LOSS_SOC
-                               DllEvent.m_ulDllErrorEvents |=
-                                   EPL_DLL_ERR_CN_LOSS_SOC;
-
-                       case kEplNmtEventDllCeAsnd:
-                       default:
-                               // remain in this state
-                               break;
-                       }
-                       break;
-
-               case kEplDllCsWaitSoa:
-                       switch (NmtEvent_p) {
-                               // DLL_CT3
-                       case kEplNmtEventDllCeFrameTimeout:
-                               // report DLL_CEV_LOSS_SOC and DLL_CEV_LOSS_SOA
-                               DllEvent.m_ulDllErrorEvents |=
-                                   EPL_DLL_ERR_CN_LOSS_SOA |
-                                   EPL_DLL_ERR_CN_LOSS_SOC;
-
-                       case kEplNmtEventDllCeSoa:
-                               // enter DLL_CS_WAIT_SOC
-                               EplDllkInstance_g.m_DllState = kEplDllCsWaitSoc;
-                               break;
-
-                               // DLL_CT9
-                       case kEplNmtEventDllCeSoc:
-                               // report DLL_CEV_LOSS_SOA
-                               DllEvent.m_ulDllErrorEvents |=
-                                   EPL_DLL_ERR_CN_LOSS_SOA;
-                               // remain in DLL_CS_WAIT_SOA
-                               break;
-
-                               // DLL_CT10
-                       case kEplNmtEventDllCeAsnd:
-                               // report DLL_CEV_LOSS_SOA
-                               DllEvent.m_ulDllErrorEvents |=
-                                   EPL_DLL_ERR_CN_LOSS_SOA;
-
-                       case kEplNmtEventDllCePreq:
-                               // NMT_CS_STOPPED active and we do not expect any PReq
-                               // so just ignore it
-                       case kEplNmtEventDllCePres:
-                       default:
-                               // remain in this state
-                               break;
-                       }
-                       break;
-
-               case kEplDllGsInit:
-               default:
-                       // enter DLL_CS_WAIT_PREQ
-                       EplDllkInstance_g.m_DllState = kEplDllCsWaitSoa;
-                       break;
-               }
-               break;
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-       case kEplNmtMsNotActive:
-       case kEplNmtMsBasicEthernet:
-               break;
-
-       case kEplNmtMsPreOperational1:
-               // reduced EPL cycle is active
-               if (EplDllkInstance_g.m_DllState != kEplDllMsNonCyclic) {       // stop cycle timer
-#if EPL_TIMER_USE_HIGHRES != FALSE
-                       Ret =
-                           EplTimerHighReskDeleteTimer(&EplDllkInstance_g.
-                                                       m_TimerHdlCycle);
-#endif
-                       EplDllkInstance_g.m_DllState = kEplDllMsNonCyclic;
-
-                       // stop further processing,
-                       // because it will be restarted by NMT MN module
-                       break;
-               }
-
-               switch (NmtEvent_p) {
-               case kEplNmtEventDllMeSocTrig:
-               case kEplNmtEventDllCeAsnd:
-                       {       // because of reduced EPL cycle SoA shall be triggered, not SoC
-                               tEplDllState DummyDllState;
-
-                               Ret =
-                                   EplDllkAsyncFrameNotReceived
-                                   (EplDllkInstance_g.m_LastReqServiceId,
-                                    EplDllkInstance_g.m_uiLastTargetNodeId);
-
-                               // go ahead and send SoA
-                               Ret = EplDllkMnSendSoa(NmtState_p,
-                                                      &DummyDllState,
-                                                      (EplDllkInstance_g.
-                                                       m_uiCycleCount >=
-                                                       EPL_C_DLL_PREOP1_START_CYCLES));
-                               // increment cycle counter to detect if EPL_C_DLL_PREOP1_START_CYCLES empty cycles are elapsed
-                               EplDllkInstance_g.m_uiCycleCount++;
-
-                               // reprogram timer
-#if EPL_TIMER_USE_HIGHRES != FALSE
-                               if (EplDllkInstance_g.m_DllConfigParam.
-                                   m_dwAsyncSlotTimeout != 0) {
-                                       Ret =
-                                           EplTimerHighReskModifyTimerNs
-                                           (&EplDllkInstance_g.m_TimerHdlCycle,
-                                            EplDllkInstance_g.m_DllConfigParam.
-                                            m_dwAsyncSlotTimeout,
-                                            EplDllkCbMnTimerCycle, 0L, FALSE);
-                               }
-#endif
-                               break;
-                       }
-
-               default:
-                       break;
-               }
-               break;
-
-       case kEplNmtMsPreOperational2:
-       case kEplNmtMsReadyToOperate:
-       case kEplNmtMsOperational:
-               // full EPL cycle is active
-               switch (NmtEvent_p) {
-               case kEplNmtEventDllMeSocTrig:
-                       {
-                               // update cycle counter
-                               if (EplDllkInstance_g.m_DllConfigParam.m_uiMultiplCycleCnt > 0) {       // multiplexed cycle active
-                                       EplDllkInstance_g.m_uiCycleCount =
-                                           (EplDllkInstance_g.m_uiCycleCount +
-                                            1) %
-                                           EplDllkInstance_g.m_DllConfigParam.
-                                           m_uiMultiplCycleCnt;
-                                       // $$$ check multiplexed cycle restart
-                                       //     -> toggle MC flag
-                                       //     -> change node linked list
-                               } else {        // non-multiplexed cycle active
-                                       // start with first node in isochronous phase
-                                       EplDllkInstance_g.m_pCurNodeInfo = NULL;
-                               }
-
-                               switch (EplDllkInstance_g.m_DllState) {
-                               case kEplDllMsNonCyclic:
-                                       {       // start continuous cycle timer
-#if EPL_TIMER_USE_HIGHRES != FALSE
-                                               Ret =
-                                                   EplTimerHighReskModifyTimerNs
-                                                   (&EplDllkInstance_g.
-                                                    m_TimerHdlCycle,
-                                                    EplDllkInstance_g.
-                                                    m_ullFrameTimeout,
-                                                    EplDllkCbMnTimerCycle, 0L,
-                                                    TRUE);
-#endif
-                                               // continue with sending SoC
-                                       }
-
-                               case kEplDllMsWaitAsnd:
-                               case kEplDllMsWaitSocTrig:
-                                       {       // if m_LastReqServiceId is still valid,
-                                               // SoA was not correctly answered
-                                               // and user part has to be informed
-                                               Ret =
-                                                   EplDllkAsyncFrameNotReceived
-                                                   (EplDllkInstance_g.
-                                                    m_LastReqServiceId,
-                                                    EplDllkInstance_g.
-                                                    m_uiLastTargetNodeId);
-
-                                               // send SoC
-                                               Ret = EplDllkMnSendSoc();
-
-                                               // new DLL state
-                                               EplDllkInstance_g.m_DllState =
-                                                   kEplDllMsWaitPreqTrig;
-
-                                               // start WaitSoCPReq Timer
-#if EPL_TIMER_USE_HIGHRES != FALSE
-                                               Ret =
-                                                   EplTimerHighReskModifyTimerNs
-                                                   (&EplDllkInstance_g.
-                                                    m_TimerHdlResponse,
-                                                    EplDllkInstance_g.
-                                                    m_DllConfigParam.
-                                                    m_dwWaitSocPreq,
-                                                    EplDllkCbMnTimerResponse,
-                                                    0L, FALSE);
-#endif
-                                               break;
-                                       }
-
-                               default:
-                                       {       // wrong DLL state / cycle time exceeded
-                                               DllEvent.m_ulDllErrorEvents |=
-                                                   EPL_DLL_ERR_MN_CYCTIMEEXCEED;
-                                               EplDllkInstance_g.m_DllState =
-                                                   kEplDllMsWaitSocTrig;
-                                               break;
-                                       }
-                               }
-
-                               break;
-                       }
-
-               case kEplNmtEventDllMePresTimeout:
-                       {
-
-                               switch (EplDllkInstance_g.m_DllState) {
-                               case kEplDllMsWaitPres:
-                                       {       // PRes not received
-
-                                               if (EplDllkInstance_g.m_pCurNodeInfo->m_fSoftDelete == FALSE) { // normal isochronous CN
-                                                       DllEvent.
-                                                           m_ulDllErrorEvents
-                                                           |=
-                                                           EPL_DLL_ERR_MN_CN_LOSS_PRES;
-                                                       DllEvent.m_uiNodeId =
-                                                           EplDllkInstance_g.
-                                                           m_pCurNodeInfo->
-                                                           m_uiNodeId;
-                                               } else {        // CN shall be deleted softly
-                                                       Event.m_EventSink =
-                                                           kEplEventSinkDllkCal;
-                                                       Event.m_EventType =
-                                                           kEplEventTypeDllkSoftDelNode;
-                                                       // $$$ d.k. set Event.m_NetTime to current time
-                                                       Event.m_uiSize =
-                                                           sizeof(unsigned
-                                                                  int);
-                                                       Event.m_pArg =
-                                                           &EplDllkInstance_g.
-                                                           m_pCurNodeInfo->
-                                                           m_uiNodeId;
-                                                       Ret =
-                                                           EplEventkPost
-                                                           (&Event);
-                                               }
-
-                                               // continue with sending next PReq
-                                       }
-
-                               case kEplDllMsWaitPreqTrig:
-                                       {
-                                               // send next PReq
-                                               Ret =
-                                                   EplDllkMnSendPreq
-                                                   (NmtState_p,
-                                                    &EplDllkInstance_g.
-                                                    m_DllState);
-
-                                               break;
-                                       }
-
-                               default:
-                                       {       // wrong DLL state
-                                               break;
-                                       }
-                               }
-
-                               break;
-                       }
-
-               case kEplNmtEventDllCePres:
-                       {
-
-                               switch (EplDllkInstance_g.m_DllState) {
-                               case kEplDllMsWaitPres:
-                                       {       // PRes received
-                                               // send next PReq
-                                               Ret =
-                                                   EplDllkMnSendPreq
-                                                   (NmtState_p,
-                                                    &EplDllkInstance_g.
-                                                    m_DllState);
-
-                                               break;
-                                       }
-
-                               default:
-                                       {       // wrong DLL state
-                                               break;
-                                       }
-                               }
-
-                               break;
-                       }
-
-               case kEplNmtEventDllMeSoaTrig:
-                       {
-
-                               switch (EplDllkInstance_g.m_DllState) {
-                               case kEplDllMsWaitSoaTrig:
-                                       {       // MN PRes sent
-                                               // send SoA
-                                               Ret =
-                                                   EplDllkMnSendSoa(NmtState_p,
-                                                                    &EplDllkInstance_g.
-                                                                    m_DllState,
-                                                                    TRUE);
-
-                                               break;
-                                       }
-
-                               default:
-                                       {       // wrong DLL state
-                                               break;
-                                       }
-                               }
-
-                               break;
-                       }
-
-               case kEplNmtEventDllCeAsnd:
-                       {       // ASnd has been received, but it may be not the requested one
-/*
-                    // report if SoA was correctly answered
-                    Ret = EplDllkAsyncFrameNotReceived(EplDllkInstance_g.m_LastReqServiceId,
-                                                       EplDllkInstance_g.m_uiLastTargetNodeId);
-*/
-                               if (EplDllkInstance_g.m_DllState ==
-                                   kEplDllMsWaitAsnd) {
-                                       EplDllkInstance_g.m_DllState =
-                                           kEplDllMsWaitSocTrig;
-                               }
-                               break;
-                       }
-
-               default:
-                       break;
-               }
-               break;
-#endif //(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-
-       default:
-               break;
-       }
-
-       if (DllEvent.m_ulDllErrorEvents != 0) { // error event set -> post it to error handler
-               Event.m_EventSink = kEplEventSinkErrk;
-               Event.m_EventType = kEplEventTypeDllError;
-               // $$$ d.k. set Event.m_NetTime to current time
-               Event.m_uiSize = sizeof(DllEvent);
-               Event.m_pArg = &DllEvent;
-               Ret = EplEventkPost(&Event);
-       }
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkCbFrameReceived()
-//
-// Description: called from EdrvInterruptHandler()
-//
-// Parameters:  pRxBuffer_p             = receive buffer structure
-//
-// Returns:     (none)
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static void EplDllkCbFrameReceived(tEdrvRxBuffer * pRxBuffer_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplNmtState NmtState;
-       tEplNmtEvent NmtEvent = kEplNmtEventNoEvent;
-       tEplEvent Event;
-       tEplFrame *pFrame;
-       tEplFrame *pTxFrame;
-       tEdrvTxBuffer *pTxBuffer = NULL;
-       tEplFrameInfo FrameInfo;
-       tEplMsgType MsgType;
-       tEplDllReqServiceId ReqServiceId;
-       unsigned int uiAsndServiceId;
-       unsigned int uiNodeId;
-       u8 bFlag1;
-
-       BENCHMARK_MOD_02_SET(3);
-       NmtState = EplNmtkGetNmtState();
-
-       if (NmtState <= kEplNmtGsResetConfiguration) {
-               goto Exit;
-       }
-
-       pFrame = (tEplFrame *) pRxBuffer_p->m_pbBuffer;
-
-#if EDRV_EARLY_RX_INT != FALSE
-       switch (pRxBuffer_p->m_BufferInFrame) {
-       case kEdrvBufferFirstInFrame:
-               {
-                       MsgType =
-                           (tEplMsgType) AmiGetByteFromLe(&pFrame->
-                                                          m_le_bMessageType);
-                       if (MsgType == kEplMsgTypePreq) {
-                               if (EplDllkInstance_g.m_DllState == kEplDllCsWaitPreq) {        // PReq expected and actually received
-                                       // d.k.: The condition above is sufficent, because EPL cycle is active
-                                       //       and no non-EPL frame shall be received in isochronous phase.
-                                       // start transmission PRes
-                                       // $$$ What if Tx buffer is invalid?
-                                       pTxBuffer =
-                                           &EplDllkInstance_g.
-                                           m_pTxBuffer[EPL_DLLK_TXFRAME_PRES];
-#if (EPL_DLL_PRES_READY_AFTER_SOA != FALSE) || (EPL_DLL_PRES_READY_AFTER_SOC != FALSE)
-                                       Ret = EdrvTxMsgStart(pTxBuffer);
-#else
-                                       pTxFrame =
-                                           (tEplFrame *) pTxBuffer->m_pbBuffer;
-                                       // update frame (NMT state, RD, RS, PR, MS, EN flags)
-                                       AmiSetByteToLe(&pTxFrame->m_Data.m_Pres.
-                                                      m_le_bNmtStatus,
-                                                      (u8) NmtState);
-                                       AmiSetByteToLe(&pTxFrame->m_Data.m_Pres.
-                                                      m_le_bFlag2,
-                                                      EplDllkInstance_g.
-                                                      m_bFlag2);
-                                       if (NmtState != kEplNmtCsOperational) { // mark PDO as invalid in NMT state Op
-                                               // $$$ reset only RD flag; set other flags appropriately
-                                               AmiSetByteToLe(&pTxFrame->
-                                                              m_Data.m_Pres.
-                                                              m_le_bFlag1, 0);
-                                       }
-                                       // $$$ make function that updates Pres, StatusRes
-                                       // send PRes frame
-                                       Ret = EdrvSendTxMsg(pTxBuffer);
-#endif
-                               }
-                       }
-                       goto Exit;
-               }
-
-       case kEdrvBufferMiddleInFrame:
-               {
-                       goto Exit;
-               }
-
-       case kEdrvBufferLastInFrame:
-               {
-                       break;
-               }
-       }
-#endif
-
-       FrameInfo.m_pFrame = pFrame;
-       FrameInfo.m_uiFrameSize = pRxBuffer_p->m_uiRxMsgLen;
-       FrameInfo.m_NetTime.m_dwNanoSec = pRxBuffer_p->m_NetTime.m_dwNanoSec;
-       FrameInfo.m_NetTime.m_dwSec = pRxBuffer_p->m_NetTime.m_dwSec;
-
-       if (AmiGetWordFromBe(&pFrame->m_be_wEtherType) != EPL_C_DLL_ETHERTYPE_EPL) {    // non-EPL frame
-               //TRACE2("EplDllkCbFrameReceived: pfnCbAsync=0x%p SrcMAC=0x%llx\n", EplDllkInstance_g.m_pfnCbAsync, AmiGetQword48FromBe(pFrame->m_be_abSrcMac));
-               if (EplDllkInstance_g.m_pfnCbAsync != NULL) {   // handler for async frames is registered
-                       EplDllkInstance_g.m_pfnCbAsync(&FrameInfo);
-               }
-
-               goto Exit;
-       }
-
-       MsgType = (tEplMsgType) AmiGetByteFromLe(&pFrame->m_le_bMessageType);
-       switch (MsgType) {
-       case kEplMsgTypePreq:
-               {
-                       // PReq frame
-                       // d.k.: (we assume that this PReq frame is intended for us and don't check DstNodeId)
-                       if (AmiGetByteFromLe(&pFrame->m_le_bDstNodeId) != EplDllkInstance_g.m_DllConfigParam.m_uiNodeId) {      // this PReq is not intended for us
-                               goto Exit;
-                       }
-                       NmtEvent = kEplNmtEventDllCePreq;
-
-                       if (NmtState >= kEplNmtMsNotActive) {   // MN is active -> wrong msg type
-                               break;
-                       }
-#if EDRV_EARLY_RX_INT == FALSE
-                       if (NmtState >= kEplNmtCsPreOperational2) {     // respond to and process PReq frames only in PreOp2, ReadyToOp and Op
-                               // Does PRes exist?
-                               pTxBuffer =
-                                   &EplDllkInstance_g.
-                                   m_pTxBuffer[EPL_DLLK_TXFRAME_PRES];
-                               if (pTxBuffer->m_pbBuffer != NULL) {    // PRes does exist
-#if (EPL_DLL_PRES_READY_AFTER_SOA != FALSE) || (EPL_DLL_PRES_READY_AFTER_SOC != FALSE)
-                                       EdrvTxMsgStart(pTxBuffer);
-#else
-                                       pTxFrame =
-                                           (tEplFrame *) pTxBuffer->m_pbBuffer;
-                                       // update frame (NMT state, RD, RS, PR, MS, EN flags)
-                                       AmiSetByteToLe(&pTxFrame->m_Data.m_Pres.
-                                                      m_le_bNmtStatus,
-                                                      (u8) NmtState);
-                                       AmiSetByteToLe(&pTxFrame->m_Data.m_Pres.
-                                                      m_le_bFlag2,
-                                                      EplDllkInstance_g.
-                                                      m_bFlag2);
-                                       bFlag1 =
-                                           AmiGetByteFromLe(&pFrame->m_Data.
-                                                            m_Preq.
-                                                            m_le_bFlag1);
-                                       // save EA flag
-                                       EplDllkInstance_g.m_bMnFlag1 =
-                                           (EplDllkInstance_g.
-                                            m_bMnFlag1 & ~EPL_FRAME_FLAG1_EA)
-                                           | (bFlag1 & EPL_FRAME_FLAG1_EA);
-                                       // preserve MS flag
-                                       bFlag1 &= EPL_FRAME_FLAG1_MS;
-                                       // add EN flag from Error signaling module
-                                       bFlag1 |=
-                                           EplDllkInstance_g.
-                                           m_bFlag1 & EPL_FRAME_FLAG1_EN;
-                                       if (NmtState != kEplNmtCsOperational) { // mark PDO as invalid in NMT state Op
-                                               // reset only RD flag
-                                               AmiSetByteToLe(&pTxFrame->
-                                                              m_Data.m_Pres.
-                                                              m_le_bFlag1,
-                                                              bFlag1);
-                                       } else {        // leave RD flag untouched
-                                               AmiSetByteToLe(&pTxFrame->
-                                                              m_Data.m_Pres.
-                                                              m_le_bFlag1,
-                                                              (AmiGetByteFromLe
-                                                               (&pTxFrame->
-                                                                m_Data.m_Pres.
-                                                                m_le_bFlag1) &
-                                                               EPL_FRAME_FLAG1_RD)
-                                                              | bFlag1);
-                                       }
-                                       // $$$ update EPL_DLL_PRES_READY_AFTER_* code
-                                       // send PRes frame
-                                       Ret = EdrvSendTxMsg(pTxBuffer);
-                                       if (Ret != kEplSuccessful) {
-                                               goto Exit;
-                                       }
-#endif
-                               }
-#endif
-                               // inform PDO module
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_PDOK)) != 0)
-                               if (NmtState >= kEplNmtCsReadyToOperate) {      // inform PDO module only in ReadyToOp and Op
-                                       if (NmtState != kEplNmtCsOperational) {
-                                               // reset RD flag and all other flags, but that does not matter, because they were processed above
-                                               AmiSetByteToLe(&pFrame->m_Data.
-                                                              m_Preq.
-                                                              m_le_bFlag1, 0);
-                                       }
-                                       // compares real frame size and PDO size
-                                       if ((unsigned
-                                            int)(AmiGetWordFromLe(&pFrame->
-                                                                  m_Data.
-                                                                  m_Preq.
-                                                                  m_le_wSize) +
-                                                 24)
-                                           > FrameInfo.m_uiFrameSize) {        // format error
-                                               tEplErrorHandlerkEvent DllEvent;
-
-                                               DllEvent.m_ulDllErrorEvents =
-                                                   EPL_DLL_ERR_INVALID_FORMAT;
-                                               DllEvent.m_uiNodeId =
-                                                   AmiGetByteFromLe(&pFrame->
-                                                                    m_le_bSrcNodeId);
-                                               DllEvent.m_NmtState = NmtState;
-                                               Event.m_EventSink =
-                                                   kEplEventSinkErrk;
-                                               Event.m_EventType =
-                                                   kEplEventTypeDllError;
-                                               Event.m_NetTime =
-                                                   FrameInfo.m_NetTime;
-                                               Event.m_uiSize =
-                                                   sizeof(DllEvent);
-                                               Event.m_pArg = &DllEvent;
-                                               Ret = EplEventkPost(&Event);
-                                               break;
-                                       }
-                                       // forward PReq frame as RPDO to PDO module
-                                       Ret = EplPdokCbPdoReceived(&FrameInfo);
-
-                               }
-#if (EPL_DLL_PRES_READY_AFTER_SOC != FALSE)
-                               if (pTxBuffer->m_pbBuffer != NULL) {    // PRes does exist
-                                       // inform PDO module about PRes after PReq
-                                       FrameInfo.m_pFrame =
-                                           (tEplFrame *) pTxBuffer->m_pbBuffer;
-                                       FrameInfo.m_uiFrameSize =
-                                           pTxBuffer->m_uiMaxBufferLen;
-                                       Ret =
-                                           EplPdokCbPdoTransmitted(&FrameInfo);
-                               }
-#endif
-#endif
-
-#if EDRV_EARLY_RX_INT == FALSE
-                               // $$$ inform emergency protocol handling (error signaling module) about flags
-                       }
-#endif
-
-                       // reset cycle counter
-                       EplDllkInstance_g.m_uiCycleCount = 0;
-
-                       break;
-               }
-
-       case kEplMsgTypePres:
-               {
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-                       tEplDllkNodeInfo *pIntNodeInfo;
-                       tEplHeartbeatEvent HeartbeatEvent;
-#endif
-
-                       // PRes frame
-                       NmtEvent = kEplNmtEventDllCePres;
-
-                       uiNodeId = AmiGetByteFromLe(&pFrame->m_le_bSrcNodeId);
-
-                       if ((NmtState >= kEplNmtCsPreOperational2)
-                           && (NmtState <= kEplNmtCsOperational)) {    // process PRes frames only in PreOp2, ReadyToOp and Op of CN
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-                               pIntNodeInfo = EplDllkGetNodeInfo(uiNodeId);
-                               if (pIntNodeInfo == NULL) {     // no node info structure available
-                                       Ret = kEplDllNoNodeInfo;
-                                       goto Exit;
-                               }
-                       } else if (EplDllkInstance_g.m_DllState == kEplDllMsWaitPres) { // or process PRes frames in MsWaitPres
-
-                               pIntNodeInfo = EplDllkInstance_g.m_pCurNodeInfo;
-                               if ((pIntNodeInfo == NULL) || (pIntNodeInfo->m_uiNodeId != uiNodeId)) { // ignore PRes, because it is from wrong CN
-                                       // $$$ maybe post event to NmtMn module
-                                       goto Exit;
-                               }
-                               // forward Flag2 to asynchronous scheduler
-                               bFlag1 =
-                                   AmiGetByteFromLe(&pFrame->m_Data.m_Asnd.
-                                                    m_Payload.m_StatusResponse.
-                                                    m_le_bFlag2);
-                               Ret =
-                                   EplDllkCalAsyncSetPendingRequests(uiNodeId,
-                                                                     ((tEplDllAsyncReqPriority) ((bFlag1 & EPL_FRAME_FLAG2_PR) >> EPL_FRAME_FLAG2_PR_SHIFT)), (bFlag1 & EPL_FRAME_FLAG2_RS));
-
-#endif
-                       } else {        // ignore PRes, because it was received in wrong NMT state
-                               // but execute EplDllkChangeState() and post event to NMT module
-                               break;
-                       }
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-                       {       // check NMT state of CN
-                               HeartbeatEvent.m_wErrorCode = EPL_E_NO_ERROR;
-                               HeartbeatEvent.m_NmtState =
-                                   (tEplNmtState) (AmiGetByteFromLe
-                                                   (&pFrame->m_Data.m_Pres.
-                                                    m_le_bNmtStatus) |
-                                                   EPL_NMT_TYPE_CS);
-                               if (pIntNodeInfo->m_NmtState != HeartbeatEvent.m_NmtState) {    // NMT state of CN has changed -> post event to NmtMnu module
-                                       if (pIntNodeInfo->m_fSoftDelete == FALSE) {     // normal isochronous CN
-                                               HeartbeatEvent.m_uiNodeId =
-                                                   uiNodeId;
-                                               Event.m_EventSink =
-                                                   kEplEventSinkNmtMnu;
-                                               Event.m_EventType =
-                                                   kEplEventTypeHeartbeat;
-                                               Event.m_uiSize =
-                                                   sizeof(HeartbeatEvent);
-                                               Event.m_pArg = &HeartbeatEvent;
-                                       } else {        // CN shall be deleted softly
-                                               Event.m_EventSink =
-                                                   kEplEventSinkDllkCal;
-                                               Event.m_EventType =
-                                                   kEplEventTypeDllkSoftDelNode;
-                                               Event.m_uiSize =
-                                                   sizeof(unsigned int);
-                                               Event.m_pArg =
-                                                   &pIntNodeInfo->m_uiNodeId;
-                                       }
-                                       Event.m_NetTime = FrameInfo.m_NetTime;
-                                       Ret = EplEventkPost(&Event);
-
-                                       // save current NMT state of CN in internal node structure
-                                       pIntNodeInfo->m_NmtState =
-                                           HeartbeatEvent.m_NmtState;
-                               }
-                       }
-#endif
-
-                       // inform PDO module
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_PDOK)) != 0)
-                       if ((NmtState != kEplNmtCsPreOperational2)
-                           && (NmtState != kEplNmtMsPreOperational2)) {        // inform PDO module only in ReadyToOp and Op
-                               // compare real frame size and PDO size?
-                               if (((unsigned
-                                     int)(AmiGetWordFromLe(&pFrame->m_Data.
-                                                           m_Pres.m_le_wSize) +
-                                          24)
-                                    > FrameInfo.m_uiFrameSize)
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-                                   ||
-                                   (AmiGetWordFromLe
-                                    (&pFrame->m_Data.m_Pres.m_le_wSize) >
-                                    pIntNodeInfo->m_wPresPayloadLimit)
-#endif
-                                   ) { // format error
-                                       tEplErrorHandlerkEvent DllEvent;
-
-                                       DllEvent.m_ulDllErrorEvents =
-                                           EPL_DLL_ERR_INVALID_FORMAT;
-                                       DllEvent.m_uiNodeId = uiNodeId;
-                                       DllEvent.m_NmtState = NmtState;
-                                       Event.m_EventSink = kEplEventSinkErrk;
-                                       Event.m_EventType =
-                                           kEplEventTypeDllError;
-                                       Event.m_NetTime = FrameInfo.m_NetTime;
-                                       Event.m_uiSize = sizeof(DllEvent);
-                                       Event.m_pArg = &DllEvent;
-                                       Ret = EplEventkPost(&Event);
-                                       break;
-                               }
-                               if ((NmtState != kEplNmtCsOperational)
-                                   && (NmtState != kEplNmtMsOperational)) {
-                                       // reset RD flag and all other flags, but that does not matter, because they were processed above
-                                       AmiSetByteToLe(&pFrame->m_Data.m_Pres.
-                                                      m_le_bFlag1, 0);
-                               }
-                               Ret = EplPdokCbPdoReceived(&FrameInfo);
-                       }
-#endif
-
-                       break;
-               }
-
-       case kEplMsgTypeSoc:
-               {
-                       // SoC frame
-                       NmtEvent = kEplNmtEventDllCeSoc;
-
-                       if (NmtState >= kEplNmtMsNotActive) {   // MN is active -> wrong msg type
-                               break;
-                       }
-#if EPL_DLL_PRES_READY_AFTER_SOC != FALSE
-                       // post PRes to transmit FIFO of the ethernet controller, but don't start
-                       // transmission over bus
-                       pTxBuffer =
-                           &EplDllkInstance_g.
-                           m_pTxBuffer[EPL_DLLK_TXFRAME_PRES];
-                       // Does PRes exist?
-                       if (pTxBuffer->m_pbBuffer != NULL) {    // PRes does exist
-                               pTxFrame = (tEplFrame *) pTxBuffer->m_pbBuffer;
-                               // update frame (NMT state, RD, RS, PR, MS, EN flags)
-                               if (NmtState < kEplNmtCsPreOperational2) {      // NMT state is not PreOp2, ReadyToOp or Op
-                                       // fake NMT state PreOp2, because PRes will be sent only in PreOp2 or greater
-                                       NmtState = kEplNmtCsPreOperational2;
-                               }
-                               AmiSetByteToLe(&pTxFrame->m_Data.m_Pres.
-                                              m_le_bNmtStatus,
-                                              (u8) NmtState);
-                               AmiSetByteToLe(&pTxFrame->m_Data.m_Pres.
-                                              m_le_bFlag2,
-                                              EplDllkInstance_g.m_bFlag2);
-                               if (NmtState != kEplNmtCsOperational) { // mark PDO as invalid in NMT state Op
-                                       // $$$ reset only RD flag; set other flags appropriately
-                                       AmiSetByteToLe(&pTxFrame->m_Data.m_Pres.
-                                                      m_le_bFlag1, 0);
-                               }
-                               // $$$ make function that updates Pres, StatusRes
-                               // mark PRes frame as ready for transmission
-                               Ret = EdrvTxMsgReady(pTxBuffer);
-                       }
-#endif
-
-                       if (NmtState >= kEplNmtCsPreOperational2) {     // SoC frames only in PreOp2, ReadyToOp and Op
-                               // trigger synchronous task
-                               Event.m_EventSink = kEplEventSinkSync;
-                               Event.m_EventType = kEplEventTypeSync;
-                               Event.m_uiSize = 0;
-                               Ret = EplEventkPost(&Event);
-
-                               // update cycle counter
-                               if (EplDllkInstance_g.m_DllConfigParam.m_uiMultiplCycleCnt > 0) {       // multiplexed cycle active
-                                       EplDllkInstance_g.m_uiCycleCount =
-                                           (EplDllkInstance_g.m_uiCycleCount +
-                                            1) %
-                                           EplDllkInstance_g.m_DllConfigParam.
-                                           m_uiMultiplCycleCnt;
-                               }
-                       }
-                       // reprogram timer
-#if EPL_TIMER_USE_HIGHRES != FALSE
-                       if (EplDllkInstance_g.m_ullFrameTimeout != 0) {
-                               Ret =
-                                   EplTimerHighReskModifyTimerNs
-                                   (&EplDllkInstance_g.m_TimerHdlCycle,
-                                    EplDllkInstance_g.m_ullFrameTimeout,
-                                    EplDllkCbCnTimer, 0L, FALSE);
-                       }
-#endif
-
-                       break;
-               }
-
-       case kEplMsgTypeSoa:
-               {
-                       // SoA frame
-                       NmtEvent = kEplNmtEventDllCeSoa;
-
-                       if (NmtState >= kEplNmtMsNotActive) {   // MN is active -> wrong msg type
-                               break;
-                       }
-
-                       pTxFrame = NULL;
-
-                       if ((NmtState & EPL_NMT_SUPERSTATE_MASK) != EPL_NMT_CS_EPLMODE) {       // do not respond, if NMT state is < PreOp1 (i.e. not EPL_MODE)
-                               break;
-                       }
-                       // check TargetNodeId
-                       uiNodeId =
-                           AmiGetByteFromLe(&pFrame->m_Data.m_Soa.
-                                            m_le_bReqServiceTarget);
-                       if (uiNodeId == EplDllkInstance_g.m_DllConfigParam.m_uiNodeId) {        // local node is the target of the current request
-
-                               // check ServiceId
-                               ReqServiceId =
-                                   (tEplDllReqServiceId)
-                                   AmiGetByteFromLe(&pFrame->m_Data.m_Soa.
-                                                    m_le_bReqServiceId);
-                               if (ReqServiceId == kEplDllReqServiceStatus) {  // StatusRequest
-                                       if (EplDllkInstance_g.m_pTxBuffer[EPL_DLLK_TXFRAME_STATUSRES].m_pbBuffer != NULL) {     // StatusRes does exist
-
-                                               pTxFrame =
-                                                   (tEplFrame *)
-                                                   EplDllkInstance_g.
-                                                   m_pTxBuffer
-                                                   [EPL_DLLK_TXFRAME_STATUSRES].
-                                                   m_pbBuffer;
-                                               // update StatusRes frame (NMT state, EN, EC, RS, PR flags)
-                                               AmiSetByteToLe(&pTxFrame->
-                                                              m_Data.m_Asnd.
-                                                              m_Payload.
-                                                              m_StatusResponse.
-                                                              m_le_bNmtStatus,
-                                                              (u8) NmtState);
-                                               AmiSetByteToLe(&pTxFrame->
-                                                              m_Data.m_Asnd.
-                                                              m_Payload.
-                                                              m_StatusResponse.
-                                                              m_le_bFlag1,
-                                                              EplDllkInstance_g.
-                                                              m_bFlag1);
-                                               AmiSetByteToLe(&pTxFrame->
-                                                              m_Data.m_Asnd.
-                                                              m_Payload.
-                                                              m_StatusResponse.
-                                                              m_le_bFlag2,
-                                                              EplDllkInstance_g.
-                                                              m_bFlag2);
-                                               // send StatusRes
-                                               Ret =
-                                                   EdrvSendTxMsg
-                                                   (&EplDllkInstance_g.
-                                                    m_pTxBuffer
-                                                    [EPL_DLLK_TXFRAME_STATUSRES]);
-                                               if (Ret != kEplSuccessful) {
-                                                       goto Exit;
-                                               }
-                                               TGT_DBG_SIGNAL_TRACE_POINT(8);
-
-                                               // update error signaling
-                                               bFlag1 =
-                                                   AmiGetByteFromLe(&pFrame->
-                                                                    m_Data.
-                                                                    m_Soa.
-                                                                    m_le_bFlag1);
-                                               if (((bFlag1 ^ EplDllkInstance_g.m_bMnFlag1) & EPL_FRAME_FLAG1_ER) != 0) {      // exception reset flag was changed by MN
-                                                       // assume same state for EC in next cycle (clear all other bits)
-                                                       if ((bFlag1 &
-                                                            EPL_FRAME_FLAG1_ER)
-                                                           != 0) {
-                                                               // set EC and reset rest
-                                                               EplDllkInstance_g.
-                                                                   m_bFlag1 =
-                                                                   EPL_FRAME_FLAG1_EC;
-                                                       } else {
-                                                               // reset complete flag 1 (including EC and EN)
-                                                               EplDllkInstance_g.
-                                                                   m_bFlag1 =
-                                                                   0;
-                                                       }
-                                               }
-                                               // save flag 1 from MN for Status request response cycle
-                                               EplDllkInstance_g.m_bMnFlag1 =
-                                                   bFlag1;
-                                       }
-                               } else if (ReqServiceId == kEplDllReqServiceIdent) {    // IdentRequest
-                                       if (EplDllkInstance_g.m_pTxBuffer[EPL_DLLK_TXFRAME_IDENTRES].m_pbBuffer != NULL) {      // IdentRes does exist
-                                               pTxFrame =
-                                                   (tEplFrame *)
-                                                   EplDllkInstance_g.
-                                                   m_pTxBuffer
-                                                   [EPL_DLLK_TXFRAME_IDENTRES].
-                                                   m_pbBuffer;
-                                               // update IdentRes frame (NMT state, RS, PR flags)
-                                               AmiSetByteToLe(&pTxFrame->
-                                                              m_Data.m_Asnd.
-                                                              m_Payload.
-                                                              m_IdentResponse.
-                                                              m_le_bNmtStatus,
-                                                              (u8) NmtState);
-                                               AmiSetByteToLe(&pTxFrame->
-                                                              m_Data.m_Asnd.
-                                                              m_Payload.
-                                                              m_IdentResponse.
-                                                              m_le_bFlag2,
-                                                              EplDllkInstance_g.
-                                                              m_bFlag2);
-                                               // send IdentRes
-                                               Ret =
-                                                   EdrvSendTxMsg
-                                                   (&EplDllkInstance_g.
-                                                    m_pTxBuffer
-                                                    [EPL_DLLK_TXFRAME_IDENTRES]);
-                                               if (Ret != kEplSuccessful) {
-                                                       goto Exit;
-                                               }
-                                               TGT_DBG_SIGNAL_TRACE_POINT(7);
-                                       }
-                               } else if (ReqServiceId == kEplDllReqServiceNmtRequest) {       // NmtRequest
-                                       if (EplDllkInstance_g.m_pTxBuffer[EPL_DLLK_TXFRAME_NMTREQ].m_pbBuffer != NULL) {        // NmtRequest does exist
-                                               // check if frame is not empty and not being filled
-                                               if (EplDllkInstance_g.
-                                                   m_pTxBuffer
-                                                   [EPL_DLLK_TXFRAME_NMTREQ].
-                                                   m_uiTxMsgLen >
-                                                   EPL_DLLK_BUFLEN_FILLING) {
-                                                       /*if (EplDllkInstance_g.m_pTxBuffer[EPL_DLLK_TXFRAME_NMTREQ].m_uiTxMsgLen < EPL_DLLK_BUFLEN_MIN)
-                                                          {   // pad frame
-                                                          EplDllkInstance_g.m_pTxBuffer[EPL_DLLK_TXFRAME_NMTREQ].m_uiTxMsgLen = EPL_DLLK_BUFLEN_MIN;
-                                                          } */
-                                                       // memorize transmission
-                                                       pTxFrame =
-                                                           (tEplFrame *) 1;
-                                                       // send NmtRequest
-                                                       Ret =
-                                                           EdrvSendTxMsg
-                                                           (&EplDllkInstance_g.
-                                                            m_pTxBuffer
-                                                            [EPL_DLLK_TXFRAME_NMTREQ]);
-                                                       if (Ret !=
-                                                           kEplSuccessful) {
-                                                               goto Exit;
-                                                       }
-
-                                               }
-                                       }
-
-                               } else if (ReqServiceId == kEplDllReqServiceUnspecified) {      // unspecified invite
-                                       if (EplDllkInstance_g.m_pTxBuffer[EPL_DLLK_TXFRAME_NONEPL].m_pbBuffer != NULL) {        // non-EPL frame does exist
-                                               // check if frame is not empty and not being filled
-                                               if (EplDllkInstance_g.
-                                                   m_pTxBuffer
-                                                   [EPL_DLLK_TXFRAME_NONEPL].
-                                                   m_uiTxMsgLen >
-                                                   EPL_DLLK_BUFLEN_FILLING) {
-                                                       /*if (EplDllkInstance_g.m_pTxBuffer[EPL_DLLK_TXFRAME_NMTREQ].m_uiTxMsgLen < EPL_DLLK_BUFLEN_MIN)
-                                                          {   // pad frame
-                                                          EplDllkInstance_g.m_pTxBuffer[EPL_DLLK_TXFRAME_NMTREQ].m_uiTxMsgLen = EPL_DLLK_BUFLEN_MIN;
-                                                          } */
-                                                       // memorize transmission
-                                                       pTxFrame =
-                                                           (tEplFrame *) 1;
-                                                       // send non-EPL frame
-                                                       Ret =
-                                                           EdrvSendTxMsg
-                                                           (&EplDllkInstance_g.
-                                                            m_pTxBuffer
-                                                            [EPL_DLLK_TXFRAME_NONEPL]);
-                                                       if (Ret !=
-                                                           kEplSuccessful) {
-                                                               goto Exit;
-                                                       }
-
-                                               }
-                                       }
-
-                               } else if (ReqServiceId == kEplDllReqServiceNo) {       // no async service requested -> do nothing
-                               }
-                       }
-#if EPL_DLL_PRES_READY_AFTER_SOA != FALSE
-                       if (pTxFrame == NULL) { // signal process function readiness of PRes frame
-                               Event.m_EventSink = kEplEventSinkDllk;
-                               Event.m_EventType = kEplEventTypeDllkPresReady;
-                               Event.m_uiSize = 0;
-                               Event.m_pArg = NULL;
-                               Ret = EplEventkPost(&Event);
-                       }
-#endif
-
-                       // inform PDO module
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_PDOK)) != 0)
-//            Ret = EplPdokCbSoa(&FrameInfo);
-#endif
-
-                       // $$$ put SrcNodeId, NMT state and NetTime as HeartbeatEvent into eventqueue
-
-                       // $$$ inform emergency protocol handling about flags
-                       break;
-               }
-
-       case kEplMsgTypeAsnd:
-               {
-                       // ASnd frame
-                       NmtEvent = kEplNmtEventDllCeAsnd;
-
-                       // ASnd service registered?
-                       uiAsndServiceId =
-                           (unsigned int)AmiGetByteFromLe(&pFrame->m_Data.
-                                                          m_Asnd.
-                                                          m_le_bServiceId);
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-                       if ((EplDllkInstance_g.m_DllState >= kEplDllMsNonCyclic)
-                           &&
-                           ((((tEplDllAsndServiceId) uiAsndServiceId) ==
-                             kEplDllAsndStatusResponse)
-                            || (((tEplDllAsndServiceId) uiAsndServiceId) == kEplDllAsndIdentResponse))) {      // StatusRes or IdentRes received
-                               uiNodeId =
-                                   AmiGetByteFromLe(&pFrame->m_le_bSrcNodeId);
-                               if ((EplDllkInstance_g.m_LastReqServiceId ==
-                                    ((tEplDllReqServiceId) uiAsndServiceId))
-                                   && (uiNodeId == EplDllkInstance_g.m_uiLastTargetNodeId)) {  // mark request as responded
-                                       EplDllkInstance_g.m_LastReqServiceId =
-                                           kEplDllReqServiceNo;
-                               }
-                               if (((tEplDllAsndServiceId) uiAsndServiceId) == kEplDllAsndIdentResponse) {     // memorize MAC address of CN for PReq
-                                       tEplDllkNodeInfo *pIntNodeInfo;
-
-                                       pIntNodeInfo =
-                                           EplDllkGetNodeInfo(uiNodeId);
-                                       if (pIntNodeInfo == NULL) {     // no node info structure available
-                                               Ret = kEplDllNoNodeInfo;
-                                       } else {
-                                               EPL_MEMCPY(pIntNodeInfo->
-                                                          m_be_abMacAddr,
-                                                          pFrame->
-                                                          m_be_abSrcMac, 6);
-                                       }
-                               }
-                               // forward Flag2 to asynchronous scheduler
-                               bFlag1 =
-                                   AmiGetByteFromLe(&pFrame->m_Data.m_Asnd.
-                                                    m_Payload.m_StatusResponse.
-                                                    m_le_bFlag2);
-                               Ret =
-                                   EplDllkCalAsyncSetPendingRequests(uiNodeId,
-                                                                     ((tEplDllAsyncReqPriority) ((bFlag1 & EPL_FRAME_FLAG2_PR) >> EPL_FRAME_FLAG2_PR_SHIFT)), (bFlag1 & EPL_FRAME_FLAG2_RS));
-                       }
-#endif
-
-                       if (uiAsndServiceId < EPL_DLL_MAX_ASND_SERVICE_ID) {    // ASnd service ID is valid
-                               if (EplDllkInstance_g.m_aAsndFilter[uiAsndServiceId] == kEplDllAsndFilterAny) { // ASnd service ID is registered
-                                       // forward frame via async receive FIFO to userspace
-                                       Ret =
-                                           EplDllkCalAsyncFrameReceived
-                                           (&FrameInfo);
-                               } else if (EplDllkInstance_g.m_aAsndFilter[uiAsndServiceId] == kEplDllAsndFilterLocal) {        // ASnd service ID is registered, but only local node ID or broadcasts
-                                       // shall be forwarded
-                                       uiNodeId =
-                                           AmiGetByteFromLe(&pFrame->
-                                                            m_le_bDstNodeId);
-                                       if ((uiNodeId ==
-                                            EplDllkInstance_g.m_DllConfigParam.
-                                            m_uiNodeId)
-                                           || (uiNodeId == EPL_C_ADR_BROADCAST)) {     // ASnd frame is intended for us
-                                               // forward frame via async receive FIFO to userspace
-                                               Ret =
-                                                   EplDllkCalAsyncFrameReceived
-                                                   (&FrameInfo);
-                                       }
-                               }
-                       }
-                       break;
-               }
-
-       default:
-               {
-                       break;
-               }
-       }
-
-       if (NmtEvent != kEplNmtEventNoEvent) {  // event for DLL and NMT state machine generated
-               Ret = EplDllkChangeState(NmtEvent, NmtState);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-
-               if ((NmtEvent != kEplNmtEventDllCeAsnd)
-                   && ((NmtState <= kEplNmtCsPreOperational1) || (NmtEvent != kEplNmtEventDllCePres))) {       // NMT state machine is not interested in ASnd frames and PRes frames when not CsNotActive or CsPreOp1
-                       // inform NMT module
-                       Event.m_EventSink = kEplEventSinkNmtk;
-                       Event.m_EventType = kEplEventTypeNmtEvent;
-                       Event.m_uiSize = sizeof(NmtEvent);
-                       Event.m_pArg = &NmtEvent;
-                       Ret = EplEventkPost(&Event);
-               }
-       }
-
-      Exit:
-       if (Ret != kEplSuccessful) {
-               u32 dwArg;
-
-               BENCHMARK_MOD_02_TOGGLE(9);
-
-               dwArg = EplDllkInstance_g.m_DllState | (NmtEvent << 8);
-
-               // Error event for API layer
-               Ret = EplEventkPostError(kEplEventSourceDllk,
-                                        Ret, sizeof(dwArg), &dwArg);
-       }
-       BENCHMARK_MOD_02_RESET(3);
-       return;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkCbFrameTransmitted()
-//
-// Description: called from EdrvInterruptHandler().
-//              It signals
-//
-// Parameters:  pRxBuffer_p             = receive buffer structure
-//
-// Returns:     (none)
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static void EplDllkCbFrameTransmitted(tEdrvTxBuffer * pTxBuffer_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplEvent Event;
-       tEplDllAsyncReqPriority Priority;
-       tEplNmtState NmtState;
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_PDOK)) != 0) \
-    && (EPL_DLL_PRES_READY_AFTER_SOC == FALSE)
-       tEplFrameInfo FrameInfo;
-#endif
-
-       NmtState = EplNmtkGetNmtState();
-
-       if (NmtState <= kEplNmtGsResetConfiguration) {
-               goto Exit;
-       }
-
-       if ((pTxBuffer_p - EplDllkInstance_g.m_pTxBuffer) == EPL_DLLK_TXFRAME_NMTREQ) { // frame from NMT request FIFO sent
-               // mark Tx-buffer as empty
-               pTxBuffer_p->m_uiTxMsgLen = EPL_DLLK_BUFLEN_EMPTY;
-
-               // post event to DLL
-               Priority = kEplDllAsyncReqPrioNmt;
-               Event.m_EventSink = kEplEventSinkDllk;
-               Event.m_EventType = kEplEventTypeDllkFillTx;
-               EPL_MEMSET(&Event.m_NetTime, 0x00, sizeof(Event.m_NetTime));
-               Event.m_pArg = &Priority;
-               Event.m_uiSize = sizeof(Priority);
-               Ret = EplEventkPost(&Event);
-       } else if ((pTxBuffer_p - EplDllkInstance_g.m_pTxBuffer) == EPL_DLLK_TXFRAME_NONEPL) {  // frame from generic priority FIFO sent
-               // mark Tx-buffer as empty
-               pTxBuffer_p->m_uiTxMsgLen = EPL_DLLK_BUFLEN_EMPTY;
-
-               // post event to DLL
-               Priority = kEplDllAsyncReqPrioGeneric;
-               Event.m_EventSink = kEplEventSinkDllk;
-               Event.m_EventType = kEplEventTypeDllkFillTx;
-               EPL_MEMSET(&Event.m_NetTime, 0x00, sizeof(Event.m_NetTime));
-               Event.m_pArg = &Priority;
-               Event.m_uiSize = sizeof(Priority);
-               Ret = EplEventkPost(&Event);
-       }
-#if ((((EPL_MODULE_INTEGRATION) & (EPL_MODULE_PDOK)) != 0) \
-    && (EPL_DLL_PRES_READY_AFTER_SOC == FALSE)) \
-    || (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-       else if ((pTxBuffer_p->m_EplMsgType == kEplMsgTypePreq)
-                || (pTxBuffer_p->m_EplMsgType == kEplMsgTypePres)) {   // PRes resp. PReq frame sent
-
-#if ((((EPL_MODULE_INTEGRATION) & (EPL_MODULE_PDOK)) != 0) \
-            && (EPL_DLL_PRES_READY_AFTER_SOC == FALSE))
-               {
-                       // inform PDO module
-                       FrameInfo.m_pFrame =
-                           (tEplFrame *) pTxBuffer_p->m_pbBuffer;
-                       FrameInfo.m_uiFrameSize = pTxBuffer_p->m_uiMaxBufferLen;
-                       Ret = EplPdokCbPdoTransmitted(&FrameInfo);
-               }
-#endif
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-               {
-                       // if own Pres on MN, trigger SoA
-                       if ((NmtState >= kEplNmtMsPreOperational2)
-                           && (pTxBuffer_p ==
-                               &EplDllkInstance_g.
-                               m_pTxBuffer[EPL_DLLK_TXFRAME_PRES])) {
-                               Ret =
-                                   EplDllkChangeState(kEplNmtEventDllMeSoaTrig,
-                                                      NmtState);
-                       }
-               }
-#endif
-
-#if EPL_DLL_PRES_READY_AFTER_SOA != FALSE
-               goto Exit;
-#endif
-       }
-#endif
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-       else if (pTxBuffer_p->m_EplMsgType == kEplMsgTypeSoa) { // SoA frame sent
-               tEplNmtEvent NmtEvent = kEplNmtEventDllMeSoaSent;
-
-               // check if we are invited
-               if (EplDllkInstance_g.m_uiLastTargetNodeId ==
-                   EplDllkInstance_g.m_DllConfigParam.m_uiNodeId) {
-                       tEplFrame *pTxFrame;
-
-                       if (EplDllkInstance_g.m_LastReqServiceId == kEplDllReqServiceStatus) {  // StatusRequest
-                               if (EplDllkInstance_g.m_pTxBuffer[EPL_DLLK_TXFRAME_STATUSRES].m_pbBuffer != NULL) {     // StatusRes does exist
-
-                                       pTxFrame =
-                                           (tEplFrame *) EplDllkInstance_g.
-                                           m_pTxBuffer
-                                           [EPL_DLLK_TXFRAME_STATUSRES].
-                                           m_pbBuffer;
-                                       // update StatusRes frame (NMT state, EN, EC, RS, PR flags)
-                                       AmiSetByteToLe(&pTxFrame->m_Data.m_Asnd.
-                                                      m_Payload.
-                                                      m_StatusResponse.
-                                                      m_le_bNmtStatus,
-                                                      (u8) NmtState);
-                                       AmiSetByteToLe(&pTxFrame->m_Data.m_Asnd.
-                                                      m_Payload.
-                                                      m_StatusResponse.
-                                                      m_le_bFlag1,
-                                                      EplDllkInstance_g.
-                                                      m_bFlag1);
-                                       AmiSetByteToLe(&pTxFrame->m_Data.m_Asnd.
-                                                      m_Payload.
-                                                      m_StatusResponse.
-                                                      m_le_bFlag2,
-                                                      EplDllkInstance_g.
-                                                      m_bFlag2);
-                                       // send StatusRes
-                                       Ret =
-                                           EdrvSendTxMsg(&EplDllkInstance_g.
-                                                         m_pTxBuffer
-                                                         [EPL_DLLK_TXFRAME_STATUSRES]);
-                                       if (Ret != kEplSuccessful) {
-                                               goto Exit;
-                                       }
-                                       TGT_DBG_SIGNAL_TRACE_POINT(8);
-
-                               }
-                       } else if (EplDllkInstance_g.m_LastReqServiceId == kEplDllReqServiceIdent) {    // IdentRequest
-                               if (EplDllkInstance_g.m_pTxBuffer[EPL_DLLK_TXFRAME_IDENTRES].m_pbBuffer != NULL) {      // IdentRes does exist
-                                       pTxFrame =
-                                           (tEplFrame *) EplDllkInstance_g.
-                                           m_pTxBuffer
-                                           [EPL_DLLK_TXFRAME_IDENTRES].
-                                           m_pbBuffer;
-                                       // update IdentRes frame (NMT state, RS, PR flags)
-                                       AmiSetByteToLe(&pTxFrame->m_Data.m_Asnd.
-                                                      m_Payload.
-                                                      m_IdentResponse.
-                                                      m_le_bNmtStatus,
-                                                      (u8) NmtState);
-                                       AmiSetByteToLe(&pTxFrame->m_Data.m_Asnd.
-                                                      m_Payload.
-                                                      m_IdentResponse.
-                                                      m_le_bFlag2,
-                                                      EplDllkInstance_g.
-                                                      m_bFlag2);
-                                       // send IdentRes
-                                       Ret =
-                                           EdrvSendTxMsg(&EplDllkInstance_g.
-                                                         m_pTxBuffer
-                                                         [EPL_DLLK_TXFRAME_IDENTRES]);
-                                       if (Ret != kEplSuccessful) {
-                                               goto Exit;
-                                       }
-                                       TGT_DBG_SIGNAL_TRACE_POINT(7);
-                               }
-                       } else if (EplDllkInstance_g.m_LastReqServiceId == kEplDllReqServiceNmtRequest) {       // NmtRequest
-                               if (EplDllkInstance_g.m_pTxBuffer[EPL_DLLK_TXFRAME_NMTREQ].m_pbBuffer != NULL) {        // NmtRequest does exist
-                                       // check if frame is not empty and not being filled
-                                       if (EplDllkInstance_g.
-                                           m_pTxBuffer
-                                           [EPL_DLLK_TXFRAME_NMTREQ].
-                                           m_uiTxMsgLen >
-                                           EPL_DLLK_BUFLEN_FILLING) {
-                                               // check if this frame is a NMT command,
-                                               // then forward this frame back to NmtMnu module,
-                                               // because it needs the time, when this frame is
-                                               // actually sent, to start the timer for monitoring
-                                               // the NMT state change.
-
-                                               pTxFrame =
-                                                   (tEplFrame *)
-                                                   EplDllkInstance_g.
-                                                   m_pTxBuffer
-                                                   [EPL_DLLK_TXFRAME_NMTREQ].
-                                                   m_pbBuffer;
-                                               if ((AmiGetByteFromLe
-                                                    (&pTxFrame->
-                                                     m_le_bMessageType)
-                                                    == (u8) kEplMsgTypeAsnd)
-                                                   &&
-                                                   (AmiGetByteFromLe
-                                                    (&pTxFrame->m_Data.m_Asnd.
-                                                     m_le_bServiceId)
-                                                    == (u8) kEplDllAsndNmtCommand)) {  // post event directly to NmtMnu module
-                                                       Event.m_EventSink =
-                                                           kEplEventSinkNmtMnu;
-                                                       Event.m_EventType =
-                                                           kEplEventTypeNmtMnuNmtCmdSent;
-                                                       Event.m_uiSize =
-                                                           EplDllkInstance_g.
-                                                           m_pTxBuffer
-                                                           [EPL_DLLK_TXFRAME_NMTREQ].
-                                                           m_uiTxMsgLen;
-                                                       Event.m_pArg = pTxFrame;
-                                                       Ret =
-                                                           EplEventkPost
-                                                           (&Event);
-
-                                               }
-                                               // send NmtRequest
-                                               Ret =
-                                                   EdrvSendTxMsg
-                                                   (&EplDllkInstance_g.
-                                                    m_pTxBuffer
-                                                    [EPL_DLLK_TXFRAME_NMTREQ]);
-                                               if (Ret != kEplSuccessful) {
-                                                       goto Exit;
-                                               }
-
-                                       }
-                               }
-
-                       } else if (EplDllkInstance_g.m_LastReqServiceId == kEplDllReqServiceUnspecified) {      // unspecified invite
-                               if (EplDllkInstance_g.m_pTxBuffer[EPL_DLLK_TXFRAME_NONEPL].m_pbBuffer != NULL) {        // non-EPL frame does exist
-                                       // check if frame is not empty and not being filled
-                                       if (EplDllkInstance_g.
-                                           m_pTxBuffer
-                                           [EPL_DLLK_TXFRAME_NONEPL].
-                                           m_uiTxMsgLen >
-                                           EPL_DLLK_BUFLEN_FILLING) {
-                                               // send non-EPL frame
-                                               Ret =
-                                                   EdrvSendTxMsg
-                                                   (&EplDllkInstance_g.
-                                                    m_pTxBuffer
-                                                    [EPL_DLLK_TXFRAME_NONEPL]);
-                                               if (Ret != kEplSuccessful) {
-                                                       goto Exit;
-                                               }
-
-                                       }
-                               }
-                       }
-                       // ASnd frame was sent, remove the request
-                       EplDllkInstance_g.m_LastReqServiceId =
-                           kEplDllReqServiceNo;
-               }
-               // forward event to ErrorHandler and PDO module
-               Event.m_EventSink = kEplEventSinkNmtk;
-               Event.m_EventType = kEplEventTypeNmtEvent;
-               Event.m_uiSize = sizeof(NmtEvent);
-               Event.m_pArg = &NmtEvent;
-               Ret = EplEventkPost(&Event);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-       }
-#endif
-
-#if EPL_DLL_PRES_READY_AFTER_SOA != FALSE
-       else {                  // d.k.: Why that else? on CN it is entered on IdentRes and StatusRes
-               goto Exit;
-       }
-
-       // signal process function readiness of PRes frame
-       Event.m_EventSink = kEplEventSinkDllk;
-       Event.m_EventType = kEplEventTypeDllkPresReady;
-       Event.m_uiSize = 0;
-       Event.m_pArg = NULL;
-       Ret = EplEventkPost(&Event);
-
-#endif
-
-      Exit:
-       if (Ret != kEplSuccessful) {
-               u32 dwArg;
-
-               BENCHMARK_MOD_02_TOGGLE(9);
-
-               dwArg =
-                   EplDllkInstance_g.m_DllState | (pTxBuffer_p->
-                                                   m_EplMsgType << 16);
-
-               // Error event for API layer
-               Ret = EplEventkPostError(kEplEventSourceDllk,
-                                        Ret, sizeof(dwArg), &dwArg);
-       }
-
-       return;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkCheckFrame()
-//
-// Description: check frame and set missing information
-//
-// Parameters:  pFrame_p                = ethernet frame
-//              uiFrameSize_p           = size of frame
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplDllkCheckFrame(tEplFrame * pFrame_p,
-                                   unsigned int uiFrameSize_p)
-{
-       tEplMsgType MsgType;
-       u16 wEtherType;
-
-       // check frame
-       if (pFrame_p != NULL) {
-               // check SrcMAC
-               if (AmiGetQword48FromBe(pFrame_p->m_be_abSrcMac) == 0) {
-                       // source MAC address
-                       EPL_MEMCPY(&pFrame_p->m_be_abSrcMac[0],
-                                  &EplDllkInstance_g.m_be_abSrcMac[0], 6);
-               }
-               // check ethertype
-               wEtherType = AmiGetWordFromBe(&pFrame_p->m_be_wEtherType);
-               if (wEtherType == 0) {
-                       // assume EPL frame
-                       wEtherType = EPL_C_DLL_ETHERTYPE_EPL;
-                       AmiSetWordToBe(&pFrame_p->m_be_wEtherType, wEtherType);
-               }
-
-               if (wEtherType == EPL_C_DLL_ETHERTYPE_EPL) {
-                       // source node ID
-                       AmiSetByteToLe(&pFrame_p->m_le_bSrcNodeId,
-                                      (u8) EplDllkInstance_g.
-                                      m_DllConfigParam.m_uiNodeId);
-
-                       // check message type
-                       MsgType =
-                           AmiGetByteFromLe(&pFrame_p->m_le_bMessageType);
-                       if (MsgType == 0) {
-                               MsgType = kEplMsgTypeAsnd;
-                               AmiSetByteToLe(&pFrame_p->m_le_bMessageType,
-                                              (u8) MsgType);
-                       }
-
-                       if (MsgType == kEplMsgTypeAsnd) {
-                               // destination MAC address
-                               AmiSetQword48ToBe(&pFrame_p->m_be_abDstMac[0],
-                                                 EPL_C_DLL_MULTICAST_ASND);
-                       }
-
-               }
-       }
-
-       return kEplSuccessful;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkCbCnTimer()
-//
-// Description: called by timer module. It monitors the EPL cycle when it is a CN.
-//
-// Parameters:  pEventArg_p             = timer event argument
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-#if EPL_TIMER_USE_HIGHRES != FALSE
-static tEplKernel EplDllkCbCnTimer(tEplTimerEventArg *pEventArg_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplNmtState NmtState;
-
-#if EPL_TIMER_USE_HIGHRES != FALSE
-       if (pEventArg_p->m_TimerHdl != EplDllkInstance_g.m_TimerHdlCycle) {     // zombie callback
-               // just exit
-               goto Exit;
-       }
-#endif
-
-       NmtState = EplNmtkGetNmtState();
-
-       if (NmtState <= kEplNmtGsResetConfiguration) {
-               goto Exit;
-       }
-
-       Ret = EplDllkChangeState(kEplNmtEventDllCeFrameTimeout, NmtState);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // 2008/10/15 d.k. reprogramming of timer not necessary,
-       // because it will be programmed, when SoC is received.
-/*
-    // reprogram timer
-#if EPL_TIMER_USE_HIGHRES != FALSE
-    if ((NmtState > kEplNmtCsPreOperational1)
-        && (EplDllkInstance_g.m_ullFrameTimeout != 0))
-    {
-        Ret = EplTimerHighReskModifyTimerNs(&EplDllkInstance_g.m_TimerHdlCycle, EplDllkInstance_g.m_ullFrameTimeout, EplDllkCbCnTimer, 0L, FALSE);
-    }
-#endif
-*/
-
-      Exit:
-       if (Ret != kEplSuccessful) {
-               u32 dwArg;
-
-               BENCHMARK_MOD_02_TOGGLE(9);
-
-               dwArg =
-                   EplDllkInstance_g.
-                   m_DllState | (kEplNmtEventDllCeFrameTimeout << 8);
-
-               // Error event for API layer
-               Ret = EplEventkPostError(kEplEventSourceDllk,
-                                        Ret, sizeof(dwArg), &dwArg);
-       }
-
-       return Ret;
-}
-#endif
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkCbMnTimerCycle()
-//
-// Description: called by timer module. It triggers the SoC when it is a MN.
-//
-// Parameters:  pEventArg_p             = timer event argument
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplDllkCbMnTimerCycle(tEplTimerEventArg *pEventArg_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplNmtState NmtState;
-
-#if EPL_TIMER_USE_HIGHRES != FALSE
-       if (pEventArg_p->m_TimerHdl != EplDllkInstance_g.m_TimerHdlCycle) {     // zombie callback
-               // just exit
-               goto Exit;
-       }
-#endif
-
-       NmtState = EplNmtkGetNmtState();
-
-       if (NmtState <= kEplNmtGsResetConfiguration) {
-               goto Exit;
-       }
-
-       Ret = EplDllkChangeState(kEplNmtEventDllMeSocTrig, NmtState);
-
-      Exit:
-       if (Ret != kEplSuccessful) {
-               u32 dwArg;
-
-               BENCHMARK_MOD_02_TOGGLE(9);
-
-               dwArg =
-                   EplDllkInstance_g.
-                   m_DllState | (kEplNmtEventDllMeSocTrig << 8);
-
-               // Error event for API layer
-               Ret = EplEventkPostError(kEplEventSourceDllk,
-                                        Ret, sizeof(dwArg), &dwArg);
-       }
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkCbMnTimerResponse()
-//
-// Description: called by timer module. It monitors the PRes timeout.
-//
-// Parameters:  pEventArg_p             = timer event argument
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplDllkCbMnTimerResponse(tEplTimerEventArg *pEventArg_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplNmtState NmtState;
-
-#if EPL_TIMER_USE_HIGHRES != FALSE
-       if (pEventArg_p->m_TimerHdl != EplDllkInstance_g.m_TimerHdlResponse) {  // zombie callback
-               // just exit
-               goto Exit;
-       }
-#endif
-
-       NmtState = EplNmtkGetNmtState();
-
-       if (NmtState <= kEplNmtGsResetConfiguration) {
-               goto Exit;
-       }
-
-       Ret = EplDllkChangeState(kEplNmtEventDllMePresTimeout, NmtState);
-
-      Exit:
-       if (Ret != kEplSuccessful) {
-               u32 dwArg;
-
-               BENCHMARK_MOD_02_TOGGLE(9);
-
-               dwArg =
-                   EplDllkInstance_g.
-                   m_DllState | (kEplNmtEventDllMePresTimeout << 8);
-
-               // Error event for API layer
-               Ret = EplEventkPostError(kEplEventSourceDllk,
-                                        Ret, sizeof(dwArg), &dwArg);
-       }
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkGetNodeInfo()
-//
-// Description: returns node info structure of the specified node.
-//
-// Parameters:  uiNodeId_p              = node ID
-//
-// Returns:     tEplDllkNodeInfo*       = pointer to internal node info structure
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplDllkNodeInfo *EplDllkGetNodeInfo(unsigned int uiNodeId_p)
-{
-       // $$$ d.k.: use hash algorithm to retrieve the appropriate node info structure
-       //           if size of array is less than 254.
-       uiNodeId_p--;           // node ID starts at 1 but array at 0
-       if (uiNodeId_p >= tabentries(EplDllkInstance_g.m_aNodeInfo)) {
-               return NULL;
-       } else {
-               return &EplDllkInstance_g.m_aNodeInfo[uiNodeId_p];
-       }
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkMnSendSoa()
-//
-// Description: it updates and transmits the SoA.
-//
-// Parameters:  NmtState_p              = current NMT state
-//              pDllStateProposed_p     = proposed DLL state
-//              fEnableInvitation_p     = enable invitation for asynchronous phase
-//                                        it will be disabled for EPL_C_DLL_PREOP1_START_CYCLES SoAs
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplDllkMnSendSoa(tEplNmtState NmtState_p,
-                                  tEplDllState * pDllStateProposed_p,
-                                  BOOL fEnableInvitation_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEdrvTxBuffer *pTxBuffer = NULL;
-       tEplFrame *pTxFrame;
-       tEplDllkNodeInfo *pNodeInfo;
-
-       *pDllStateProposed_p = kEplDllMsNonCyclic;
-
-       pTxBuffer = &EplDllkInstance_g.m_pTxBuffer[EPL_DLLK_TXFRAME_SOA];
-       if (pTxBuffer->m_pbBuffer != NULL) {    // SoA does exist
-               pTxFrame = (tEplFrame *) pTxBuffer->m_pbBuffer;
-
-               if (fEnableInvitation_p != FALSE) {     // fetch target of asynchronous phase
-                       if (EplDllkInstance_g.m_bFlag2 == 0) {  // own queues are empty
-                               EplDllkInstance_g.m_LastReqServiceId =
-                                   kEplDllReqServiceNo;
-                       } else if (((tEplDllAsyncReqPriority) (EplDllkInstance_g.m_bFlag2 >> EPL_FRAME_FLAG2_PR_SHIFT)) == kEplDllAsyncReqPrioNmt) {    // frames in own NMT request queue available
-                               EplDllkInstance_g.m_LastReqServiceId =
-                                   kEplDllReqServiceNmtRequest;
-                       } else {
-                               EplDllkInstance_g.m_LastReqServiceId =
-                                   kEplDllReqServiceUnspecified;
-                       }
-                       Ret =
-                           EplDllkCalAsyncGetSoaRequest(&EplDllkInstance_g.
-                                                        m_LastReqServiceId,
-                                                        &EplDllkInstance_g.
-                                                        m_uiLastTargetNodeId);
-                       if (Ret != kEplSuccessful) {
-                               goto Exit;
-                       }
-                       if (EplDllkInstance_g.m_LastReqServiceId != kEplDllReqServiceNo) {      // asynchronous phase will be assigned to one node
-                               if (EplDllkInstance_g.m_uiLastTargetNodeId == EPL_C_ADR_INVALID) {      // exchange invalid node ID with local node ID
-                                       EplDllkInstance_g.m_uiLastTargetNodeId =
-                                           EplDllkInstance_g.m_DllConfigParam.
-                                           m_uiNodeId;
-                                       // d.k. DLL state WaitAsndTrig is not helpful;
-                                       //      so just step over to WaitSocTrig,
-                                       //      because own ASnd is sent automatically in CbFrameTransmitted() after SoA.
-                                       //*pDllStateProposed_p = kEplDllMsWaitAsndTrig;
-                                       *pDllStateProposed_p =
-                                           kEplDllMsWaitSocTrig;
-                               } else {        // assignment to CN
-                                       *pDllStateProposed_p =
-                                           kEplDllMsWaitAsnd;
-                               }
-
-                               pNodeInfo =
-                                   EplDllkGetNodeInfo(EplDllkInstance_g.
-                                                      m_uiLastTargetNodeId);
-                               if (pNodeInfo == NULL) {        // no node info structure available
-                                       Ret = kEplDllNoNodeInfo;
-                                       goto Exit;
-                               }
-                               // update frame (EA, ER flags)
-                               AmiSetByteToLe(&pTxFrame->m_Data.m_Soa.
-                                              m_le_bFlag1,
-                                              pNodeInfo->
-                                              m_bSoaFlag1 & (EPL_FRAME_FLAG1_EA
-                                                             |
-                                                             EPL_FRAME_FLAG1_ER));
-                       } else {        // no assignment of asynchronous phase
-                               *pDllStateProposed_p = kEplDllMsWaitSocTrig;
-                               EplDllkInstance_g.m_uiLastTargetNodeId =
-                                   EPL_C_ADR_INVALID;
-                       }
-
-                       // update frame (target)
-                       AmiSetByteToLe(&pTxFrame->m_Data.m_Soa.
-                                      m_le_bReqServiceId,
-                                      (u8) EplDllkInstance_g.
-                                      m_LastReqServiceId);
-                       AmiSetByteToLe(&pTxFrame->m_Data.m_Soa.
-                                      m_le_bReqServiceTarget,
-                                      (u8) EplDllkInstance_g.
-                                      m_uiLastTargetNodeId);
-
-               } else {        // invite nobody
-                       // update frame (target)
-                       AmiSetByteToLe(&pTxFrame->m_Data.m_Soa.
-                                      m_le_bReqServiceId, (u8) 0);
-                       AmiSetByteToLe(&pTxFrame->m_Data.m_Soa.
-                                      m_le_bReqServiceTarget, (u8) 0);
-               }
-
-               // update frame (NMT state)
-               AmiSetByteToLe(&pTxFrame->m_Data.m_Soa.m_le_bNmtStatus,
-                              (u8) NmtState_p);
-
-               // send SoA frame
-               Ret = EdrvSendTxMsg(pTxBuffer);
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkMnSendSoc()
-//
-// Description: it updates and transmits the SoA.
-//
-// Parameters:  (none)
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplDllkMnSendSoc(void)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEdrvTxBuffer *pTxBuffer = NULL;
-       tEplFrame *pTxFrame;
-       tEplEvent Event;
-
-       pTxBuffer = &EplDllkInstance_g.m_pTxBuffer[EPL_DLLK_TXFRAME_SOC];
-       if (pTxBuffer->m_pbBuffer != NULL) {    // SoC does exist
-               pTxFrame = (tEplFrame *) pTxBuffer->m_pbBuffer;
-
-               // $$$ update NetTime
-
-               // send SoC frame
-               Ret = EdrvSendTxMsg(pTxBuffer);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-               // trigger synchronous task
-               Event.m_EventSink = kEplEventSinkSync;
-               Event.m_EventType = kEplEventTypeSync;
-               Event.m_uiSize = 0;
-               Ret = EplEventkPost(&Event);
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkMnSendPreq()
-//
-// Description: it updates and transmits the PReq for the next isochronous CN
-//              or own PRes if enabled.
-//
-// Parameters:  NmtState_p              = current NMT state
-//              pDllStateProposed_p     = proposed DLL state
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplDllkMnSendPreq(tEplNmtState NmtState_p,
-                                   tEplDllState * pDllStateProposed_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEdrvTxBuffer *pTxBuffer = NULL;
-       tEplFrame *pTxFrame;
-       u8 bFlag1 = 0;
-
-       if (EplDllkInstance_g.m_pCurNodeInfo == NULL) { // start with first isochronous CN
-               EplDllkInstance_g.m_pCurNodeInfo =
-                   EplDllkInstance_g.m_pFirstNodeInfo;
-       } else {                // iterate to next isochronous CN
-               EplDllkInstance_g.m_pCurNodeInfo =
-                   EplDllkInstance_g.m_pCurNodeInfo->m_pNextNodeInfo;
-       }
-
-       if (EplDllkInstance_g.m_pCurNodeInfo == NULL) { // last isochronous CN reached
-               Ret = EplDllkMnSendSoa(NmtState_p, pDllStateProposed_p, TRUE);
-               goto Exit;
-       } else {
-               pTxBuffer = EplDllkInstance_g.m_pCurNodeInfo->m_pPreqTxBuffer;
-               bFlag1 =
-                   EplDllkInstance_g.m_pCurNodeInfo->
-                   m_bSoaFlag1 & EPL_FRAME_FLAG1_EA;
-               *pDllStateProposed_p = kEplDllMsWaitPres;
-
-               // start PRes Timer
-               // $$$ d.k.: maybe move this call to CbFrameTransmitted(), because the time should run from there
-#if EPL_TIMER_USE_HIGHRES != FALSE
-               Ret =
-                   EplTimerHighReskModifyTimerNs(&EplDllkInstance_g.
-                                                 m_TimerHdlResponse,
-                                                 EplDllkInstance_g.
-                                                 m_pCurNodeInfo->
-                                                 m_dwPresTimeout,
-                                                 EplDllkCbMnTimerResponse, 0L,
-                                                 FALSE);
-#endif
-       }
-
-       if (pTxBuffer == NULL) {        // PReq does not exist
-               Ret = kEplDllTxBufNotReady;
-               goto Exit;
-       }
-
-       pTxFrame = (tEplFrame *) pTxBuffer->m_pbBuffer;
-
-       if (pTxFrame != NULL) { // PReq does exist
-               if (NmtState_p == kEplNmtMsOperational) {       // leave RD flag untouched
-                       bFlag1 |=
-                           AmiGetByteFromLe(&pTxFrame->m_Data.m_Preq.
-                                            m_le_bFlag1) & EPL_FRAME_FLAG1_RD;
-               }
-
-               if (pTxBuffer == &EplDllkInstance_g.m_pTxBuffer[EPL_DLLK_TXFRAME_PRES]) {       // PRes of MN will be sent
-                       // update NMT state
-                       AmiSetByteToLe(&pTxFrame->m_Data.m_Pres.m_le_bNmtStatus,
-                                      (u8) NmtState_p);
-                       *pDllStateProposed_p = kEplDllMsWaitSoaTrig;
-               }
-               // $$$ d.k. set EPL_FRAME_FLAG1_MS if necessary
-               // update frame (Flag1)
-               AmiSetByteToLe(&pTxFrame->m_Data.m_Preq.m_le_bFlag1, bFlag1);
-
-               // calculate frame size from payload size
-               pTxBuffer->m_uiTxMsgLen =
-                   AmiGetWordFromLe(&pTxFrame->m_Data.m_Preq.m_le_wSize) + 24;
-
-               // send PReq frame
-               Ret = EdrvSendTxMsg(pTxBuffer);
-       } else {
-               Ret = kEplDllTxFrameInvalid;
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkAsyncFrameNotReceived()
-//
-// Description: passes empty ASnd frame to receive FIFO.
-//              It will be called only for frames with registered AsndServiceIds
-//              (only kEplDllAsndFilterAny).
-//
-// Parameters:  none
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplDllkAsyncFrameNotReceived(tEplDllReqServiceId
-                                              ReqServiceId_p,
-                                              unsigned int uiNodeId_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       u8 abBuffer[18];
-       tEplFrame *pFrame = (tEplFrame *) abBuffer;
-       tEplFrameInfo FrameInfo;
-
-       // check if previous SoA invitation was not answered
-       switch (ReqServiceId_p) {
-       case kEplDllReqServiceIdent:
-       case kEplDllReqServiceStatus:
-               // ASnd service registered?
-               if (EplDllkInstance_g.m_aAsndFilter[ReqServiceId_p] == kEplDllAsndFilterAny) {  // ASnd service ID is registered
-                       AmiSetByteToLe(&pFrame->m_le_bSrcNodeId,
-                                      (u8) uiNodeId_p);
-                       // EPL MsgType ASnd
-                       AmiSetByteToLe(&pFrame->m_le_bMessageType,
-                                      (u8) kEplMsgTypeAsnd);
-                       // ASnd Service ID
-                       AmiSetByteToLe(&pFrame->m_Data.m_Asnd.m_le_bServiceId,
-                                      (u8) ReqServiceId_p);
-                       // create frame info structure
-                       FrameInfo.m_pFrame = pFrame;
-                       FrameInfo.m_uiFrameSize = 18;   // empty non existing ASnd frame
-                       // forward frame via async receive FIFO to userspace
-                       Ret = EplDllkCalAsyncFrameReceived(&FrameInfo);
-               }
-               break;
-       default:
-               // no invitation issued or it was successfully answered or it is uninteresting
-               break;
-       }
-
-       return Ret;
-}
-
-#endif //(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-
-#endif // #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLK)) != 0)
-// EOF
diff --git a/drivers/staging/epl/EplDllkCal.c b/drivers/staging/epl/EplDllkCal.c
deleted file mode 100644 (file)
index 0e283d5..0000000
+++ /dev/null
@@ -1,1260 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for kernel DLL Communication Abstraction Layer module
-
-  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: EplDllkCal.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.7 $  $Date: 2008/11/13 17:13:09 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/15 d.k.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#include "kernel/EplDllkCal.h"
-#include "kernel/EplDllk.h"
-#include "kernel/EplEventk.h"
-
-#include "EplDllCal.h"
-#ifndef EPL_NO_FIFO
-#include "SharedBuff.h"
-#endif
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLK)) != 0)
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-#ifndef min
-#define min(a,b)            (((a) < (b)) ? (a) : (b))
-#endif
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          C L A S S  EplDllkCal                                          */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-//
-// Description:
-//
-//
-/***************************************************************************/
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   D E F I N I T I O N S                          //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-#define EPL_DLLKCAL_MAX_QUEUES  5      // CnGenReq, CnNmtReq, {MnGenReq, MnNmtReq}, MnIdentReq, MnStatusReq
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-typedef struct {
-#ifndef EPL_NO_FIFO
-//    tShbInstance    m_ShbInstanceRx;      // FIFO for Rx ASnd frames
-       tShbInstance m_ShbInstanceTxNmt;        // FIFO for Tx frames with NMT request priority
-       tShbInstance m_ShbInstanceTxGen;        // FIFO for Tx frames with generic priority
-#else
-       unsigned int m_uiFrameSizeNmt;
-       u8 m_abFrameNmt[1500];
-       unsigned int m_uiFrameSizeGen;
-       u8 m_abFrameGen[1500];
-#endif
-
-       tEplDllkCalStatistics m_Statistics;
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-       // IdentRequest queue with CN node IDs
-       unsigned int m_auiQueueIdentReq[EPL_D_NMT_MaxCNNumber_U8 + 1];  // 1 entry is reserved to distinguish between full and empty
-       unsigned int m_uiWriteIdentReq;
-       unsigned int m_uiReadIdentReq;
-
-       // StatusRequest queue with CN node IDs
-       unsigned int m_auiQueueStatusReq[EPL_D_NMT_MaxCNNumber_U8 + 1]; // 1 entry is reserved to distinguish between full and empty
-       unsigned int m_uiWriteStatusReq;
-       unsigned int m_uiReadStatusReq;
-
-       unsigned int m_auiQueueCnRequests[254 * 2];
-       // first 254 entries represent the generic requests of the corresponding node
-       // second 254 entries represent the NMT requests of the corresponding node
-       unsigned int m_uiNextQueueCnRequest;
-       unsigned int m_uiNextRequestQueue;
-#endif
-
-} tEplDllkCalInstance;
-
-//---------------------------------------------------------------------------
-// local vars
-//---------------------------------------------------------------------------
-
-// if no dynamic memory allocation shall be used
-// define structures statically
-static tEplDllkCalInstance EplDllkCalInstance_g;
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkCalAddInstance()
-//
-// Description: add and initialize new instance of DLL CAL module
-//
-// Parameters:  none
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkCalAddInstance(void)
-{
-       tEplKernel Ret = kEplSuccessful;
-#ifndef EPL_NO_FIFO
-       tShbError ShbError;
-       unsigned int fShbNewCreated;
-
-/*    ShbError = ShbCirAllocBuffer (EPL_DLLCAL_BUFFER_SIZE_RX, EPL_DLLCAL_BUFFER_ID_RX,
-        &EplDllkCalInstance_g.m_ShbInstanceRx, &fShbNewCreated);
-    // returns kShbOk, kShbOpenMismatch, kShbOutOfMem or kShbInvalidArg
-
-    if (ShbError != kShbOk)
-    {
-        Ret = kEplNoResource;
-    }
-*/
-       ShbError =
-           ShbCirAllocBuffer(EPL_DLLCAL_BUFFER_SIZE_TX_NMT,
-                             EPL_DLLCAL_BUFFER_ID_TX_NMT,
-                             &EplDllkCalInstance_g.m_ShbInstanceTxNmt,
-                             &fShbNewCreated);
-       // returns kShbOk, kShbOpenMismatch, kShbOutOfMem or kShbInvalidArg
-
-       if (ShbError != kShbOk) {
-               Ret = kEplNoResource;
-       }
-
-/*    ShbError = ShbCirSetSignalHandlerNewData (EplDllkCalInstance_g.m_ShbInstanceTxNmt, EplDllkCalTxNmtSignalHandler, kShbPriorityNormal);
-    // returns kShbOk, kShbAlreadySignaling or kShbInvalidArg
-
-    if (ShbError != kShbOk)
-    {
-        Ret = kEplNoResource;
-    }
-*/
-       ShbError =
-           ShbCirAllocBuffer(EPL_DLLCAL_BUFFER_SIZE_TX_GEN,
-                             EPL_DLLCAL_BUFFER_ID_TX_GEN,
-                             &EplDllkCalInstance_g.m_ShbInstanceTxGen,
-                             &fShbNewCreated);
-       // returns kShbOk, kShbOpenMismatch, kShbOutOfMem or kShbInvalidArg
-
-       if (ShbError != kShbOk) {
-               Ret = kEplNoResource;
-       }
-
-/*    ShbError = ShbCirSetSignalHandlerNewData (EplDllkCalInstance_g.m_ShbInstanceTxGen, EplDllkCalTxGenSignalHandler, kShbPriorityNormal);
-    // returns kShbOk, kShbAlreadySignaling or kShbInvalidArg
-
-    if (ShbError != kShbOk)
-    {
-        Ret = kEplNoResource;
-    }
-*/
-#else
-       EplDllkCalInstance_g.m_uiFrameSizeNmt = 0;
-       EplDllkCalInstance_g.m_uiFrameSizeGen = 0;
-#endif
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkCalDelInstance()
-//
-// Description: deletes instance of DLL CAL module
-//
-// Parameters:  none
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkCalDelInstance(void)
-{
-       tEplKernel Ret = kEplSuccessful;
-#ifndef EPL_NO_FIFO
-       tShbError ShbError;
-
-/*    ShbError = ShbCirReleaseBuffer (EplDllkCalInstance_g.m_ShbInstanceRx);
-    if (ShbError != kShbOk)
-    {
-        Ret = kEplNoResource;
-    }
-    EplDllkCalInstance_g.m_ShbInstanceRx = NULL;
-*/
-       ShbError = ShbCirReleaseBuffer(EplDllkCalInstance_g.m_ShbInstanceTxNmt);
-       if (ShbError != kShbOk) {
-               Ret = kEplNoResource;
-       }
-       EplDllkCalInstance_g.m_ShbInstanceTxNmt = NULL;
-
-       ShbError = ShbCirReleaseBuffer(EplDllkCalInstance_g.m_ShbInstanceTxGen);
-       if (ShbError != kShbOk) {
-               Ret = kEplNoResource;
-       }
-       EplDllkCalInstance_g.m_ShbInstanceTxGen = NULL;
-
-#else
-       EplDllkCalInstance_g.m_uiFrameSizeNmt = 0;
-       EplDllkCalInstance_g.m_uiFrameSizeGen = 0;
-#endif
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkCalProcess
-//
-// Description: process the passed configuration
-//
-// Parameters:  pEvent_p                = event containing configuration options
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkCalProcess(tEplEvent * pEvent_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       switch (pEvent_p->m_EventType) {
-       case kEplEventTypeDllkServFilter:
-               {
-                       tEplDllCalAsndServiceIdFilter *pServFilter;
-
-                       pServFilter =
-                           (tEplDllCalAsndServiceIdFilter *) pEvent_p->m_pArg;
-                       Ret =
-                           EplDllkSetAsndServiceIdFilter(pServFilter->
-                                                         m_ServiceId,
-                                                         pServFilter->
-                                                         m_Filter);
-                       break;
-               }
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-       case kEplEventTypeDllkIssueReq:
-               {
-                       tEplDllCalIssueRequest *pIssueReq;
-
-                       pIssueReq = (tEplDllCalIssueRequest *) pEvent_p->m_pArg;
-                       Ret =
-                           EplDllkCalIssueRequest(pIssueReq->m_Service,
-                                                  pIssueReq->m_uiNodeId,
-                                                  pIssueReq->m_bSoaFlag1);
-                       break;
-               }
-
-       case kEplEventTypeDllkAddNode:
-               {
-                       tEplDllNodeInfo *pNodeInfo;
-
-                       pNodeInfo = (tEplDllNodeInfo *) pEvent_p->m_pArg;
-                       Ret = EplDllkAddNode(pNodeInfo);
-                       break;
-               }
-
-       case kEplEventTypeDllkDelNode:
-               {
-                       unsigned int *puiNodeId;
-
-                       puiNodeId = (unsigned int *)pEvent_p->m_pArg;
-                       Ret = EplDllkDeleteNode(*puiNodeId);
-                       break;
-               }
-
-       case kEplEventTypeDllkSoftDelNode:
-               {
-                       unsigned int *puiNodeId;
-
-                       puiNodeId = (unsigned int *)pEvent_p->m_pArg;
-                       Ret = EplDllkSoftDeleteNode(*puiNodeId);
-                       break;
-               }
-#endif
-
-       case kEplEventTypeDllkIdentity:
-               {
-                       tEplDllIdentParam *pIdentParam;
-
-                       pIdentParam = (tEplDllIdentParam *) pEvent_p->m_pArg;
-                       if (pIdentParam->m_uiSizeOfStruct > pEvent_p->m_uiSize) {
-                               pIdentParam->m_uiSizeOfStruct =
-                                   pEvent_p->m_uiSize;
-                       }
-                       Ret = EplDllkSetIdentity(pIdentParam);
-                       break;
-               }
-
-       case kEplEventTypeDllkConfig:
-               {
-                       tEplDllConfigParam *pConfigParam;
-
-                       pConfigParam = (tEplDllConfigParam *) pEvent_p->m_pArg;
-                       if (pConfigParam->m_uiSizeOfStruct > pEvent_p->m_uiSize) {
-                               pConfigParam->m_uiSizeOfStruct =
-                                   pEvent_p->m_uiSize;
-                       }
-                       Ret = EplDllkConfig(pConfigParam);
-                       break;
-               }
-
-       default:
-               break;
-       }
-
-//Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkCalAsyncGetTxCount()
-//
-// Description: returns count of Tx frames of FIFO with highest priority
-//
-// Parameters:  none
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkCalAsyncGetTxCount(tEplDllAsyncReqPriority * pPriority_p,
-                                    unsigned int *puiCount_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-#ifndef EPL_NO_FIFO
-       tShbError ShbError;
-       unsigned long ulFrameCount;
-
-       // get frame count of Tx FIFO with NMT request priority
-       ShbError =
-           ShbCirGetReadBlockCount(EplDllkCalInstance_g.m_ShbInstanceTxNmt,
-                                   &ulFrameCount);
-       // returns kShbOk, kShbInvalidArg
-
-       // error handling
-       if (ShbError != kShbOk) {
-               Ret = kEplNoResource;
-               goto Exit;
-       }
-
-       if (ulFrameCount >
-           EplDllkCalInstance_g.m_Statistics.m_ulMaxTxFrameCountNmt) {
-               EplDllkCalInstance_g.m_Statistics.m_ulMaxTxFrameCountNmt =
-                   ulFrameCount;
-       }
-
-       if (ulFrameCount != 0) {        // NMT requests are in queue
-               *pPriority_p = kEplDllAsyncReqPrioNmt;
-               *puiCount_p = (unsigned int)ulFrameCount;
-               goto Exit;
-       }
-       // get frame count of Tx FIFO with generic priority
-       ShbError =
-           ShbCirGetReadBlockCount(EplDllkCalInstance_g.m_ShbInstanceTxGen,
-                                   &ulFrameCount);
-       // returns kShbOk, kShbInvalidArg
-
-       // error handling
-       if (ShbError != kShbOk) {
-               Ret = kEplNoResource;
-               goto Exit;
-       }
-
-       if (ulFrameCount >
-           EplDllkCalInstance_g.m_Statistics.m_ulMaxTxFrameCountGen) {
-               EplDllkCalInstance_g.m_Statistics.m_ulMaxTxFrameCountGen =
-                   ulFrameCount;
-       }
-
-       *pPriority_p = kEplDllAsyncReqPrioGeneric;
-       *puiCount_p = (unsigned int)ulFrameCount;
-
-      Exit:
-#else
-       if (EplDllkCalInstance_g.m_uiFrameSizeNmt > 0) {
-               *pPriority_p = kEplDllAsyncReqPrioNmt;
-               *puiCount_p = 1;
-       } else if (EplDllkCalInstance_g.m_uiFrameSizeGen > 0) {
-               *pPriority_p = kEplDllAsyncReqPrioGeneric;
-               *puiCount_p = 1;
-       } else {
-               *pPriority_p = kEplDllAsyncReqPrioGeneric;
-               *puiCount_p = 0;
-       }
-#endif
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkCalAsyncGetTxFrame()
-//
-// Description: returns Tx frames from FIFO with specified priority
-//
-// Parameters:  pFrame_p                = IN: pointer to buffer
-//              puiFrameSize_p          = IN: max size of buffer
-//                                        OUT: actual size of frame
-//              Priority_p              = IN: priority
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkCalAsyncGetTxFrame(void *pFrame_p,
-                                    unsigned int *puiFrameSize_p,
-                                    tEplDllAsyncReqPriority Priority_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-#ifndef EPL_NO_FIFO
-       tShbError ShbError;
-       unsigned long ulFrameSize;
-
-       switch (Priority_p) {
-       case kEplDllAsyncReqPrioNmt:    // NMT request priority
-               ShbError =
-                   ShbCirReadDataBlock(EplDllkCalInstance_g.m_ShbInstanceTxNmt,
-                                       (u8 *) pFrame_p, *puiFrameSize_p,
-                                       &ulFrameSize);
-               // returns kShbOk, kShbDataTruncated, kShbInvalidArg, kShbNoReadableData
-               break;
-
-       default:                // generic priority
-               ShbError =
-                   ShbCirReadDataBlock(EplDllkCalInstance_g.m_ShbInstanceTxGen,
-                                       (u8 *) pFrame_p, *puiFrameSize_p,
-                                       &ulFrameSize);
-               // returns kShbOk, kShbDataTruncated, kShbInvalidArg, kShbNoReadableData
-               break;
-
-       }
-
-       // error handling
-       if (ShbError != kShbOk) {
-               if (ShbError == kShbNoReadableData) {
-                       Ret = kEplDllAsyncTxBufferEmpty;
-               } else {        // other error
-                       Ret = kEplNoResource;
-               }
-               goto Exit;
-       }
-
-       *puiFrameSize_p = (unsigned int)ulFrameSize;
-
-      Exit:
-#else
-       switch (Priority_p) {
-       case kEplDllAsyncReqPrioNmt:    // NMT request priority
-               *puiFrameSize_p =
-                   min(*puiFrameSize_p, EplDllkCalInstance_g.m_uiFrameSizeNmt);
-               EPL_MEMCPY(pFrame_p, EplDllkCalInstance_g.m_abFrameNmt,
-                          *puiFrameSize_p);
-               EplDllkCalInstance_g.m_uiFrameSizeNmt = 0;
-               break;
-
-       default:                // generic priority
-               *puiFrameSize_p =
-                   min(*puiFrameSize_p, EplDllkCalInstance_g.m_uiFrameSizeGen);
-               EPL_MEMCPY(pFrame_p, EplDllkCalInstance_g.m_abFrameGen,
-                          *puiFrameSize_p);
-               EplDllkCalInstance_g.m_uiFrameSizeGen = 0;
-               break;
-       }
-
-#endif
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkCalAsyncFrameReceived()
-//
-// Description: passes ASnd frame to receive FIFO.
-//              It will be called only for frames with registered AsndServiceIds.
-//
-// Parameters:  none
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkCalAsyncFrameReceived(tEplFrameInfo * pFrameInfo_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplEvent Event;
-
-       Event.m_EventSink = kEplEventSinkDlluCal;
-       Event.m_EventType = kEplEventTypeAsndRx;
-       Event.m_pArg = pFrameInfo_p->m_pFrame;
-       Event.m_uiSize = pFrameInfo_p->m_uiFrameSize;
-       // pass NetTime of frame to userspace
-       Event.m_NetTime = pFrameInfo_p->m_NetTime;
-
-       Ret = EplEventkPost(&Event);
-       if (Ret != kEplSuccessful) {
-               EplDllkCalInstance_g.m_Statistics.m_ulCurRxFrameCount++;
-       } else {
-               EplDllkCalInstance_g.m_Statistics.m_ulMaxRxFrameCount++;
-       }
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkCalAsyncSend()
-//
-// Description: puts the given frame into the transmit FIFO with the specified
-//              priority.
-//
-// Parameters:  pFrameInfo_p            = frame info structure
-//              Priority_p              = priority
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkCalAsyncSend(tEplFrameInfo * pFrameInfo_p,
-                              tEplDllAsyncReqPriority Priority_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplEvent Event;
-#ifndef EPL_NO_FIFO
-       tShbError ShbError;
-
-       switch (Priority_p) {
-       case kEplDllAsyncReqPrioNmt:    // NMT request priority
-               ShbError =
-                   ShbCirWriteDataBlock(EplDllkCalInstance_g.
-                                        m_ShbInstanceTxNmt,
-                                        pFrameInfo_p->m_pFrame,
-                                        pFrameInfo_p->m_uiFrameSize);
-               // returns kShbOk, kShbExceedDataSizeLimit, kShbBufferFull, kShbInvalidArg
-               break;
-
-       default:                // generic priority
-               ShbError =
-                   ShbCirWriteDataBlock(EplDllkCalInstance_g.
-                                        m_ShbInstanceTxGen,
-                                        pFrameInfo_p->m_pFrame,
-                                        pFrameInfo_p->m_uiFrameSize);
-               // returns kShbOk, kShbExceedDataSizeLimit, kShbBufferFull, kShbInvalidArg
-               break;
-
-       }
-
-       // error handling
-       switch (ShbError) {
-       case kShbOk:
-               break;
-
-       case kShbExceedDataSizeLimit:
-               Ret = kEplDllAsyncTxBufferFull;
-               break;
-
-       case kShbBufferFull:
-               Ret = kEplDllAsyncTxBufferFull;
-               break;
-
-       case kShbInvalidArg:
-       default:
-               Ret = kEplNoResource;
-               break;
-       }
-
-#else
-
-       switch (Priority_p) {
-       case kEplDllAsyncReqPrioNmt:    // NMT request priority
-               if (EplDllkCalInstance_g.m_uiFrameSizeNmt == 0) {
-                       EPL_MEMCPY(EplDllkCalInstance_g.m_abFrameNmt,
-                                  pFrameInfo_p->m_pFrame,
-                                  pFrameInfo_p->m_uiFrameSize);
-                       EplDllkCalInstance_g.m_uiFrameSizeNmt =
-                           pFrameInfo_p->m_uiFrameSize;
-               } else {
-                       Ret = kEplDllAsyncTxBufferFull;
-                       goto Exit;
-               }
-               break;
-
-       default:                // generic priority
-               if (EplDllkCalInstance_g.m_uiFrameSizeGen == 0) {
-                       EPL_MEMCPY(EplDllkCalInstance_g.m_abFrameGen,
-                                  pFrameInfo_p->m_pFrame,
-                                  pFrameInfo_p->m_uiFrameSize);
-                       EplDllkCalInstance_g.m_uiFrameSizeGen =
-                           pFrameInfo_p->m_uiFrameSize;
-               } else {
-                       Ret = kEplDllAsyncTxBufferFull;
-                       goto Exit;
-               }
-               break;
-       }
-
-#endif
-
-       // post event to DLL
-       Event.m_EventSink = kEplEventSinkDllk;
-       Event.m_EventType = kEplEventTypeDllkFillTx;
-       EPL_MEMSET(&Event.m_NetTime, 0x00, sizeof(Event.m_NetTime));
-       Event.m_pArg = &Priority_p;
-       Event.m_uiSize = sizeof(Priority_p);
-       Ret = EplEventkPost(&Event);
-
-#ifdef EPL_NO_FIFO
-      Exit:
-#endif
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkCalAsyncClearBuffer()
-//
-// Description: clears the transmit buffer
-//
-// Parameters:  (none)
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkCalAsyncClearBuffer(void)
-{
-       tEplKernel Ret = kEplSuccessful;
-#ifndef EPL_NO_FIFO
-       tShbError ShbError;
-
-       ShbError =
-           ShbCirResetBuffer(EplDllkCalInstance_g.m_ShbInstanceTxNmt, 1000,
-                             NULL);
-       ShbError =
-           ShbCirResetBuffer(EplDllkCalInstance_g.m_ShbInstanceTxGen, 1000,
-                             NULL);
-
-#else
-       EplDllkCalInstance_g.m_uiFrameSizeNmt = 0;
-       EplDllkCalInstance_g.m_uiFrameSizeGen = 0;
-#endif
-
-//    EPL_MEMSET(&EplDllkCalInstance_g.m_Statistics, 0, sizeof (tEplDllkCalStatistics));
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkCalAsyncClearQueues()
-//
-// Description: clears the transmit buffer
-//
-// Parameters:  (none)
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-tEplKernel EplDllkCalAsyncClearQueues(void)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       // clear MN asynchronous queues
-       EplDllkCalInstance_g.m_uiNextQueueCnRequest = 0;
-       EplDllkCalInstance_g.m_uiNextRequestQueue = 0;
-       EplDllkCalInstance_g.m_uiReadIdentReq = 0;
-       EplDllkCalInstance_g.m_uiWriteIdentReq = 0;
-       EplDllkCalInstance_g.m_uiReadStatusReq = 0;
-       EplDllkCalInstance_g.m_uiWriteStatusReq = 0;
-
-       return Ret;
-}
-#endif
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkCalGetStatistics()
-//
-// Description: returns statistics of the asynchronous queues.
-//
-// Parameters:  ppStatistics            = statistics structure
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkCalGetStatistics(tEplDllkCalStatistics ** ppStatistics)
-{
-       tEplKernel Ret = kEplSuccessful;
-#ifndef EPL_NO_FIFO
-       tShbError ShbError;
-
-       ShbError =
-           ShbCirGetReadBlockCount(EplDllkCalInstance_g.m_ShbInstanceTxNmt,
-                                   &EplDllkCalInstance_g.m_Statistics.
-                                   m_ulCurTxFrameCountNmt);
-       ShbError =
-           ShbCirGetReadBlockCount(EplDllkCalInstance_g.m_ShbInstanceTxGen,
-                                   &EplDllkCalInstance_g.m_Statistics.
-                                   m_ulCurTxFrameCountGen);
-//    ShbError = ShbCirGetReadBlockCount (EplDllkCalInstance_g.m_ShbInstanceRx, &EplDllkCalInstance_g.m_Statistics.m_ulCurRxFrameCount);
-
-#else
-       if (EplDllkCalInstance_g.m_uiFrameSizeNmt > 0) {
-               EplDllkCalInstance_g.m_Statistics.m_ulCurTxFrameCountNmt = 1;
-       } else {
-               EplDllkCalInstance_g.m_Statistics.m_ulCurTxFrameCountNmt = 0;
-       }
-       if (EplDllkCalInstance_g.m_uiFrameSizeGen > 0) {
-               EplDllkCalInstance_g.m_Statistics.m_ulCurTxFrameCountGen = 1;
-       } else {
-               EplDllkCalInstance_g.m_Statistics.m_ulCurTxFrameCountGen = 0;
-       }
-#endif
-
-       *ppStatistics = &EplDllkCalInstance_g.m_Statistics;
-       return Ret;
-}
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkCalIssueRequest()
-//
-// Description: issues a StatusRequest or a IdentRequest to the specified node.
-//
-// Parameters:  Service_p               = request service ID
-//              uiNodeId_p              = node ID
-//              bSoaFlag1_p             = flag1 for this node (transmit in SoA and PReq)
-//                                        If 0xFF this flag is ignored.
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkCalIssueRequest(tEplDllReqServiceId Service_p,
-                                 unsigned int uiNodeId_p, u8 bSoaFlag1_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       if (bSoaFlag1_p != 0xFF) {
-               Ret = EplDllkSetFlag1OfNode(uiNodeId_p, bSoaFlag1_p);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-       }
-       // add node to appropriate request queue
-       switch (Service_p) {
-       case kEplDllReqServiceIdent:
-               {
-                       if (((EplDllkCalInstance_g.m_uiWriteIdentReq +
-                             1) %
-                            tabentries(EplDllkCalInstance_g.
-                                       m_auiQueueIdentReq))
-                           == EplDllkCalInstance_g.m_uiReadIdentReq) { // queue is full
-                               Ret = kEplDllAsyncTxBufferFull;
-                               goto Exit;
-                       }
-                       EplDllkCalInstance_g.
-                           m_auiQueueIdentReq[EplDllkCalInstance_g.
-                                              m_uiWriteIdentReq] = uiNodeId_p;
-                       EplDllkCalInstance_g.m_uiWriteIdentReq =
-                           (EplDllkCalInstance_g.m_uiWriteIdentReq +
-                            1) %
-                           tabentries(EplDllkCalInstance_g.m_auiQueueIdentReq);
-                       break;
-               }
-
-       case kEplDllReqServiceStatus:
-               {
-                       if (((EplDllkCalInstance_g.m_uiWriteStatusReq +
-                             1) %
-                            tabentries(EplDllkCalInstance_g.
-                                       m_auiQueueStatusReq))
-                           == EplDllkCalInstance_g.m_uiReadStatusReq) {        // queue is full
-                               Ret = kEplDllAsyncTxBufferFull;
-                               goto Exit;
-                       }
-                       EplDllkCalInstance_g.
-                           m_auiQueueStatusReq[EplDllkCalInstance_g.
-                                               m_uiWriteStatusReq] =
-                           uiNodeId_p;
-                       EplDllkCalInstance_g.m_uiWriteStatusReq =
-                           (EplDllkCalInstance_g.m_uiWriteStatusReq +
-                            1) %
-                           tabentries(EplDllkCalInstance_g.
-                                      m_auiQueueStatusReq);
-                       break;
-               }
-
-       default:
-               {
-                       Ret = kEplDllInvalidParam;
-                       goto Exit;
-               }
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkCalAsyncGetSoaRequest()
-//
-// Description: returns next request for SoA. This function is called by DLLk module.
-//
-// Parameters:  pReqServiceId_p         = pointer to request service ID
-//                                        IN: available request for MN NMT or generic request queue (Flag2.PR)
-//                                            or kEplDllReqServiceNo if queues are empty
-//                                        OUT: next request
-//              puiNodeId_p             = OUT: pointer to node ID of next request
-//                                             = EPL_C_ADR_INVALID, if request is self addressed
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkCalAsyncGetSoaRequest(tEplDllReqServiceId * pReqServiceId_p,
-                                       unsigned int *puiNodeId_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       unsigned int uiCount;
-
-//    *pReqServiceId_p = kEplDllReqServiceNo;
-
-       for (uiCount = EPL_DLLKCAL_MAX_QUEUES; uiCount > 0; uiCount--) {
-               switch (EplDllkCalInstance_g.m_uiNextRequestQueue) {
-               case 0:
-                       {       // CnGenReq
-                               for (;
-                                    EplDllkCalInstance_g.
-                                    m_uiNextQueueCnRequest <
-                                    (tabentries
-                                     (EplDllkCalInstance_g.
-                                      m_auiQueueCnRequests) / 2);
-                                    EplDllkCalInstance_g.
-                                    m_uiNextQueueCnRequest++) {
-                                       if (EplDllkCalInstance_g.m_auiQueueCnRequests[EplDllkCalInstance_g.m_uiNextQueueCnRequest] > 0) {       // non empty queue found
-                                               // remove one request from queue
-                                               EplDllkCalInstance_g.
-                                                   m_auiQueueCnRequests
-                                                   [EplDllkCalInstance_g.
-                                                    m_uiNextQueueCnRequest]--;
-                                               *puiNodeId_p =
-                                                   EplDllkCalInstance_g.
-                                                   m_uiNextQueueCnRequest + 1;
-                                               *pReqServiceId_p =
-                                                   kEplDllReqServiceUnspecified;
-                                               EplDllkCalInstance_g.
-                                                   m_uiNextQueueCnRequest++;
-                                               if (EplDllkCalInstance_g.m_uiNextQueueCnRequest >= (tabentries(EplDllkCalInstance_g.m_auiQueueCnRequests) / 2)) {       // last node reached
-                                                       // continue with CnNmtReq queue at next SoA
-                                                       EplDllkCalInstance_g.
-                                                           m_uiNextRequestQueue
-                                                           = 1;
-                                               }
-                                               goto Exit;
-                                       }
-                               }
-                               // all CnGenReq queues are empty -> continue with CnNmtReq queue
-                               EplDllkCalInstance_g.m_uiNextRequestQueue = 1;
-                               break;
-                       }
-
-               case 1:
-                       {       // CnNmtReq
-                               for (;
-                                    EplDllkCalInstance_g.
-                                    m_uiNextQueueCnRequest <
-                                    tabentries(EplDllkCalInstance_g.
-                                               m_auiQueueCnRequests);
-                                    EplDllkCalInstance_g.
-                                    m_uiNextQueueCnRequest++) {
-                                       if (EplDllkCalInstance_g.m_auiQueueCnRequests[EplDllkCalInstance_g.m_uiNextQueueCnRequest] > 0) {       // non empty queue found
-                                               // remove one request from queue
-                                               EplDllkCalInstance_g.
-                                                   m_auiQueueCnRequests
-                                                   [EplDllkCalInstance_g.
-                                                    m_uiNextQueueCnRequest]--;
-                                               *puiNodeId_p =
-                                                   EplDllkCalInstance_g.
-                                                   m_uiNextQueueCnRequest + 1 -
-                                                   (tabentries
-                                                    (EplDllkCalInstance_g.
-                                                     m_auiQueueCnRequests) /
-                                                    2);
-                                               *pReqServiceId_p =
-                                                   kEplDllReqServiceNmtRequest;
-                                               EplDllkCalInstance_g.
-                                                   m_uiNextQueueCnRequest++;
-                                               if (EplDllkCalInstance_g.m_uiNextQueueCnRequest > tabentries(EplDllkCalInstance_g.m_auiQueueCnRequests)) {      // last node reached
-                                                       // restart CnGenReq queue
-                                                       EplDllkCalInstance_g.
-                                                           m_uiNextQueueCnRequest
-                                                           = 0;
-                                                       // continue with MnGenReq queue at next SoA
-                                                       EplDllkCalInstance_g.
-                                                           m_uiNextRequestQueue
-                                                           = 2;
-                                               }
-                                               goto Exit;
-                                       }
-                               }
-                               // restart CnGenReq queue
-                               EplDllkCalInstance_g.m_uiNextQueueCnRequest = 0;
-                               // all CnNmtReq queues are empty -> continue with MnGenReq queue
-                               EplDllkCalInstance_g.m_uiNextRequestQueue = 2;
-                               break;
-                       }
-
-               case 2:
-                       {       // MnNmtReq and MnGenReq
-                               // next queue will be MnIdentReq queue
-                               EplDllkCalInstance_g.m_uiNextRequestQueue = 3;
-                               if (*pReqServiceId_p != kEplDllReqServiceNo) {
-                                       *puiNodeId_p = EPL_C_ADR_INVALID;       // DLLk must exchange this with the actual node ID
-                                       goto Exit;
-                               }
-                               break;
-                       }
-
-               case 3:
-                       {       // MnIdentReq
-                               // next queue will be MnStatusReq queue
-                               EplDllkCalInstance_g.m_uiNextRequestQueue = 4;
-                               if (EplDllkCalInstance_g.m_uiReadIdentReq != EplDllkCalInstance_g.m_uiWriteIdentReq) {  // queue is not empty
-                                       *puiNodeId_p =
-                                           EplDllkCalInstance_g.
-                                           m_auiQueueIdentReq
-                                           [EplDllkCalInstance_g.
-                                            m_uiReadIdentReq];
-                                       EplDllkCalInstance_g.m_uiReadIdentReq =
-                                           (EplDllkCalInstance_g.
-                                            m_uiReadIdentReq +
-                                            1) %
-                                           tabentries(EplDllkCalInstance_g.
-                                                      m_auiQueueIdentReq);
-                                       *pReqServiceId_p =
-                                           kEplDllReqServiceIdent;
-                                       goto Exit;
-                               }
-                               break;
-                       }
-
-               case 4:
-                       {       // MnStatusReq
-                               // next queue will be CnGenReq queue
-                               EplDllkCalInstance_g.m_uiNextRequestQueue = 0;
-                               if (EplDllkCalInstance_g.m_uiReadStatusReq != EplDllkCalInstance_g.m_uiWriteStatusReq) {        // queue is not empty
-                                       *puiNodeId_p =
-                                           EplDllkCalInstance_g.
-                                           m_auiQueueStatusReq
-                                           [EplDllkCalInstance_g.
-                                            m_uiReadStatusReq];
-                                       EplDllkCalInstance_g.m_uiReadStatusReq =
-                                           (EplDllkCalInstance_g.
-                                            m_uiReadStatusReq +
-                                            1) %
-                                           tabentries(EplDllkCalInstance_g.
-                                                      m_auiQueueStatusReq);
-                                       *pReqServiceId_p =
-                                           kEplDllReqServiceStatus;
-                                       goto Exit;
-                               }
-                               break;
-                       }
-
-               }
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDllkCalAsyncSetPendingRequests()
-//
-// Description: sets the pending asynchronous frame requests of the specified node.
-//              This will add the node to the asynchronous request scheduler.
-//
-// Parameters:  uiNodeId_p              = node ID
-//              AsyncReqPrio_p          = asynchronous request priority
-//              uiCount_p               = count of asynchronous frames
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDllkCalAsyncSetPendingRequests(unsigned int uiNodeId_p,
-                                            tEplDllAsyncReqPriority
-                                            AsyncReqPrio_p,
-                                            unsigned int uiCount_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       // add node to appropriate request queue
-       switch (AsyncReqPrio_p) {
-       case kEplDllAsyncReqPrioNmt:
-               {
-                       uiNodeId_p--;
-                       if (uiNodeId_p >=
-                           (tabentries
-                            (EplDllkCalInstance_g.m_auiQueueCnRequests) / 2)) {
-                               Ret = kEplDllInvalidParam;
-                               goto Exit;
-                       }
-                       uiNodeId_p +=
-                           tabentries(EplDllkCalInstance_g.
-                                      m_auiQueueCnRequests) / 2;
-                       EplDllkCalInstance_g.m_auiQueueCnRequests[uiNodeId_p] =
-                           uiCount_p;
-                       break;
-               }
-
-       default:
-               {
-                       uiNodeId_p--;
-                       if (uiNodeId_p >=
-                           (tabentries
-                            (EplDllkCalInstance_g.m_auiQueueCnRequests) / 2)) {
-                               Ret = kEplDllInvalidParam;
-                               goto Exit;
-                       }
-                       EplDllkCalInstance_g.m_auiQueueCnRequests[uiNodeId_p] =
-                           uiCount_p;
-                       break;
-               }
-       }
-
-      Exit:
-       return Ret;
-}
-#endif //(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//  Callback handler for new data signaling
-//---------------------------------------------------------------------------
-
-#ifndef EPL_NO_FIFO
-/*static void  EplDllkCalTxNmtSignalHandler (
-    tShbInstance pShbRxInstance_p,
-    unsigned long ulDataSize_p)
-{
-tEplKernel      Ret = kEplSuccessful;
-tEplEvent       Event;
-tEplDllAsyncReqPriority Priority;
-#ifndef EPL_NO_FIFO
-tShbError   ShbError;
-unsigned long   ulBlockCount;
-
-    ShbError = ShbCirGetReadBlockCount (EplDllkCalInstance_g.m_ShbInstanceTxNmt, &ulBlockCount);
-    if (ulBlockCount > EplDllkCalInstance_g.m_Statistics.m_ulMaxTxFrameCountNmt)
-    {
-        EplDllkCalInstance_g.m_Statistics.m_ulMaxTxFrameCountNmt = ulBlockCount;
-    }
-
-#endif
-
-    // post event to DLL
-    Priority = kEplDllAsyncReqPrioNmt;
-    Event.m_EventSink = kEplEventSinkDllk;
-    Event.m_EventType = kEplEventTypeDllkFillTx;
-    EPL_MEMSET(&Event.m_NetTime, 0x00, sizeof(Event.m_NetTime));
-    Event.m_pArg = &Priority;
-    Event.m_uiSize = sizeof(Priority);
-    Ret = EplEventkPost(&Event);
-
-}
-
-static void  EplDllkCalTxGenSignalHandler (
-    tShbInstance pShbRxInstance_p,
-    unsigned long ulDataSize_p)
-{
-tEplKernel      Ret = kEplSuccessful;
-tEplEvent       Event;
-tEplDllAsyncReqPriority Priority;
-#ifndef EPL_NO_FIFO
-tShbError   ShbError;
-unsigned long   ulBlockCount;
-
-    ShbError = ShbCirGetReadBlockCount (EplDllkCalInstance_g.m_ShbInstanceTxGen, &ulBlockCount);
-    if (ulBlockCount > EplDllkCalInstance_g.m_Statistics.m_ulMaxTxFrameCountGen)
-    {
-        EplDllkCalInstance_g.m_Statistics.m_ulMaxTxFrameCountGen = ulBlockCount;
-    }
-
-#endif
-
-    // post event to DLL
-    Priority = kEplDllAsyncReqPrioGeneric;
-    Event.m_EventSink = kEplEventSinkDllk;
-    Event.m_EventType = kEplEventTypeDllkFillTx;
-    EPL_MEMSET(&Event.m_NetTime, 0x00, sizeof(Event.m_NetTime));
-    Event.m_pArg = &Priority;
-    Event.m_uiSize = sizeof(Priority);
-    Ret = EplEventkPost(&Event);
-
-}
-*/
-#endif
-
-#endif // #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLK)) != 0)
-
-// EOF
diff --git a/drivers/staging/epl/EplDlluCal.c b/drivers/staging/epl/EplDlluCal.c
deleted file mode 100644 (file)
index f96fe84..0000000
+++ /dev/null
@@ -1,529 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for DLL Communication Abstraction Layer module in EPL user part
-
-  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: EplDlluCal.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.7 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/20 d.k.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#include "user/EplDlluCal.h"
-#include "user/EplEventu.h"
-
-#include "EplDllCal.h"
-
-// include only if direct call between user- and kernelspace is enabled
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLK)) != 0)
-#include "kernel/EplDllkCal.h"
-#endif
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLU)) != 0)
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          C L A S S  EplDlluCal                                          */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-//
-// Description:
-//
-//
-/***************************************************************************/
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   D E F I N I T I O N S                          //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-typedef struct {
-       tEplDlluCbAsnd m_apfnDlluCbAsnd[EPL_DLL_MAX_ASND_SERVICE_ID];
-
-} tEplDlluCalInstance;
-
-//---------------------------------------------------------------------------
-// local vars
-//---------------------------------------------------------------------------
-
-// if no dynamic memory allocation shall be used
-// define structures statically
-static tEplDlluCalInstance EplDlluCalInstance_g;
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-static tEplKernel EplDlluCalSetAsndServiceIdFilter(tEplDllAsndServiceId
-                                                  ServiceId_p,
-                                                  tEplDllAsndFilter Filter_p);
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDlluCalAddInstance()
-//
-// Description: add and initialize new instance of DLL CAL module
-//
-// Parameters:  none
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDlluCalAddInstance(void)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       // reset instance structure
-       EPL_MEMSET(&EplDlluCalInstance_g, 0, sizeof(EplDlluCalInstance_g));
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDlluCalDelInstance()
-//
-// Description: deletes an instance of DLL CAL module
-//
-// Parameters:  none
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDlluCalDelInstance(void)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       // reset instance structure
-       EPL_MEMSET(&EplDlluCalInstance_g, 0, sizeof(EplDlluCalInstance_g));
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDlluCalProcess
-//
-// Description: process the passed asynch frame
-//
-// Parameters:  pEvent_p                = event containing frame to be processed
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDlluCalProcess(tEplEvent * pEvent_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplMsgType MsgType;
-       unsigned int uiAsndServiceId;
-       tEplFrameInfo FrameInfo;
-
-       if (pEvent_p->m_EventType == kEplEventTypeAsndRx) {
-               FrameInfo.m_pFrame = (tEplFrame *) pEvent_p->m_pArg;
-               FrameInfo.m_uiFrameSize = pEvent_p->m_uiSize;
-               // extract NetTime
-               FrameInfo.m_NetTime = pEvent_p->m_NetTime;
-
-               MsgType =
-                   (tEplMsgType) AmiGetByteFromLe(&FrameInfo.m_pFrame->
-                                                  m_le_bMessageType);
-               if (MsgType != kEplMsgTypeAsnd) {
-                       Ret = kEplInvalidOperation;
-                       goto Exit;
-               }
-
-               uiAsndServiceId =
-                   (unsigned int)AmiGetByteFromLe(&FrameInfo.m_pFrame->m_Data.
-                                                  m_Asnd.m_le_bServiceId);
-               if (uiAsndServiceId < EPL_DLL_MAX_ASND_SERVICE_ID) {    // ASnd service ID is valid
-                       if (EplDlluCalInstance_g.m_apfnDlluCbAsnd[uiAsndServiceId] != NULL) {   // handler was registered
-                               Ret =
-                                   EplDlluCalInstance_g.
-                                   m_apfnDlluCbAsnd[uiAsndServiceId]
-                                   (&FrameInfo);
-                       }
-               }
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDlluCalRegAsndService()
-//
-// Description: registers the specified handler for the specified
-//              AsndServiceId with the specified node ID filter.
-//
-// Parameters:  ServiceId_p             = ASnd Service ID
-//              pfnDlluCbAsnd_p         = callback function
-//              Filter_p                = node ID filter
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDlluCalRegAsndService(tEplDllAsndServiceId ServiceId_p,
-                                   tEplDlluCbAsnd pfnDlluCbAsnd_p,
-                                   tEplDllAsndFilter Filter_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       if (ServiceId_p < tabentries(EplDlluCalInstance_g.m_apfnDlluCbAsnd)) {
-               // memorize function pointer
-               EplDlluCalInstance_g.m_apfnDlluCbAsnd[ServiceId_p] =
-                   pfnDlluCbAsnd_p;
-
-               if (pfnDlluCbAsnd_p == NULL) {  // close filter
-                       Filter_p = kEplDllAsndFilterNone;
-               }
-               // set filter in DLL module in kernel part
-               Ret = EplDlluCalSetAsndServiceIdFilter(ServiceId_p, Filter_p);
-
-       }
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDlluCalAsyncSend()
-//
-// Description: sends the frame with the specified priority.
-//
-// Parameters:  pFrameInfo_p            = frame
-//                                        m_uiFrameSize does not include the
-//                                        ethernet header (14 bytes)
-//              Priority_p              = priority
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDlluCalAsyncSend(tEplFrameInfo * pFrameInfo_p,
-                              tEplDllAsyncReqPriority Priority_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLK)) != 0)
-       pFrameInfo_p->m_uiFrameSize += 14;      // add size of ethernet header
-       Ret = EplDllkCalAsyncSend(pFrameInfo_p, Priority_p);
-#else
-       Ret = kEplSuccessful;
-#endif
-
-       return Ret;
-}
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDlluCalIssueRequest()
-//
-// Description: issues a StatusRequest or a IdentRequest to the specified node.
-//
-// Parameters:  Service_p               = request service ID
-//              uiNodeId_p              = node ID
-//              bSoaFlag1_p             = flag1 for this node (transmit in SoA and PReq)
-//                                        If 0xFF this flag is ignored.
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDlluCalIssueRequest(tEplDllReqServiceId Service_p,
-                                 unsigned int uiNodeId_p, u8 bSoaFlag1_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       // add node to appropriate request queue
-       switch (Service_p) {
-       case kEplDllReqServiceIdent:
-       case kEplDllReqServiceStatus:
-               {
-                       tEplEvent Event;
-                       tEplDllCalIssueRequest IssueReq;
-
-                       Event.m_EventSink = kEplEventSinkDllkCal;
-                       Event.m_EventType = kEplEventTypeDllkIssueReq;
-                       IssueReq.m_Service = Service_p;
-                       IssueReq.m_uiNodeId = uiNodeId_p;
-                       IssueReq.m_bSoaFlag1 = bSoaFlag1_p;
-                       Event.m_pArg = &IssueReq;
-                       Event.m_uiSize = sizeof(IssueReq);
-
-                       Ret = EplEventuPost(&Event);
-                       break;
-               }
-
-       default:
-               {
-                       Ret = kEplDllInvalidParam;
-                       goto Exit;
-               }
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDlluCalAddNode()
-//
-// Description: adds the specified node to the isochronous phase.
-//
-// Parameters:  pNodeInfo_p             = pointer of node info structure
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDlluCalAddNode(tEplDllNodeInfo * pNodeInfo_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplEvent Event;
-
-       Event.m_EventSink = kEplEventSinkDllkCal;
-       Event.m_EventType = kEplEventTypeDllkAddNode;
-       Event.m_pArg = pNodeInfo_p;
-       Event.m_uiSize = sizeof(tEplDllNodeInfo);
-
-       Ret = EplEventuPost(&Event);
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDlluCalDeleteNode()
-//
-// Description: removes the specified node from the isochronous phase.
-//
-// Parameters:  uiNodeId_p              = node ID
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDlluCalDeleteNode(unsigned int uiNodeId_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplEvent Event;
-
-       Event.m_EventSink = kEplEventSinkDllkCal;
-       Event.m_EventType = kEplEventTypeDllkDelNode;
-       Event.m_pArg = &uiNodeId_p;
-       Event.m_uiSize = sizeof(uiNodeId_p);
-
-       Ret = EplEventuPost(&Event);
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDlluCalSoftDeleteNode()
-//
-// Description: removes the specified node softly from the isochronous phase.
-//
-// Parameters:  uiNodeId_p              = node ID
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplDlluCalSoftDeleteNode(unsigned int uiNodeId_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplEvent Event;
-
-       Event.m_EventSink = kEplEventSinkDllkCal;
-       Event.m_EventType = kEplEventTypeDllkSoftDelNode;
-       Event.m_pArg = &uiNodeId_p;
-       Event.m_uiSize = sizeof(uiNodeId_p);
-
-       Ret = EplEventuPost(&Event);
-
-       return Ret;
-}
-
-#endif // (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplDlluCalSetAsndServiceIdFilter()
-//
-// Description: forwards call to EplDllkSetAsndServiceIdFilter() in kernel part
-//
-// Parameters:  ServiceId_p             = ASnd Service ID
-//              Filter_p                = node ID filter
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplDlluCalSetAsndServiceIdFilter(tEplDllAsndServiceId
-                                                  ServiceId_p,
-                                                  tEplDllAsndFilter Filter_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplEvent Event;
-       tEplDllCalAsndServiceIdFilter ServFilter;
-
-       Event.m_EventSink = kEplEventSinkDllkCal;
-       Event.m_EventType = kEplEventTypeDllkServFilter;
-       ServFilter.m_ServiceId = ServiceId_p;
-       ServFilter.m_Filter = Filter_p;
-       Event.m_pArg = &ServFilter;
-       Event.m_uiSize = sizeof(ServFilter);
-
-       Ret = EplEventuPost(&Event);
-
-       return Ret;
-}
-
-#endif // (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLU)) != 0)
-
-// EOF
diff --git a/drivers/staging/epl/EplErrDef.h b/drivers/staging/epl/EplErrDef.h
deleted file mode 100644 (file)
index 2aee12c..0000000
+++ /dev/null
@@ -1,294 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  definitions for all EPL-function return codes
-
-  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: EplErrDef.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.9 $  $Date: 2008/06/23 14:56:33 $
-
-                $State: Exp $
-
-                Build Environment:
-                    all
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2005/12/05 -as:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#ifndef _EPL_ERRORDEF_H_
-#define _EPL_ERRORDEF_H_
-
-//---------------------------------------------------------------------------
-// return codes
-//---------------------------------------------------------------------------
-
-typedef enum {
-       // area for generic errors 0x0000 - 0x000F
-       kEplSuccessful = 0x0000,        // no error/successful run
-       kEplIllegalInstance = 0x0001,   // the called Instanz does not exist
-       kEplInvalidInstanceParam = 0x0002,      //
-       kEplNoFreeInstance = 0x0003,    // XxxAddInstance was called but no free instance is available
-       kEplWrongSignature = 0x0004,    // wrong signature while writing to object 0x1010 or 0x1011
-       kEplInvalidOperation = 0x0005,  // operation not allowed in this situation
-       kEplInvalidNodeId = 0x0007,     // invalid NodeId was specified
-       kEplNoResource = 0x0008,        // resource could not be created (Windows, PxROS, ...)
-       kEplShutdown = 0x0009,  // stack is shutting down
-       kEplReject = 0x000A,    // reject the subsequent command
-
-       // area for EDRV module 0x0010 - 0x001F
-//    kEplEdrvNoFrame             = 0x0010,       // no CAN message was received
-//    kEplEdrvMsgHigh             = 0x0011,       // CAN message with high priority was received
-//    kEplEdrvMsgLow              = 0x0012,       // CAN message with low priority was received
-       kEplEdrvInitError = 0x0013,     // initialisation error
-       kEplEdrvNoFreeBufEntry = 0x0014,        // no free entry in internal buffer table for Tx frames
-       kEplEdrvBufNotExisting = 0x0015,        // specified Tx buffer does not exist
-//    kEplEdrvNoFreeChannel       = 0x0014,       // CAN controller has not a free channel
-//    kEplEdrvTxBuffHighOverrun   = 0x0015,       // buffer for high priority CAN transmit messages has overrun
-//    kEplEdrvTxBuffLowOverrun    = 0x0016,       // buffer for low priority CAN transmit messages has overrun
-//    kEplEdrvIllegalBdi          = 0x0017,       // unsupported baudrate within baudrate table
-//    kEplEdrvBusy                = 0x0018,       // remote frame can not be updated because no bus contact or CAN
-       // transmission is activ
-//    kEplEdrvInvalidDriverType   = 0x0019,       // (PC: Windows or Linux) invalid driver type
-//    kEplEdrvDriverNotFound      = 0x001A,       // (PC: Windows or Linux) driver (DLL) could not be found
-//    kEplEdrvInvalidBaseAddress  = 0x001B,       // (PC: Windows or Linux) driver could not found the CAN controller
-//    kEplEdrvInvalidParam        = 0x001C,       // invalid param in function call
-
-       // area for COB module 0x0020 - 0x002F
-/*    kEplCobNoFreeEntry          = 0x0020,       // no free entry in RX- or TX-COB table
-    kEplCobAlreadyExist         = 0x0021,       // COB-ID already exists in RX- resp. TX-COB table
-    */
-       kEplDllIllegalHdl = 0x0022,     // illegal handle for a TxFrame was passed
-       kEplDllCbAsyncRegistered = 0x0023,      // handler for non-EPL frames was already registered before
-//    kEplDllAsyncRxBufferFull    = 0x0024,       // receive buffer for asynchronous frames is full
-       kEplDllAsyncTxBufferEmpty = 0x0025,     // transmit buffer for asynchronous frames is empty
-       kEplDllAsyncTxBufferFull = 0x0026,      // transmit buffer for asynchronous frames is full
-       kEplDllNoNodeInfo = 0x0027,     // MN: too less space in the internal node info structure
-       kEplDllInvalidParam = 0x0028,   // invalid parameters passed to function
-       kEplDllTxBufNotReady = 0x002E,  // TxBuffer (e.g. for PReq) is not ready yet
-       kEplDllTxFrameInvalid = 0x002F, // TxFrame (e.g. for PReq) is invalid or does not exist
-/*    kEplCobIllegalCanId         = 0x0023,       // COB-ID is not allowed (like 0x000 is reserved for NMT, ...)
-    kEplCobInvalidCanId         = 0x0024,       // COB-ID is switched off
-    kEplCobCdrvStateSet         = 0x0025,       // at least one bit of CAN driver state is set
-    kEplCobNoFreeEntryHighBuf   = 0x0026,       // no free entry in high priotity RX- or TX-COB table
-    kEplCobOwnId                = 0x0027,       // COB-ID already exists in own module which calls CobDefine() or CobCheck()
-*/
-       // area for OBD module 0x0030 - 0x003F
-       kEplObdIllegalPart = 0x0030,    // unknown OD part
-       kEplObdIndexNotExist = 0x0031,  // object index does not exist in OD
-       kEplObdSubindexNotExist = 0x0032,       // subindex does not exist in object index
-       kEplObdReadViolation = 0x0033,  // read access to a write-only object
-       kEplObdWriteViolation = 0x0034, // write access to a read-only object
-       kEplObdAccessViolation = 0x0035,        // access not allowed
-       kEplObdUnknownObjectType = 0x0036,      // object type not defined/known
-       kEplObdVarEntryNotExist = 0x0037,       // object does not contain VarEntry structure
-       kEplObdValueTooLow = 0x0038,    // value to write to an object is too low
-       kEplObdValueTooHigh = 0x0039,   // value to write to an object is too high
-       kEplObdValueLengthError = 0x003A,       // value to write is to long or to short
-//    kEplObdIllegalFloat         = 0x003B,       // illegal float variable
-//    kEplObdWrongOdBuilderKey    = 0x003F,       // OD was generated with demo version of tool ODBuilder
-
-       // area for NMT module 0x0040 - 0x004F
-       kEplNmtUnknownCommand = 0x0040, // unknown NMT command
-       kEplNmtInvalidFramePointer = 0x0041,    // pointer to the frame is not valid
-       kEplNmtInvalidEvent = 0x0042,   // invalid event send to NMT-modul
-       kEplNmtInvalidState = 0x0043,   // unknown state in NMT-State-Maschine
-       kEplNmtInvalidParam = 0x0044,   // invalid parameters specified
-
-       // area for SDO/UDP module 0x0050 - 0x005F
-       kEplSdoUdpMissCb = 0x0050,      // missing callback-function pointer during inti of
-       // module
-       kEplSdoUdpNoSocket = 0x0051,    // error during init of socket
-       kEplSdoUdpSocketError = 0x0052, // error during usage of socket
-       kEplSdoUdpThreadError = 0x0053, // error during start of listen thread
-       kEplSdoUdpNoFreeHandle = 0x0054,        // no free connection handle for Udp
-       kEplSdoUdpSendError = 0x0055,   // Error during send of frame
-       kEplSdoUdpInvalidHdl = 0x0056,  // the connection handle is invalid
-
-       // area for SDO Sequence layer module 0x0060 - 0x006F
-       kEplSdoSeqMissCb = 0x0060,      // no callback-function assign
-       kEplSdoSeqNoFreeHandle = 0x0061,        // no free handle for connection
-       kEplSdoSeqInvalidHdl = 0x0062,  // invalid handle in SDO sequence layer
-       kEplSdoSeqUnsupportedProt = 0x0063,     // unsupported Protocol selected
-       kEplSdoSeqNoFreeHistory = 0x0064,       // no free entry in history
-       kEplSdoSeqFrameSizeError = 0x0065,      // the size of the frames is not correct
-       kEplSdoSeqRequestAckNeeded = 0x0066,    // indeicates that the history buffer is full
-       // and a ack request is needed
-       kEplSdoSeqInvalidFrame = 0x0067,        // frame not valid
-       kEplSdoSeqConnectionBusy = 0x0068,      // connection is busy -> retry later
-       kEplSdoSeqInvalidEvent = 0x0069,        // invalid event received
-
-       // area for SDO Command Layer Module 0x0070 - 0x007F
-       kEplSdoComUnsupportedProt = 0x0070,     // unsupported Protocol selected
-       kEplSdoComNoFreeHandle = 0x0071,        // no free handle for connection
-       kEplSdoComInvalidServiceType = 0x0072,  // invalid SDO service type specified
-       kEplSdoComInvalidHandle = 0x0073,       // handle invalid
-       kEplSdoComInvalidSendType = 0x0074,     // the stated to of frame to send is
-       // not possible
-       kEplSdoComNotResponsible = 0x0075,      // internal error: command layer handle is
-       // not responsible for this event from sequence layer
-       kEplSdoComHandleExists = 0x0076,        // handle to same node already exists
-       kEplSdoComHandleBusy = 0x0077,  // transfer via this handle is already running
-       kEplSdoComInvalidParam = 0x0078,        // invalid parameters passed to function
-
-       // area for EPL Event-Modul 0x0080 - 0x008F
-       kEplEventUnknownSink = 0x0080,  // unknown sink for event
-       kEplEventPostError = 0x0081,    // error during post of event
-
-       // area for EPL Timer Modul 0x0090 - 0x009F
-       kEplTimerInvalidHandle = 0x0090,        // invalid handle for timer
-       kEplTimerNoTimerCreated = 0x0091,       // no timer was created caused by
-       // an error
-
-       // area for EPL SDO/Asnd Module 0x00A0 - 0x0AF
-       kEplSdoAsndInvalidNodeId = 0x00A0,      //0 node id is invalid
-       kEplSdoAsndNoFreeHandle = 0x00A1,       // no free handle for connection
-       kEplSdoAsndInvalidHandle = 0x00A2,      // handle for connection is invalid
-
-       // area for PDO module 0x00B0 - 0x00BF
-       kEplPdoNotExist = 0x00B0,       // selected PDO does not exist
-       kEplPdoLengthExceeded = 0x00B1, // length of PDO mapping exceedes 64 bis
-       kEplPdoGranularityMismatch = 0x00B2,    // configured PDO granularity is not equal to supported granularity
-       kEplPdoInitError = 0x00B3,      // error during initialisation of PDO module
-       kEplPdoErrorPdoEncode = 0x00B4, // error during encoding a PDO
-       kEplPdoErrorPdoDecode = 0x00B5, // error during decoding a PDO
-       kEplPdoErrorSend = 0x00B6,      // error during sending a PDO
-       kEplPdoErrorSyncWin = 0x00B7,   // the SYNC window runs out during sending SYNC-PDOs
-       kEplPdoErrorMapp = 0x00B8,      // invalid PDO mapping
-       kEplPdoVarNotFound = 0x00B9,    // variable was not found in function PdoSignalVar()
-       kEplPdoErrorEmcyPdoLen = 0x00BA,        // the length of a received PDO is unequal to the expected value
-       kEplPdoWriteConstObject = 0x00BB,       // constant object can not be written
-       // (only TxType, Inhibit-, Event Time for CANopen Kit)
-
-       // area for LSS slave module
-/*    kEplLsssResetNode           = 0x0080,       // NMT command "reset node" has to be processed after LSS configuration
-                                                // new of NodeId
-    kEplLsssInvalidNodeId       = 0x0081,       // no valid NodeId is configured -> wait until it is configured with
-                                                // LSS service before calling CcmConnectToNet()
-*/
-       // area for emergency consumer module 0x0090 - 0x009F
-/*    kEplEmccNoFreeProducerEntry = 0x0090,       // no free entry to add a Emergency Producer
-    kEplEmccNodeIdNotExist      = 0x0091,       // selected NodeId was never added
-    kEplEmccNodeIdInvalid       = 0x0092,       // selected NodeId is outside of range (0x01 until 0x7F)
-    kEplEmccNodeIdExist         = 0x0093,       // selected NodeId already exist
-*/
-       // area for dynamic OD 0x00A0 - 0x00AF
-/*    kEplDynNoMemory             = 0x00A0,       // no memory available
-    kEplDynInvalidConfig        = 0x00A1,       // invalid configuration in segment container
-*/
-       // area for hertbeat consumer module 0x00B0 - 0x00BF
-/*    kEplHbcEntryNotExist        = 0x00B0,       // Heartbeat Producer node not configured
-    kEplHbcEntryAlreadyExist    = 0x00B1,       // NodeId was already defined in heartbeat consumer table (object 0x1016)
-*/
-       // Configuration manager module 0x00C0 - 0x00CF
-       kEplCfgMaConfigError = 0x00C0,  // error in configuration manager
-       kEplCfgMaSdocTimeOutError = 0x00C1,     // error in configuration manager, Sdo timeout
-       kEplCfgMaInvalidDcf = 0x00C2,   // configration file not valid
-       kEplCfgMaUnsupportedDcf = 0x00C3,       // unsupported Dcf format
-       kEplCfgMaConfigWithErrors = 0x00C4,     // configuration finished with errors
-       kEplCfgMaNoFreeConfig = 0x00C5, // no free configuration entry
-       kEplCfgMaNoConfigData = 0x00C6, // no configuration data present
-       kEplCfgMaUnsuppDatatypeDcf = 0x00C7,    // unsupported datatype found in dcf
-       // -> this entry was not configured
-
-       // area for LSS master module 0x00D0 - 0x00DF
-/*    kEplLssmIllegalMode         = 0x00D0,       // illegal LSS mode (operation / configuration)
-    kEplLssmIllegalState        = 0x00D1,       // function was called in illegal state of LSS master
-    kEplLssmBusy                = 0x00D2,       // LSS process is busy with an previous service
-    kEplLssmIllegalCmd          = 0x00D3,       // illegal command code was set for function LssmInquireIdentity()
-    kEplLssmTimeout             = 0x00D4,       // LSS slave did not answer a LSS service
-    kEplLssmErrorInConfirm      = 0x00D5,       // LSS slave replied an error code for a LSS service
-*/
-       // area for CCM modules 0x00E0 - 0xEF
-/*    kEplCcmStoreUnvalidState    = 0x00E0,       // memory device not available due device state
-    kEplCcmStoreHwError         = 0x00E1,       // hw error due device access
-*/
-       // area for SRDO module 0x0100 - 0x011F
-/*    kEplSrdoNotExist            = 0x0100,       // selected SRDO does not exist
-    kEplSrdoGranularityMismatch = 0x0101,       // configured SRDO granularity is not equal to supported granularity
-    kEplSrdoCfgTimingError      = 0x0102,       // configuration is not ok (Timing)
-    kEplSrdoCfgIdError          = 0x0103,       // configuration is not ok (CobIds)
-    kEplSrdoCfgCrcError         = 0x0104,       // configuration is not ok (CRC)
-    kEplSrdoNmtError            = 0x0105,       // an action was tried in a wrong NMT state
-    kEplSrdoInvalidCfg          = 0x0106,       // an action was tried with an invald SRDO configuration
-    kEplSrdoInvalid             = 0x0107,       // an action was tried with an invald SRDO
-    kEplSrdoRxTxConflict        = 0x0108,       // an transmission was tried with an receive SRDO (or the other way)
-    kEplSrdoIllegalCanId        = 0x0109,       // the CanId is invalid
-    kEplSrdoCanIdAlreadyInUse   = 0x010A,       // the CanId is already in use
-    kEplSrdoNotInOrder          = 0x010B,       // the two messages of a SRDO are not in order
-    kEplSrdoSctTimeout          = 0x010C,       // timeout of SCT
-    kEplSrdoSrvtTimeout         = 0x010D,       // timeout of SRVT
-    kEplSrdoCanIdNotValid       = 0x010E,       // one of received CAN-IDs are not equal to configured one
-    kEplSrdoDlcNotValid         = 0x010F,       // one of received CAN-DLC are not equal to configured one
-    kEplSrdoErrorMapp           = 0x0110,       // wrong values in mapping found
-    kEplSrdoDataError           = 0x0111,       // data of CAN messages are not invers
-    kEplSrdoLengthExceeded      = 0x0112,       // length of SRDO mapping exceedes 64 bit per CAN-message
-    kEplSrdoNotHandledInApp     = 0x0113,       // the SRDO error was not handled in AppSrdoError()
-    kEplSrdoOverrun             = 0x0114        // a RxSRDO was received but the pevious one was not else processed
-*/
-
-       kEplApiTaskDeferred = 0x0140,   // EPL performs task in background and informs the application (or vice-versa), when it is finished
-       kEplApiInvalidParam = 0x0142,   // passed invalid parameters to a function (e.g. invalid node id)
-
-       // area untill 0x07FF is reserved
-       // area for user application from 0x0800 to 0x7FFF
-
-} tEplKernel;
-
-#endif
-//EOF
-
-// Die letzte Zeile muß unbedingt eine leere Zeile sein, weil manche Compiler
-// damit ein Problem haben, wenn das nicht so ist (z.B. GNU oder Borland C++ Builder).
diff --git a/drivers/staging/epl/EplErrorHandlerk.c b/drivers/staging/epl/EplErrorHandlerk.c
deleted file mode 100644 (file)
index 6baed04..0000000
+++ /dev/null
@@ -1,810 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for error handler module
-
-  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: EplErrorHandlerk.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.9 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/10/02 d.k.:   start of the implementation
-
-****************************************************************************/
-
-#include "kernel/EplErrorHandlerk.h"
-#include "EplNmt.h"
-#include "kernel/EplEventk.h"
-#include "kernel/EplObdk.h"    // function prototyps of the EplOBD-Modul
-#include "kernel/EplDllk.h"
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLK)) != 0)
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDK)) == 0)
-#error "EPL ErrorHandler module needs EPL module OBDK!"
-#endif
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-typedef struct {
-       u32 m_dwCumulativeCnt;  // subindex 1
-       u32 m_dwThresholdCnt;   // subindex 2
-       u32 m_dwThreshold;      // subindex 3
-
-} tEplErrorHandlerkErrorCounter;
-
-typedef struct {
-       tEplErrorHandlerkErrorCounter m_CnLossSoc;      // object 0x1C0B
-       tEplErrorHandlerkErrorCounter m_CnLossPreq;     // object 0x1C0D
-       tEplErrorHandlerkErrorCounter m_CnCrcErr;       // object 0x1C0F
-       unsigned long m_ulDllErrorEvents;
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-       tEplErrorHandlerkErrorCounter m_MnCrcErr;       // object 0x1C00
-       tEplErrorHandlerkErrorCounter m_MnCycTimeExceed;        // object 0x1C02
-       u32 m_adwMnCnLossPresCumCnt[254];       // object 0x1C07
-       u32 m_adwMnCnLossPresThrCnt[254];       // object 0x1C08
-       u32 m_adwMnCnLossPresThreshold[254];    // object 0x1C09
-       BOOL m_afMnCnLossPresEvent[254];
-#endif
-
-} tEplErrorHandlerkInstance;
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-static tEplErrorHandlerkInstance EplErrorHandlerkInstance_g;
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-static tEplKernel EplErrorHandlerkLinkErrorCounter(tEplErrorHandlerkErrorCounter
-                                                  * pErrorCounter_p,
-                                                  unsigned int uiIndex_p);
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-static tEplKernel EplErrorHandlerkLinkArray(u32 * pdwValue_p,
-                                           unsigned int uiValueCount_p,
-                                           unsigned int uiIndex_p);
-#endif
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          C L A S S  <Epl-Kernelspace-Error-Handler>                     */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-//
-// Description:
-//
-//
-/***************************************************************************/
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplErrorHandlerkInit
-//
-// Description: function initialize the first instance
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:      tEpKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplErrorHandlerkInit(void)
-{
-       tEplKernel Ret;
-
-       Ret = EplErrorHandlerkAddInstance();
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplErrorHandlerkAddInstance
-//
-// Description: function add one more instance
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:      tEpKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplErrorHandlerkAddInstance(void)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-       // reset only event variable,
-       // all other instance members are reset by OD or may keep their current value
-       // d.k.: this is necessary for the cumulative counters, which shall not be reset
-       EplErrorHandlerkInstance_g.m_ulDllErrorEvents = 0;
-
-       // link counters to OD
-       // $$$ d.k. if OD resides in userspace, fetch pointer to shared memory,
-       //          which shall have the same structure as the instance (needs to be declared globally).
-       //          Other idea: error counter shall belong to the process image
-       //          (reset of counters by SDO write are a little bit tricky).
-
-       Ret =
-           EplErrorHandlerkLinkErrorCounter(&EplErrorHandlerkInstance_g.
-                                            m_CnLossSoc, 0x1C0B);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-
-       Ret =
-           EplErrorHandlerkLinkErrorCounter(&EplErrorHandlerkInstance_g.
-                                            m_CnLossPreq, 0x1C0D);
-       // ignore return code, because object 0x1C0D is conditional
-
-       Ret =
-           EplErrorHandlerkLinkErrorCounter(&EplErrorHandlerkInstance_g.
-                                            m_CnCrcErr, 0x1C0F);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-       Ret =
-           EplErrorHandlerkLinkErrorCounter(&EplErrorHandlerkInstance_g.
-                                            m_MnCrcErr, 0x1C00);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-
-       Ret =
-           EplErrorHandlerkLinkErrorCounter(&EplErrorHandlerkInstance_g.
-                                            m_MnCycTimeExceed, 0x1C02);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-
-       Ret =
-           EplErrorHandlerkLinkArray(EplErrorHandlerkInstance_g.
-                                     m_adwMnCnLossPresCumCnt,
-                                     tabentries(EplErrorHandlerkInstance_g.
-                                                m_adwMnCnLossPresCumCnt),
-                                     0x1C07);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-
-       Ret =
-           EplErrorHandlerkLinkArray(EplErrorHandlerkInstance_g.
-                                     m_adwMnCnLossPresThrCnt,
-                                     tabentries(EplErrorHandlerkInstance_g.
-                                                m_adwMnCnLossPresThrCnt),
-                                     0x1C08);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-
-       Ret =
-           EplErrorHandlerkLinkArray(EplErrorHandlerkInstance_g.
-                                     m_adwMnCnLossPresThreshold,
-                                     tabentries(EplErrorHandlerkInstance_g.
-                                                m_adwMnCnLossPresThreshold),
-                                     0x1C09);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-#endif
-
-      Exit:
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplErrorHandlerkDelInstance
-//
-// Description: function delete instance an free the bufferstructure
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:      tEpKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplErrorHandlerkDelInstance(void)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplErrorHandlerkProcess
-//
-// Description: processes error events from DLL
-//
-//
-//
-// Parameters:  pEvent_p = pointer to event-structur from buffer
-//
-//
-// Returns:      tEpKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplErrorHandlerkProcess(tEplEvent *pEvent_p)
-{
-       tEplKernel Ret;
-       unsigned long ulDllErrorEvents;
-       tEplEvent Event;
-       tEplNmtEvent NmtEvent;
-
-       Ret = kEplSuccessful;
-
-       // check m_EventType
-       switch (pEvent_p->m_EventType) {
-       case kEplEventTypeDllError:
-               {
-                       tEplErrorHandlerkEvent *pErrHandlerEvent =
-                           (tEplErrorHandlerkEvent *) pEvent_p->m_pArg;
-
-                       ulDllErrorEvents = pErrHandlerEvent->m_ulDllErrorEvents;
-
-                       // check the several error events
-                       if ((EplErrorHandlerkInstance_g.m_CnLossSoc.
-                            m_dwThreshold > 0)
-                           && ((ulDllErrorEvents & EPL_DLL_ERR_CN_LOSS_SOC) != 0)) {   // loss of SoC event occured
-                               // increment cumulative counter by 1
-                               EplErrorHandlerkInstance_g.m_CnLossSoc.
-                                   m_dwCumulativeCnt++;
-                               // increment threshold counter by 8
-                               EplErrorHandlerkInstance_g.m_CnLossSoc.
-                                   m_dwThresholdCnt += 8;
-                               if (EplErrorHandlerkInstance_g.m_CnLossSoc.m_dwThresholdCnt >= EplErrorHandlerkInstance_g.m_CnLossSoc.m_dwThreshold) {  // threshold is reached
-                                       // $$$ d.k.: generate error history entry E_DLL_LOSS_SOC_TH
-
-                                       // post event to NMT state machine
-                                       NmtEvent = kEplNmtEventNmtCycleError;
-                                       Event.m_EventSink = kEplEventSinkNmtk;
-                                       Event.m_EventType =
-                                           kEplEventTypeNmtEvent;
-                                       Event.m_pArg = &NmtEvent;
-                                       Event.m_uiSize = sizeof(NmtEvent);
-                                       Ret = EplEventkPost(&Event);
-                               }
-                               EplErrorHandlerkInstance_g.m_ulDllErrorEvents |=
-                                   EPL_DLL_ERR_CN_LOSS_SOC;
-                       }
-
-                       if ((EplErrorHandlerkInstance_g.m_CnLossPreq.
-                            m_dwThreshold > 0)
-                           && ((ulDllErrorEvents & EPL_DLL_ERR_CN_LOSS_PREQ) != 0)) {  // loss of PReq event occured
-                               // increment cumulative counter by 1
-                               EplErrorHandlerkInstance_g.m_CnLossPreq.
-                                   m_dwCumulativeCnt++;
-                               // increment threshold counter by 8
-                               EplErrorHandlerkInstance_g.m_CnLossPreq.
-                                   m_dwThresholdCnt += 8;
-                               if (EplErrorHandlerkInstance_g.m_CnLossPreq.m_dwThresholdCnt >= EplErrorHandlerkInstance_g.m_CnLossPreq.m_dwThreshold) {        // threshold is reached
-                                       // $$$ d.k.: generate error history entry E_DLL_LOSS_PREQ_TH
-
-                                       // post event to NMT state machine
-                                       NmtEvent = kEplNmtEventNmtCycleError;
-                                       Event.m_EventSink = kEplEventSinkNmtk;
-                                       Event.m_EventType =
-                                           kEplEventTypeNmtEvent;
-                                       Event.m_pArg = &NmtEvent;
-                                       Event.m_uiSize = sizeof(NmtEvent);
-                                       Ret = EplEventkPost(&Event);
-                               }
-                       }
-
-                       if ((EplErrorHandlerkInstance_g.m_CnLossPreq.
-                            m_dwThresholdCnt > 0)
-                           && ((ulDllErrorEvents & EPL_DLL_ERR_CN_RECVD_PREQ) != 0)) { // PReq correctly received
-                               // decrement threshold counter by 1
-                               EplErrorHandlerkInstance_g.m_CnLossPreq.
-                                   m_dwThresholdCnt--;
-                       }
-
-                       if ((EplErrorHandlerkInstance_g.m_CnCrcErr.
-                            m_dwThreshold > 0)
-                           && ((ulDllErrorEvents & EPL_DLL_ERR_CN_CRC) != 0)) {        // CRC error event occured
-                               // increment cumulative counter by 1
-                               EplErrorHandlerkInstance_g.m_CnCrcErr.
-                                   m_dwCumulativeCnt++;
-                               // increment threshold counter by 8
-                               EplErrorHandlerkInstance_g.m_CnCrcErr.
-                                   m_dwThresholdCnt += 8;
-                               if (EplErrorHandlerkInstance_g.m_CnCrcErr.m_dwThresholdCnt >= EplErrorHandlerkInstance_g.m_CnCrcErr.m_dwThreshold) {    // threshold is reached
-                                       // $$$ d.k.: generate error history entry E_DLL_CRC_TH
-
-                                       // post event to NMT state machine
-                                       NmtEvent = kEplNmtEventNmtCycleError;
-                                       Event.m_EventSink = kEplEventSinkNmtk;
-                                       Event.m_EventType =
-                                           kEplEventTypeNmtEvent;
-                                       Event.m_pArg = &NmtEvent;
-                                       Event.m_uiSize = sizeof(NmtEvent);
-                                       Ret = EplEventkPost(&Event);
-                               }
-                               EplErrorHandlerkInstance_g.m_ulDllErrorEvents |=
-                                   EPL_DLL_ERR_CN_CRC;
-                       }
-
-                       if ((ulDllErrorEvents & EPL_DLL_ERR_INVALID_FORMAT) != 0) {     // invalid format error occured (only direct reaction)
-                               // $$$ d.k.: generate error history entry E_DLL_INVALID_FORMAT
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-                               if (pErrHandlerEvent->m_NmtState >= kEplNmtMsNotActive) {       // MN is active
-                                       if (pErrHandlerEvent->m_uiNodeId != 0) {
-                                               tEplHeartbeatEvent
-                                                   HeartbeatEvent;
-
-                                               // remove node from isochronous phase
-                                               Ret =
-                                                   EplDllkDeleteNode
-                                                   (pErrHandlerEvent->
-                                                    m_uiNodeId);
-
-                                               // inform NmtMnu module about state change, which shall send NMT command ResetNode to this CN
-                                               HeartbeatEvent.m_uiNodeId =
-                                                   pErrHandlerEvent->
-                                                   m_uiNodeId;
-                                               HeartbeatEvent.m_NmtState =
-                                                   kEplNmtCsNotActive;
-                                               HeartbeatEvent.m_wErrorCode =
-                                                   EPL_E_DLL_INVALID_FORMAT;
-                                               Event.m_EventSink =
-                                                   kEplEventSinkNmtMnu;
-                                               Event.m_EventType =
-                                                   kEplEventTypeHeartbeat;
-                                               Event.m_uiSize =
-                                                   sizeof(HeartbeatEvent);
-                                               Event.m_pArg = &HeartbeatEvent;
-                                               Ret = EplEventkPost(&Event);
-                                       }
-                                       // $$$ and else should lead to InternComError
-                               } else
-#endif
-                               {       // CN is active
-                                       // post event to NMT state machine
-                                       NmtEvent = kEplNmtEventInternComError;
-                                       Event.m_EventSink = kEplEventSinkNmtk;
-                                       Event.m_EventType =
-                                           kEplEventTypeNmtEvent;
-                                       Event.m_pArg = &NmtEvent;
-                                       Event.m_uiSize = sizeof(NmtEvent);
-                                       Ret = EplEventkPost(&Event);
-                               }
-                       }
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-                       if ((EplErrorHandlerkInstance_g.m_MnCrcErr.
-                            m_dwThreshold > 0)
-                           && ((ulDllErrorEvents & EPL_DLL_ERR_MN_CRC) != 0)) {        // CRC error event occured
-                               // increment cumulative counter by 1
-                               EplErrorHandlerkInstance_g.m_MnCrcErr.
-                                   m_dwCumulativeCnt++;
-                               // increment threshold counter by 8
-                               EplErrorHandlerkInstance_g.m_MnCrcErr.
-                                   m_dwThresholdCnt += 8;
-                               if (EplErrorHandlerkInstance_g.m_MnCrcErr.m_dwThresholdCnt >= EplErrorHandlerkInstance_g.m_MnCrcErr.m_dwThreshold) {    // threshold is reached
-                                       // $$$ d.k.: generate error history entry E_DLL_CRC_TH
-
-                                       // post event to NMT state machine
-                                       NmtEvent = kEplNmtEventNmtCycleError;
-                                       Event.m_EventSink = kEplEventSinkNmtk;
-                                       Event.m_EventType =
-                                           kEplEventTypeNmtEvent;
-                                       Event.m_pArg = &NmtEvent;
-                                       Event.m_uiSize = sizeof(NmtEvent);
-                                       Ret = EplEventkPost(&Event);
-                               }
-                               EplErrorHandlerkInstance_g.m_ulDllErrorEvents |=
-                                   EPL_DLL_ERR_MN_CRC;
-                       }
-
-                       if ((EplErrorHandlerkInstance_g.m_MnCycTimeExceed.
-                            m_dwThreshold > 0)
-                           && ((ulDllErrorEvents & EPL_DLL_ERR_MN_CYCTIMEEXCEED) != 0)) {      // cycle time exceeded event occured
-                               // increment cumulative counter by 1
-                               EplErrorHandlerkInstance_g.m_MnCycTimeExceed.
-                                   m_dwCumulativeCnt++;
-                               // increment threshold counter by 8
-                               EplErrorHandlerkInstance_g.m_MnCycTimeExceed.
-                                   m_dwThresholdCnt += 8;
-                               if (EplErrorHandlerkInstance_g.m_MnCycTimeExceed.m_dwThresholdCnt >= EplErrorHandlerkInstance_g.m_MnCycTimeExceed.m_dwThreshold) {      // threshold is reached
-                                       // $$$ d.k.: generate error history entry E_DLL_CYCLE_EXCEED_TH
-
-                                       // post event to NMT state machine
-                                       NmtEvent = kEplNmtEventNmtCycleError;
-                                       Event.m_EventSink = kEplEventSinkNmtk;
-                                       Event.m_EventType =
-                                           kEplEventTypeNmtEvent;
-                                       Event.m_pArg = &NmtEvent;
-                                       Event.m_uiSize = sizeof(NmtEvent);
-                                       Ret = EplEventkPost(&Event);
-                               }
-                               // $$$ d.k.: else generate error history entry E_DLL_CYCLE_EXCEED
-                               EplErrorHandlerkInstance_g.m_ulDllErrorEvents |=
-                                   EPL_DLL_ERR_MN_CYCTIMEEXCEED;
-                       }
-
-                       if ((ulDllErrorEvents & EPL_DLL_ERR_MN_CN_LOSS_PRES) != 0) {    // CN loss PRes event occured
-                               unsigned int uiNodeId;
-
-                               uiNodeId = pErrHandlerEvent->m_uiNodeId - 1;
-                               if ((uiNodeId <
-                                    tabentries(EplErrorHandlerkInstance_g.
-                                               m_adwMnCnLossPresCumCnt))
-                                   && (EplErrorHandlerkInstance_g.
-                                       m_adwMnCnLossPresThreshold[uiNodeId] >
-                                       0)) {
-                                       // increment cumulative counter by 1
-                                       EplErrorHandlerkInstance_g.
-                                           m_adwMnCnLossPresCumCnt[uiNodeId]++;
-                                       // increment threshold counter by 8
-                                       EplErrorHandlerkInstance_g.
-                                           m_adwMnCnLossPresThrCnt[uiNodeId] +=
-                                           8;
-                                       if (EplErrorHandlerkInstance_g.
-                                           m_adwMnCnLossPresThrCnt[uiNodeId]
-                                           >= EplErrorHandlerkInstance_g.m_adwMnCnLossPresThreshold[uiNodeId]) {       // threshold is reached
-                                               tEplHeartbeatEvent
-                                                   HeartbeatEvent;
-
-                                               // $$$ d.k.: generate error history entry E_DLL_LOSS_PRES_TH
-
-                                               // remove node from isochronous phase
-                                               Ret =
-                                                   EplDllkDeleteNode
-                                                   (pErrHandlerEvent->
-                                                    m_uiNodeId);
-
-                                               // inform NmtMnu module about state change, which shall send NMT command ResetNode to this CN
-                                               HeartbeatEvent.m_uiNodeId =
-                                                   pErrHandlerEvent->
-                                                   m_uiNodeId;
-                                               HeartbeatEvent.m_NmtState =
-                                                   kEplNmtCsNotActive;
-                                               HeartbeatEvent.m_wErrorCode =
-                                                   EPL_E_DLL_LOSS_PRES_TH;
-                                               Event.m_EventSink =
-                                                   kEplEventSinkNmtMnu;
-                                               Event.m_EventType =
-                                                   kEplEventTypeHeartbeat;
-                                               Event.m_uiSize =
-                                                   sizeof(HeartbeatEvent);
-                                               Event.m_pArg = &HeartbeatEvent;
-                                               Ret = EplEventkPost(&Event);
-                                       }
-                                       EplErrorHandlerkInstance_g.
-                                           m_afMnCnLossPresEvent[uiNodeId] =
-                                           TRUE;
-                               }
-                       }
-#endif
-
-                       break;
-               }
-
-               // NMT event
-       case kEplEventTypeNmtEvent:
-               {
-                       if ((*(tEplNmtEvent *) pEvent_p->m_pArg) == kEplNmtEventDllCeSoa) {     // SoA event of CN -> decrement threshold counters
-
-                               if ((EplErrorHandlerkInstance_g.m_ulDllErrorEvents & EPL_DLL_ERR_CN_LOSS_SOC) == 0) {   // decrement loss of SoC threshold counter, because it didn't occur last cycle
-                                       if (EplErrorHandlerkInstance_g.
-                                           m_CnLossSoc.m_dwThresholdCnt > 0) {
-                                               EplErrorHandlerkInstance_g.
-                                                   m_CnLossSoc.
-                                                   m_dwThresholdCnt--;
-                                       }
-                               }
-
-                               if ((EplErrorHandlerkInstance_g.m_ulDllErrorEvents & EPL_DLL_ERR_CN_CRC) == 0) {        // decrement CRC threshold counter, because it didn't occur last cycle
-                                       if (EplErrorHandlerkInstance_g.
-                                           m_CnCrcErr.m_dwThresholdCnt > 0) {
-                                               EplErrorHandlerkInstance_g.
-                                                   m_CnCrcErr.
-                                                   m_dwThresholdCnt--;
-                                       }
-                               }
-                       }
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-                       else if ((*(tEplNmtEvent *) pEvent_p->m_pArg) == kEplNmtEventDllMeSoaSent) {    // SoA event of MN -> decrement threshold counters
-                               tEplDllkNodeInfo *pIntNodeInfo;
-                               unsigned int uiNodeId;
-
-                               Ret = EplDllkGetFirstNodeInfo(&pIntNodeInfo);
-                               if (Ret != kEplSuccessful) {
-                                       break;
-                               }
-                               // iterate through node info structure list
-                               while (pIntNodeInfo != NULL) {
-                                       uiNodeId = pIntNodeInfo->m_uiNodeId - 1;
-                                       if (uiNodeId <
-                                           tabentries
-                                           (EplErrorHandlerkInstance_g.
-                                            m_adwMnCnLossPresCumCnt)) {
-                                               if (EplErrorHandlerkInstance_g.
-                                                   m_afMnCnLossPresEvent
-                                                   [uiNodeId] == FALSE) {
-                                                       if (EplErrorHandlerkInstance_g.m_adwMnCnLossPresThrCnt[uiNodeId] > 0) {
-                                                               EplErrorHandlerkInstance_g.
-                                                                   m_adwMnCnLossPresThrCnt
-                                                                   [uiNodeId]--;
-                                                       }
-                                               } else {
-                                                       EplErrorHandlerkInstance_g.
-                                                           m_afMnCnLossPresEvent
-                                                           [uiNodeId] = FALSE;
-                                               }
-                                       }
-                                       pIntNodeInfo =
-                                           pIntNodeInfo->m_pNextNodeInfo;
-                               }
-
-                               if ((EplErrorHandlerkInstance_g.m_ulDllErrorEvents & EPL_DLL_ERR_MN_CRC) == 0) {        // decrement CRC threshold counter, because it didn't occur last cycle
-                                       if (EplErrorHandlerkInstance_g.
-                                           m_MnCrcErr.m_dwThresholdCnt > 0) {
-                                               EplErrorHandlerkInstance_g.
-                                                   m_MnCrcErr.
-                                                   m_dwThresholdCnt--;
-                                       }
-                               }
-
-                               if ((EplErrorHandlerkInstance_g.m_ulDllErrorEvents & EPL_DLL_ERR_MN_CYCTIMEEXCEED) == 0) {      // decrement cycle exceed threshold counter, because it didn't occur last cycle
-                                       if (EplErrorHandlerkInstance_g.
-                                           m_MnCycTimeExceed.m_dwThresholdCnt >
-                                           0) {
-                                               EplErrorHandlerkInstance_g.
-                                                   m_MnCycTimeExceed.
-                                                   m_dwThresholdCnt--;
-                                       }
-                               }
-                       }
-#endif
-
-                       // reset error events
-                       EplErrorHandlerkInstance_g.m_ulDllErrorEvents = 0L;
-
-                       break;
-               }
-
-               // unknown type
-       default:
-               {
-               }
-
-       }                       // end of switch(pEvent_p->m_EventType)
-
-       return Ret;
-
-}
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplErrorHandlerkLinkErrorCounter
-//
-// Description: link specified error counter structure to OD entry
-//
-// Parameters:  pErrorCounter_p         = pointer to error counter structure
-//              uiIndex_p               = OD index
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplErrorHandlerkLinkErrorCounter(tEplErrorHandlerkErrorCounter
-                                                  * pErrorCounter_p,
-                                                  unsigned int uiIndex_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplVarParam VarParam;
-
-       VarParam.m_pData = &pErrorCounter_p->m_dwCumulativeCnt;
-       VarParam.m_Size = sizeof(u32);
-       VarParam.m_uiIndex = uiIndex_p;
-       VarParam.m_uiSubindex = 0x01;
-       VarParam.m_ValidFlag = kVarValidAll;
-       Ret = EplObdDefineVar(&VarParam);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-
-       VarParam.m_pData = &pErrorCounter_p->m_dwThresholdCnt;
-       VarParam.m_Size = sizeof(u32);
-       VarParam.m_uiIndex = uiIndex_p;
-       VarParam.m_uiSubindex = 0x02;
-       VarParam.m_ValidFlag = kVarValidAll;
-       Ret = EplObdDefineVar(&VarParam);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-
-       VarParam.m_pData = &pErrorCounter_p->m_dwThreshold;
-       VarParam.m_Size = sizeof(u32);
-       VarParam.m_uiIndex = uiIndex_p;
-       VarParam.m_uiSubindex = 0x03;
-       VarParam.m_ValidFlag = kVarValidAll;
-       Ret = EplObdDefineVar(&VarParam);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplErrorHandlerkLinkErrorCounter
-//
-// Description: link specified error counter structure to OD entry
-//
-// Parameters:  pErrorCounter_p         = pointer to error counter structure
-//              uiIndex_p               = OD index
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-static tEplKernel EplErrorHandlerkLinkArray(u32 * pdwValue_p,
-                                           unsigned int uiValueCount_p,
-                                           unsigned int uiIndex_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplVarParam VarParam;
-       tEplObdSize EntrySize;
-       u8 bIndexEntries;
-
-       EntrySize = (tEplObdSize) sizeof(bIndexEntries);
-       Ret = EplObdReadEntry(uiIndex_p,
-                             0x00, (void *)&bIndexEntries, &EntrySize);
-
-       if ((Ret != kEplSuccessful) || (bIndexEntries == 0x00)) {
-               // Object doesn't exist or invalid entry number
-               Ret = kEplObdIndexNotExist;
-               goto Exit;
-       }
-
-       if (bIndexEntries < uiValueCount_p) {
-               uiValueCount_p = bIndexEntries;
-       }
-
-       VarParam.m_Size = sizeof(u32);
-       VarParam.m_uiIndex = uiIndex_p;
-       VarParam.m_ValidFlag = kVarValidAll;
-
-       for (VarParam.m_uiSubindex = 0x01;
-            VarParam.m_uiSubindex <= uiValueCount_p; VarParam.m_uiSubindex++) {
-               VarParam.m_pData = pdwValue_p;
-               Ret = EplObdDefineVar(&VarParam);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-               pdwValue_p++;
-       }
-
-      Exit:
-       return Ret;
-}
-#endif //(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-
-#endif //(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLK)) != 0)
-
-// EOF
diff --git a/drivers/staging/epl/EplEvent.h b/drivers/staging/epl/EplEvent.h
deleted file mode 100644 (file)
index 910bd69..0000000
+++ /dev/null
@@ -1,279 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for event module
-
-  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: EplEvent.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/06/12 d.k.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#ifndef _EPL_EVENT_H_
-#define _EPL_EVENT_H_
-
-#include "EplInc.h"
-#include "EplNmt.h"
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-// name and size of event queues
-#define EPL_EVENT_NAME_SHB_KERNEL_TO_USER   "ShbKernelToUser"
-#ifndef EPL_EVENT_SIZE_SHB_KERNEL_TO_USER
-#define EPL_EVENT_SIZE_SHB_KERNEL_TO_USER   32768      // 32 kByte
-#endif
-
-#define EPL_EVENT_NAME_SHB_USER_TO_KERNEL   "ShbUserToKernel"
-#ifndef EPL_EVENT_SIZE_SHB_USER_TO_KERNEL
-#define EPL_EVENT_SIZE_SHB_USER_TO_KERNEL   32768      // 32 kByte
-#endif
-
-// max size of event argument
-#ifndef EPL_MAX_EVENT_ARG_SIZE
-#define EPL_MAX_EVENT_ARG_SIZE      256        // because of PDO
-#endif
-
-#define EPL_DLL_ERR_MN_CRC           0x00000001L       // object 0x1C00
-#define EPL_DLL_ERR_MN_COLLISION     0x00000002L       // object 0x1C01
-#define EPL_DLL_ERR_MN_CYCTIMEEXCEED 0x00000004L       // object 0x1C02
-#define EPL_DLL_ERR_MN_LOSS_LINK     0x00000008L       // object 0x1C03
-#define EPL_DLL_ERR_MN_CN_LATE_PRES  0x00000010L       // objects 0x1C04-0x1C06
-#define EPL_DLL_ERR_MN_CN_LOSS_PRES  0x00000080L       // objects 0x1C07-0x1C09
-#define EPL_DLL_ERR_CN_COLLISION     0x00000400L       // object 0x1C0A
-#define EPL_DLL_ERR_CN_LOSS_SOC      0x00000800L       // object 0x1C0B
-#define EPL_DLL_ERR_CN_LOSS_SOA      0x00001000L       // object 0x1C0C
-#define EPL_DLL_ERR_CN_LOSS_PREQ     0x00002000L       // object 0x1C0D
-#define EPL_DLL_ERR_CN_RECVD_PREQ    0x00004000L       // decrement object 0x1C0D/2
-#define EPL_DLL_ERR_CN_SOC_JITTER    0x00008000L       // object 0x1C0E
-#define EPL_DLL_ERR_CN_CRC           0x00010000L       // object 0x1C0F
-#define EPL_DLL_ERR_CN_LOSS_LINK     0x00020000L       // object 0x1C10
-#define EPL_DLL_ERR_MN_LOSS_STATRES  0x00040000L       // objects 0x1C15-0x1C17 (should be operated by NmtMnu module)
-#define EPL_DLL_ERR_BAD_PHYS_MODE    0x00080000L       // no object
-#define EPL_DLL_ERR_MAC_BUFFER       0x00100000L       // no object (NMT_GT6)
-#define EPL_DLL_ERR_INVALID_FORMAT   0x00200000L       // no object (NMT_GT6)
-#define EPL_DLL_ERR_ADDRESS_CONFLICT 0x00400000L       // no object (remove CN from configuration)
-
-//---------------------------------------------------------------------------
-// typedef
-//---------------------------------------------------------------------------
-
-// EventType determines the argument of the event
-typedef enum {
-       kEplEventTypeNmtEvent = 0x01,   // NMT event
-       // arg is pointer to tEplNmtEvent
-       kEplEventTypePdoRx = 0x02,      // PDO frame received event (PRes/PReq)
-       // arg is pointer to tEplFrame
-       kEplEventTypePdoTx = 0x03,      // PDO frame transmitted event (PRes/PReq)
-       // arg is pointer to tEplFrameInfo
-       kEplEventTypePdoSoa = 0x04,     // SoA frame received event (isochronous phase completed)
-       // arg is pointer to nothing
-       kEplEventTypeSync = 0x05,       // Sync event (e.g. SoC or anticipated SoC)
-       // arg is pointer to nothing
-       kEplEventTypeTimer = 0x06,      // Timer event
-       // arg is pointer to tEplTimerEventArg
-       kEplEventTypeHeartbeat = 0x07,  // Heartbeat event
-       // arg is pointer to tEplHeartbeatEvent
-       kEplEventTypeDllkCreate = 0x08, // DLL kernel create event
-       // arg is pointer to the new tEplNmtState
-       kEplEventTypeDllkDestroy = 0x09,        // DLL kernel destroy event
-       // arg is pointer to the old tEplNmtState
-       kEplEventTypeDllkFillTx = 0x0A, // DLL kernel fill TxBuffer event
-       // arg is pointer to tEplDllAsyncReqPriority
-       kEplEventTypeDllkPresReady = 0x0B,      // DLL kernel PRes ready event
-       // arg is pointer to nothing
-       kEplEventTypeError = 0x0C,      // Error event for API layer
-       // arg is pointer to tEplEventError
-       kEplEventTypeNmtStateChange = 0x0D,     // indicate change of NMT-State
-       // arg is pointer to tEplEventNmtStateChange
-       kEplEventTypeDllError = 0x0E,   // DLL error event for Error handler
-       // arg is pointer to tEplErrorHandlerkEvent
-       kEplEventTypeAsndRx = 0x0F,     // received ASnd frame for DLL user module
-       // arg is pointer to tEplFrame
-       kEplEventTypeDllkServFilter = 0x10,     // configure ServiceIdFilter
-       // arg is pointer to tEplDllCalServiceIdFilter
-       kEplEventTypeDllkIdentity = 0x11,       // configure Identity
-       // arg is pointer to tEplDllIdentParam
-       kEplEventTypeDllkConfig = 0x12, // configure ConfigParam
-       // arg is pointer to tEplDllConfigParam
-       kEplEventTypeDllkIssueReq = 0x13,       // issue Ident/Status request
-       // arg is pointer to tEplDllCalIssueRequest
-       kEplEventTypeDllkAddNode = 0x14,        // add node to isochronous phase
-       // arg is pointer to tEplDllNodeInfo
-       kEplEventTypeDllkDelNode = 0x15,        // remove node from isochronous phase
-       // arg is pointer to unsigned int
-       kEplEventTypeDllkSoftDelNode = 0x16,    // remove node softly from isochronous phase
-       // arg is pointer to unsigned int
-       kEplEventTypeDllkStartReducedCycle = 0x17,      // start reduced EPL cycle on MN
-       // arg is pointer to nothing
-       kEplEventTypeNmtMnuNmtCmdSent = 0x18,   // NMT command was actually sent
-       // arg is pointer to tEplFrame
-
-} tEplEventType;
-
-// EventSink determines the consumer of the event
-typedef enum {
-       kEplEventSinkSync = 0x00,       // Sync event for application or kernel EPL module
-       kEplEventSinkNmtk = 0x01,       // events for Nmtk module
-       kEplEventSinkDllk = 0x02,       // events for Dllk module
-       kEplEventSinkDlluCal = 0x03,    // events for DlluCal module
-       kEplEventSinkDllkCal = 0x04,    // events for DllkCal module
-       kEplEventSinkPdok = 0x05,       // events for Pdok module
-       kEplEventSinkNmtu = 0x06,       // events for Nmtu module
-       kEplEventSinkErrk = 0x07,       // events for Error handler module
-       kEplEventSinkErru = 0x08,       // events for Error signaling module
-       kEplEventSinkSdoAsySeq = 0x09,  // events for asyncronous SDO Sequence Layer module
-       kEplEventSinkNmtMnu = 0x0A,     // events for NmtMnu module
-       kEplEventSinkLedu = 0x0B,       // events for Ledu module
-       kEplEventSinkApi = 0x0F,        // events for API module
-
-} tEplEventSink;
-
-// EventSource determines the source of an errorevent
-typedef enum {
-       // kernelspace modules
-       kEplEventSourceDllk = 0x01,     // Dllk module
-       kEplEventSourceNmtk = 0x02,     // Nmtk module
-       kEplEventSourceObdk = 0x03,     // Obdk module
-       kEplEventSourcePdok = 0x04,     // Pdok module
-       kEplEventSourceTimerk = 0x05,   // Timerk module
-       kEplEventSourceEventk = 0x06,   // Eventk module
-       kEplEventSourceSyncCb = 0x07,   // sync-Cb
-       kEplEventSourceErrk = 0x08,     // Error handler module
-
-       // userspace modules
-       kEplEventSourceDllu = 0x10,     // Dllu module
-       kEplEventSourceNmtu = 0x11,     // Nmtu module
-       kEplEventSourceNmtCnu = 0x12,   // NmtCnu module
-       kEplEventSourceNmtMnu = 0x13,   // NmtMnu module
-       kEplEventSourceObdu = 0x14,     // Obdu module
-       kEplEventSourceSdoUdp = 0x15,   // Sdo/Udp module
-       kEplEventSourceSdoAsnd = 0x16,  // Sdo/Asnd module
-       kEplEventSourceSdoAsySeq = 0x17,        // Sdo asynchronus Sequence Layer module
-       kEplEventSourceSdoCom = 0x18,   // Sdo command layer module
-       kEplEventSourceTimeru = 0x19,   // Timeru module
-       kEplEventSourceCfgMau = 0x1A,   // CfgMau module
-       kEplEventSourceEventu = 0x1B,   // Eventu module
-       kEplEventSourceEplApi = 0x1C,   // Api module
-       kEplEventSourceLedu = 0x1D,     // Ledu module
-
-} tEplEventSource;
-
-// structure of EPL event (element order must not be changed!)
-typedef struct {
-       tEplEventType m_EventType /*:28 */ ;    // event type
-       tEplEventSink m_EventSink /*:4 */ ;     // event sink
-       tEplNetTime m_NetTime;  // timestamp
-       unsigned int m_uiSize;  // size of argument
-       void *m_pArg;           // argument of event
-
-} tEplEvent;
-
-// short structure of EPL event without argument and its size (element order must not be changed!)
-typedef struct {
-       tEplEventType m_EventType /*:28 */ ;    // event type
-       tEplEventSink m_EventSink /*:4 */ ;     // event sink
-       tEplNetTime m_NetTime;  // timestamp
-
-} tEplEventShort;
-
-typedef struct {
-       unsigned int m_uiIndex;
-       unsigned int m_uiSubIndex;
-
-} tEplEventObdError;
-
-// structure for kEplEventTypeError
-typedef struct {
-       tEplEventSource m_EventSource;  // module which posted this error event
-       tEplKernel m_EplError;  // EPL error which occured
-       union {
-               u8 m_bArg;
-               u32 m_dwArg;
-               tEplEventSource m_EventSource;  // from Eventk/u module (originating error source)
-               tEplEventObdError m_ObdError;   // from Obd module
-//        tEplErrHistoryEntry     m_HistoryEntry; // from Nmtk/u module
-
-       } m_Arg;
-
-} tEplEventError;
-
-// structure for kEplEventTypeDllError
-typedef struct {
-       unsigned long m_ulDllErrorEvents;       // EPL_DLL_ERR_*
-       unsigned int m_uiNodeId;
-       tEplNmtState m_NmtState;
-
-} tEplErrorHandlerkEvent;
-
-// callback function to get informed about sync event
-typedef tEplKernel(*tEplSyncCb) (void);
-
-// callback function for generic events
-typedef tEplKernel(*tEplProcessEventCb) (tEplEvent *pEplEvent_p);
-
-//---------------------------------------------------------------------------
-// function prototypes
-//---------------------------------------------------------------------------
-
-#endif // #ifndef _EPL_EVENT_H_
diff --git a/drivers/staging/epl/EplEventk.c b/drivers/staging/epl/EplEventk.c
deleted file mode 100644 (file)
index ef36815..0000000
+++ /dev/null
@@ -1,853 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for Epl-Kernelspace-Event-Modul
-
-  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: EplEventk.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.9 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/20 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#include "kernel/EplEventk.h"
-#include "kernel/EplNmtk.h"
-#include "kernel/EplDllk.h"
-#include "kernel/EplDllkCal.h"
-#include "kernel/EplErrorHandlerk.h"
-#include "Benchmark.h"
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_PDOK)) != 0)
-#include "kernel/EplPdok.h"
-#include "kernel/EplPdokCal.h"
-#endif
-
-#ifdef EPL_NO_FIFO
-#include "user/EplEventu.h"
-#else
-#include "SharedBuff.h"
-#endif
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-// TracePoint support for realtime-debugging
-#ifdef _DBG_TRACE_POINTS_
-void TgtDbgSignalTracePoint(u8 bTracePointNumber_p);
-void TgtDbgPostTraceValue(u32 dwTraceValue_p);
-#define TGT_DBG_SIGNAL_TRACE_POINT(p)   TgtDbgSignalTracePoint(p)
-#define TGT_DBG_POST_TRACE_VALUE(v)     TgtDbgPostTraceValue(v)
-#else
-#define TGT_DBG_SIGNAL_TRACE_POINT(p)
-#define TGT_DBG_POST_TRACE_VALUE(v)
-#endif
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-typedef struct {
-#ifndef EPL_NO_FIFO
-       tShbInstance m_pShbKernelToUserInstance;
-       tShbInstance m_pShbUserToKernelInstance;
-#else
-
-#endif
-       tEplSyncCb m_pfnCbSync;
-       unsigned int m_uiUserToKernelFullCount;
-
-} tEplEventkInstance;
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-static tEplEventkInstance EplEventkInstance_g;
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-// callback function for incoming events
-#ifndef EPL_NO_FIFO
-static void EplEventkRxSignalHandlerCb(tShbInstance pShbRxInstance_p,
-                                      unsigned long ulDataSize_p);
-#endif
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          C L A S S  <Epl-Kernelspace-Event>                             */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-//
-// Description:
-//
-//
-/***************************************************************************/
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplEventkInit
-//
-// Description: function initializes the first instance
-//
-// Parameters:  pfnCbSync_p = callback-function for sync event
-//
-// Returns:     tEpKernel   = errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplEventkInit(tEplSyncCb pfnCbSync_p)
-{
-       tEplKernel Ret;
-
-       Ret = EplEventkAddInstance(pfnCbSync_p);
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplEventkAddInstance
-//
-// Description: function adds one more instance
-//
-// Parameters:  pfnCbSync_p = callback-function for sync event
-//
-// Returns:     tEpKernel   = errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplEventkAddInstance(tEplSyncCb pfnCbSync_p)
-{
-       tEplKernel Ret;
-#ifndef EPL_NO_FIFO
-       tShbError ShbError;
-       unsigned int fShbNewCreated;
-#endif
-
-       Ret = kEplSuccessful;
-
-       // init instance structure
-       EplEventkInstance_g.m_uiUserToKernelFullCount = 0;
-
-       // save cb-function
-       EplEventkInstance_g.m_pfnCbSync = pfnCbSync_p;
-
-#ifndef EPL_NO_FIFO
-       // init shared loop buffer
-       // kernel -> user
-       ShbError = ShbCirAllocBuffer(EPL_EVENT_SIZE_SHB_KERNEL_TO_USER,
-                                    EPL_EVENT_NAME_SHB_KERNEL_TO_USER,
-                                    &EplEventkInstance_g.
-                                    m_pShbKernelToUserInstance,
-                                    &fShbNewCreated);
-       if (ShbError != kShbOk) {
-               EPL_DBGLVL_EVENTK_TRACE1
-                   ("EplEventkAddInstance(): ShbCirAllocBuffer(K2U) -> 0x%X\n",
-                    ShbError);
-               Ret = kEplNoResource;
-               goto Exit;
-       }
-       // user -> kernel
-       ShbError = ShbCirAllocBuffer(EPL_EVENT_SIZE_SHB_USER_TO_KERNEL,
-                                    EPL_EVENT_NAME_SHB_USER_TO_KERNEL,
-                                    &EplEventkInstance_g.
-                                    m_pShbUserToKernelInstance,
-                                    &fShbNewCreated);
-       if (ShbError != kShbOk) {
-               EPL_DBGLVL_EVENTK_TRACE1
-                   ("EplEventkAddInstance(): ShbCirAllocBuffer(U2K) -> 0x%X\n",
-                    ShbError);
-               Ret = kEplNoResource;
-               goto Exit;
-       }
-       // register eventhandler
-       ShbError =
-           ShbCirSetSignalHandlerNewData(EplEventkInstance_g.
-                                         m_pShbUserToKernelInstance,
-                                         EplEventkRxSignalHandlerCb,
-                                         kshbPriorityHigh);
-       if (ShbError != kShbOk) {
-               EPL_DBGLVL_EVENTK_TRACE1
-                   ("EplEventkAddInstance(): ShbCirSetSignalHandlerNewData(U2K) -> 0x%X\n",
-                    ShbError);
-               Ret = kEplNoResource;
-               goto Exit;
-       }
-
-      Exit:
-#endif
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplEventkDelInstance
-//
-// Description: function deletes instance and frees the buffers
-//
-// Parameters:  void
-//
-// Returns:     tEpKernel   = errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplEventkDelInstance(void)
-{
-       tEplKernel Ret;
-#ifndef EPL_NO_FIFO
-       tShbError ShbError;
-#endif
-
-       Ret = kEplSuccessful;
-
-#ifndef EPL_NO_FIFO
-       // set eventhandler to NULL
-       ShbError =
-           ShbCirSetSignalHandlerNewData(EplEventkInstance_g.
-                                         m_pShbUserToKernelInstance, NULL,
-                                         kShbPriorityNormal);
-       if (ShbError != kShbOk) {
-               EPL_DBGLVL_EVENTK_TRACE1
-                   ("EplEventkDelInstance(): ShbCirSetSignalHandlerNewData(U2K) -> 0x%X\n",
-                    ShbError);
-               Ret = kEplNoResource;
-       }
-       // free buffer User -> Kernel
-       ShbError =
-           ShbCirReleaseBuffer(EplEventkInstance_g.m_pShbUserToKernelInstance);
-       if (ShbError != kShbOk) {
-               EPL_DBGLVL_EVENTK_TRACE1
-                   ("EplEventkDelInstance(): ShbCirReleaseBuffer(U2K) -> 0x%X\n",
-                    ShbError);
-               Ret = kEplNoResource;
-       } else {
-               EplEventkInstance_g.m_pShbUserToKernelInstance = NULL;
-       }
-
-       // free buffer  Kernel -> User
-       ShbError =
-           ShbCirReleaseBuffer(EplEventkInstance_g.m_pShbKernelToUserInstance);
-       if (ShbError != kShbOk) {
-               EPL_DBGLVL_EVENTK_TRACE1
-                   ("EplEventkDelInstance(): ShbCirReleaseBuffer(K2U) -> 0x%X\n",
-                    ShbError);
-               Ret = kEplNoResource;
-       } else {
-               EplEventkInstance_g.m_pShbKernelToUserInstance = NULL;
-       }
-#endif
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplEventkProcess
-//
-// Description: Kernelthread that dispatches events in kernel part
-//
-// Parameters:  pEvent_p    = pointer to event-structure from buffer
-//
-// Returns:     tEpKernel   = errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplEventkProcess(tEplEvent *pEvent_p)
-{
-       tEplKernel Ret;
-       tEplEventSource EventSource;
-
-       Ret = kEplSuccessful;
-
-       // error handling if event queue is full
-       if (EplEventkInstance_g.m_uiUserToKernelFullCount > 0) {        // UserToKernel event queue has run out of space -> kEplNmtEventInternComError
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTK)) != 0)
-               tEplEvent Event;
-               tEplNmtEvent NmtEvent;
-#endif
-#ifndef EPL_NO_FIFO
-               tShbError ShbError;
-#endif
-
-               // directly call NMTk process function, because event queue is full
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTK)) != 0)
-               NmtEvent = kEplNmtEventInternComError;
-               Event.m_EventSink = kEplEventSinkNmtk;
-               Event.m_NetTime.m_dwNanoSec = 0;
-               Event.m_NetTime.m_dwSec = 0;
-               Event.m_EventType = kEplEventTypeNmtEvent;
-               Event.m_pArg = &NmtEvent;
-               Event.m_uiSize = sizeof(NmtEvent);
-               Ret = EplNmtkProcess(&Event);
-#endif
-
-               // NMT state machine changed to reset (i.e. NMT_GS_RESET_COMMUNICATION)
-               // now, it is safe to reset the counter and empty the event queue
-#ifndef EPL_NO_FIFO
-               ShbError =
-                   ShbCirResetBuffer(EplEventkInstance_g.
-                                     m_pShbUserToKernelInstance, 1000, NULL);
-#endif
-
-               EplEventkInstance_g.m_uiUserToKernelFullCount = 0;
-               TGT_DBG_SIGNAL_TRACE_POINT(22);
-
-               // also discard the current event (it doesn't matter if we lose another event)
-               goto Exit;
-       }
-       // check m_EventSink
-       switch (pEvent_p->m_EventSink) {
-       case kEplEventSinkSync:
-               {
-                       if (EplEventkInstance_g.m_pfnCbSync != NULL) {
-                               Ret = EplEventkInstance_g.m_pfnCbSync();
-                               if (Ret == kEplSuccessful) {
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_PDOK)) != 0)
-                                       // mark TPDOs as valid
-                                       Ret = EplPdokCalSetTpdosValid(TRUE);
-#endif
-                               } else if ((Ret != kEplReject)
-                                          && (Ret != kEplShutdown)) {
-                                       EventSource = kEplEventSourceSyncCb;
-
-                                       // Error event for API layer
-                                       EplEventkPostError
-                                           (kEplEventSourceEventk, Ret,
-                                            sizeof(EventSource), &EventSource);
-                               }
-                       }
-                       break;
-               }
-
-               // NMT-Kernel-Modul
-       case kEplEventSinkNmtk:
-               {
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTK)) != 0)
-                       Ret = EplNmtkProcess(pEvent_p);
-                       if ((Ret != kEplSuccessful) && (Ret != kEplShutdown)) {
-                               EventSource = kEplEventSourceNmtk;
-
-                               // Error event for API layer
-                               EplEventkPostError(kEplEventSourceEventk,
-                                                  Ret,
-                                                  sizeof(EventSource),
-                                                  &EventSource);
-                       }
-#endif
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLK)) != 0)
-                       if ((pEvent_p->m_EventType == kEplEventTypeNmtEvent)
-                           &&
-                           ((*((tEplNmtEvent *) pEvent_p->m_pArg) ==
-                             kEplNmtEventDllCeSoa)
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-                            || (*((tEplNmtEvent *) pEvent_p->m_pArg) ==
-                                kEplNmtEventDllMeSoaSent)
-#endif
-                           )) {        // forward SoA event to error handler
-                               Ret = EplErrorHandlerkProcess(pEvent_p);
-                               if ((Ret != kEplSuccessful)
-                                   && (Ret != kEplShutdown)) {
-                                       EventSource = kEplEventSourceErrk;
-
-                                       // Error event for API layer
-                                       EplEventkPostError
-                                           (kEplEventSourceEventk, Ret,
-                                            sizeof(EventSource), &EventSource);
-                               }
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_PDOK)) != 0)
-                               // forward SoA event to PDO module
-                               pEvent_p->m_EventType = kEplEventTypePdoSoa;
-                               Ret = EplPdokProcess(pEvent_p);
-                               if ((Ret != kEplSuccessful)
-                                   && (Ret != kEplShutdown)) {
-                                       EventSource = kEplEventSourcePdok;
-
-                                       // Error event for API layer
-                                       EplEventkPostError
-                                           (kEplEventSourceEventk, Ret,
-                                            sizeof(EventSource), &EventSource);
-                               }
-#endif
-
-                       }
-                       break;
-#endif
-               }
-
-               // events for Dllk module
-       case kEplEventSinkDllk:
-               {
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLK)) != 0)
-                       Ret = EplDllkProcess(pEvent_p);
-                       if ((Ret != kEplSuccessful) && (Ret != kEplShutdown)) {
-                               EventSource = kEplEventSourceDllk;
-
-                               // Error event for API layer
-                               EplEventkPostError(kEplEventSourceEventk,
-                                                  Ret,
-                                                  sizeof(EventSource),
-                                                  &EventSource);
-                       }
-#endif
-                       break;
-               }
-
-               // events for DllkCal module
-       case kEplEventSinkDllkCal:
-               {
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLK)) != 0)
-                       Ret = EplDllkCalProcess(pEvent_p);
-                       if ((Ret != kEplSuccessful) && (Ret != kEplShutdown)) {
-                               EventSource = kEplEventSourceDllk;
-
-                               // Error event for API layer
-                               EplEventkPostError(kEplEventSourceEventk,
-                                                  Ret,
-                                                  sizeof(EventSource),
-                                                  &EventSource);
-                       }
-#endif
-                       break;
-               }
-
-               //
-       case kEplEventSinkPdok:
-               {
-                       // PDO-Module
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_PDOK)) != 0)
-                       Ret = EplPdokProcess(pEvent_p);
-                       if ((Ret != kEplSuccessful) && (Ret != kEplShutdown)) {
-                               EventSource = kEplEventSourcePdok;
-
-                               // Error event for API layer
-                               EplEventkPostError(kEplEventSourceEventk,
-                                                  Ret,
-                                                  sizeof(EventSource),
-                                                  &EventSource);
-                       }
-#endif
-                       break;
-               }
-
-               // events for Error handler module
-       case kEplEventSinkErrk:
-               {
-                       // only call error handler if DLL is present
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLK)) != 0)
-                       Ret = EplErrorHandlerkProcess(pEvent_p);
-                       if ((Ret != kEplSuccessful) && (Ret != kEplShutdown)) {
-                               EventSource = kEplEventSourceErrk;
-
-                               // Error event for API layer
-                               EplEventkPostError(kEplEventSourceEventk,
-                                                  Ret,
-                                                  sizeof(EventSource),
-                                                  &EventSource);
-                       }
-                       break;
-#endif
-               }
-
-               // unknown sink
-       default:
-               {
-                       Ret = kEplEventUnknownSink;
-               }
-
-       }                       // end of switch(pEvent_p->m_EventSink)
-
-      Exit:
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplEventkPost
-//
-// Description: post events from kernel part
-//
-// Parameters:  pEvent_p    = pointer to event-structure from buffer
-//
-// Returns:     tEpKernel   = errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplEventkPost(tEplEvent *pEvent_p)
-{
-       tEplKernel Ret;
-#ifndef EPL_NO_FIFO
-       tShbError ShbError;
-       tShbCirChunk ShbCirChunk;
-       unsigned long ulDataSize;
-       unsigned int fBufferCompleted;
-#endif
-
-       Ret = kEplSuccessful;
-
-       // the event must be posted by using the abBuffer
-       // it is neede because the Argument must by copied
-       // to the buffer too and not only the pointer
-
-#ifndef EPL_NO_FIFO
-       // 2006/08/03 d.k.: Event and argument are posted as separate chunks to the event queue.
-       ulDataSize =
-           sizeof(tEplEvent) +
-           ((pEvent_p->m_pArg != NULL) ? pEvent_p->m_uiSize : 0);
-#endif
-
-       // decide in which buffer the event have to write
-       switch (pEvent_p->m_EventSink) {
-               // kernelspace modules
-       case kEplEventSinkSync:
-       case kEplEventSinkNmtk:
-       case kEplEventSinkDllk:
-       case kEplEventSinkDllkCal:
-       case kEplEventSinkPdok:
-       case kEplEventSinkErrk:
-               {
-#ifndef EPL_NO_FIFO
-                       // post message
-                       BENCHMARK_MOD_27_SET(2);
-                       ShbError =
-                           ShbCirAllocDataBlock(EplEventkInstance_g.
-                                                m_pShbUserToKernelInstance,
-                                                &ShbCirChunk, ulDataSize);
-                       switch (ShbError) {
-                       case kShbOk:
-                               break;
-
-                       case kShbBufferFull:
-                               {
-                                       EplEventkInstance_g.
-                                           m_uiUserToKernelFullCount++;
-                                       Ret = kEplEventPostError;
-                                       goto Exit;
-                               }
-
-                       default:
-                               {
-                                       EPL_DBGLVL_EVENTK_TRACE1
-                                           ("EplEventkPost(): ShbCirAllocDataBlock(U2K) -> 0x%X\n",
-                                            ShbError);
-                                       Ret = kEplEventPostError;
-                                       goto Exit;
-                               }
-                       }
-                       ShbError =
-                           ShbCirWriteDataChunk(EplEventkInstance_g.
-                                                m_pShbUserToKernelInstance,
-                                                &ShbCirChunk, pEvent_p,
-                                                sizeof(tEplEvent),
-                                                &fBufferCompleted);
-                       if (ShbError != kShbOk) {
-                               EPL_DBGLVL_EVENTK_TRACE1
-                                   ("EplEventkPost(): ShbCirWriteDataChunk(U2K) -> 0x%X\n",
-                                    ShbError);
-                               Ret = kEplEventPostError;
-                               goto Exit;
-                       }
-                       if (fBufferCompleted == FALSE) {
-                               ShbError =
-                                   ShbCirWriteDataChunk(EplEventkInstance_g.
-                                                        m_pShbUserToKernelInstance,
-                                                        &ShbCirChunk,
-                                                        pEvent_p->m_pArg,
-                                                        (unsigned long)
-                                                        pEvent_p->m_uiSize,
-                                                        &fBufferCompleted);
-                               if ((ShbError != kShbOk)
-                                   || (fBufferCompleted == FALSE)) {
-                                       EPL_DBGLVL_EVENTK_TRACE1
-                                           ("EplEventkPost(): ShbCirWriteDataChunk2(U2K) -> 0x%X\n",
-                                            ShbError);
-                                       Ret = kEplEventPostError;
-                                       goto Exit;
-                               }
-                       }
-                       BENCHMARK_MOD_27_RESET(2);
-
-#else
-                       Ret = EplEventkProcess(pEvent_p);
-#endif
-
-                       break;
-               }
-
-               // userspace modules
-       case kEplEventSinkNmtu:
-       case kEplEventSinkNmtMnu:
-       case kEplEventSinkSdoAsySeq:
-       case kEplEventSinkApi:
-       case kEplEventSinkDlluCal:
-       case kEplEventSinkErru:
-               {
-#ifndef EPL_NO_FIFO
-                       // post message
-//            BENCHMARK_MOD_27_SET(3);    // 74 Âµs until reset
-                       ShbError =
-                           ShbCirAllocDataBlock(EplEventkInstance_g.
-                                                m_pShbKernelToUserInstance,
-                                                &ShbCirChunk, ulDataSize);
-                       if (ShbError != kShbOk) {
-                               EPL_DBGLVL_EVENTK_TRACE1
-                                   ("EplEventkPost(): ShbCirAllocDataBlock(K2U) -> 0x%X\n",
-                                    ShbError);
-                               Ret = kEplEventPostError;
-                               goto Exit;
-                       }
-                       ShbError =
-                           ShbCirWriteDataChunk(EplEventkInstance_g.
-                                                m_pShbKernelToUserInstance,
-                                                &ShbCirChunk, pEvent_p,
-                                                sizeof(tEplEvent),
-                                                &fBufferCompleted);
-                       if (ShbError != kShbOk) {
-                               EPL_DBGLVL_EVENTK_TRACE1
-                                   ("EplEventkPost(): ShbCirWriteDataChunk(K2U) -> 0x%X\n",
-                                    ShbError);
-                               Ret = kEplEventPostError;
-                               goto Exit;
-                       }
-                       if (fBufferCompleted == FALSE) {
-                               ShbError =
-                                   ShbCirWriteDataChunk(EplEventkInstance_g.
-                                                        m_pShbKernelToUserInstance,
-                                                        &ShbCirChunk,
-                                                        pEvent_p->m_pArg,
-                                                        (unsigned long)
-                                                        pEvent_p->m_uiSize,
-                                                        &fBufferCompleted);
-                               if ((ShbError != kShbOk)
-                                   || (fBufferCompleted == FALSE)) {
-                                       EPL_DBGLVL_EVENTK_TRACE1
-                                           ("EplEventkPost(): ShbCirWriteDataChunk2(K2U) -> 0x%X\n",
-                                            ShbError);
-                                       Ret = kEplEventPostError;
-                                       goto Exit;
-                               }
-                       }
-//            BENCHMARK_MOD_27_RESET(3);  // 82 Âµs until ShbCirGetReadDataSize() in EplEventu
-
-#else
-                       Ret = EplEventuProcess(pEvent_p);
-#endif
-
-                       break;
-               }
-
-       default:
-               {
-                       Ret = kEplEventUnknownSink;
-               }
-
-       }                       // end of switch(pEvent_p->m_EventSink)
-
-#ifndef EPL_NO_FIFO
-      Exit:
-#endif
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplEventkPostError
-//
-// Description: post error event from kernel part to API layer
-//
-// Parameters:  EventSource_p   = source-module of the error event
-//              EplError_p      = code of occured error
-//              ArgSize_p       = size of the argument
-//              pArg_p          = pointer to the argument
-//
-// Returns:     tEpKernel       = errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplEventkPostError(tEplEventSource EventSource_p,
-                             tEplKernel EplError_p,
-                             unsigned int uiArgSize_p, void *pArg_p)
-{
-       tEplKernel Ret;
-       u8 abBuffer[EPL_MAX_EVENT_ARG_SIZE];
-       tEplEventError *pEventError = (tEplEventError *) abBuffer;
-       tEplEvent EplEvent;
-
-       Ret = kEplSuccessful;
-
-       // create argument
-       pEventError->m_EventSource = EventSource_p;
-       pEventError->m_EplError = EplError_p;
-       EPL_MEMCPY(&pEventError->m_Arg, pArg_p, uiArgSize_p);
-
-       // create event
-       EplEvent.m_EventType = kEplEventTypeError;
-       EplEvent.m_EventSink = kEplEventSinkApi;
-       EPL_MEMSET(&EplEvent.m_NetTime, 0x00, sizeof(EplEvent.m_NetTime));
-       EplEvent.m_uiSize =
-           (sizeof(EventSource_p) + sizeof(EplError_p) + uiArgSize_p);
-       EplEvent.m_pArg = &abBuffer[0];
-
-       // post errorevent
-       Ret = EplEventkPost(&EplEvent);
-
-       return Ret;
-}
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplEventkRxSignalHandlerCb()
-//
-// Description: Callback-function for events from user and kernel part
-//
-// Parameters:  pShbRxInstance_p    = Instance-pointer of buffer
-//              ulDataSize_p        = size of data
-//
-// Returns: void
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-#ifndef EPL_NO_FIFO
-static void EplEventkRxSignalHandlerCb(tShbInstance pShbRxInstance_p,
-                                      unsigned long ulDataSize_p)
-{
-       tEplEvent *pEplEvent;
-       tShbError ShbError;
-//unsigned long   ulBlockCount;
-//unsigned long   ulDataSize;
-       u8 abDataBuffer[sizeof(tEplEvent) + EPL_MAX_EVENT_ARG_SIZE];
-       // d.k.: abDataBuffer contains the complete tEplEvent structure
-       //       and behind this the argument
-
-       TGT_DBG_SIGNAL_TRACE_POINT(20);
-
-       BENCHMARK_MOD_27_RESET(0);
-       // copy data from event queue
-       ShbError = ShbCirReadDataBlock(pShbRxInstance_p,
-                                      &abDataBuffer[0],
-                                      sizeof(abDataBuffer), &ulDataSize_p);
-       if (ShbError != kShbOk) {
-               // error goto exit
-               goto Exit;
-       }
-       // resolve the pointer to the event structure
-       pEplEvent = (tEplEvent *) abDataBuffer;
-       // set Datasize
-       pEplEvent->m_uiSize = (ulDataSize_p - sizeof(tEplEvent));
-       if (pEplEvent->m_uiSize > 0) {
-               // set pointer to argument
-               pEplEvent->m_pArg = &abDataBuffer[sizeof(tEplEvent)];
-       } else {
-               //set pointer to NULL
-               pEplEvent->m_pArg = NULL;
-       }
-
-       BENCHMARK_MOD_27_SET(0);
-       // call processfunction
-       EplEventkProcess(pEplEvent);
-
-      Exit:
-       return;
-}
-#endif
-
-// EOF
diff --git a/drivers/staging/epl/EplEventu.c b/drivers/staging/epl/EplEventu.c
deleted file mode 100644 (file)
index 3ae2841..0000000
+++ /dev/null
@@ -1,813 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for Epl-Userspace-Event-Modul
-
-  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: EplEventu.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.8 $  $Date: 2008/11/17 16:40:39 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/20 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#include "user/EplEventu.h"
-#include "user/EplNmtu.h"
-#include "user/EplNmtMnu.h"
-#include "user/EplSdoAsySequ.h"
-#include "user/EplDlluCal.h"
-#include "user/EplLedu.h"
-#include "Benchmark.h"
-
-#ifdef EPL_NO_FIFO
-#include "kernel/EplEventk.h"
-#else
-#include "SharedBuff.h"
-#endif
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-// TracePoint support for realtime-debugging
-#ifdef _DBG_TRACE_POINTS_
-void TgtDbgSignalTracePoint(u8 bTracePointNumber_p);
-void TgtDbgPostTraceValue(u32 dwTraceValue_p);
-#define TGT_DBG_SIGNAL_TRACE_POINT(p)   TgtDbgSignalTracePoint(p)
-#define TGT_DBG_POST_TRACE_VALUE(v)     TgtDbgPostTraceValue(v)
-#else
-#define TGT_DBG_SIGNAL_TRACE_POINT(p)
-#define TGT_DBG_POST_TRACE_VALUE(v)
-#endif
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-typedef struct {
-#ifndef EPL_NO_FIFO
-       tShbInstance m_pShbKernelToUserInstance;
-       tShbInstance m_pShbUserToKernelInstance;
-#endif
-       tEplProcessEventCb m_pfnApiProcessEventCb;
-
-} tEplEventuInstance;
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-//#ifndef EPL_NO_FIFO
-static tEplEventuInstance EplEventuInstance_g;
-//#endif
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-#ifndef EPL_NO_FIFO
-// callback function for incomming events
-static void EplEventuRxSignalHandlerCb(tShbInstance pShbRxInstance_p,
-                                      unsigned long ulDataSize_p);
-#endif
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          C L A S S  <Epl-User-Event>                                    */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-//
-// Description:
-//
-//
-/***************************************************************************/
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplEventuInit
-//
-// Description: function initialize the first instance
-//
-//
-//
-// Parameters:  pfnApiProcessEventCb_p  = function pointer for API event callback
-//
-//
-// Returns:      tEpKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplEventuInit(tEplProcessEventCb pfnApiProcessEventCb_p)
-{
-       tEplKernel Ret;
-
-       Ret = EplEventuAddInstance(pfnApiProcessEventCb_p);
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplEventuAddInstance
-//
-// Description: function add one more instance
-//
-//
-//
-// Parameters:  pfnApiProcessEventCb_p  = function pointer for API event callback
-//
-//
-// Returns:      tEpKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplEventuAddInstance(tEplProcessEventCb pfnApiProcessEventCb_p)
-{
-       tEplKernel Ret;
-#ifndef EPL_NO_FIFO
-       tShbError ShbError;
-       unsigned int fShbNewCreated;
-#endif
-
-       Ret = kEplSuccessful;
-
-       // init instance variables
-       EplEventuInstance_g.m_pfnApiProcessEventCb = pfnApiProcessEventCb_p;
-
-#ifndef EPL_NO_FIFO
-       // init shared loop buffer
-       // kernel -> user
-       ShbError = ShbCirAllocBuffer(EPL_EVENT_SIZE_SHB_KERNEL_TO_USER,
-                                    EPL_EVENT_NAME_SHB_KERNEL_TO_USER,
-                                    &EplEventuInstance_g.
-                                    m_pShbKernelToUserInstance,
-                                    &fShbNewCreated);
-       if (ShbError != kShbOk) {
-               EPL_DBGLVL_EVENTK_TRACE1
-                   ("EplEventuAddInstance(): ShbCirAllocBuffer(K2U) -> 0x%X\n",
-                    ShbError);
-               Ret = kEplNoResource;
-               goto Exit;
-       }
-
-       // user -> kernel
-       ShbError = ShbCirAllocBuffer(EPL_EVENT_SIZE_SHB_USER_TO_KERNEL,
-                                    EPL_EVENT_NAME_SHB_USER_TO_KERNEL,
-                                    &EplEventuInstance_g.
-                                    m_pShbUserToKernelInstance,
-                                    &fShbNewCreated);
-       if (ShbError != kShbOk) {
-               EPL_DBGLVL_EVENTK_TRACE1
-                   ("EplEventuAddInstance(): ShbCirAllocBuffer(U2K) -> 0x%X\n",
-                    ShbError);
-               Ret = kEplNoResource;
-               goto Exit;
-       }
-       // register eventhandler
-       ShbError =
-           ShbCirSetSignalHandlerNewData(EplEventuInstance_g.
-                                         m_pShbKernelToUserInstance,
-                                         EplEventuRxSignalHandlerCb,
-                                         kShbPriorityNormal);
-       if (ShbError != kShbOk) {
-               EPL_DBGLVL_EVENTK_TRACE1
-                   ("EplEventuAddInstance(): ShbCirSetSignalHandlerNewData(K2U) -> 0x%X\n",
-                    ShbError);
-               Ret = kEplNoResource;
-               goto Exit;
-       }
-
-      Exit:
-#endif
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplEventuDelInstance
-//
-// Description: function delete instance an free the bufferstructure
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:      tEpKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplEventuDelInstance(void)
-{
-       tEplKernel Ret;
-#ifndef EPL_NO_FIFO
-       tShbError ShbError;
-#endif
-
-       Ret = kEplSuccessful;
-
-#ifndef EPL_NO_FIFO
-       // set eventhandler to NULL
-       ShbError =
-           ShbCirSetSignalHandlerNewData(EplEventuInstance_g.
-                                         m_pShbKernelToUserInstance, NULL,
-                                         kShbPriorityNormal);
-       if (ShbError != kShbOk) {
-               EPL_DBGLVL_EVENTK_TRACE1
-                   ("EplEventuDelInstance(): ShbCirSetSignalHandlerNewData(K2U) -> 0x%X\n",
-                    ShbError);
-               Ret = kEplNoResource;
-       }
-       // free buffer User -> Kernel
-       ShbError =
-           ShbCirReleaseBuffer(EplEventuInstance_g.m_pShbUserToKernelInstance);
-       if ((ShbError != kShbOk) && (ShbError != kShbMemUsedByOtherProcs)) {
-               EPL_DBGLVL_EVENTK_TRACE1
-                   ("EplEventuDelInstance(): ShbCirReleaseBuffer(U2K) -> 0x%X\n",
-                    ShbError);
-               Ret = kEplNoResource;
-       } else {
-               EplEventuInstance_g.m_pShbUserToKernelInstance = NULL;
-       }
-
-       // free buffer  Kernel -> User
-       ShbError =
-           ShbCirReleaseBuffer(EplEventuInstance_g.m_pShbKernelToUserInstance);
-       if ((ShbError != kShbOk) && (ShbError != kShbMemUsedByOtherProcs)) {
-               EPL_DBGLVL_EVENTK_TRACE1
-                   ("EplEventuDelInstance(): ShbCirReleaseBuffer(K2U) -> 0x%X\n",
-                    ShbError);
-               Ret = kEplNoResource;
-       } else {
-               EplEventuInstance_g.m_pShbKernelToUserInstance = NULL;
-       }
-
-#endif
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplEventuProcess
-//
-// Description: Kernelthread that dispatches events in kernelspace
-//
-//
-//
-// Parameters:  pEvent_p = pointer to event-structur from buffer
-//
-//
-// Returns:      tEpKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplEventuProcess(tEplEvent *pEvent_p)
-{
-       tEplKernel Ret;
-       tEplEventSource EventSource;
-
-       Ret = kEplSuccessful;
-
-       // check m_EventSink
-       switch (pEvent_p->m_EventSink) {
-               // NMT-User-Module
-       case kEplEventSinkNmtu:
-               {
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTU)) != 0)
-                       Ret = EplNmtuProcessEvent(pEvent_p);
-                       if ((Ret != kEplSuccessful) && (Ret != kEplShutdown)) {
-                               EventSource = kEplEventSourceNmtu;
-
-                               // Error event for API layer
-                               EplEventuPostError(kEplEventSourceEventu,
-                                                  Ret,
-                                                  sizeof(EventSource),
-                                                  &EventSource);
-                       }
-#endif
-                       break;
-               }
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-               // NMT-MN-User-Module
-       case kEplEventSinkNmtMnu:
-               {
-                       Ret = EplNmtMnuProcessEvent(pEvent_p);
-                       if ((Ret != kEplSuccessful) && (Ret != kEplShutdown)) {
-                               EventSource = kEplEventSourceNmtMnu;
-
-                               // Error event for API layer
-                               EplEventuPostError(kEplEventSourceEventu,
-                                                  Ret,
-                                                  sizeof(EventSource),
-                                                  &EventSource);
-                       }
-                       break;
-               }
-#endif
-
-#if ((((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) != 0)   \
-     || (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOS)) != 0))
-               // events for asynchronus SDO Sequence Layer
-       case kEplEventSinkSdoAsySeq:
-               {
-                       Ret = EplSdoAsySeqProcessEvent(pEvent_p);
-                       if ((Ret != kEplSuccessful) && (Ret != kEplShutdown)) {
-                               EventSource = kEplEventSourceSdoAsySeq;
-
-                               // Error event for API layer
-                               EplEventuPostError(kEplEventSourceEventu,
-                                                  Ret,
-                                                  sizeof(EventSource),
-                                                  &EventSource);
-                       }
-                       break;
-               }
-#endif
-
-               // LED user part module
-       case kEplEventSinkLedu:
-               {
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_LEDU)) != 0)
-                       Ret = EplLeduProcessEvent(pEvent_p);
-                       if ((Ret != kEplSuccessful) && (Ret != kEplShutdown)) {
-                               EventSource = kEplEventSourceLedu;
-
-                               // Error event for API layer
-                               EplEventuPostError(kEplEventSourceEventu,
-                                                  Ret,
-                                                  sizeof(EventSource),
-                                                  &EventSource);
-                       }
-#endif
-                       break;
-               }
-
-               // event for EPL api
-       case kEplEventSinkApi:
-               {
-                       if (EplEventuInstance_g.m_pfnApiProcessEventCb != NULL) {
-                               Ret =
-                                   EplEventuInstance_g.
-                                   m_pfnApiProcessEventCb(pEvent_p);
-                               if ((Ret != kEplSuccessful)
-                                   && (Ret != kEplShutdown)) {
-                                       EventSource = kEplEventSourceEplApi;
-
-                                       // Error event for API layer
-                                       EplEventuPostError
-                                           (kEplEventSourceEventu, Ret,
-                                            sizeof(EventSource), &EventSource);
-                               }
-                       }
-                       break;
-
-               }
-
-       case kEplEventSinkDlluCal:
-               {
-                       Ret = EplDlluCalProcess(pEvent_p);
-                       if ((Ret != kEplSuccessful) && (Ret != kEplShutdown)) {
-                               EventSource = kEplEventSourceDllu;
-
-                               // Error event for API layer
-                               EplEventuPostError(kEplEventSourceEventu,
-                                                  Ret,
-                                                  sizeof(EventSource),
-                                                  &EventSource);
-                       }
-                       break;
-
-               }
-
-       case kEplEventSinkErru:
-               {
-                       /*
-                          Ret = EplErruProcess(pEvent_p);
-                          if ((Ret != kEplSuccessful) && (Ret != kEplShutdown))
-                          {
-                          EventSource = kEplEventSourceErru;
-
-                          // Error event for API layer
-                          EplEventuPostError(kEplEventSourceEventu,
-                          Ret,
-                          sizeof(EventSource),
-                          &EventSource);
-                          }
-                        */
-                       break;
-
-               }
-
-               // unknown sink
-       default:
-               {
-                       Ret = kEplEventUnknownSink;
-               }
-
-       }                       // end of switch(pEvent_p->m_EventSink)
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplEventuPost
-//
-// Description: post events from userspace
-//
-//
-//
-// Parameters:  pEvent_p = pointer to event-structur from buffer
-//
-//
-// Returns:      tEpKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplEventuPost(tEplEvent *pEvent_p)
-{
-       tEplKernel Ret;
-#ifndef EPL_NO_FIFO
-       tShbError ShbError;
-       tShbCirChunk ShbCirChunk;
-       unsigned long ulDataSize;
-       unsigned int fBufferCompleted;
-#endif
-
-       Ret = kEplSuccessful;
-
-#ifndef EPL_NO_FIFO
-       // 2006/08/03 d.k.: Event and argument are posted as separate chunks to the event queue.
-       ulDataSize =
-           sizeof(tEplEvent) +
-           ((pEvent_p->m_pArg != NULL) ? pEvent_p->m_uiSize : 0);
-#endif
-
-       // decide in which buffer the event have to write
-       switch (pEvent_p->m_EventSink) {
-               // kernelspace modules
-       case kEplEventSinkSync:
-       case kEplEventSinkNmtk:
-       case kEplEventSinkDllk:
-       case kEplEventSinkDllkCal:
-       case kEplEventSinkPdok:
-       case kEplEventSinkErrk:
-               {
-#ifndef EPL_NO_FIFO
-                       // post message
-                       ShbError =
-                           ShbCirAllocDataBlock(EplEventuInstance_g.
-                                                m_pShbUserToKernelInstance,
-                                                &ShbCirChunk, ulDataSize);
-                       if (ShbError != kShbOk) {
-                               EPL_DBGLVL_EVENTK_TRACE1
-                                   ("EplEventuPost(): ShbCirAllocDataBlock(U2K) -> 0x%X\n",
-                                    ShbError);
-                               Ret = kEplEventPostError;
-                               goto Exit;
-                       }
-                       ShbError =
-                           ShbCirWriteDataChunk(EplEventuInstance_g.
-                                                m_pShbUserToKernelInstance,
-                                                &ShbCirChunk, pEvent_p,
-                                                sizeof(tEplEvent),
-                                                &fBufferCompleted);
-                       if (ShbError != kShbOk) {
-                               EPL_DBGLVL_EVENTK_TRACE1
-                                   ("EplEventuPost(): ShbCirWriteDataChunk(U2K) -> 0x%X\n",
-                                    ShbError);
-                               Ret = kEplEventPostError;
-                               goto Exit;
-                       }
-                       if (fBufferCompleted == FALSE) {
-                               ShbError =
-                                   ShbCirWriteDataChunk(EplEventuInstance_g.
-                                                        m_pShbUserToKernelInstance,
-                                                        &ShbCirChunk,
-                                                        pEvent_p->m_pArg,
-                                                        (unsigned long)
-                                                        pEvent_p->m_uiSize,
-                                                        &fBufferCompleted);
-                               if ((ShbError != kShbOk)
-                                   || (fBufferCompleted == FALSE)) {
-                                       EPL_DBGLVL_EVENTK_TRACE1
-                                           ("EplEventuPost(): ShbCirWriteDataChunk2(U2K) -> 0x%X\n",
-                                            ShbError);
-                                       Ret = kEplEventPostError;
-                                       goto Exit;
-                               }
-                       }
-#else
-                       Ret = EplEventkProcess(pEvent_p);
-#endif
-
-                       break;
-               }
-
-               // userspace modules
-       case kEplEventSinkNmtMnu:
-       case kEplEventSinkNmtu:
-       case kEplEventSinkSdoAsySeq:
-       case kEplEventSinkApi:
-       case kEplEventSinkDlluCal:
-       case kEplEventSinkErru:
-       case kEplEventSinkLedu:
-               {
-#ifndef EPL_NO_FIFO
-                       // post message
-                       ShbError =
-                           ShbCirAllocDataBlock(EplEventuInstance_g.
-                                                m_pShbKernelToUserInstance,
-                                                &ShbCirChunk, ulDataSize);
-                       if (ShbError != kShbOk) {
-                               EPL_DBGLVL_EVENTK_TRACE1
-                                   ("EplEventuPost(): ShbCirAllocDataBlock(K2U) -> 0x%X\n",
-                                    ShbError);
-                               Ret = kEplEventPostError;
-                               goto Exit;
-                       }
-                       ShbError =
-                           ShbCirWriteDataChunk(EplEventuInstance_g.
-                                                m_pShbKernelToUserInstance,
-                                                &ShbCirChunk, pEvent_p,
-                                                sizeof(tEplEvent),
-                                                &fBufferCompleted);
-                       if (ShbError != kShbOk) {
-                               EPL_DBGLVL_EVENTK_TRACE1
-                                   ("EplEventuPost(): ShbCirWriteDataChunk(K2U) -> 0x%X\n",
-                                    ShbError);
-                               Ret = kEplEventPostError;
-                               goto Exit;
-                       }
-                       if (fBufferCompleted == FALSE) {
-                               ShbError =
-                                   ShbCirWriteDataChunk(EplEventuInstance_g.
-                                                        m_pShbKernelToUserInstance,
-                                                        &ShbCirChunk,
-                                                        pEvent_p->m_pArg,
-                                                        (unsigned long)
-                                                        pEvent_p->m_uiSize,
-                                                        &fBufferCompleted);
-                               if ((ShbError != kShbOk)
-                                   || (fBufferCompleted == FALSE)) {
-                                       EPL_DBGLVL_EVENTK_TRACE1
-                                           ("EplEventuPost(): ShbCirWriteDataChunk2(K2U) -> 0x%X\n",
-                                            ShbError);
-                                       Ret = kEplEventPostError;
-                                       goto Exit;
-                               }
-                       }
-#else
-                       Ret = EplEventuProcess(pEvent_p);
-#endif
-
-                       break;
-               }
-
-       default:
-               {
-                       Ret = kEplEventUnknownSink;
-               }
-
-       }                       // end of switch(pEvent_p->m_EventSink)
-
-#ifndef EPL_NO_FIFO
-      Exit:
-#endif
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplEventuPostError
-//
-// Description: post errorevent from userspace
-//
-//
-//
-// Parameters:  EventSource_p   = source-module of the errorevent
-//              EplError_p     = code of occured error
-//              uiArgSize_p     = size of the argument
-//              pArg_p          = pointer to the argument
-//
-//
-// Returns:      tEpKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplEventuPostError(tEplEventSource EventSource_p,
-                             tEplKernel EplError_p,
-                             unsigned int uiArgSize_p, void *pArg_p)
-{
-       tEplKernel Ret;
-       u8 abBuffer[EPL_MAX_EVENT_ARG_SIZE];
-       tEplEventError *pEventError = (tEplEventError *) abBuffer;
-       tEplEvent EplEvent;
-
-       Ret = kEplSuccessful;
-
-       // create argument
-       pEventError->m_EventSource = EventSource_p;
-       pEventError->m_EplError = EplError_p;
-       EPL_MEMCPY(&pEventError->m_Arg, pArg_p, uiArgSize_p);
-
-       // create event
-       EplEvent.m_EventType = kEplEventTypeError;
-       EplEvent.m_EventSink = kEplEventSinkApi;
-       EPL_MEMSET(&EplEvent.m_NetTime, 0x00, sizeof(EplEvent.m_NetTime));
-       EplEvent.m_uiSize =
-           (sizeof(EventSource_p) + sizeof(EplError_p) + uiArgSize_p);
-       EplEvent.m_pArg = &abBuffer[0];
-
-       // post errorevent
-       Ret = EplEventuPost(&EplEvent);
-
-       return Ret;
-}
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplEventuRxSignalHandlerCb()
-//
-// Description: Callback-function for evets from kernelspace
-//
-//
-//
-// Parameters:  pShbRxInstance_p    = Instance-pointer for buffer
-//              ulDataSize_p        = size of data
-//
-//
-// Returns: void
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-#ifndef EPL_NO_FIFO
-static void EplEventuRxSignalHandlerCb(tShbInstance pShbRxInstance_p,
-                                      unsigned long ulDataSize_p)
-{
-       tEplEvent *pEplEvent;
-       tShbError ShbError;
-//unsigned long   ulBlockCount;
-//unsigned long   ulDataSize;
-       u8 abDataBuffer[sizeof(tEplEvent) + EPL_MAX_EVENT_ARG_SIZE];
-       // d.k.: abDataBuffer contains the complete tEplEvent structure
-       //       and behind this the argument
-
-       TGT_DBG_SIGNAL_TRACE_POINT(21);
-
-// d.k. not needed because it is already done in SharedBuff
-/*    do
-    {
-        BENCHMARK_MOD_28_SET(1);    // 4 Âµs until reset
-        // get messagesize
-        ShbError = ShbCirGetReadDataSize (pShbRxInstance_p, &ulDataSize);
-        if(ShbError != kShbOk)
-        {
-            // error goto exit
-            goto Exit;
-        }
-
-        BENCHMARK_MOD_28_RESET(1);  // 14 Âµs until set
-*/
-       // copy data from event queue
-       ShbError = ShbCirReadDataBlock(pShbRxInstance_p,
-                                      &abDataBuffer[0],
-                                      sizeof(abDataBuffer), &ulDataSize_p);
-       if (ShbError != kShbOk) {
-               // error goto exit
-               goto Exit;
-       }
-       // resolve the pointer to the event structure
-       pEplEvent = (tEplEvent *) abDataBuffer;
-       // set Datasize
-       pEplEvent->m_uiSize = (ulDataSize_p - sizeof(tEplEvent));
-       if (pEplEvent->m_uiSize > 0) {
-               // set pointer to argument
-               pEplEvent->m_pArg = &abDataBuffer[sizeof(tEplEvent)];
-       } else {
-               //set pointer to NULL
-               pEplEvent->m_pArg = NULL;
-       }
-
-       BENCHMARK_MOD_28_SET(1);
-       // call processfunction
-       EplEventuProcess(pEplEvent);
-
-       BENCHMARK_MOD_28_RESET(1);
-       // read number of left messages to process
-// d.k. not needed because it is already done in SharedBuff
-/*        ShbError = ShbCirGetReadBlockCount (pShbRxInstance_p, &ulBlockCount);
-        if (ShbError != kShbOk)
-        {
-            // error goto exit
-            goto Exit;
-        }
-    } while (ulBlockCount > 0);
-*/
-      Exit:
-       return;
-}
-#endif
-
-// EOF
diff --git a/drivers/staging/epl/EplFrame.h b/drivers/staging/epl/EplFrame.h
deleted file mode 100644 (file)
index ba1ae9e..0000000
+++ /dev/null
@@ -1,344 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for EPL frames
-
-  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: EplFrame.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.5 $  $Date: 2008/06/23 14:56:33 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/05/22 d.k.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#ifndef _EPL_FRAME_H_
-#define _EPL_FRAME_H_
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-// defines for EplFrame.m_wFlag
-#define EPL_FRAME_FLAG1_RD          0x01       // ready                                    (PReq, PRes)
-#define EPL_FRAME_FLAG1_ER          0x02       // exception reset (error signalling)       (SoA)
-#define EPL_FRAME_FLAG1_EA          0x04       // exception acknowledge (error signalling) (PReq, SoA)
-#define EPL_FRAME_FLAG1_EC          0x08       // exception clear (error signalling)       (StatusRes)
-#define EPL_FRAME_FLAG1_EN          0x10       // exception new (error signalling)         (PRes, StatusRes)
-#define EPL_FRAME_FLAG1_MS          0x20       // multiplexed slot                         (PReq)
-#define EPL_FRAME_FLAG1_PS          0x40       // prescaled slot                           (SoC)
-#define EPL_FRAME_FLAG1_MC          0x80       // multiplexed cycle completed              (SoC)
-#define EPL_FRAME_FLAG2_RS          0x07       // number of pending requests to send       (PRes, StatusRes, IdentRes)
-#define EPL_FRAME_FLAG2_PR          0x38       // priority of requested asynch. frame      (PRes, StatusRes, IdentRes)
-#define EPL_FRAME_FLAG2_PR_SHIFT    3  // shift of priority of requested asynch. frame
-
-// error history/status entry types
-#define EPL_ERR_ENTRYTYPE_STATUS        0x8000
-#define EPL_ERR_ENTRYTYPE_HISTORY       0x0000
-#define EPL_ERR_ENTRYTYPE_EMCY          0x4000
-#define EPL_ERR_ENTRYTYPE_MODE_ACTIVE   0x1000
-#define EPL_ERR_ENTRYTYPE_MODE_CLEARED  0x2000
-#define EPL_ERR_ENTRYTYPE_MODE_OCCURRED 0x3000
-#define EPL_ERR_ENTRYTYPE_MODE_MASK     0x3000
-#define EPL_ERR_ENTRYTYPE_PROF_VENDOR   0x0001
-#define EPL_ERR_ENTRYTYPE_PROF_EPL      0x0002
-#define EPL_ERR_ENTRYTYPE_PROF_MASK     0x0FFF
-
-// defines for EPL version / PDO version
-#define EPL_VERSION_SUB             0x0F       // sub version
-#define EPL_VERSION_MAIN            0xF0       // main version
-
-//---------------------------------------------------------------------------
-// typedef
-//---------------------------------------------------------------------------
-
-// $$$ d.k.: move this definition to global.h
-// byte-align structures
-#ifdef _MSC_VER
-#    pragma pack( push, packing )
-#    pragma pack( 1 )
-#    define PACK_STRUCT
-#elif defined( __GNUC__ )
-#    define PACK_STRUCT    __attribute__((packed))
-#else
-#    error you must byte-align these structures with the appropriate compiler directives
-#endif
-
-typedef struct {
-       // Offset 17
-       u8 m_le_bRes1;  // reserved
-       // Offset 18
-       u8 m_le_bFlag1; // Flags: MC, PS
-       // Offset 19
-       u8 m_le_bFlag2; // Flags: res
-       // Offset 20
-       tEplNetTime m_le_NetTime;       // supported if D_NMT_NetTimeIsRealTime_BOOL is set
-       // Offset 28
-       u64 m_le_RelativeTime;  // in us (supported if D_NMT_RelativeTime_BOOL is set)
-
-} PACK_STRUCT tEplSocFrame;
-
-typedef struct {
-       // Offset 17
-       u8 m_le_bRes1;  // reserved
-       // Offset 18
-       u8 m_le_bFlag1; // Flags: MS, EA, RD
-       // Offset 19
-       u8 m_le_bFlag2; // Flags: res
-       // Offset 20
-       u8 m_le_bPdoVersion;
-       // Offset 21
-       u8 m_le_bRes2;  // reserved
-       // Offset 22
-       u16 m_le_wSize;
-       // Offset 24
-       u8 m_le_abPayload[256 /*D_NMT_IsochrRxMaxPayload_U16 */ ];
-
-} PACK_STRUCT tEplPreqFrame;
-
-typedef struct {
-       // Offset 17
-       u8 m_le_bNmtStatus;     // NMT state
-       // Offset 18
-       u8 m_le_bFlag1; // Flags: MS, EN, RD
-       // Offset 19
-       u8 m_le_bFlag2; // Flags: PR, RS
-       // Offset 20
-       u8 m_le_bPdoVersion;
-       // Offset 21
-       u8 m_le_bRes2;  // reserved
-       // Offset 22
-       u16 m_le_wSize;
-       // Offset 24
-       u8 m_le_abPayload[256   /*D_NMT_IsochrRxMaxPayload_U16
-                                  / D_NMT_IsochrTxMaxPayload_U16 */ ];
-
-} PACK_STRUCT tEplPresFrame;
-
-typedef struct {
-       // Offset 17
-       u8 m_le_bNmtStatus;     // NMT state
-       // Offset 18
-       u8 m_le_bFlag1; // Flags: EA, ER
-       // Offset 19
-       u8 m_le_bFlag2; // Flags: res
-       // Offset 20
-       u8 m_le_bReqServiceId;
-       // Offset 21
-       u8 m_le_bReqServiceTarget;
-       // Offset 22
-       u8 m_le_bEplVersion;
-
-} PACK_STRUCT tEplSoaFrame;
-
-typedef struct {
-       u16 m_wEntryType;
-       u16 m_wErrorCode;
-       tEplNetTime m_TimeStamp;
-       u8 m_abAddInfo[8];
-
-} PACK_STRUCT tEplErrHistoryEntry;
-
-typedef struct {
-       // Offset 18
-       u8 m_le_bFlag1; // Flags: EN, EC
-       u8 m_le_bFlag2; // Flags: PR, RS
-       u8 m_le_bNmtStatus;     // NMT state
-       u8 m_le_bRes1[3];
-       u64 m_le_qwStaticError; // static error bit field
-       tEplErrHistoryEntry m_le_aErrHistoryEntry[14];
-
-} PACK_STRUCT tEplStatusResponse;
-
-typedef struct {
-       // Offset 18
-       u8 m_le_bFlag1; // Flags: res
-       u8 m_le_bFlag2; // Flags: PR, RS
-       u8 m_le_bNmtStatus;     // NMT state
-       u8 m_le_bIdentRespFlags;        // Flags: FW
-       u8 m_le_bEplProfileVersion;
-       u8 m_le_bRes1;
-       u32 m_le_dwFeatureFlags;        // NMT_FeatureFlags_U32
-       u16 m_le_wMtu;          // NMT_CycleTiming_REC.AsyncMTU_U16: C_IP_MIN_MTU - C_IP_MAX_MTU
-       u16 m_le_wPollInSize;   // NMT_CycleTiming_REC.PReqActPayload_U16
-       u16 m_le_wPollOutSize;  // NMT_CycleTiming_REC.PResActPayload_U16
-       u32 m_le_dwResponseTime;        // NMT_CycleTiming_REC.PResMaxLatency_U32
-       u16 m_le_wRes2;
-       u32 m_le_dwDeviceType;  // NMT_DeviceType_U32
-       u32 m_le_dwVendorId;    // NMT_IdentityObject_REC.VendorId_U32
-       u32 m_le_dwProductCode; // NMT_IdentityObject_REC.ProductCode_U32
-       u32 m_le_dwRevisionNumber;      // NMT_IdentityObject_REC.RevisionNo_U32
-       u32 m_le_dwSerialNumber;        // NMT_IdentityObject_REC.SerialNo_U32
-       u64 m_le_qwVendorSpecificExt1;
-       u32 m_le_dwVerifyConfigurationDate;     // CFM_VerifyConfiguration_REC.ConfDate_U32
-       u32 m_le_dwVerifyConfigurationTime;     // CFM_VerifyConfiguration_REC.ConfTime_U32
-       u32 m_le_dwApplicationSwDate;   // PDL_LocVerApplSw_REC.ApplSwDate_U32 on programmable device or date portion of NMT_ManufactSwVers_VS on non-programmable device
-       u32 m_le_dwApplicationSwTime;   // PDL_LocVerApplSw_REC.ApplSwTime_U32 on programmable device or time portion of NMT_ManufactSwVers_VS on non-programmable device
-       u32 m_le_dwIpAddress;
-       u32 m_le_dwSubnetMask;
-       u32 m_le_dwDefaultGateway;
-       u8 m_le_sHostname[32];
-       u8 m_le_abVendorSpecificExt2[48];
-
-} PACK_STRUCT tEplIdentResponse;
-
-typedef struct {
-       // Offset 18
-       u8 m_le_bNmtCommandId;
-       u8 m_le_bRes1;
-       u8 m_le_abNmtCommandData[32];
-
-} PACK_STRUCT tEplNmtCommandService;
-
-typedef struct {
-       u8 m_le_bReserved;
-       u8 m_le_bTransactionId;
-       u8 m_le_bFlags;
-       u8 m_le_bCommandId;
-       u16 m_le_wSegmentSize;
-       u16 m_le_wReserved;
-       u8 m_le_abCommandData[8];       // just reserve a minimum number of bytes as a placeholder
-
-} PACK_STRUCT tEplAsySdoCom;
-
-// asynchronous SDO Sequence Header
-typedef struct {
-       u8 m_le_bRecSeqNumCon;
-       u8 m_le_bSendSeqNumCon;
-       u8 m_le_abReserved[2];
-       tEplAsySdoCom m_le_abSdoSeqPayload;
-
-} PACK_STRUCT tEplAsySdoSeq;
-
-typedef struct {
-       // Offset 18
-       u8 m_le_bNmtCommandId;
-       u8 m_le_bTargetNodeId;
-       u8 m_le_abNmtCommandData[32];
-
-} PACK_STRUCT tEplNmtRequestService;
-
-typedef union {
-       // Offset 18
-       tEplStatusResponse m_StatusResponse;
-       tEplIdentResponse m_IdentResponse;
-       tEplNmtCommandService m_NmtCommandService;
-       tEplNmtRequestService m_NmtRequestService;
-       tEplAsySdoSeq m_SdoSequenceFrame;
-       u8 m_le_abPayload[256   /*D_NMT_ASndTxMaxPayload_U16
-                                  / D_NMT_ASndRxMaxPayload_U16 */ ];
-
-} tEplAsndPayload;
-
-typedef struct {
-       // Offset 17
-       u8 m_le_bServiceId;
-       // Offset 18
-       tEplAsndPayload m_Payload;
-
-} PACK_STRUCT tEplAsndFrame;
-
-typedef union {
-       // Offset 17
-       tEplSocFrame m_Soc;
-       tEplPreqFrame m_Preq;
-       tEplPresFrame m_Pres;
-       tEplSoaFrame m_Soa;
-       tEplAsndFrame m_Asnd;
-
-} tEplFrameData;
-
-typedef struct {
-       // Offset 0
-       u8 m_be_abDstMac[6];    // MAC address of the addressed nodes
-       // Offset 6
-       u8 m_be_abSrcMac[6];    // MAC address of the transmitting node
-       // Offset 12
-       u16 m_be_wEtherType;    // Ethernet message type (big endian)
-       // Offset 14
-       u8 m_le_bMessageType;   // EPL message type
-       // Offset 15
-       u8 m_le_bDstNodeId;     // EPL node ID of the addressed nodes
-       // Offset 16
-       u8 m_le_bSrcNodeId;     // EPL node ID of the transmitting node
-       // Offset 17
-       tEplFrameData m_Data;
-
-} PACK_STRUCT tEplFrame;
-
-// un-byte-align structures
-#ifdef _MSC_VER
-#    pragma pack( pop, packing )
-#endif
-
-typedef enum {
-       kEplMsgTypeNonEpl = 0x00,
-       kEplMsgTypeSoc = 0x01,
-       kEplMsgTypePreq = 0x03,
-       kEplMsgTypePres = 0x04,
-       kEplMsgTypeSoa = 0x05,
-       kEplMsgTypeAsnd = 0x06,
-
-} tEplMsgType;
-
-//---------------------------------------------------------------------------
-// function prototypes
-//---------------------------------------------------------------------------
-
-#endif // #ifndef _EPL_FRAME_H_
diff --git a/drivers/staging/epl/EplIdentu.c b/drivers/staging/epl/EplIdentu.c
deleted file mode 100644 (file)
index 93d5a40..0000000
+++ /dev/null
@@ -1,486 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for Identu-Module
-
-  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: EplIdentu.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.8 $  $Date: 2008/11/21 09:00:38 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/11/15 d.k.:   start of the implementation
-
-****************************************************************************/
-
-#include "user/EplIdentu.h"
-#include "user/EplDlluCal.h"
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          C L A S S  <xxxxx>                                             */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-//
-// Description:
-//
-//
-/***************************************************************************/
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   D E F I N I T I O N S                          //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-typedef struct {
-       tEplIdentResponse *m_apIdentResponse[254];      // the IdentResponse are managed dynamically
-       tEplIdentuCbResponse m_apfnCbResponse[254];
-
-} tEplIdentuInstance;
-
-//---------------------------------------------------------------------------
-// local vars
-//---------------------------------------------------------------------------
-
-static tEplIdentuInstance EplIdentuInstance_g;
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-static tEplKernel EplIdentuCbIdentResponse(tEplFrameInfo *pFrameInfo_p);
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplIdentuInit
-//
-// Description: init first instance of the module
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplIdentuInit(void)
-{
-       tEplKernel Ret;
-
-       Ret = EplIdentuAddInstance();
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplIdentuAddInstance
-//
-// Description: init other instances of the module
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplIdentuAddInstance(void)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-       // reset instance structure
-       EPL_MEMSET(&EplIdentuInstance_g, 0, sizeof(EplIdentuInstance_g));
-
-       // register IdentResponse callback function
-       Ret =
-           EplDlluCalRegAsndService(kEplDllAsndIdentResponse,
-                                    EplIdentuCbIdentResponse,
-                                    kEplDllAsndFilterAny);
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplIdentuDelInstance
-//
-// Description: delete instance
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplIdentuDelInstance(void)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-       // deregister IdentResponse callback function
-       Ret =
-           EplDlluCalRegAsndService(kEplDllAsndIdentResponse, NULL,
-                                    kEplDllAsndFilterNone);
-
-       Ret = EplIdentuReset();
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplIdentuReset
-//
-// Description: resets this instance
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplIdentuReset(void)
-{
-       tEplKernel Ret;
-       int iIndex;
-
-       Ret = kEplSuccessful;
-
-       for (iIndex = 0;
-            iIndex < tabentries(EplIdentuInstance_g.m_apIdentResponse);
-            iIndex++) {
-               if (EplIdentuInstance_g.m_apIdentResponse[iIndex] != NULL) {    // free memory
-                       EPL_FREE(EplIdentuInstance_g.m_apIdentResponse[iIndex]);
-               }
-       }
-
-       EPL_MEMSET(&EplIdentuInstance_g, 0, sizeof(EplIdentuInstance_g));
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplIdentuGetIdentResponse
-//
-// Description: returns the IdentResponse for the specified node.
-//
-// Parameters:  uiNodeId_p                  = IN: node ID
-//              ppIdentResponse_p           = OUT: pointer to pointer of IdentResponse
-//                                            equals NULL, if no IdentResponse available
-//
-// Return:      tEplKernel                  = error code
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplIdentuGetIdentResponse(unsigned int uiNodeId_p,
-                                    tEplIdentResponse **ppIdentResponse_p)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-       // decrement node ID, because array is zero based
-       uiNodeId_p--;
-       if (uiNodeId_p < tabentries(EplIdentuInstance_g.m_apIdentResponse)) {
-               *ppIdentResponse_p =
-                   EplIdentuInstance_g.m_apIdentResponse[uiNodeId_p];
-       } else {                // invalid node ID specified
-               *ppIdentResponse_p = NULL;
-               Ret = kEplInvalidNodeId;
-       }
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplIdentuRequestIdentResponse
-//
-// Description: returns the IdentResponse for the specified node.
-//
-// Parameters:  uiNodeId_p                  = IN: node ID
-//              pfnCbResponse_p             = IN: function pointer to callback function
-//                                            which will be called if IdentResponse is received
-//
-// Return:      tEplKernel                  = error code
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplIdentuRequestIdentResponse(unsigned int uiNodeId_p,
-                                        tEplIdentuCbResponse pfnCbResponse_p)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-       // decrement node ID, because array is zero based
-       uiNodeId_p--;
-       if (uiNodeId_p < tabentries(EplIdentuInstance_g.m_apfnCbResponse)) {
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-               if (EplIdentuInstance_g.m_apfnCbResponse[uiNodeId_p] != NULL) { // request already issued (maybe by someone else)
-                       Ret = kEplInvalidOperation;
-               } else {
-                       EplIdentuInstance_g.m_apfnCbResponse[uiNodeId_p] =
-                           pfnCbResponse_p;
-                       Ret =
-                           EplDlluCalIssueRequest(kEplDllReqServiceIdent,
-                                                  (uiNodeId_p + 1), 0xFF);
-               }
-#else
-               Ret = kEplInvalidOperation;
-#endif
-       } else {                // invalid node ID specified
-               Ret = kEplInvalidNodeId;
-       }
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplIdentuGetRunningRequests
-//
-// Description: returns a bit field with the running requests for node-ID 1-32
-//              just for debugging purposes
-//
-//
-// Parameters:
-//
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-u32 EplIdentuGetRunningRequests(void)
-{
-       u32 dwReqs = 0;
-       unsigned int uiIndex;
-
-       for (uiIndex = 0; uiIndex < 32; uiIndex++) {
-               if (EplIdentuInstance_g.m_apfnCbResponse[uiIndex] != NULL) {
-                       dwReqs |= (1 << uiIndex);
-               }
-       }
-
-       return dwReqs;
-}
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplIdentuCbIdentResponse
-//
-// Description: callback funktion for IdentResponse
-//
-//
-//
-// Parameters:  pFrameInfo_p            = Frame with the IdentResponse
-//
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplIdentuCbIdentResponse(tEplFrameInfo *pFrameInfo_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       unsigned int uiNodeId;
-       unsigned int uiIndex;
-       tEplIdentuCbResponse pfnCbResponse;
-
-       uiNodeId = AmiGetByteFromLe(&pFrameInfo_p->m_pFrame->m_le_bSrcNodeId);
-
-       uiIndex = uiNodeId - 1;
-
-       if (uiIndex < tabentries(EplIdentuInstance_g.m_apfnCbResponse)) {
-               // memorize pointer to callback function
-               pfnCbResponse = EplIdentuInstance_g.m_apfnCbResponse[uiIndex];
-               // reset callback function pointer so that caller may issue next request immediately
-               EplIdentuInstance_g.m_apfnCbResponse[uiIndex] = NULL;
-
-               if (pFrameInfo_p->m_uiFrameSize < EPL_C_DLL_MINSIZE_IDENTRES) { // IdentResponse not received or it has invalid size
-                       if (pfnCbResponse == NULL) {    // response was not requested
-                               goto Exit;
-                       }
-                       Ret = pfnCbResponse(uiNodeId, NULL);
-               } else {        // IdentResponse received
-                       if (EplIdentuInstance_g.m_apIdentResponse[uiIndex] == NULL) {   // memory for IdentResponse must be allocated
-                               EplIdentuInstance_g.m_apIdentResponse[uiIndex] =
-                                   EPL_MALLOC(sizeof(tEplIdentResponse));
-                               if (EplIdentuInstance_g.m_apIdentResponse[uiIndex] == NULL) {   // malloc failed
-                                       if (pfnCbResponse == NULL) {    // response was not requested
-                                               goto Exit;
-                                       }
-                                       Ret =
-                                           pfnCbResponse(uiNodeId,
-                                                         &pFrameInfo_p->
-                                                         m_pFrame->m_Data.
-                                                         m_Asnd.m_Payload.
-                                                         m_IdentResponse);
-                                       goto Exit;
-                               }
-                       }
-                       // copy IdentResponse to instance structure
-                       EPL_MEMCPY(EplIdentuInstance_g.
-                                  m_apIdentResponse[uiIndex],
-                                  &pFrameInfo_p->m_pFrame->m_Data.m_Asnd.
-                                  m_Payload.m_IdentResponse,
-                                  sizeof(tEplIdentResponse));
-                       if (pfnCbResponse == NULL) {    // response was not requested
-                               goto Exit;
-                       }
-                       Ret =
-                           pfnCbResponse(uiNodeId,
-                                         EplIdentuInstance_g.
-                                         m_apIdentResponse[uiIndex]);
-               }
-       }
-
-      Exit:
-       return Ret;
-}
-
-// EOF
diff --git a/drivers/staging/epl/EplInc.h b/drivers/staging/epl/EplInc.h
deleted file mode 100644 (file)
index f91797a..0000000
+++ /dev/null
@@ -1,370 +0,0 @@
-/****************************************************************************
-
-  (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_
diff --git a/drivers/staging/epl/EplInstDef.h b/drivers/staging/epl/EplInstDef.h
deleted file mode 100644 (file)
index 29ab7fb..0000000
+++ /dev/null
@@ -1,363 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  definitions for generating instances
-
-  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: EplInstDef.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.4 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    ...
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  r.d.: first implementation
-
-****************************************************************************/
-
-#ifndef _EPLINSTDEF_H_
-#define _EPLINSTDEF_H_
-
-#include <linux/kernel.h>
-
-// =========================================================================
-// types and macros for generating instances
-// =========================================================================
-
-typedef enum {
-       kStateUnused = 0,
-       kStateDeleted = 1,
-       kStateUsed = 0xFF
-} tInstState;
-
-//------------------------------------------------------------------------------------------
-
-typedef void *tEplPtrInstance;
-typedef u8 tEplInstanceHdl;
-
-// define const for illegale values
-#define CCM_ILLINSTANCE      NULL
-#define CCM_ILLINSTANCE_HDL  0xFF
-
-//------------------------------------------------------------------------------------------
-// if more than one instance then use this macros
-#if (EPL_MAX_INSTANCES > 1)
-
-    //--------------------------------------------------------------------------------------
-    // macro definition for instance table definition
-    //--------------------------------------------------------------------------------------
-
-    // memory attributes for instance table
-#define STATIC                 // prevent warnings for variables with same name
-
-#define INSTANCE_TYPE_BEGIN     typedef struct {
-#define INSTANCE_TYPE_END       } tEplInstanceInfo;
-
-    //--------------------------------------------------------------------------------------
-    // macro definition for API interface
-    //--------------------------------------------------------------------------------------
-
-    // declaration:
-
-    // macros for declaration within function header or prototype of API functions
-#define CCM_DECL_INSTANCE_HDL                   tEplInstanceHdl InstanceHandle
-#define CCM_DECL_INSTANCE_HDL_                  tEplInstanceHdl InstanceHandle,
-
-    // macros for declaration of pointer to instance handle within function header or prototype of API functions
-#define CCM_DECL_PTR_INSTANCE_HDL               tEplInstanceHdl *pInstanceHandle
-#define CCM_DECL_PTR_INSTANCE_HDL_              tEplInstanceHdl *pInstanceHandle,
-
-    // macros for declaration instance as lokacl variable within functions
-#define CCM_DECL_INSTANCE_PTR_LOCAL             tCcmInstanceInfo *pInstance;
-#define CCM_DECL_PTR_INSTANCE_HDL_LOCAL         tEplInstanceHdl  *pInstanceHandle;
-
-    // reference:
-
-    // macros for reference of instance handle for function parameters
-#define CCM_INSTANCE_HDL                        InstanceHandle
-#define CCM_INSTANCE_HDL_                       InstanceHandle,
-
-    // macros for reference of instance parameter for function parameters
-#define CCM_INSTANCE_PARAM(par)                 par
-#define CCM_INSTANCE_PARAM_(par)                par,
-
-    // macros for reference of instance parameter for writing or reading values
-#define CCM_INST_ENTRY                          (*((tEplPtrInstance)pInstance))
-
-    // processing:
-
-    // macros for process instance handle
-#define CCM_CHECK_INSTANCE_HDL()                if (InstanceHandle >= EPL_MAX_INSTANCES) \
-                                                        {return (kEplIllegalInstance);}
-
-    // macros for process pointer to instance handle
-#define CCM_CHECK_PTR_INSTANCE_HDL()            if (pInstanceHandle == NULL) \
-                                                        {return (kEplInvalidInstanceParam);}
-
-    // This macro returned the handle and pointer to next free instance.
-#define CCM_GET_FREE_INSTANCE_AND_HDL()         pInstance = CcmGetFreeInstanceAndHandle (pInstanceHandle); \
-                                                    ASSERT (*pInstanceHandle != CCM_ILLINSTANCE_HDL);
-
-#define CCM_CHECK_INSTANCE_PTR()                if (pInstance == CCM_ILLINSTANCE) \
-                                                        {return (kEplNoFreeInstance);}
-
-#define CCM_GET_INSTANCE_PTR()                  pInstance = CcmGetInstancePtr (InstanceHandle);
-#define CCM_GET_FREE_INSTANCE_PTR()             pInstance = GetFreeInstance (); \
-                                                    ASSERT (pInstance != CCM_ILLINSTANCE);
-
-    //--------------------------------------------------------------------------------------
-    // macro definition for stack interface
-    //--------------------------------------------------------------------------------------
-
-    // macros for declaration within the function header, prototype or local var list
-    // Declaration of pointers within function paramater list must defined as void *
-    // pointer.
-#define EPL_MCO_DECL_INSTANCE_PTR                   void *pInstance
-#define EPL_MCO_DECL_INSTANCE_PTR_                  void *pInstance,
-#define EPL_MCO_DECL_INSTANCE_PTR_LOCAL             tEplPtrInstance  pInstance;
-
-    // macros for reference of pointer to instance
-    // These macros are used for parameter passing to called function.
-#define EPL_MCO_INSTANCE_PTR                        pInstance
-#define EPL_MCO_INSTANCE_PTR_                       pInstance,
-#define EPL_MCO_ADDR_INSTANCE_PTR_                  &pInstance,
-
-    // macro for access of struct members of one instance
-    // An access to a member of instance table must be casted by the local
-    // defined type of instance table.
-#define EPL_MCO_INST_ENTRY                          (*(tEplPtrInstance)pInstance)
-#define EPL_MCO_GLB_VAR(var)                        (((tEplPtrInstance)pInstance)->var)
-
-    // macros for process pointer to instance
-#define EPL_MCO_GET_INSTANCE_PTR()                  pInstance = (tEplPtrInstance) GetInstancePtr (InstanceHandle);
-#define EPL_MCO_GET_FREE_INSTANCE_PTR()             pInstance = (tEplPtrInstance) GetFreeInstance (); \
-                                                    ASSERT (pInstance != CCM_ILLINSTANCE);
-
-    // This macro should be used to check the passed pointer to an public function
-#define EPL_MCO_CHECK_INSTANCE_STATE()              ASSERT (pInstance != NULL); \
-                                                    ASSERT (((tEplPtrInstance)pInstance)->m_InstState == kStateUsed);
-
-    // macros for declaration of pointer to instance pointer
-#define EPL_MCO_DECL_PTR_INSTANCE_PTR               void **pInstancePtr
-#define EPL_MCO_DECL_PTR_INSTANCE_PTR_              void **pInstancePtr,
-
-    // macros for reference of pointer to instance pointer
-    // These macros are used for parameter passing to called function.
-#define EPL_MCO_PTR_INSTANCE_PTR                    pInstancePtr
-#define EPL_MCO_PTR_INSTANCE_PTR_                   pInstancePtr,
-
-    // macros for process pointer to instance pointer
-#define EPL_MCO_CHECK_PTR_INSTANCE_PTR()            ASSERT (pInstancePtr != NULL);
-#define EPL_MCO_SET_PTR_INSTANCE_PTR()              (*pInstancePtr = pInstance);
-
-#define EPL_MCO_INSTANCE_PARAM(a)                   (a)
-#define EPL_MCO_INSTANCE_PARAM_(a)                  (a),
-#define EPL_MCO_INSTANCE_PARAM_IDX_()               EPL_MCO_INSTANCE_PARAM_ (EPL_MCO_GLB_VAR (m_bInstIndex))
-#define EPL_MCO_INSTANCE_PARAM_IDX()                EPL_MCO_INSTANCE_PARAM (EPL_MCO_GLB_VAR (m_bInstIndex))
-#define EPL_MCO_WRITE_INSTANCE_STATE(a)             EPL_MCO_GLB_VAR (m_InstState) = a;
-
-    // this macro deletes all instance entries as unused
-#define EPL_MCO_DELETE_INSTANCE_TABLE()                                    \
-    {                                                                      \
-        tEplInstanceInfo *   pInstance       = &aEplInstanceTable_g[0];    \
-        tFastByte            InstNumber      = 0;                          \
-        tFastByte            i               = EPL_MAX_INSTANCES;          \
-        do {                                                               \
-            pInstance->m_InstState = (u8) kStateUnused;                  \
-            pInstance->m_bInstIndex = (u8) InstNumber;                   \
-            pInstance++; InstNumber++; i--;                                \
-        } while (i != 0);                                                  \
-    }
-
-    // definition of functions which has to be defined in each module of CANopen stack
-#define EPL_MCO_DEFINE_INSTANCE_FCT() \
-        static tEplPtrInstance GetInstancePtr (tEplInstanceHdl InstHandle_p);  \
-        static tEplPtrInstance GetFreeInstance (void);
-#define EPL_MCO_DECL_INSTANCE_FCT()                                            \
-        static tEplPtrInstance GetInstancePtr (tEplInstanceHdl InstHandle_p) { \
-            return &aEplInstanceTable_g[InstHandle_p]; }                       \
-        static tEplPtrInstance GetFreeInstance (void) {                        \
-            tEplInstanceInfo *pInstance   = &aEplInstanceTable_g[0];           \
-            tFastByte         i           = EPL_MAX_INSTANCES;                 \
-            do { if (pInstance->m_InstState != kStateUsed) {                   \
-                    return (tEplPtrInstance) pInstance; }                      \
-                pInstance++; i--; }                                            \
-            while (i != 0);                                                    \
-            return CCM_ILLINSTANCE; }
-
-    // this macro defines the instance table. Each entry is reserved for an instance of CANopen.
-#define EPL_MCO_DECL_INSTANCE_VAR() \
-        static tEplInstanceInfo aEplInstanceTable_g [EPL_MAX_INSTANCES];
-
-    // this macro defines member variables in instance table which are needed in
-    // all modules of Epl stack
-#define EPL_MCO_DECL_INSTANCE_MEMBER() \
-        STATIC  u8                            m_InstState; \
-        STATIC  u8                            m_bInstIndex;
-
-#define EPL_MCO_INSTANCE_PARAM_IDX_()           EPL_MCO_INSTANCE_PARAM_ (EPL_MCO_GLB_VAR (m_bInstIndex))
-#define EPL_MCO_INSTANCE_PARAM_IDX()            EPL_MCO_INSTANCE_PARAM (EPL_MCO_GLB_VAR (m_bInstIndex))
-
-#else // only one instance is used
-
-    // Memory attributes for instance table.
-#define STATIC      static     // prevent warnings for variables with same name
-
-#define INSTANCE_TYPE_BEGIN
-#define INSTANCE_TYPE_END
-
-// macros for declaration, initializing and member access for instance handle
-// This class of macros are used by API function to inform CCM-modul which
-// instance is to be used.
-
-    // macros for reference of instance handle
-    // These macros are used for parameter passing to CANopen API function.
-#define CCM_INSTANCE_HDL
-#define CCM_INSTANCE_HDL_
-
-#define CCM_DECL_INSTANCE_PTR_LOCAL
-
-    // macros for declaration within the function header or prototype
-#define CCM_DECL_INSTANCE_HDL                   void
-#define CCM_DECL_INSTANCE_HDL_
-
-    // macros for process instance handle
-#define CCM_CHECK_INSTANCE_HDL()
-
-    // macros for declaration of pointer to instance handle
-#define CCM_DECL_PTR_INSTANCE_HDL               void
-#define CCM_DECL_PTR_INSTANCE_HDL_
-
-    // macros for process pointer to instance handle
-#define CCM_CHECK_PTR_INSTANCE_HDL()
-
-    // This macro returned the handle and pointer to next free instance.
-#define CCM_GET_FREE_INSTANCE_AND_HDL()
-
-#define CCM_CHECK_INSTANCE_PTR()
-
-#define CCM_GET_INSTANCE_PTR()
-#define CCM_GET_FREE_INSTANCE_PTR()
-
-#define CCM_INSTANCE_PARAM(par)
-#define CCM_INSTANCE_PARAM_(par)
-
-#define CCM_INST_ENTRY                          aCcmInstanceTable_g[0]
-
-// macros for declaration, initializing and member access for instance pointer
-// This class of macros are used by CANopen internal function to point to one instance.
-
-    // macros for declaration within the function header, prototype or local var list
-#define EPL_MCO_DECL_INSTANCE_PTR                   void
-#define EPL_MCO_DECL_INSTANCE_PTR_
-#define EPL_MCO_DECL_INSTANCE_PTR_LOCAL
-
-    // macros for reference of pointer to instance
-    // These macros are used for parameter passing to called function.
-#define EPL_MCO_INSTANCE_PTR
-#define EPL_MCO_INSTANCE_PTR_
-#define EPL_MCO_ADDR_INSTANCE_PTR_
-
-    // macros for process pointer to instance
-#define EPL_MCO_GET_INSTANCE_PTR()
-#define EPL_MCO_GET_FREE_INSTANCE_PTR()
-
-    // This macro should be used to check the passed pointer to an public function
-#define EPL_MCO_CHECK_INSTANCE_STATE()
-
-    // macros for declaration of pointer to instance pointer
-#define EPL_MCO_DECL_PTR_INSTANCE_PTR               void
-#define EPL_MCO_DECL_PTR_INSTANCE_PTR_
-
-    // macros for reference of pointer to instance pointer
-    // These macros are used for parameter passing to called function.
-#define EPL_MCO_PTR_INSTANCE_PTR
-#define EPL_MCO_PTR_INSTANCE_PTR_
-
-    // macros for process pointer to instance pointer
-#define EPL_MCO_CHECK_PTR_INSTANCE_PTR()
-#define EPL_MCO_SET_PTR_INSTANCE_PTR()
-
-#define EPL_MCO_INSTANCE_PARAM(a)
-#define EPL_MCO_INSTANCE_PARAM_(a)
-#define EPL_MCO_INSTANCE_PARAM_IDX_()
-#define EPL_MCO_INSTANCE_PARAM_IDX()
-
-    // macro for access of struct members of one instance
-#define EPL_MCO_INST_ENTRY                          aEplInstanceTable_g[0]
-#define EPL_MCO_GLB_VAR(var)                        (var)
-#define EPL_MCO_WRITE_INSTANCE_STATE(a)
-
-    // this macro deletes all instance entries as unused
-#define EPL_MCO_DELETE_INSTANCE_TABLE()
-
-    // definition of functions which has to be defined in each module of CANopen stack
-#define EPL_MCO_DEFINE_INSTANCE_FCT()
-#define EPL_MCO_DECL_INSTANCE_FCT()
-
-    // this macro defines the instance table. Each entry is reserved for an instance of CANopen.
-#define EPL_MCO_DECL_INSTANCE_VAR()
-
-    // this macro defines member variables in instance table which are needed in
-    // all modules of CANopen stack
-#define EPL_MCO_DECL_INSTANCE_MEMBER()
-
-#endif
-
-#endif // _EPLINSTDEF_H_
-
-// Die letzte Zeile muß unbedingt eine leere Zeile sein, weil manche Compiler
-// damit ein Problem haben, wenn das nicht so ist (z.B. GNU oder Borland C++ Builder).
diff --git a/drivers/staging/epl/EplLed.h b/drivers/staging/epl/EplLed.h
deleted file mode 100644 (file)
index 6a29aed..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for status and error LED
-
-  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: EplLed.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.1 $  $Date: 2008/11/17 16:40:39 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2008/11/17 d.k.:   start of the implementation
-
-****************************************************************************/
-
-#ifndef _EPLLED_H_
-#define _EPLLED_H_
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// typedef
-//---------------------------------------------------------------------------
-
-typedef enum {
-       kEplLedTypeStatus = 0x00,
-       kEplLedTypeError = 0x01,
-
-} tEplLedType;
-
-//---------------------------------------------------------------------------
-// function prototypes
-//---------------------------------------------------------------------------
-
-#endif // #ifndef _EPLLED_H_
diff --git a/drivers/staging/epl/EplNmt.h b/drivers/staging/epl/EplNmt.h
deleted file mode 100644 (file)
index e351b55..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  global include file for EPL-NMT-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: EplNmt.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.6 $  $Date: 2008/11/17 16:40:39 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/09 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#ifndef _EPLNMT_H_
-#define _EPLNMT_H_
-
-#include "EplInc.h"
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-// define super-states and masks to identify a super-state
-#define EPL_NMT_GS_POWERED          0x0008     // super state
-#define EPL_NMT_GS_INITIALISATION   0x0009     // super state
-#define EPL_NMT_GS_COMMUNICATING    0x000C     // super state
-#define EPL_NMT_CS_EPLMODE          0x000D     // super state
-#define EPL_NMT_MS_EPLMODE          0x000D     // super state
-
-#define EPL_NMT_SUPERSTATE_MASK     0x000F     // mask to select state
-
-#define EPL_NMT_TYPE_UNDEFINED      0x0000     // type of NMT state is still undefined
-#define EPL_NMT_TYPE_CS             0x0100     // CS type of NMT state
-#define EPL_NMT_TYPE_MS             0x0200     // MS type of NMT state
-#define EPL_NMT_TYPE_MASK           0x0300     // mask to select type of NMT state (i.e. CS or MS)
-
-//---------------------------------------------------------------------------
-// typedef
-//---------------------------------------------------------------------------
-
-// the lower Byte of the NMT-State is encoded
-// like the values in the EPL-Standard
-// the higher byte is used to encode MN
-// (Bit 1 of the higher byte = 1) or CN (Bit 0 of the
-// higher byte  = 1)
-// the super-states are not mentioned in this
-// enum because they are no real states
-// --> there are masks defined to indentify the
-// super-states
-
-typedef enum {
-       kEplNmtGsOff = 0x0000,
-       kEplNmtGsInitialising = 0x0019,
-       kEplNmtGsResetApplication = 0x0029,
-       kEplNmtGsResetCommunication = 0x0039,
-       kEplNmtGsResetConfiguration = 0x0079,
-       kEplNmtCsNotActive = 0x011C,
-       kEplNmtCsPreOperational1 = 0x011D,
-       kEplNmtCsStopped = 0x014D,
-       kEplNmtCsPreOperational2 = 0x015D,
-       kEplNmtCsReadyToOperate = 0x016D,
-       kEplNmtCsOperational = 0x01FD,
-       kEplNmtCsBasicEthernet = 0x011E,
-       kEplNmtMsNotActive = 0x021C,
-       kEplNmtMsPreOperational1 = 0x021D,
-       kEplNmtMsPreOperational2 = 0x025D,
-       kEplNmtMsReadyToOperate = 0x026D,
-       kEplNmtMsOperational = 0x02FD,
-       kEplNmtMsBasicEthernet = 0x021E
-} tEplNmtState;
-
-// NMT-events
-typedef enum {
-       // Events from DLL
-       // Events defined by EPL V2 specification
-       kEplNmtEventNoEvent = 0x00,
-//    kEplNmtEventDllMePres           =   0x01,
-       kEplNmtEventDllMePresTimeout = 0x02,
-//    kEplNmtEventDllMeAsnd           =   0x03,
-//    kEplNmtEventDllMeAsndTimeout    =   0x04,
-       kEplNmtEventDllMeSoaSent = 0x04,
-       kEplNmtEventDllMeSocTrig = 0x05,
-       kEplNmtEventDllMeSoaTrig = 0x06,
-       kEplNmtEventDllCeSoc = 0x07,
-       kEplNmtEventDllCePreq = 0x08,
-       kEplNmtEventDllCePres = 0x09,
-       kEplNmtEventDllCeSoa = 0x0A,
-       kEplNmtEventDllCeAsnd = 0x0B,
-       kEplNmtEventDllCeFrameTimeout = 0x0C,
-
-       // Events triggered by NMT-Commands
-       kEplNmtEventSwReset = 0x10,     // NMT_GT1, NMT_GT2, NMT_GT8
-       kEplNmtEventResetNode = 0x11,
-       kEplNmtEventResetCom = 0x12,
-       kEplNmtEventResetConfig = 0x13,
-       kEplNmtEventEnterPreOperational2 = 0x14,
-       kEplNmtEventEnableReadyToOperate = 0x15,
-       kEplNmtEventStartNode = 0x16,   // NMT_CT7
-       kEplNmtEventStopNode = 0x17,
-
-       // Events triggered by higher layer
-       kEplNmtEventEnterResetApp = 0x20,
-       kEplNmtEventEnterResetCom = 0x21,
-       kEplNmtEventInternComError = 0x22,      // NMT_GT6, internal communication error -> enter ResetCommunication
-       kEplNmtEventEnterResetConfig = 0x23,
-       kEplNmtEventEnterCsNotActive = 0x24,
-       kEplNmtEventEnterMsNotActive = 0x25,
-       kEplNmtEventTimerBasicEthernet = 0x26,  // NMT_CT3; timer triggered state change (NotActive -> BasicEth)
-       kEplNmtEventTimerMsPreOp1 = 0x27,       // enter PreOp1 on MN (NotActive -> MsPreOp1)
-       kEplNmtEventNmtCycleError = 0x28,       // NMT_CT11, NMT_MT6; error during cycle -> enter PreOp1
-       kEplNmtEventTimerMsPreOp2 = 0x29,       // enter PreOp2 on MN (MsPreOp1 -> MsPreOp2 if kEplNmtEventAllMandatoryCNIdent)
-       kEplNmtEventAllMandatoryCNIdent = 0x2A, // enter PreOp2 on MN if kEplNmtEventTimerMsPreOp2
-       kEplNmtEventEnterReadyToOperate = 0x2B, // application ready for the state ReadyToOp
-       kEplNmtEventEnterMsOperational = 0x2C,  // enter Operational on MN
-       kEplNmtEventSwitchOff = 0x2D,   // enter state Off
-       kEplNmtEventCriticalError = 0x2E,       // enter state Off because of critical error
-
-} tEplNmtEvent;
-
-// type for argument of event kEplEventTypeNmtStateChange
-typedef struct {
-       tEplNmtState m_NewNmtState;
-       tEplNmtEvent m_NmtEvent;
-
-} tEplEventNmtStateChange;
-
-// structure for kEplEventTypeHeartbeat
-typedef struct {
-       unsigned int m_uiNodeId;        // NodeId
-       tEplNmtState m_NmtState;        // NMT state (remember distinguish between MN / CN)
-       u16 m_wErrorCode;       // EPL error code in case of NMT state NotActive
-
-} tEplHeartbeatEvent;
-
-typedef enum {
-       kEplNmtNodeEventFound = 0x00,
-       kEplNmtNodeEventUpdateSw = 0x01,        // application shall update software on CN
-       kEplNmtNodeEventCheckConf = 0x02,       // application / Configuration Manager shall check and update configuration on CN
-       kEplNmtNodeEventUpdateConf = 0x03,      // application / Configuration Manager shall update configuration on CN (check was done by NmtMn module)
-       kEplNmtNodeEventVerifyConf = 0x04,      // application / Configuration Manager shall verify configuration of CN
-       kEplNmtNodeEventReadyToStart = 0x05,    // issued if EPL_NMTST_NO_STARTNODE set
-       // application must call EplNmtMnuSendNmtCommand(kEplNmtCmdStartNode) manually
-       kEplNmtNodeEventNmtState = 0x06,
-       kEplNmtNodeEventError = 0x07,   // NMT error of CN
-
-} tEplNmtNodeEvent;
-
-typedef enum {
-       kEplNmtNodeCommandBoot = 0x01,  // if EPL_NODEASSIGN_START_CN not set it must be issued after kEplNmtNodeEventFound
-       kEplNmtNodeCommandSwOk = 0x02,  // application updated software on CN successfully
-       kEplNmtNodeCommandSwUpdated = 0x03,     // application updated software on CN successfully
-       kEplNmtNodeCommandConfOk = 0x04,        // application / Configuration Manager has updated configuration on CN successfully
-       kEplNmtNodeCommandConfReset = 0x05,     // application / Configuration Manager has updated configuration on CN successfully
-       // and CN needs ResetConf so that the configuration gets actived
-       kEplNmtNodeCommandConfErr = 0x06,       // application / Configuration Manager failed on updating configuration on CN
-       kEplNmtNodeCommandStart = 0x07, // if EPL_NMTST_NO_STARTNODE set it must be issued after kEplNmtNodeEventReadyToStart
-
-} tEplNmtNodeCommand;
-
-typedef enum {
-       kEplNmtBootEventBootStep1Finish = 0x00, // PreOp2 is possible
-       kEplNmtBootEventBootStep2Finish = 0x01, // ReadyToOp is possible
-       kEplNmtBootEventCheckComFinish = 0x02,  // Operational is possible
-       kEplNmtBootEventOperational = 0x03,     // all mandatory CNs are Operational
-       kEplNmtBootEventError = 0x04,   // boot process halted because of an error
-
-} tEplNmtBootEvent;
-
-//---------------------------------------------------------------------------
-// function prototypes
-//---------------------------------------------------------------------------
-
-#endif // #ifndef _EPLNMT_H_
diff --git a/drivers/staging/epl/EplNmtCnu.c b/drivers/staging/epl/EplNmtCnu.c
deleted file mode 100644 (file)
index c27ca8f..0000000
+++ /dev/null
@@ -1,701 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for NMT-CN-Userspace-Module
-
-  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: EplNmtCnu.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.6 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/09 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#include "EplInc.h"
-#include "user/EplNmtCnu.h"
-#include "user/EplDlluCal.h"
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_CN)) != 0)
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-typedef struct {
-       unsigned int m_uiNodeId;
-       tEplNmtuCheckEventCallback m_pfnCheckEventCb;
-
-} tEplNmtCnuInstance;
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-static tEplNmtCnuInstance EplNmtCnuInstance_g;
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-static tEplNmtCommand EplNmtCnuGetNmtCommand(tEplFrameInfo * pFrameInfo_p);
-
-static BOOL EplNmtCnuNodeIdList(u8 * pbNmtCommandDate_p);
-
-static tEplKernel EplNmtCnuCommandCb(tEplFrameInfo *pFrameInfo_p);
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtCnuInit
-//
-// Description: init the first instance of the module
-//
-//
-//
-// Parameters:      uiNodeId_p = NodeId of the local node
-//
-//
-// Returns:         tEplKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplNmtCnuInit(unsigned int uiNodeId_p)
-{
-       tEplKernel Ret;
-
-       Ret = EplNmtCnuAddInstance(uiNodeId_p);
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtCnuAddInstance
-//
-// Description: init the add new instance of the module
-//
-//
-//
-// Parameters:      uiNodeId_p = NodeId of the local node
-//
-//
-// Returns:         tEplKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplNmtCnuAddInstance(unsigned int uiNodeId_p)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-       // reset instance structure
-       EPL_MEMSET(&EplNmtCnuInstance_g, 0, sizeof(EplNmtCnuInstance_g));
-
-       // save nodeid
-       EplNmtCnuInstance_g.m_uiNodeId = uiNodeId_p;
-
-       // register callback-function for NMT-commands
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLU)) != 0)
-       Ret = EplDlluCalRegAsndService(kEplDllAsndNmtCommand,
-                                      EplNmtCnuCommandCb,
-                                      kEplDllAsndFilterLocal);
-#endif
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtCnuDelInstance
-//
-// Description: delte instance of the module
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:         tEplKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplNmtCnuDelInstance(void)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLU)) != 0)
-       // deregister callback function from DLL
-       Ret = EplDlluCalRegAsndService(kEplDllAsndNmtCommand,
-                                      NULL, kEplDllAsndFilterNone);
-#endif
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtCnuSendNmtRequest
-//
-// Description: Send an NMT-Request to the MN
-//
-//
-//
-// Parameters:      uiNodeId_p = NodeId of the local node
-//                  NmtCommand_p = requested NMT-Command
-//
-//
-// Returns:         tEplKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplNmtCnuSendNmtRequest(unsigned int uiNodeId_p,
-                                  tEplNmtCommand NmtCommand_p)
-{
-       tEplKernel Ret;
-       tEplFrameInfo NmtRequestFrameInfo;
-       tEplFrame NmtRequestFrame;
-
-       Ret = kEplSuccessful;
-
-       // build frame
-       EPL_MEMSET(&NmtRequestFrame.m_be_abDstMac[0], 0x00, sizeof(NmtRequestFrame.m_be_abDstMac));     // set by DLL
-       EPL_MEMSET(&NmtRequestFrame.m_be_abSrcMac[0], 0x00, sizeof(NmtRequestFrame.m_be_abSrcMac));     // set by DLL
-       AmiSetWordToBe(&NmtRequestFrame.m_be_wEtherType,
-                      EPL_C_DLL_ETHERTYPE_EPL);
-       AmiSetByteToLe(&NmtRequestFrame.m_le_bDstNodeId, (u8) EPL_C_ADR_MN_DEF_NODE_ID);        // node id of the MN
-       AmiSetByteToLe(&NmtRequestFrame.m_le_bMessageType,
-                      (u8) kEplMsgTypeAsnd);
-       AmiSetByteToLe(&NmtRequestFrame.m_Data.m_Asnd.m_le_bServiceId,
-                      (u8) kEplDllAsndNmtRequest);
-       AmiSetByteToLe(&NmtRequestFrame.m_Data.m_Asnd.m_Payload.
-                      m_NmtRequestService.m_le_bNmtCommandId,
-                      (u8) NmtCommand_p);
-       AmiSetByteToLe(&NmtRequestFrame.m_Data.m_Asnd.m_Payload.m_NmtRequestService.m_le_bTargetNodeId, (u8) uiNodeId_p);       // target for the nmt command
-       EPL_MEMSET(&NmtRequestFrame.m_Data.m_Asnd.m_Payload.m_NmtRequestService.
-                  m_le_abNmtCommandData[0], 0x00,
-                  sizeof(NmtRequestFrame.m_Data.m_Asnd.m_Payload.
-                         m_NmtRequestService.m_le_abNmtCommandData));
-
-       // build info-structure
-       NmtRequestFrameInfo.m_NetTime.m_dwNanoSec = 0;
-       NmtRequestFrameInfo.m_NetTime.m_dwSec = 0;
-       NmtRequestFrameInfo.m_pFrame = &NmtRequestFrame;
-       NmtRequestFrameInfo.m_uiFrameSize = EPL_C_DLL_MINSIZE_NMTREQ;   // sizeof(NmtRequestFrame);
-
-       // send NMT-Request
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLU)) != 0)
-       Ret = EplDlluCalAsyncSend(&NmtRequestFrameInfo, // pointer to frameinfo
-                                 kEplDllAsyncReqPrioNmt);      // priority
-#endif
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtCnuRegisterStateChangeCb
-//
-// Description: register Callback-function go get informed about a
-//              NMT-Change-State-Event
-//
-//
-//
-// Parameters:  pfnEplNmtStateChangeCb_p = functionpointer
-//
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplNmtCnuRegisterCheckEventCb(tEplNmtuCheckEventCallback pfnEplNmtCheckEventCb_p)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-       // save callback-function in modul global var
-       EplNmtCnuInstance_g.m_pfnCheckEventCb = pfnEplNmtCheckEventCb_p;
-
-       return Ret;
-
-}
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtCnuCommandCb
-//
-// Description: callback funktion for NMT-Commands
-//
-//
-//
-// Parameters:      pFrameInfo_p = Frame with the NMT-Commando
-//
-//
-// Returns:         tEplKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-static tEplKernel EplNmtCnuCommandCb(tEplFrameInfo *pFrameInfo_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplNmtCommand NmtCommand;
-       BOOL fNodeIdInList;
-       tEplNmtEvent NmtEvent = kEplNmtEventNoEvent;
-
-       if (pFrameInfo_p == NULL) {
-               Ret = kEplNmtInvalidFramePointer;
-               goto Exit;
-       }
-
-       NmtCommand = EplNmtCnuGetNmtCommand(pFrameInfo_p);
-
-       // check NMT-Command
-       switch (NmtCommand) {
-
-               //------------------------------------------------------------------------
-               // plain NMT state commands
-       case kEplNmtCmdStartNode:
-               {               // send NMT-Event to state maschine kEplNmtEventStartNode
-                       NmtEvent = kEplNmtEventStartNode;
-                       break;
-               }
-
-       case kEplNmtCmdStopNode:
-               {               // send NMT-Event to state maschine kEplNmtEventStopNode
-                       NmtEvent = kEplNmtEventStopNode;
-                       break;
-               }
-
-       case kEplNmtCmdEnterPreOperational2:
-               {               // send NMT-Event to state maschine kEplNmtEventEnterPreOperational2
-                       NmtEvent = kEplNmtEventEnterPreOperational2;
-                       break;
-               }
-
-       case kEplNmtCmdEnableReadyToOperate:
-               {               // send NMT-Event to state maschine kEplNmtEventEnableReadyToOperate
-                       NmtEvent = kEplNmtEventEnableReadyToOperate;
-                       break;
-               }
-
-       case kEplNmtCmdResetNode:
-               {               // send NMT-Event to state maschine kEplNmtEventResetNode
-                       NmtEvent = kEplNmtEventResetNode;
-                       break;
-               }
-
-       case kEplNmtCmdResetCommunication:
-               {               // send NMT-Event to state maschine kEplNmtEventResetCom
-                       NmtEvent = kEplNmtEventResetCom;
-                       break;
-               }
-
-       case kEplNmtCmdResetConfiguration:
-               {               // send NMT-Event to state maschine kEplNmtEventResetConfig
-                       NmtEvent = kEplNmtEventResetConfig;
-                       break;
-               }
-
-       case kEplNmtCmdSwReset:
-               {               // send NMT-Event to state maschine kEplNmtEventSwReset
-                       NmtEvent = kEplNmtEventSwReset;
-                       break;
-               }
-
-               //------------------------------------------------------------------------
-               // extended NMT state commands
-
-       case kEplNmtCmdStartNodeEx:
-               {
-                       // check if own nodeid is in EPL node list
-                       fNodeIdInList =
-                           EplNmtCnuNodeIdList(&
-                                               (pFrameInfo_p->m_pFrame->m_Data.
-                                                m_Asnd.m_Payload.
-                                                m_NmtCommandService.
-                                                m_le_abNmtCommandData[0]));
-                       if (fNodeIdInList != FALSE) {   // own nodeid in list
-                               // send event to process command
-                               NmtEvent = kEplNmtEventStartNode;
-                       }
-                       break;
-               }
-
-       case kEplNmtCmdStopNodeEx:
-               {               // check if own nodeid is in EPL node list
-                       fNodeIdInList =
-                           EplNmtCnuNodeIdList(&pFrameInfo_p->m_pFrame->m_Data.
-                                               m_Asnd.m_Payload.
-                                               m_NmtCommandService.
-                                               m_le_abNmtCommandData[0]);
-                       if (fNodeIdInList != FALSE) {   // own nodeid in list
-                               // send event to process command
-                               NmtEvent = kEplNmtEventStopNode;
-                       }
-                       break;
-               }
-
-       case kEplNmtCmdEnterPreOperational2Ex:
-               {               // check if own nodeid is in EPL node list
-                       fNodeIdInList =
-                           EplNmtCnuNodeIdList(&pFrameInfo_p->m_pFrame->m_Data.
-                                               m_Asnd.m_Payload.
-                                               m_NmtCommandService.
-                                               m_le_abNmtCommandData[0]);
-                       if (fNodeIdInList != FALSE) {   // own nodeid in list
-                               // send event to process command
-                               NmtEvent = kEplNmtEventEnterPreOperational2;
-                       }
-                       break;
-               }
-
-       case kEplNmtCmdEnableReadyToOperateEx:
-               {               // check if own nodeid is in EPL node list
-                       fNodeIdInList =
-                           EplNmtCnuNodeIdList(&pFrameInfo_p->m_pFrame->m_Data.
-                                               m_Asnd.m_Payload.
-                                               m_NmtCommandService.
-                                               m_le_abNmtCommandData[0]);
-                       if (fNodeIdInList != FALSE) {   // own nodeid in list
-                               // send event to process command
-                               NmtEvent = kEplNmtEventEnableReadyToOperate;
-                       }
-                       break;
-               }
-
-       case kEplNmtCmdResetNodeEx:
-               {               // check if own nodeid is in EPL node list
-                       fNodeIdInList =
-                           EplNmtCnuNodeIdList(&pFrameInfo_p->m_pFrame->m_Data.
-                                               m_Asnd.m_Payload.
-                                               m_NmtCommandService.
-                                               m_le_abNmtCommandData[0]);
-                       if (fNodeIdInList != FALSE) {   // own nodeid in list
-                               // send event to process command
-                               NmtEvent = kEplNmtEventResetNode;
-                       }
-                       break;
-               }
-
-       case kEplNmtCmdResetCommunicationEx:
-               {               // check if own nodeid is in EPL node list
-                       fNodeIdInList =
-                           EplNmtCnuNodeIdList(&pFrameInfo_p->m_pFrame->m_Data.
-                                               m_Asnd.m_Payload.
-                                               m_NmtCommandService.
-                                               m_le_abNmtCommandData[0]);
-                       if (fNodeIdInList != FALSE) {   // own nodeid in list
-                               // send event to process command
-                               NmtEvent = kEplNmtEventResetCom;
-                       }
-                       break;
-               }
-
-       case kEplNmtCmdResetConfigurationEx:
-               {               // check if own nodeid is in EPL node list
-                       fNodeIdInList =
-                           EplNmtCnuNodeIdList(&pFrameInfo_p->m_pFrame->m_Data.
-                                               m_Asnd.m_Payload.
-                                               m_NmtCommandService.
-                                               m_le_abNmtCommandData[0]);
-                       if (fNodeIdInList != FALSE) {   // own nodeid in list
-                               // send event to process command
-                               NmtEvent = kEplNmtEventResetConfig;
-                       }
-                       break;
-               }
-
-       case kEplNmtCmdSwResetEx:
-               {               // check if own nodeid is in EPL node list
-                       fNodeIdInList =
-                           EplNmtCnuNodeIdList(&pFrameInfo_p->m_pFrame->m_Data.
-                                               m_Asnd.m_Payload.
-                                               m_NmtCommandService.
-                                               m_le_abNmtCommandData[0]);
-                       if (fNodeIdInList != FALSE) {   // own nodeid in list
-                               // send event to process command
-                               NmtEvent = kEplNmtEventSwReset;
-                       }
-                       break;
-               }
-
-               //------------------------------------------------------------------------
-               // NMT managing commands
-
-               // TODO: add functions to process managing command (optional)
-
-       case kEplNmtCmdNetHostNameSet:
-               {
-                       break;
-               }
-
-       case kEplNmtCmdFlushArpEntry:
-               {
-                       break;
-               }
-
-               //------------------------------------------------------------------------
-               // NMT info services
-
-               // TODO: forward event with infos to the application (optional)
-
-       case kEplNmtCmdPublishConfiguredCN:
-               {
-                       break;
-               }
-
-       case kEplNmtCmdPublishActiveCN:
-               {
-                       break;
-               }
-
-       case kEplNmtCmdPublishPreOperational1:
-               {
-                       break;
-               }
-
-       case kEplNmtCmdPublishPreOperational2:
-               {
-                       break;
-               }
-
-       case kEplNmtCmdPublishReadyToOperate:
-               {
-                       break;
-               }
-
-       case kEplNmtCmdPublishOperational:
-               {
-                       break;
-               }
-
-       case kEplNmtCmdPublishStopped:
-               {
-                       break;
-               }
-
-       case kEplNmtCmdPublishEmergencyNew:
-               {
-                       break;
-               }
-
-       case kEplNmtCmdPublishTime:
-               {
-                       break;
-               }
-
-               //-----------------------------------------------------------------------
-               // error from MN
-               // -> requested command not supported by MN
-       case kEplNmtCmdInvalidService:
-               {
-
-                       // TODO: errorevent to application
-                       break;
-               }
-
-               //------------------------------------------------------------------------
-               // default
-       default:
-               {
-                       Ret = kEplNmtUnknownCommand;
-                       goto Exit;
-               }
-
-       }                       // end of switch(NmtCommand)
-
-       if (NmtEvent != kEplNmtEventNoEvent) {
-               if (EplNmtCnuInstance_g.m_pfnCheckEventCb != NULL) {
-                       Ret = EplNmtCnuInstance_g.m_pfnCheckEventCb(NmtEvent);
-                       if (Ret == kEplReject) {
-                               Ret = kEplSuccessful;
-                               goto Exit;
-                       } else if (Ret != kEplSuccessful) {
-                               goto Exit;
-                       }
-               }
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTU)) != 0)
-               Ret = EplNmtuNmtEvent(NmtEvent);
-#endif
-       }
-
-      Exit:
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtCnuGetNmtCommand()
-//
-// Description: returns the NMT-Command from the frame
-//
-//
-//
-// Parameters:      pFrameInfo_p = pointer to the Frame
-//                                 with the NMT-Command
-//
-//
-// Returns:         tEplNmtCommand = NMT-Command
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-static tEplNmtCommand EplNmtCnuGetNmtCommand(tEplFrameInfo * pFrameInfo_p)
-{
-       tEplNmtCommand NmtCommand;
-       tEplNmtCommandService *pNmtCommandService;
-
-       pNmtCommandService =
-           &pFrameInfo_p->m_pFrame->m_Data.m_Asnd.m_Payload.
-           m_NmtCommandService;
-
-       NmtCommand =
-           (tEplNmtCommand) AmiGetByteFromLe(&pNmtCommandService->
-                                             m_le_bNmtCommandId);
-
-       return NmtCommand;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtCnuNodeIdList()
-//
-// Description: check if the own nodeid is set in EPL Node List
-//
-//
-//
-// Parameters:      pbNmtCommandDate_p = pointer to the data of the NMT Command
-//
-//
-// Returns:         BOOL = TRUE if nodeid is set in EPL Node List
-//                         FALSE if nodeid not set in EPL Node List
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-static BOOL EplNmtCnuNodeIdList(u8 * pbNmtCommandDate_p)
-{
-       BOOL fNodeIdInList;
-       unsigned int uiByteOffset;
-       u8 bBitOffset;
-       u8 bNodeListByte;
-
-       // get byte-offset of the own nodeid in NodeIdList
-       // devide though 8
-       uiByteOffset = (unsigned int)(EplNmtCnuInstance_g.m_uiNodeId >> 3);
-       // get bitoffset
-       bBitOffset = (u8) EplNmtCnuInstance_g.m_uiNodeId % 8;
-
-       bNodeListByte = AmiGetByteFromLe(&pbNmtCommandDate_p[uiByteOffset]);
-       if ((bNodeListByte & bBitOffset) == 0) {
-               fNodeIdInList = FALSE;
-       } else {
-               fNodeIdInList = TRUE;
-       }
-
-       return fNodeIdInList;
-}
-
-#endif // #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_CN)) != 0)
-
-// EOF
diff --git a/drivers/staging/epl/EplNmtMnu.c b/drivers/staging/epl/EplNmtMnu.c
deleted file mode 100644 (file)
index d19434f..0000000
+++ /dev/null
@@ -1,2828 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for NMT-MN-Module
-
-  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: EplNmtMnu.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.18 $  $Date: 2008/11/19 09:52:24 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/09 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#include "user/EplNmtMnu.h"
-#include "user/EplTimeru.h"
-#include "user/EplIdentu.h"
-#include "user/EplStatusu.h"
-#include "user/EplObdu.h"
-#include "user/EplDlluCal.h"
-#include "Benchmark.h"
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDU)) == 0) && (EPL_OBD_USE_KERNEL == FALSE)
-#error "EPL NmtMnu module needs EPL module OBDU or OBDK!"
-#endif
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   D E F I N I T I O N S                          //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-// TracePoint support for realtime-debugging
-#ifdef _DBG_TRACE_POINTS_
-void TgtDbgSignalTracePoint(u8 bTracePointNumber_p);
-void TgtDbgPostTraceValue(u32 dwTraceValue_p);
-#define TGT_DBG_SIGNAL_TRACE_POINT(p)   TgtDbgSignalTracePoint(p)
-#define TGT_DBG_POST_TRACE_VALUE(v)     TgtDbgPostTraceValue(v)
-#else
-#define TGT_DBG_SIGNAL_TRACE_POINT(p)
-#define TGT_DBG_POST_TRACE_VALUE(v)
-#endif
-#define EPL_NMTMNU_DBG_POST_TRACE_VALUE(Event_p, uiNodeId_p, wErrorCode_p) \
-    TGT_DBG_POST_TRACE_VALUE((kEplEventSinkNmtMnu << 28) | (Event_p << 24) \
-                             | (uiNodeId_p << 16) | wErrorCode_p)
-
-// defines for flags in node info structure
-#define EPL_NMTMNU_NODE_FLAG_ISOCHRON       0x0001     // CN is being accessed isochronously
-#define EPL_NMTMNU_NODE_FLAG_NOT_SCANNED    0x0002     // CN was not scanned once -> decrement SignalCounter and reset flag
-#define EPL_NMTMNU_NODE_FLAG_HALTED         0x0004     // boot process for this CN is halted
-#define EPL_NMTMNU_NODE_FLAG_NMT_CMD_ISSUED 0x0008     // NMT command was just issued, wrong NMT states will be tolerated
-#define EPL_NMTMNU_NODE_FLAG_COUNT_STATREQ  0x0300     // counter for StatusRequest timer handle
-#define EPL_NMTMNU_NODE_FLAG_COUNT_LONGER   0x0C00     // counter for longer timeouts timer handle
-#define EPL_NMTMNU_NODE_FLAG_INC_STATREQ    0x0100     // increment for StatusRequest timer handle
-#define EPL_NMTMNU_NODE_FLAG_INC_LONGER     0x0400     // increment for longer timeouts timer handle
-                   // These counters will be incremented at every timer start
-                   // and copied to timerarg. When the timer event occures
-                   // both will be compared and if unequal the timer event
-                   // will be discarded, because it is an old one.
-
-// defines for timer arguments to draw a distinction between serveral events
-#define EPL_NMTMNU_TIMERARG_NODE_MASK   0x000000FFL    // mask that contains the node-ID
-#define EPL_NMTMNU_TIMERARG_IDENTREQ    0x00010000L    // timer event is for IdentRequest
-#define EPL_NMTMNU_TIMERARG_STATREQ     0x00020000L    // timer event is for StatusRequest
-#define EPL_NMTMNU_TIMERARG_LONGER      0x00040000L    // timer event is for longer timeouts
-#define EPL_NMTMNU_TIMERARG_STATE_MON   0x00080000L    // timer event for StatusRequest to monitor execution of NMT state changes
-#define EPL_NMTMNU_TIMERARG_COUNT_SR    0x00000300L    // counter for StatusRequest
-#define EPL_NMTMNU_TIMERARG_COUNT_LO    0x00000C00L    // counter for longer timeouts
-                   // The counters must have the same position as in the node flags above.
-
-#define EPL_NMTMNU_SET_FLAGS_TIMERARG_STATREQ(pNodeInfo_p, uiNodeId_p, TimerArg_p) \
-    pNodeInfo_p->m_wFlags = \
-        ((pNodeInfo_p->m_wFlags + EPL_NMTMNU_NODE_FLAG_INC_STATREQ) \
-         & EPL_NMTMNU_NODE_FLAG_COUNT_STATREQ) \
-        | (pNodeInfo_p->m_wFlags & ~EPL_NMTMNU_NODE_FLAG_COUNT_STATREQ); \
-    TimerArg_p.m_ulArg = EPL_NMTMNU_TIMERARG_STATREQ | uiNodeId_p | \
-        (pNodeInfo_p->m_wFlags & EPL_NMTMNU_NODE_FLAG_COUNT_STATREQ); \
-    TimerArg_p.m_EventSink = kEplEventSinkNmtMnu;
-
-#define EPL_NMTMNU_SET_FLAGS_TIMERARG_IDENTREQ(pNodeInfo_p, uiNodeId_p, TimerArg_p) \
-    pNodeInfo_p->m_wFlags = \
-        ((pNodeInfo_p->m_wFlags + EPL_NMTMNU_NODE_FLAG_INC_STATREQ) \
-         & EPL_NMTMNU_NODE_FLAG_COUNT_STATREQ) \
-        | (pNodeInfo_p->m_wFlags & ~EPL_NMTMNU_NODE_FLAG_COUNT_STATREQ); \
-    TimerArg_p.m_ulArg = EPL_NMTMNU_TIMERARG_IDENTREQ | uiNodeId_p | \
-        (pNodeInfo_p->m_wFlags & EPL_NMTMNU_NODE_FLAG_COUNT_STATREQ); \
-    TimerArg_p.m_EventSink = kEplEventSinkNmtMnu;
-
-#define EPL_NMTMNU_SET_FLAGS_TIMERARG_LONGER(pNodeInfo_p, uiNodeId_p, TimerArg_p) \
-    pNodeInfo_p->m_wFlags = \
-        ((pNodeInfo_p->m_wFlags + EPL_NMTMNU_NODE_FLAG_INC_LONGER) \
-         & EPL_NMTMNU_NODE_FLAG_COUNT_LONGER) \
-        | (pNodeInfo_p->m_wFlags & ~EPL_NMTMNU_NODE_FLAG_COUNT_LONGER); \
-    TimerArg_p.m_ulArg = EPL_NMTMNU_TIMERARG_LONGER | uiNodeId_p | \
-        (pNodeInfo_p->m_wFlags & EPL_NMTMNU_NODE_FLAG_COUNT_LONGER); \
-    TimerArg_p.m_EventSink = kEplEventSinkNmtMnu;
-
-#define EPL_NMTMNU_SET_FLAGS_TIMERARG_STATE_MON(pNodeInfo_p, uiNodeId_p, TimerArg_p) \
-    pNodeInfo_p->m_wFlags = \
-        ((pNodeInfo_p->m_wFlags + EPL_NMTMNU_NODE_FLAG_INC_STATREQ) \
-         & EPL_NMTMNU_NODE_FLAG_COUNT_STATREQ) \
-        | (pNodeInfo_p->m_wFlags & ~EPL_NMTMNU_NODE_FLAG_COUNT_STATREQ); \
-    TimerArg_p.m_ulArg = EPL_NMTMNU_TIMERARG_STATE_MON | uiNodeId_p | \
-        (pNodeInfo_p->m_wFlags & EPL_NMTMNU_NODE_FLAG_COUNT_STATREQ); \
-    TimerArg_p.m_EventSink = kEplEventSinkNmtMnu;
-
-// defines for global flags
-#define EPL_NMTMNU_FLAG_HALTED          0x0001 // boot process is halted
-#define EPL_NMTMNU_FLAG_APP_INFORMED    0x0002 // application was informed about possible NMT state change
-
-// return pointer to node info structure for specified node ID
-// d.k. may be replaced by special (hash) function if node ID array is smaller than 254
-#define EPL_NMTMNU_GET_NODEINFO(uiNodeId_p) (&EplNmtMnuInstance_g.m_aNodeInfo[uiNodeId_p - 1])
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-typedef enum {
-       kEplNmtMnuIntNodeEventNoIdentResponse = 0x00,
-       kEplNmtMnuIntNodeEventIdentResponse = 0x01,
-       kEplNmtMnuIntNodeEventBoot = 0x02,
-       kEplNmtMnuIntNodeEventExecReset = 0x03,
-       kEplNmtMnuIntNodeEventConfigured = 0x04,
-       kEplNmtMnuIntNodeEventNoStatusResponse = 0x05,
-       kEplNmtMnuIntNodeEventStatusResponse = 0x06,
-       kEplNmtMnuIntNodeEventHeartbeat = 0x07,
-       kEplNmtMnuIntNodeEventNmtCmdSent = 0x08,
-       kEplNmtMnuIntNodeEventTimerIdentReq = 0x09,
-       kEplNmtMnuIntNodeEventTimerStatReq = 0x0A,
-       kEplNmtMnuIntNodeEventTimerStateMon = 0x0B,
-       kEplNmtMnuIntNodeEventTimerLonger = 0x0C,
-       kEplNmtMnuIntNodeEventError = 0x0D,
-
-} tEplNmtMnuIntNodeEvent;
-
-typedef enum {
-       kEplNmtMnuNodeStateUnknown = 0x00,
-       kEplNmtMnuNodeStateIdentified = 0x01,
-       kEplNmtMnuNodeStateResetConf = 0x02,    // CN reset after configuration update
-       kEplNmtMnuNodeStateConfigured = 0x03,   // BootStep1 completed
-       kEplNmtMnuNodeStateReadyToOp = 0x04,    // BootStep2 completed
-       kEplNmtMnuNodeStateComChecked = 0x05,   // Communication checked successfully
-       kEplNmtMnuNodeStateOperational = 0x06,  // CN is in NMT state OPERATIONAL
-
-} tEplNmtMnuNodeState;
-
-typedef struct {
-       tEplTimerHdl m_TimerHdlStatReq; // timer to delay StatusRequests and IdentRequests
-       tEplTimerHdl m_TimerHdlLonger;  // 2nd timer for NMT command EnableReadyToOp and CheckCommunication
-       tEplNmtMnuNodeState m_NodeState;        // internal node state (kind of sub state of NMT state)
-       u32 m_dwNodeCfg;        // subindex from 0x1F81
-       u16 m_wFlags;           // flags: CN is being accessed isochronously
-
-} tEplNmtMnuNodeInfo;
-
-typedef struct {
-       tEplNmtMnuNodeInfo m_aNodeInfo[EPL_NMT_MAX_NODE_ID];
-       tEplTimerHdl m_TimerHdlNmtState;        // timeout for stay in NMT state
-       unsigned int m_uiMandatorySlaveCount;
-       unsigned int m_uiSignalSlaveCount;
-       unsigned long m_ulStatusRequestDelay;   // in [ms] (object 0x1006 * EPL_C_NMT_STATREQ_CYCLE)
-       unsigned long m_ulTimeoutReadyToOp;     // in [ms] (object 0x1F89/5)
-       unsigned long m_ulTimeoutCheckCom;      // in [ms] (object 0x1006 * MultiplexedCycleCount)
-       u16 m_wFlags;           // global flags
-       u32 m_dwNmtStartup;     // object 0x1F80 NMT_StartUp_U32
-       tEplNmtMnuCbNodeEvent m_pfnCbNodeEvent;
-       tEplNmtMnuCbBootEvent m_pfnCbBootEvent;
-
-} tEplNmtMnuInstance;
-
-//---------------------------------------------------------------------------
-// local vars
-//---------------------------------------------------------------------------
-
-static tEplNmtMnuInstance EplNmtMnuInstance_g;
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-static tEplKernel EplNmtMnuCbNmtRequest(tEplFrameInfo *pFrameInfo_p);
-
-static tEplKernel EplNmtMnuCbIdentResponse(unsigned int uiNodeId_p,
-                                          tEplIdentResponse *pIdentResponse_p);
-
-static tEplKernel EplNmtMnuCbStatusResponse(unsigned int uiNodeId_p,
-                                           tEplStatusResponse *pStatusResponse_p);
-
-static tEplKernel EplNmtMnuCheckNmtState(unsigned int uiNodeId_p,
-                                        tEplNmtMnuNodeInfo * pNodeInfo_p,
-                                        tEplNmtState NodeNmtState_p,
-                                        u16 wErrorCode_p,
-                                        tEplNmtState LocalNmtState_p);
-
-static tEplKernel EplNmtMnuStartBootStep1(void);
-
-static tEplKernel EplNmtMnuStartBootStep2(void);
-
-static tEplKernel EplNmtMnuStartCheckCom(void);
-
-static tEplKernel EplNmtMnuNodeBootStep2(unsigned int uiNodeId_p,
-                                        tEplNmtMnuNodeInfo * pNodeInfo_p);
-
-static tEplKernel EplNmtMnuNodeCheckCom(unsigned int uiNodeId_p,
-                                       tEplNmtMnuNodeInfo * pNodeInfo_p);
-
-static tEplKernel EplNmtMnuStartNodes(void);
-
-static tEplKernel EplNmtMnuProcessInternalEvent(unsigned int uiNodeId_p,
-                                               tEplNmtState NodeNmtState_p,
-                                               u16 wErrorCode_p,
-                                               tEplNmtMnuIntNodeEvent
-                                               NodeEvent_p);
-
-static tEplKernel EplNmtMnuReset(void);
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtMnuInit
-//
-// Description: init first instance of the module
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplNmtMnuInit(tEplNmtMnuCbNodeEvent pfnCbNodeEvent_p,
-                        tEplNmtMnuCbBootEvent pfnCbBootEvent_p)
-{
-       tEplKernel Ret;
-
-       Ret = EplNmtMnuAddInstance(pfnCbNodeEvent_p, pfnCbBootEvent_p);
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtMnuAddInstance
-//
-// Description: init other instances of the module
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplNmtMnuAddInstance(tEplNmtMnuCbNodeEvent pfnCbNodeEvent_p,
-                               tEplNmtMnuCbBootEvent pfnCbBootEvent_p)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-       // reset instance structure
-       EPL_MEMSET(&EplNmtMnuInstance_g, 0, sizeof(EplNmtMnuInstance_g));
-
-       if ((pfnCbNodeEvent_p == NULL) || (pfnCbBootEvent_p == NULL)) {
-               Ret = kEplNmtInvalidParam;
-               goto Exit;
-       }
-       EplNmtMnuInstance_g.m_pfnCbNodeEvent = pfnCbNodeEvent_p;
-       EplNmtMnuInstance_g.m_pfnCbBootEvent = pfnCbBootEvent_p;
-
-       // initialize StatusRequest delay
-       EplNmtMnuInstance_g.m_ulStatusRequestDelay = 5000L;
-
-       // register NmtMnResponse callback function
-       Ret =
-           EplDlluCalRegAsndService(kEplDllAsndNmtRequest,
-                                    EplNmtMnuCbNmtRequest,
-                                    kEplDllAsndFilterLocal);
-
-      Exit:
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtMnuDelInstance
-//
-// Description: delete instance
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplNmtMnuDelInstance(void)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-       // deregister NmtMnResponse callback function
-       Ret =
-           EplDlluCalRegAsndService(kEplDllAsndNmtRequest, NULL,
-                                    kEplDllAsndFilterNone);
-
-       Ret = EplNmtMnuReset();
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtMnuSendNmtCommandEx
-//
-// Description: sends the specified NMT command to the specified node.
-//
-// Parameters:  uiNodeId_p              = node ID to which the NMT command will be sent
-//              NmtCommand_p            = NMT command
-//
-// Returns:     tEplKernel              = error code
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplNmtMnuSendNmtCommandEx(unsigned int uiNodeId_p,
-                                    tEplNmtCommand NmtCommand_p,
-                                    void *pNmtCommandData_p,
-                                    unsigned int uiDataSize_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplFrameInfo FrameInfo;
-       u8 abBuffer[EPL_C_DLL_MINSIZE_NMTCMDEXT];
-       tEplFrame *pFrame = (tEplFrame *) abBuffer;
-       BOOL fSoftDeleteNode = FALSE;
-
-       if ((uiNodeId_p == 0) || (uiNodeId_p > EPL_C_ADR_BROADCAST)) {  // invalid node ID specified
-               Ret = kEplInvalidNodeId;
-               goto Exit;
-       }
-
-       if ((pNmtCommandData_p != NULL)
-           && (uiDataSize_p >
-               (EPL_C_DLL_MINSIZE_NMTCMDEXT - EPL_C_DLL_MINSIZE_NMTCMD))) {
-               Ret = kEplNmtInvalidParam;
-               goto Exit;
-       }
-       // $$$ d.k. may be check in future versions if the caller wants to perform prohibited state transitions
-       //     the CN should not perform these transitions, but the expected NMT state will be changed and never fullfilled.
-
-       // build frame
-       EPL_MEMSET(pFrame, 0x00, sizeof(abBuffer));
-       AmiSetByteToLe(&pFrame->m_le_bDstNodeId, (u8) uiNodeId_p);
-       AmiSetByteToLe(&pFrame->m_Data.m_Asnd.m_le_bServiceId,
-                      (u8) kEplDllAsndNmtCommand);
-       AmiSetByteToLe(&pFrame->m_Data.m_Asnd.m_Payload.m_NmtCommandService.
-                      m_le_bNmtCommandId, (u8) NmtCommand_p);
-       if ((pNmtCommandData_p != NULL) && (uiDataSize_p > 0)) {        // copy command data to frame
-               EPL_MEMCPY(&pFrame->m_Data.m_Asnd.m_Payload.m_NmtCommandService.
-                          m_le_abNmtCommandData[0], pNmtCommandData_p,
-                          uiDataSize_p);
-       }
-       // build info structure
-       FrameInfo.m_NetTime.m_dwNanoSec = 0;
-       FrameInfo.m_NetTime.m_dwSec = 0;
-       FrameInfo.m_pFrame = pFrame;
-       FrameInfo.m_uiFrameSize = sizeof(abBuffer);
-
-       // send NMT-Request
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLU)) != 0)
-       Ret = EplDlluCalAsyncSend(&FrameInfo,   // pointer to frameinfo
-                                 kEplDllAsyncReqPrioNmt);      // priority
-#endif
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-
-       EPL_DBGLVL_NMTMN_TRACE2("NMTCmd(%02X->%02X)\n", NmtCommand_p,
-                               uiNodeId_p);
-
-       switch (NmtCommand_p) {
-       case kEplNmtCmdStartNode:
-       case kEplNmtCmdEnterPreOperational2:
-       case kEplNmtCmdEnableReadyToOperate:
-               {
-                       // nothing left to do,
-                       // because any further processing is done
-                       // when the NMT command is actually sent
-                       goto Exit;
-               }
-
-       case kEplNmtCmdStopNode:
-               {
-                       fSoftDeleteNode = TRUE;
-                       break;
-               }
-
-       case kEplNmtCmdResetNode:
-       case kEplNmtCmdResetCommunication:
-       case kEplNmtCmdResetConfiguration:
-       case kEplNmtCmdSwReset:
-               {
-                       break;
-               }
-
-       default:
-               goto Exit;
-       }
-
-       // remove CN from isochronous phase;
-       // This must be done here and not when NMT command is actually sent
-       // because it will be too late and may cause unwanted errors
-       if (uiNodeId_p != EPL_C_ADR_BROADCAST) {
-               if (fSoftDeleteNode == FALSE) { // remove CN immediately from isochronous phase
-                       Ret = EplDlluCalDeleteNode(uiNodeId_p);
-               } else {        // remove CN from isochronous phase softly
-                       Ret = EplDlluCalSoftDeleteNode(uiNodeId_p);
-               }
-       } else {                // do it for all active CNs
-               for (uiNodeId_p = 1;
-                    uiNodeId_p <= tabentries(EplNmtMnuInstance_g.m_aNodeInfo);
-                    uiNodeId_p++) {
-                       if ((EPL_NMTMNU_GET_NODEINFO(uiNodeId_p)->
-                            m_dwNodeCfg & (EPL_NODEASSIGN_NODE_IS_CN |
-                                           EPL_NODEASSIGN_NODE_EXISTS)) != 0) {
-                               if (fSoftDeleteNode == FALSE) { // remove CN immediately from isochronous phase
-                                       Ret = EplDlluCalDeleteNode(uiNodeId_p);
-                               } else {        // remove CN from isochronous phase softly
-                                       Ret =
-                                           EplDlluCalSoftDeleteNode
-                                           (uiNodeId_p);
-                               }
-                       }
-               }
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtMnuSendNmtCommand
-//
-// Description: sends the specified NMT command to the specified node.
-//
-// Parameters:  uiNodeId_p              = node ID to which the NMT command will be sent
-//              NmtCommand_p            = NMT command
-//
-// Returns:     tEplKernel              = error code
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplNmtMnuSendNmtCommand(unsigned int uiNodeId_p,
-                                  tEplNmtCommand NmtCommand_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       Ret = EplNmtMnuSendNmtCommandEx(uiNodeId_p, NmtCommand_p, NULL, 0);
-
-//Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtMnuTriggerStateChange
-//
-// Description: triggers the specified node command for the specified node.
-//
-// Parameters:  uiNodeId_p              = node ID for which the node command will be executed
-//              NodeCommand_p           = node command
-//
-// Returns:     tEplKernel              = error code
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplNmtMnuTriggerStateChange(unsigned int uiNodeId_p,
-                                      tEplNmtNodeCommand NodeCommand_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplNmtMnuIntNodeEvent NodeEvent;
-       tEplObdSize ObdSize;
-       u8 bNmtState;
-       u16 wErrorCode = EPL_E_NO_ERROR;
-
-       if ((uiNodeId_p == 0) || (uiNodeId_p >= EPL_C_ADR_BROADCAST)) {
-               Ret = kEplInvalidNodeId;
-               goto Exit;
-       }
-
-       switch (NodeCommand_p) {
-       case kEplNmtNodeCommandBoot:
-               {
-                       NodeEvent = kEplNmtMnuIntNodeEventBoot;
-                       break;
-               }
-
-       case kEplNmtNodeCommandConfOk:
-               {
-                       NodeEvent = kEplNmtMnuIntNodeEventConfigured;
-                       break;
-               }
-
-       case kEplNmtNodeCommandConfErr:
-               {
-                       NodeEvent = kEplNmtMnuIntNodeEventError;
-                       wErrorCode = EPL_E_NMT_BPO1_CF_VERIFY;
-                       break;
-               }
-
-       case kEplNmtNodeCommandConfReset:
-               {
-                       NodeEvent = kEplNmtMnuIntNodeEventExecReset;
-                       break;
-               }
-
-       default:
-               {               // invalid node command
-                       goto Exit;
-               }
-       }
-
-       // fetch current NMT state
-       ObdSize = 1;
-       Ret = EplObduReadEntry(0x1F8E, uiNodeId_p, &bNmtState, &ObdSize);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-
-       Ret = EplNmtMnuProcessInternalEvent(uiNodeId_p,
-                                           (tEplNmtState) (bNmtState |
-                                                           EPL_NMT_TYPE_CS),
-                                           wErrorCode, NodeEvent);
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtMnuCbNmtStateChange
-//
-// Description: callback function for NMT state changes
-//
-// Parameters:  NmtStateChange_p        = NMT state change event
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplNmtMnuCbNmtStateChange(tEplEventNmtStateChange NmtStateChange_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       // do work which must be done in that state
-       switch (NmtStateChange_p.m_NewNmtState) {
-               // EPL stack is not running
-/*        case kEplNmtGsOff:
-            break;
-
-        // first init of the hardware
-        case kEplNmtGsInitialising:
-            break;
-
-        // init of the manufacturer-specific profile area and the
-        // standardised device profile area
-        case kEplNmtGsResetApplication:
-        {
-            break;
-        }
-
-        // init of the communication profile area
-        case kEplNmtGsResetCommunication:
-        {
-            break;
-        }
-*/
-               // build the configuration with infos from OD
-       case kEplNmtGsResetConfiguration:
-               {
-                       u32 dwTimeout;
-                       tEplObdSize ObdSize;
-
-                       // read object 0x1F80 NMT_StartUp_U32
-                       ObdSize = 4;
-                       Ret =
-                           EplObduReadEntry(0x1F80, 0,
-                                            &EplNmtMnuInstance_g.
-                                            m_dwNmtStartup, &ObdSize);
-                       if (Ret != kEplSuccessful) {
-                               break;
-                       }
-                       // compute StatusReqDelay = object 0x1006 * EPL_C_NMT_STATREQ_CYCLE
-                       ObdSize = sizeof(dwTimeout);
-                       Ret = EplObduReadEntry(0x1006, 0, &dwTimeout, &ObdSize);
-                       if (Ret != kEplSuccessful) {
-                               break;
-                       }
-                       if (dwTimeout != 0L) {
-                               EplNmtMnuInstance_g.m_ulStatusRequestDelay =
-                                   dwTimeout * EPL_C_NMT_STATREQ_CYCLE / 1000L;
-                               if (EplNmtMnuInstance_g.
-                                   m_ulStatusRequestDelay == 0L) {
-                                       EplNmtMnuInstance_g.m_ulStatusRequestDelay = 1L;        // at least 1 ms
-                               }
-                               // $$$ fetch and use MultiplexedCycleCount from OD
-                               EplNmtMnuInstance_g.m_ulTimeoutCheckCom =
-                                   dwTimeout * EPL_C_NMT_STATREQ_CYCLE / 1000L;
-                               if (EplNmtMnuInstance_g.m_ulTimeoutCheckCom ==
-                                   0L) {
-                                       EplNmtMnuInstance_g.m_ulTimeoutCheckCom = 1L;   // at least 1 ms
-                               }
-                       }
-                       // fetch ReadyToOp Timeout from OD
-                       ObdSize = sizeof(dwTimeout);
-                       Ret = EplObduReadEntry(0x1F89, 5, &dwTimeout, &ObdSize);
-                       if (Ret != kEplSuccessful) {
-                               break;
-                       }
-                       if (dwTimeout != 0L) {
-                               // convert [us] to [ms]
-                               dwTimeout /= 1000L;
-                               if (dwTimeout == 0L) {
-                                       dwTimeout = 1L; // at least 1 ms
-                               }
-                               EplNmtMnuInstance_g.m_ulTimeoutReadyToOp =
-                                   dwTimeout;
-                       } else {
-                               EplNmtMnuInstance_g.m_ulTimeoutReadyToOp = 0L;
-                       }
-                       break;
-               }
-/*
-        //-----------------------------------------------------------
-        // CN part of the state machine
-
-        // node liste for EPL-Frames and check timeout
-        case kEplNmtCsNotActive:
-        {
-            break;
-        }
-
-        // node process only async frames
-        case kEplNmtCsPreOperational1:
-        {
-            break;
-        }
-
-        // node process isochronus and asynchronus frames
-        case kEplNmtCsPreOperational2:
-        {
-            break;
-        }
-
-        // node should be configured und application is ready
-        case kEplNmtCsReadyToOperate:
-        {
-            break;
-        }
-
-        // normal work state
-        case kEplNmtCsOperational:
-        {
-            break;
-        }
-
-        // node stopped by MN
-        // -> only process asynchronus frames
-        case kEplNmtCsStopped:
-        {
-            break;
-        }
-
-        // no EPL cycle
-        // -> normal ethernet communication
-        case kEplNmtCsBasicEthernet:
-        {
-            break;
-        }
-*/
-               //-----------------------------------------------------------
-               // MN part of the state machine
-
-               // node listens for EPL-Frames and check timeout
-       case kEplNmtMsNotActive:
-               {
-                       break;
-               }
-
-               // node processes only async frames
-       case kEplNmtMsPreOperational1:
-               {
-                       u32 dwTimeout;
-                       tEplTimerArg TimerArg;
-                       tEplObdSize ObdSize;
-                       tEplEvent Event;
-
-                       // clear global flags, e.g. reenable boot process
-                       EplNmtMnuInstance_g.m_wFlags = 0;
-
-                       // reset IdentResponses and running IdentRequests and StatusRequests
-                       Ret = EplIdentuReset();
-                       Ret = EplStatusuReset();
-
-                       // reset timers
-                       Ret = EplNmtMnuReset();
-
-                       // 2008/11/18 d.k. reset internal node info is not necessary,
-                       //                 because timer flags are important and other
-                       //                 things are reset by EplNmtMnuStartBootStep1().
-/*
-            EPL_MEMSET(EplNmtMnuInstance_g.m_aNodeInfo,
-                       0,
-                       sizeof (EplNmtMnuInstance_g.m_aNodeInfo));
-*/
-
-                       // inform DLL about NMT state change,
-                       // so that it can clear the asynchonous queues and start the reduced cycle
-                       Event.m_EventSink = kEplEventSinkDllk;
-                       Event.m_EventType = kEplEventTypeDllkStartReducedCycle;
-                       EPL_MEMSET(&Event.m_NetTime, 0x00,
-                                  sizeof(Event.m_NetTime));
-                       Event.m_pArg = NULL;
-                       Event.m_uiSize = 0;
-                       Ret = EplEventuPost(&Event);
-                       if (Ret != kEplSuccessful) {
-                               break;
-                       }
-                       // reset all nodes
-                       // d.k.: skip this step if was just done before, e.g. because of a ResetNode command from a diagnostic node
-                       if (NmtStateChange_p.m_NmtEvent ==
-                           kEplNmtEventTimerMsPreOp1) {
-                               BENCHMARK_MOD_07_TOGGLE(9);
-
-                               EPL_NMTMNU_DBG_POST_TRACE_VALUE(0,
-                                                               EPL_C_ADR_BROADCAST,
-                                                               kEplNmtCmdResetNode);
-
-                               Ret =
-                                   EplNmtMnuSendNmtCommand(EPL_C_ADR_BROADCAST,
-                                                           kEplNmtCmdResetNode);
-                               if (Ret != kEplSuccessful) {
-                                       break;
-                               }
-                       }
-                       // start network scan
-                       Ret = EplNmtMnuStartBootStep1();
-
-                       // start timer for 0x1F89/2 MNTimeoutPreOp1_U32
-                       ObdSize = sizeof(dwTimeout);
-                       Ret = EplObduReadEntry(0x1F89, 2, &dwTimeout, &ObdSize);
-                       if (Ret != kEplSuccessful) {
-                               break;
-                       }
-                       if (dwTimeout != 0L) {
-                               dwTimeout /= 1000L;
-                               if (dwTimeout == 0L) {
-                                       dwTimeout = 1L; // at least 1 ms
-                               }
-                               TimerArg.m_EventSink = kEplEventSinkNmtMnu;
-                               TimerArg.m_ulArg = 0;
-                               Ret =
-                                   EplTimeruModifyTimerMs(&EplNmtMnuInstance_g.
-                                                          m_TimerHdlNmtState,
-                                                          dwTimeout, TimerArg);
-                       }
-                       break;
-               }
-
-               // node processes isochronous and asynchronous frames
-       case kEplNmtMsPreOperational2:
-               {
-                       // add identified CNs to isochronous phase
-                       // send EnableReadyToOp to all identified CNs
-                       Ret = EplNmtMnuStartBootStep2();
-
-                       // wait for NMT state change of CNs
-                       break;
-               }
-
-               // node should be configured und application is ready
-       case kEplNmtMsReadyToOperate:
-               {
-                       // check if PRes of CNs are OK
-                       // d.k. that means wait CycleLength * MultiplexCycleCount (i.e. start timer)
-                       //      because Dllk checks PRes of CNs automatically in ReadyToOp
-                       Ret = EplNmtMnuStartCheckCom();
-                       break;
-               }
-
-               // normal work state
-       case kEplNmtMsOperational:
-               {
-                       // send StartNode to CNs
-                       // wait for NMT state change of CNs
-                       Ret = EplNmtMnuStartNodes();
-                       break;
-               }
-
-               // no EPL cycle
-               // -> normal ethernet communication
-       case kEplNmtMsBasicEthernet:
-               {
-                       break;
-               }
-
-       default:
-               {
-//            TRACE0("EplNmtMnuCbNmtStateChange(): unhandled NMT state\n");
-               }
-       }
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtMnuCbCheckEvent
-//
-// Description: callback funktion for NMT events before they are actually executed.
-//              The EPL API layer must forward NMT events from NmtCnu module.
-//              This module will reject some NMT commands while MN.
-//
-// Parameters:  NmtEvent_p              = outstanding NMT event for approval
-//
-// Returns:     tEplKernel              = error code
-//                      kEplReject      = reject the NMT event
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplNmtMnuCbCheckEvent(tEplNmtEvent NmtEvent_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtuProcessEvent
-//
-// Description: processes events from event queue
-//
-// Parameters:  pEvent_p        = pointer to event
-//
-// Returns:     tEplKernel      = errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplNmtMnuProcessEvent(tEplEvent *pEvent_p)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-       // process event
-       switch (pEvent_p->m_EventType) {
-               // timer event
-       case kEplEventTypeTimer:
-               {
-                       tEplTimerEventArg *pTimerEventArg =
-                           (tEplTimerEventArg *) pEvent_p->m_pArg;
-                       unsigned int uiNodeId;
-
-                       uiNodeId =
-                           (unsigned int)(pTimerEventArg->
-                                          m_ulArg &
-                                          EPL_NMTMNU_TIMERARG_NODE_MASK);
-                       if (uiNodeId != 0) {
-                               tEplObdSize ObdSize;
-                               u8 bNmtState;
-                               tEplNmtMnuNodeInfo *pNodeInfo;
-
-                               pNodeInfo = EPL_NMTMNU_GET_NODEINFO(uiNodeId);
-
-                               ObdSize = 1;
-                               Ret =
-                                   EplObduReadEntry(0x1F8E, uiNodeId,
-                                                    &bNmtState, &ObdSize);
-                               if (Ret != kEplSuccessful) {
-                                       break;
-                               }
-
-                               if ((pTimerEventArg->
-                                    m_ulArg & EPL_NMTMNU_TIMERARG_IDENTREQ) !=
-                                   0L) {
-                                       if ((pNodeInfo->
-                                            m_wFlags &
-                                            EPL_NMTMNU_NODE_FLAG_COUNT_STATREQ)
-                                           != (pTimerEventArg->m_ulArg & EPL_NMTMNU_TIMERARG_COUNT_SR)) {      // this is an old (already deleted or modified) timer
-                                               // but not the current timer
-                                               // so discard it
-                                               EPL_NMTMNU_DBG_POST_TRACE_VALUE
-                                                   (kEplNmtMnuIntNodeEventTimerIdentReq,
-                                                    uiNodeId,
-                                                    ((pNodeInfo->
-                                                      m_NodeState << 8)
-                                                     | 0xFF));
-
-                                               break;
-                                       }
-/*
-                    EPL_NMTMNU_DBG_POST_TRACE_VALUE(kEplNmtMnuIntNodeEventTimerIdentReq,
-                                                    uiNodeId,
-                                                    ((pNodeInfo->m_NodeState << 8)
-                                                     | 0x80
-                                                     | ((pNodeInfo->m_wFlags & EPL_NMTMNU_NODE_FLAG_COUNT_STATREQ) >> 6)
-                                                     | ((pTimerEventArg->m_ulArg & EPL_NMTMNU_TIMERARG_COUNT_SR) >> 8)));
-*/
-                                       Ret =
-                                           EplNmtMnuProcessInternalEvent
-                                           (uiNodeId,
-                                            (tEplNmtState) (bNmtState |
-                                                            EPL_NMT_TYPE_CS),
-                                            EPL_E_NO_ERROR,
-                                            kEplNmtMnuIntNodeEventTimerIdentReq);
-                               }
-
-                               else if ((pTimerEventArg->
-                                         m_ulArg & EPL_NMTMNU_TIMERARG_STATREQ)
-                                        != 0L) {
-                                       if ((pNodeInfo->
-                                            m_wFlags &
-                                            EPL_NMTMNU_NODE_FLAG_COUNT_STATREQ)
-                                           != (pTimerEventArg->m_ulArg & EPL_NMTMNU_TIMERARG_COUNT_SR)) {      // this is an old (already deleted or modified) timer
-                                               // but not the current timer
-                                               // so discard it
-                                               EPL_NMTMNU_DBG_POST_TRACE_VALUE
-                                                   (kEplNmtMnuIntNodeEventTimerStatReq,
-                                                    uiNodeId,
-                                                    ((pNodeInfo->
-                                                      m_NodeState << 8)
-                                                     | 0xFF));
-
-                                               break;
-                                       }
-/*
-                    EPL_NMTMNU_DBG_POST_TRACE_VALUE(kEplNmtMnuIntNodeEventTimerStatReq,
-                                                    uiNodeId,
-                                                    ((pNodeInfo->m_NodeState << 8)
-                                                     | 0x80
-                                                     | ((pNodeInfo->m_wFlags & EPL_NMTMNU_NODE_FLAG_COUNT_STATREQ) >> 6)
-                                                     | ((pTimerEventArg->m_ulArg & EPL_NMTMNU_TIMERARG_COUNT_SR) >> 8)));
-*/
-                                       Ret =
-                                           EplNmtMnuProcessInternalEvent
-                                           (uiNodeId,
-                                            (tEplNmtState) (bNmtState |
-                                                            EPL_NMT_TYPE_CS),
-                                            EPL_E_NO_ERROR,
-                                            kEplNmtMnuIntNodeEventTimerStatReq);
-                               }
-
-                               else if ((pTimerEventArg->
-                                         m_ulArg &
-                                         EPL_NMTMNU_TIMERARG_STATE_MON) !=
-                                        0L) {
-                                       if ((pNodeInfo->
-                                            m_wFlags &
-                                            EPL_NMTMNU_NODE_FLAG_COUNT_STATREQ)
-                                           != (pTimerEventArg->m_ulArg & EPL_NMTMNU_TIMERARG_COUNT_SR)) {      // this is an old (already deleted or modified) timer
-                                               // but not the current timer
-                                               // so discard it
-                                               EPL_NMTMNU_DBG_POST_TRACE_VALUE
-                                                   (kEplNmtMnuIntNodeEventTimerStateMon,
-                                                    uiNodeId,
-                                                    ((pNodeInfo->
-                                                      m_NodeState << 8)
-                                                     | 0xFF));
-
-                                               break;
-                                       }
-/*
-                    EPL_NMTMNU_DBG_POST_TRACE_VALUE(kEplNmtMnuIntNodeEventTimerStatReq,
-                                                    uiNodeId,
-                                                    ((pNodeInfo->m_NodeState << 8)
-                                                     | 0x80
-                                                     | ((pNodeInfo->m_wFlags & EPL_NMTMNU_NODE_FLAG_COUNT_STATREQ) >> 6)
-                                                     | ((pTimerEventArg->m_ulArg & EPL_NMTMNU_TIMERARG_COUNT_SR) >> 8)));
-*/
-                                       Ret =
-                                           EplNmtMnuProcessInternalEvent
-                                           (uiNodeId,
-                                            (tEplNmtState) (bNmtState |
-                                                            EPL_NMT_TYPE_CS),
-                                            EPL_E_NO_ERROR,
-                                            kEplNmtMnuIntNodeEventTimerStateMon);
-                               }
-
-                               else if ((pTimerEventArg->
-                                         m_ulArg & EPL_NMTMNU_TIMERARG_LONGER)
-                                        != 0L) {
-                                       if ((pNodeInfo->
-                                            m_wFlags &
-                                            EPL_NMTMNU_NODE_FLAG_COUNT_LONGER)
-                                           != (pTimerEventArg->m_ulArg & EPL_NMTMNU_TIMERARG_COUNT_LO)) {      // this is an old (already deleted or modified) timer
-                                               // but not the current timer
-                                               // so discard it
-                                               EPL_NMTMNU_DBG_POST_TRACE_VALUE
-                                                   (kEplNmtMnuIntNodeEventTimerLonger,
-                                                    uiNodeId,
-                                                    ((pNodeInfo->
-                                                      m_NodeState << 8)
-                                                     | 0xFF));
-
-                                               break;
-                                       }
-/*
-                    EPL_NMTMNU_DBG_POST_TRACE_VALUE(kEplNmtMnuIntNodeEventTimerLonger,
-                                                    uiNodeId,
-                                                    ((pNodeInfo->m_NodeState << 8)
-                                                     | 0x80
-                                                     | ((pNodeInfo->m_wFlags & EPL_NMTMNU_NODE_FLAG_COUNT_LONGER) >> 6)
-                                                     | ((pTimerEventArg->m_ulArg & EPL_NMTMNU_TIMERARG_COUNT_LO) >> 8)));
-*/
-                                       Ret =
-                                           EplNmtMnuProcessInternalEvent
-                                           (uiNodeId,
-                                            (tEplNmtState) (bNmtState |
-                                                            EPL_NMT_TYPE_CS),
-                                            EPL_E_NO_ERROR,
-                                            kEplNmtMnuIntNodeEventTimerLonger);
-                               }
-
-                       } else {        // global timer event
-                       }
-                       break;
-               }
-
-       case kEplEventTypeHeartbeat:
-               {
-                       tEplHeartbeatEvent *pHeartbeatEvent =
-                           (tEplHeartbeatEvent *) pEvent_p->m_pArg;
-
-                       Ret =
-                           EplNmtMnuProcessInternalEvent(pHeartbeatEvent->
-                                                         m_uiNodeId,
-                                                         pHeartbeatEvent->
-                                                         m_NmtState,
-                                                         pHeartbeatEvent->
-                                                         m_wErrorCode,
-                                                         kEplNmtMnuIntNodeEventHeartbeat);
-                       break;
-               }
-
-       case kEplEventTypeNmtMnuNmtCmdSent:
-               {
-                       tEplFrame *pFrame = (tEplFrame *) pEvent_p->m_pArg;
-                       unsigned int uiNodeId;
-                       tEplNmtCommand NmtCommand;
-                       u8 bNmtState;
-
-                       uiNodeId = AmiGetByteFromLe(&pFrame->m_le_bDstNodeId);
-                       NmtCommand =
-                           (tEplNmtCommand) AmiGetByteFromLe(&pFrame->m_Data.
-                                                             m_Asnd.m_Payload.
-                                                             m_NmtCommandService.
-                                                             m_le_bNmtCommandId);
-
-                       switch (NmtCommand) {
-                       case kEplNmtCmdStartNode:
-                               bNmtState =
-                                   (u8) (kEplNmtCsOperational & 0xFF);
-                               break;
-
-                       case kEplNmtCmdStopNode:
-                               bNmtState = (u8) (kEplNmtCsStopped & 0xFF);
-                               break;
-
-                       case kEplNmtCmdEnterPreOperational2:
-                               bNmtState =
-                                   (u8) (kEplNmtCsPreOperational2 & 0xFF);
-                               break;
-
-                       case kEplNmtCmdEnableReadyToOperate:
-                               // d.k. do not change expected node state, because of DS 1.0.0 7.3.1.2.1 Plain NMT State Command
-                               //      and because node may not change NMT state within EPL_C_NMT_STATE_TOLERANCE
-                               bNmtState =
-                                   (u8) (kEplNmtCsPreOperational2 & 0xFF);
-                               break;
-
-                       case kEplNmtCmdResetNode:
-                       case kEplNmtCmdResetCommunication:
-                       case kEplNmtCmdResetConfiguration:
-                       case kEplNmtCmdSwReset:
-                               bNmtState = (u8) (kEplNmtCsNotActive & 0xFF);
-                               // EplNmtMnuProcessInternalEvent() sets internal node state to kEplNmtMnuNodeStateUnknown
-                               // after next unresponded IdentRequest/StatusRequest
-                               break;
-
-                       default:
-                               goto Exit;
-                       }
-
-                       // process as internal event which update expected NMT state in OD
-                       if (uiNodeId != EPL_C_ADR_BROADCAST) {
-                               Ret = EplNmtMnuProcessInternalEvent(uiNodeId,
-                                                                   (tEplNmtState)
-                                                                   (bNmtState |
-                                                                    EPL_NMT_TYPE_CS),
-                                                                   0,
-                                                                   kEplNmtMnuIntNodeEventNmtCmdSent);
-
-                       } else {        // process internal event for all active nodes (except myself)
-
-                               for (uiNodeId = 1;
-                                    uiNodeId <=
-                                    tabentries(EplNmtMnuInstance_g.
-                                               m_aNodeInfo); uiNodeId++) {
-                                       if ((EPL_NMTMNU_GET_NODEINFO(uiNodeId)->
-                                            m_dwNodeCfg &
-                                            (EPL_NODEASSIGN_NODE_IS_CN |
-                                             EPL_NODEASSIGN_NODE_EXISTS)) !=
-                                           0) {
-                                               Ret =
-                                                   EplNmtMnuProcessInternalEvent
-                                                   (uiNodeId,
-                                                    (tEplNmtState) (bNmtState |
-                                                                    EPL_NMT_TYPE_CS),
-                                                    0,
-                                                    kEplNmtMnuIntNodeEventNmtCmdSent);
-
-                                               if (Ret != kEplSuccessful) {
-                                                       goto Exit;
-                                               }
-                                       }
-                               }
-                       }
-
-                       break;
-               }
-
-       default:
-               {
-                       Ret = kEplNmtInvalidEvent;
-               }
-
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtMnuGetRunningTimerStatReq
-//
-// Description: returns a bit field with running StatReq timers
-//              just for debugging purposes
-//
-// Parameters:  (none)
-//
-// Returns:     tEplKernel              = error code
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplNmtMnuGetDiagnosticInfo(unsigned int *puiMandatorySlaveCount_p,
-                                     unsigned int *puiSignalSlaveCount_p,
-                                     u16 *pwFlags_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       if ((puiMandatorySlaveCount_p == NULL)
-           || (puiSignalSlaveCount_p == NULL)
-           || (pwFlags_p == NULL)) {
-               Ret = kEplNmtInvalidParam;
-               goto Exit;
-       }
-
-       *puiMandatorySlaveCount_p = EplNmtMnuInstance_g.m_uiMandatorySlaveCount;
-       *puiSignalSlaveCount_p = EplNmtMnuInstance_g.m_uiSignalSlaveCount;
-       *pwFlags_p = EplNmtMnuInstance_g.m_wFlags;
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtMnuGetRunningTimerStatReq
-//
-// Description: returns a bit field with running StatReq timers
-//              just for debugging purposes
-//
-// Parameters:  (none)
-//
-// Returns:     tEplKernel              = error code
-//
-// State:
-//
-//---------------------------------------------------------------------------
-/*
-u32 EplNmtMnuGetRunningTimerStatReq(void)
-{
-tEplKernel      Ret = kEplSuccessful;
-unsigned int    uiIndex;
-tEplNmtMnuNodeInfo* pNodeInfo;
-
-    pNodeInfo = EplNmtMnuInstance_g.m_aNodeInfo;
-    for (uiIndex = 1; uiIndex <= tabentries(EplNmtMnuInstance_g.m_aNodeInfo); uiIndex++, pNodeInfo++)
-    {
-        if (pNodeInfo->m_NodeState == kEplNmtMnuNodeStateConfigured)
-        {
-            // reset flag "scanned once"
-            pNodeInfo->m_wFlags &= ~EPL_NMTMNU_NODE_FLAG_SCANNED;
-
-            Ret = EplNmtMnuNodeBootStep2(uiIndex, pNodeInfo);
-            if (Ret != kEplSuccessful)
-            {
-                goto Exit;
-            }
-            EplNmtMnuInstance_g.m_uiSignalSlaveCount++;
-            // signal slave counter shall be decremented if StatusRequest was sent once to a CN
-            // mandatory slave counter shall be decremented if mandatory CN is ReadyToOp
-        }
-    }
-
-Exit:
-    return Ret;
-}
-*/
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtMnuCbNmtRequest
-//
-// Description: callback funktion for NmtRequest
-//
-// Parameters:  pFrameInfo_p            = Frame with the NmtRequest
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplNmtMnuCbNmtRequest(tEplFrameInfo *pFrameInfo_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       // $$$ perform NMTRequest
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtMnuCbIdentResponse
-//
-// Description: callback funktion for IdentResponse
-//
-// Parameters:  uiNodeId_p              = node ID for which IdentReponse was received
-//              pIdentResponse_p        = pointer to IdentResponse
-//                                        is NULL if node did not answer
-//
-// Returns:     tEplKernel              = error code
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplNmtMnuCbIdentResponse(unsigned int uiNodeId_p,
-                                          tEplIdentResponse *pIdentResponse_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       if (pIdentResponse_p == NULL) { // node did not answer
-               Ret = EplNmtMnuProcessInternalEvent(uiNodeId_p, kEplNmtCsNotActive, EPL_E_NMT_NO_IDENT_RES,     // was EPL_E_NO_ERROR
-                                                   kEplNmtMnuIntNodeEventNoIdentResponse);
-       } else {                // node answered IdentRequest
-               tEplObdSize ObdSize;
-               u32 dwDevType;
-               u16 wErrorCode = EPL_E_NO_ERROR;
-               tEplNmtState NmtState =
-                   (tEplNmtState) (AmiGetByteFromLe
-                                   (&pIdentResponse_p->
-                                    m_le_bNmtStatus) | EPL_NMT_TYPE_CS);
-
-               // check IdentResponse $$$ move to ProcessIntern, because this function may be called also if CN
-
-               // check DeviceType (0x1F84)
-               ObdSize = 4;
-               Ret =
-                   EplObduReadEntry(0x1F84, uiNodeId_p, &dwDevType, &ObdSize);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-               if (dwDevType != 0L) {  // actually compare it with DeviceType from IdentResponse
-                       if (AmiGetDwordFromLe(&pIdentResponse_p->m_le_dwDeviceType) != dwDevType) {     // wrong DeviceType
-                               NmtState = kEplNmtCsNotActive;
-                               wErrorCode = EPL_E_NMT_BPO1_DEVICE_TYPE;
-                       }
-               }
-
-               Ret = EplNmtMnuProcessInternalEvent(uiNodeId_p,
-                                                   NmtState,
-                                                   wErrorCode,
-                                                   kEplNmtMnuIntNodeEventIdentResponse);
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtMnuCbStatusResponse
-//
-// Description: callback funktion for StatusResponse
-//
-// Parameters:  uiNodeId_p              = node ID for which IdentReponse was received
-//              pIdentResponse_p        = pointer to IdentResponse
-//                                        is NULL if node did not answer
-//
-// Returns:     tEplKernel              = error code
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplNmtMnuCbStatusResponse(unsigned int uiNodeId_p,
-                                           tEplStatusResponse *pStatusResponse_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       if (pStatusResponse_p == NULL) {        // node did not answer
-               Ret = EplNmtMnuProcessInternalEvent(uiNodeId_p, kEplNmtCsNotActive, EPL_E_NMT_NO_STATUS_RES,    // was EPL_E_NO_ERROR
-                                                   kEplNmtMnuIntNodeEventNoStatusResponse);
-       } else {                // node answered StatusRequest
-               Ret = EplNmtMnuProcessInternalEvent(uiNodeId_p,
-                                                   (tEplNmtState)
-                                                   (AmiGetByteFromLe
-                                                    (&pStatusResponse_p->
-                                                     m_le_bNmtStatus) |
-                                                    EPL_NMT_TYPE_CS),
-                                                   EPL_E_NO_ERROR,
-                                                   kEplNmtMnuIntNodeEventStatusResponse);
-       }
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtMnuStartBootStep1
-//
-// Description: starts BootStep1
-//
-// Parameters:  (none)
-//
-// Returns:     tEplKernel              = error code
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplNmtMnuStartBootStep1(void)
-{
-       tEplKernel Ret = kEplSuccessful;
-       unsigned int uiSubIndex;
-       unsigned int uiLocalNodeId;
-       u32 dwNodeCfg;
-       tEplObdSize ObdSize;
-
-       // $$$ d.k.: save current time for 0x1F89/2 MNTimeoutPreOp1_U32
-
-       // start network scan
-       EplNmtMnuInstance_g.m_uiMandatorySlaveCount = 0;
-       EplNmtMnuInstance_g.m_uiSignalSlaveCount = 0;
-       // check 0x1F81
-       uiLocalNodeId = EplObduGetNodeId();
-       for (uiSubIndex = 1; uiSubIndex <= 254; uiSubIndex++) {
-               ObdSize = 4;
-               Ret =
-                   EplObduReadEntry(0x1F81, uiSubIndex, &dwNodeCfg, &ObdSize);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-               if (uiSubIndex != uiLocalNodeId) {
-                       // reset flags "not scanned" and "isochronous"
-                       EPL_NMTMNU_GET_NODEINFO(uiSubIndex)->m_wFlags &=
-                           ~(EPL_NMTMNU_NODE_FLAG_ISOCHRON |
-                             EPL_NMTMNU_NODE_FLAG_NOT_SCANNED);
-
-                       if (uiSubIndex == EPL_C_ADR_DIAG_DEF_NODE_ID) { // diagnostic node must be scanned by MN in any case
-                               dwNodeCfg |=
-                                   (EPL_NODEASSIGN_NODE_IS_CN |
-                                    EPL_NODEASSIGN_NODE_EXISTS);
-                               // and it must be isochronously accessed
-                               dwNodeCfg &= ~EPL_NODEASSIGN_ASYNCONLY_NODE;
-                       }
-                       // save node config in local node info structure
-                       EPL_NMTMNU_GET_NODEINFO(uiSubIndex)->m_dwNodeCfg =
-                           dwNodeCfg;
-                       EPL_NMTMNU_GET_NODEINFO(uiSubIndex)->m_NodeState =
-                           kEplNmtMnuNodeStateUnknown;
-
-                       if ((dwNodeCfg & (EPL_NODEASSIGN_NODE_IS_CN | EPL_NODEASSIGN_NODE_EXISTS)) != 0) {      // node is configured as CN
-                               // identify the node
-                               Ret =
-                                   EplIdentuRequestIdentResponse(uiSubIndex,
-                                                                 EplNmtMnuCbIdentResponse);
-                               if (Ret != kEplSuccessful) {
-                                       goto Exit;
-                               }
-                               // set flag "not scanned"
-                               EPL_NMTMNU_GET_NODEINFO(uiSubIndex)->m_wFlags |=
-                                   EPL_NMTMNU_NODE_FLAG_NOT_SCANNED;
-                               EplNmtMnuInstance_g.m_uiSignalSlaveCount++;
-                               // signal slave counter shall be decremented if IdentRequest was sent once to a CN
-
-                               if ((dwNodeCfg & EPL_NODEASSIGN_MANDATORY_CN) != 0) {   // node is a mandatory CN
-                                       EplNmtMnuInstance_g.
-                                           m_uiMandatorySlaveCount++;
-                                       // mandatory slave counter shall be decremented if mandatory CN was configured successfully
-                               }
-                       }
-               } else {        // subindex of MN
-                       if ((dwNodeCfg & (EPL_NODEASSIGN_MN_PRES | EPL_NODEASSIGN_NODE_EXISTS)) != 0) { // MN shall send PRes
-                               tEplDllNodeInfo DllNodeInfo;
-
-                               EPL_MEMSET(&DllNodeInfo, 0,
-                                          sizeof(DllNodeInfo));
-                               DllNodeInfo.m_uiNodeId = uiLocalNodeId;
-
-                               Ret = EplDlluCalAddNode(&DllNodeInfo);
-                       }
-               }
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtMnuStartBootStep2
-//
-// Description: starts BootStep2.
-//              That means add nodes to isochronous phase and send
-//              NMT EnableReadyToOp.
-//
-// Parameters:  (none)
-//
-// Returns:     tEplKernel              = error code
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplNmtMnuStartBootStep2(void)
-{
-       tEplKernel Ret = kEplSuccessful;
-       unsigned int uiIndex;
-       tEplNmtMnuNodeInfo *pNodeInfo;
-
-       if ((EplNmtMnuInstance_g.m_wFlags & EPL_NMTMNU_FLAG_HALTED) == 0) {     // boot process is not halted
-               // add nodes to isochronous phase and send NMT EnableReadyToOp
-               EplNmtMnuInstance_g.m_uiMandatorySlaveCount = 0;
-               EplNmtMnuInstance_g.m_uiSignalSlaveCount = 0;
-               // reset flag that application was informed about possible state change
-               EplNmtMnuInstance_g.m_wFlags &= ~EPL_NMTMNU_FLAG_APP_INFORMED;
-
-               pNodeInfo = EplNmtMnuInstance_g.m_aNodeInfo;
-               for (uiIndex = 1;
-                    uiIndex <= tabentries(EplNmtMnuInstance_g.m_aNodeInfo);
-                    uiIndex++, pNodeInfo++) {
-                       if (pNodeInfo->m_NodeState ==
-                           kEplNmtMnuNodeStateConfigured) {
-                               Ret =
-                                   EplNmtMnuNodeBootStep2(uiIndex, pNodeInfo);
-                               if (Ret != kEplSuccessful) {
-                                       goto Exit;
-                               }
-                               // set flag "not scanned"
-                               pNodeInfo->m_wFlags |=
-                                   EPL_NMTMNU_NODE_FLAG_NOT_SCANNED;
-
-                               EplNmtMnuInstance_g.m_uiSignalSlaveCount++;
-                               // signal slave counter shall be decremented if StatusRequest was sent once to a CN
-
-                               if ((pNodeInfo->m_dwNodeCfg & EPL_NODEASSIGN_MANDATORY_CN) != 0) {      // node is a mandatory CN
-                                       EplNmtMnuInstance_g.
-                                           m_uiMandatorySlaveCount++;
-                               }
-                               // mandatory slave counter shall be decremented if mandatory CN is ReadyToOp
-                       }
-               }
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtMnuNodeBootStep2
-//
-// Description: starts BootStep2 for the specified node.
-//              This means the CN is added to isochronous phase if not
-//              async-only and it gets the NMT command EnableReadyToOp.
-//              The CN must be in node state Configured, when it enters
-//              BootStep2. When BootStep2 finishes, the CN is in node state
-//              ReadyToOp.
-//              If TimeoutReadyToOp in object 0x1F89/5 is configured,
-//              TimerHdlLonger will be started with this timeout.
-//
-// Parameters:  uiNodeId_p              = node ID
-//              pNodeInfo_p             = pointer to internal node info structure
-//
-// Returns:     tEplKernel              = error code
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplNmtMnuNodeBootStep2(unsigned int uiNodeId_p,
-                                        tEplNmtMnuNodeInfo * pNodeInfo_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplDllNodeInfo DllNodeInfo;
-       u32 dwNodeCfg;
-       tEplObdSize ObdSize;
-       tEplTimerArg TimerArg;
-
-       dwNodeCfg = pNodeInfo_p->m_dwNodeCfg;
-       if ((dwNodeCfg & EPL_NODEASSIGN_ASYNCONLY_NODE) == 0) { // add node to isochronous phase
-               DllNodeInfo.m_uiNodeId = uiNodeId_p;
-               ObdSize = 4;
-               Ret =
-                   EplObduReadEntry(0x1F92, uiNodeId_p,
-                                    &DllNodeInfo.m_dwPresTimeout, &ObdSize);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-
-               ObdSize = 2;
-               Ret =
-                   EplObduReadEntry(0x1F8B, uiNodeId_p,
-                                    &DllNodeInfo.m_wPreqPayloadLimit,
-                                    &ObdSize);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-
-               ObdSize = 2;
-               Ret =
-                   EplObduReadEntry(0x1F8D, uiNodeId_p,
-                                    &DllNodeInfo.m_wPresPayloadLimit,
-                                    &ObdSize);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-
-               pNodeInfo_p->m_wFlags |= EPL_NMTMNU_NODE_FLAG_ISOCHRON;
-
-               Ret = EplDlluCalAddNode(&DllNodeInfo);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-
-       }
-
-       EPL_NMTMNU_DBG_POST_TRACE_VALUE(0,
-                                       uiNodeId_p,
-                                       kEplNmtCmdEnableReadyToOperate);
-
-       Ret =
-           EplNmtMnuSendNmtCommand(uiNodeId_p, kEplNmtCmdEnableReadyToOperate);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-
-       if (EplNmtMnuInstance_g.m_ulTimeoutReadyToOp != 0L) {   // start timer
-               // when the timer expires the CN must be ReadyToOp
-               EPL_NMTMNU_SET_FLAGS_TIMERARG_LONGER(pNodeInfo_p, uiNodeId_p,
-                                                    TimerArg);
-//        TimerArg.m_EventSink = kEplEventSinkNmtMnu;
-//        TimerArg.m_ulArg = EPL_NMTMNU_TIMERARG_LONGER | uiNodeId_p;
-               Ret =
-                   EplTimeruModifyTimerMs(&pNodeInfo_p->m_TimerHdlLonger,
-                                          EplNmtMnuInstance_g.
-                                          m_ulTimeoutReadyToOp, TimerArg);
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtMnuStartCheckCom
-//
-// Description: starts CheckCommunication
-//
-// Parameters:  (none)
-//
-// Returns:     tEplKernel              = error code
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplNmtMnuStartCheckCom(void)
-{
-       tEplKernel Ret = kEplSuccessful;
-       unsigned int uiIndex;
-       tEplNmtMnuNodeInfo *pNodeInfo;
-
-       if ((EplNmtMnuInstance_g.m_wFlags & EPL_NMTMNU_FLAG_HALTED) == 0) {     // boot process is not halted
-               // wait some time and check that no communication error occurs
-               EplNmtMnuInstance_g.m_uiMandatorySlaveCount = 0;
-               EplNmtMnuInstance_g.m_uiSignalSlaveCount = 0;
-               // reset flag that application was informed about possible state change
-               EplNmtMnuInstance_g.m_wFlags &= ~EPL_NMTMNU_FLAG_APP_INFORMED;
-
-               pNodeInfo = EplNmtMnuInstance_g.m_aNodeInfo;
-               for (uiIndex = 1;
-                    uiIndex <= tabentries(EplNmtMnuInstance_g.m_aNodeInfo);
-                    uiIndex++, pNodeInfo++) {
-                       if (pNodeInfo->m_NodeState ==
-                           kEplNmtMnuNodeStateReadyToOp) {
-                               Ret = EplNmtMnuNodeCheckCom(uiIndex, pNodeInfo);
-                               if (Ret == kEplReject) {        // timer was started
-                                       // wait until it expires
-                                       if ((pNodeInfo->m_dwNodeCfg & EPL_NODEASSIGN_MANDATORY_CN) != 0) {      // node is a mandatory CN
-                                               EplNmtMnuInstance_g.
-                                                   m_uiMandatorySlaveCount++;
-                                       }
-                               } else if (Ret != kEplSuccessful) {
-                                       goto Exit;
-                               }
-                               // set flag "not scanned"
-                               pNodeInfo->m_wFlags |=
-                                   EPL_NMTMNU_NODE_FLAG_NOT_SCANNED;
-
-                               EplNmtMnuInstance_g.m_uiSignalSlaveCount++;
-                               // signal slave counter shall be decremented if timeout elapsed and regardless of an error
-                               // mandatory slave counter shall be decremented if timeout elapsed and no error occured
-                       }
-               }
-       }
-
-       Ret = kEplSuccessful;
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtMnuNodeCheckCom
-//
-// Description: checks communication of the specified node.
-//              That means wait some time and if no error occured everything
-//              is OK.
-//
-// Parameters:  uiNodeId_p              = node ID
-//              pNodeInfo_p             = pointer to internal node info structure
-//
-// Returns:     tEplKernel              = error code
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplNmtMnuNodeCheckCom(unsigned int uiNodeId_p,
-                                       tEplNmtMnuNodeInfo * pNodeInfo_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       u32 dwNodeCfg;
-       tEplTimerArg TimerArg;
-
-       dwNodeCfg = pNodeInfo_p->m_dwNodeCfg;
-       if (((dwNodeCfg & EPL_NODEASSIGN_ASYNCONLY_NODE) == 0)
-           && (EplNmtMnuInstance_g.m_ulTimeoutCheckCom != 0L)) {       // CN is not async-only and timeout for CheckCom was set
-
-               // check communication,
-               // that means wait some time and if no error occured everything is OK;
-
-               // start timer (when the timer expires the CN must be still ReadyToOp)
-               EPL_NMTMNU_SET_FLAGS_TIMERARG_LONGER(pNodeInfo_p, uiNodeId_p,
-                                                    TimerArg);
-//        TimerArg.m_EventSink = kEplEventSinkNmtMnu;
-//        TimerArg.m_ulArg = EPL_NMTMNU_TIMERARG_LONGER | uiNodeId_p;
-               Ret =
-                   EplTimeruModifyTimerMs(&pNodeInfo_p->m_TimerHdlLonger,
-                                          EplNmtMnuInstance_g.
-                                          m_ulTimeoutCheckCom, TimerArg);
-
-               // update mandatory slave counter, because timer was started
-               if (Ret == kEplSuccessful) {
-                       Ret = kEplReject;
-               }
-       } else {                // timer was not started
-               // assume everything is OK
-               pNodeInfo_p->m_NodeState = kEplNmtMnuNodeStateComChecked;
-       }
-
-//Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtMnuStartNodes
-//
-// Description: really starts all nodes which are ReadyToOp and CheckCom did not fail
-//
-// Parameters:  (none)
-//
-// Returns:     tEplKernel              = error code
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplNmtMnuStartNodes(void)
-{
-       tEplKernel Ret = kEplSuccessful;
-       unsigned int uiIndex;
-       tEplNmtMnuNodeInfo *pNodeInfo;
-
-       if ((EplNmtMnuInstance_g.m_wFlags & EPL_NMTMNU_FLAG_HALTED) == 0) {     // boot process is not halted
-               // send NMT command Start Node
-               EplNmtMnuInstance_g.m_uiMandatorySlaveCount = 0;
-               EplNmtMnuInstance_g.m_uiSignalSlaveCount = 0;
-               // reset flag that application was informed about possible state change
-               EplNmtMnuInstance_g.m_wFlags &= ~EPL_NMTMNU_FLAG_APP_INFORMED;
-
-               pNodeInfo = EplNmtMnuInstance_g.m_aNodeInfo;
-               for (uiIndex = 1;
-                    uiIndex <= tabentries(EplNmtMnuInstance_g.m_aNodeInfo);
-                    uiIndex++, pNodeInfo++) {
-                       if (pNodeInfo->m_NodeState ==
-                           kEplNmtMnuNodeStateComChecked) {
-                               if ((EplNmtMnuInstance_g.
-                                    m_dwNmtStartup & EPL_NMTST_STARTALLNODES)
-                                   == 0) {
-                                       EPL_NMTMNU_DBG_POST_TRACE_VALUE(0,
-                                                                       uiIndex,
-                                                                       kEplNmtCmdStartNode);
-
-                                       Ret =
-                                           EplNmtMnuSendNmtCommand(uiIndex,
-                                                                   kEplNmtCmdStartNode);
-                                       if (Ret != kEplSuccessful) {
-                                               goto Exit;
-                                       }
-                               }
-
-                               if ((pNodeInfo->m_dwNodeCfg & EPL_NODEASSIGN_MANDATORY_CN) != 0) {      // node is a mandatory CN
-                                       EplNmtMnuInstance_g.
-                                           m_uiMandatorySlaveCount++;
-                               }
-                               // set flag "not scanned"
-                               pNodeInfo->m_wFlags |=
-                                   EPL_NMTMNU_NODE_FLAG_NOT_SCANNED;
-
-                               EplNmtMnuInstance_g.m_uiSignalSlaveCount++;
-                               // signal slave counter shall be decremented if StatusRequest was sent once to a CN
-                               // mandatory slave counter shall be decremented if mandatory CN is OPERATIONAL
-                       }
-               }
-
-               // $$$ inform application if EPL_NMTST_NO_STARTNODE is set
-
-               if ((EplNmtMnuInstance_g.
-                    m_dwNmtStartup & EPL_NMTST_STARTALLNODES) != 0) {
-                       EPL_NMTMNU_DBG_POST_TRACE_VALUE(0, EPL_C_ADR_BROADCAST,
-                                                       kEplNmtCmdStartNode);
-
-                       Ret =
-                           EplNmtMnuSendNmtCommand(EPL_C_ADR_BROADCAST,
-                                                   kEplNmtCmdStartNode);
-                       if (Ret != kEplSuccessful) {
-                               goto Exit;
-                       }
-               }
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtMnuProcessInternalEvent
-//
-// Description: processes internal node events
-//
-// Parameters:  uiNodeId_p              = node ID
-//              NodeNmtState_p          = NMT state of CN
-//              NodeEvent_p             = occured events
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplNmtMnuProcessInternalEvent(unsigned int uiNodeId_p,
-                                               tEplNmtState NodeNmtState_p,
-                                               u16 wErrorCode_p,
-                                               tEplNmtMnuIntNodeEvent
-                                               NodeEvent_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplNmtState NmtState;
-       tEplNmtMnuNodeInfo *pNodeInfo;
-       tEplTimerArg TimerArg;
-
-       pNodeInfo = EPL_NMTMNU_GET_NODEINFO(uiNodeId_p);
-       NmtState = EplNmtuGetNmtState();
-       if (NmtState <= kEplNmtMsNotActive) {   // MN is not active
-               goto Exit;
-       }
-
-       switch (NodeEvent_p) {
-       case kEplNmtMnuIntNodeEventIdentResponse:
-               {
-                       u8 bNmtState;
-
-                       EPL_NMTMNU_DBG_POST_TRACE_VALUE(NodeEvent_p,
-                                                       uiNodeId_p,
-                                                       pNodeInfo->m_NodeState);
-
-                       if (pNodeInfo->m_NodeState !=
-                           kEplNmtMnuNodeStateResetConf) {
-                               pNodeInfo->m_NodeState =
-                                   kEplNmtMnuNodeStateIdentified;
-                       }
-                       // reset flags ISOCHRON and NMT_CMD_ISSUED
-                       pNodeInfo->m_wFlags &= ~(EPL_NMTMNU_NODE_FLAG_ISOCHRON
-                                                |
-                                                EPL_NMTMNU_NODE_FLAG_NMT_CMD_ISSUED);
-
-                       if ((NmtState == kEplNmtMsPreOperational1)
-                           &&
-                           ((pNodeInfo->
-                             m_wFlags & EPL_NMTMNU_NODE_FLAG_NOT_SCANNED) !=
-                            0)) {
-                               // decrement only signal slave count
-                               EplNmtMnuInstance_g.m_uiSignalSlaveCount--;
-                               pNodeInfo->m_wFlags &=
-                                   ~EPL_NMTMNU_NODE_FLAG_NOT_SCANNED;
-                       }
-                       // update object 0x1F8F NMT_MNNodeExpState_AU8 to PreOp1 (even if local state >= PreOp2)
-                       bNmtState = (u8) (kEplNmtCsPreOperational1 & 0xFF);
-                       Ret =
-                           EplObduWriteEntry(0x1F8F, uiNodeId_p, &bNmtState,
-                                             1);
-
-                       // check NMT state of CN
-                       Ret =
-                           EplNmtMnuCheckNmtState(uiNodeId_p, pNodeInfo,
-                                                  NodeNmtState_p, wErrorCode_p,
-                                                  NmtState);
-                       if (Ret != kEplSuccessful) {
-                               if (Ret == kEplReject) {
-                                       Ret = kEplSuccessful;
-                               }
-                               break;
-                       }
-                       // request StatusResponse immediately,
-                       // because we want a fast boot-up of CNs
-                       Ret =
-                           EplStatusuRequestStatusResponse(uiNodeId_p,
-                                                           EplNmtMnuCbStatusResponse);
-                       if (Ret != kEplSuccessful) {
-                               EPL_NMTMNU_DBG_POST_TRACE_VALUE(NodeEvent_p,
-                                                               uiNodeId_p,
-                                                               Ret);
-
-                               if (Ret == kEplInvalidOperation) {      // the only situation when this should happen is, when
-                                       // StatusResponse was already requested from within
-                                       // the StatReq timer event.
-                                       // so ignore this error.
-                                       Ret = kEplSuccessful;
-                               } else {
-                                       break;
-                               }
-                       }
-
-                       if (pNodeInfo->m_NodeState !=
-                           kEplNmtMnuNodeStateResetConf) {
-                               // inform application
-                               Ret =
-                                   EplNmtMnuInstance_g.
-                                   m_pfnCbNodeEvent(uiNodeId_p,
-                                                    kEplNmtNodeEventFound,
-                                                    NodeNmtState_p,
-                                                    EPL_E_NO_ERROR,
-                                                    (pNodeInfo->
-                                                     m_dwNodeCfg &
-                                                     EPL_NODEASSIGN_MANDATORY_CN)
-                                                    != 0);
-                               if (Ret == kEplReject) {        // interrupt boot process on user request
-                                       EPL_NMTMNU_DBG_POST_TRACE_VALUE
-                                           (NodeEvent_p, uiNodeId_p,
-                                            ((pNodeInfo->m_NodeState << 8)
-                                             | Ret));
-
-                                       Ret = kEplSuccessful;
-                                       break;
-                               } else if (Ret != kEplSuccessful) {
-                                       EPL_NMTMNU_DBG_POST_TRACE_VALUE
-                                           (NodeEvent_p, uiNodeId_p,
-                                            ((pNodeInfo->m_NodeState << 8)
-                                             | Ret));
-
-                                       break;
-                               }
-                       }
-                       // continue BootStep1
-               }
-
-       case kEplNmtMnuIntNodeEventBoot:
-               {
-
-                       // $$$ check identification (vendor ID, product code, revision no, serial no)
-
-                       if (pNodeInfo->m_NodeState ==
-                           kEplNmtMnuNodeStateIdentified) {
-                               // $$$ check software
-
-                               // check/start configuration
-                               // inform application
-                               Ret =
-                                   EplNmtMnuInstance_g.
-                                   m_pfnCbNodeEvent(uiNodeId_p,
-                                                    kEplNmtNodeEventCheckConf,
-                                                    NodeNmtState_p,
-                                                    EPL_E_NO_ERROR,
-                                                    (pNodeInfo->
-                                                     m_dwNodeCfg &
-                                                     EPL_NODEASSIGN_MANDATORY_CN)
-                                                    != 0);
-                               if (Ret == kEplReject) {        // interrupt boot process on user request
-                                       EPL_NMTMNU_DBG_POST_TRACE_VALUE
-                                           (kEplNmtMnuIntNodeEventBoot,
-                                            uiNodeId_p,
-                                            ((pNodeInfo->m_NodeState << 8)
-                                             | Ret));
-
-                                       Ret = kEplSuccessful;
-                                       break;
-                               } else if (Ret != kEplSuccessful) {
-                                       EPL_NMTMNU_DBG_POST_TRACE_VALUE
-                                           (kEplNmtMnuIntNodeEventBoot,
-                                            uiNodeId_p,
-                                            ((pNodeInfo->m_NodeState << 8)
-                                             | Ret));
-
-                                       break;
-                               }
-                       } else if (pNodeInfo->m_NodeState != kEplNmtMnuNodeStateResetConf) {    // wrong CN state
-                               // ignore event
-                               break;
-                       }
-                       // $$$ d.k.: currently we assume configuration is OK
-
-                       // continue BootStep1
-               }
-
-       case kEplNmtMnuIntNodeEventConfigured:
-               {
-                       if ((pNodeInfo->m_NodeState !=
-                            kEplNmtMnuNodeStateIdentified)
-                           && (pNodeInfo->m_NodeState != kEplNmtMnuNodeStateResetConf)) {      // wrong CN state
-                               // ignore event
-                               break;
-                       }
-
-                       pNodeInfo->m_NodeState = kEplNmtMnuNodeStateConfigured;
-
-                       if (NmtState == kEplNmtMsPreOperational1) {
-                               if ((pNodeInfo->m_dwNodeCfg & EPL_NODEASSIGN_MANDATORY_CN) != 0) {      // decrement mandatory CN counter
-                                       EplNmtMnuInstance_g.
-                                           m_uiMandatorySlaveCount--;
-                               }
-                       } else {
-                               // put optional node to next step (BootStep2)
-                               Ret =
-                                   EplNmtMnuNodeBootStep2(uiNodeId_p,
-                                                          pNodeInfo);
-                       }
-                       break;
-               }
-
-       case kEplNmtMnuIntNodeEventNoIdentResponse:
-               {
-                       if ((NmtState == kEplNmtMsPreOperational1)
-                           &&
-                           ((pNodeInfo->
-                             m_wFlags & EPL_NMTMNU_NODE_FLAG_NOT_SCANNED) !=
-                            0)) {
-                               // decrement only signal slave count
-                               EplNmtMnuInstance_g.m_uiSignalSlaveCount--;
-                               pNodeInfo->m_wFlags &=
-                                   ~EPL_NMTMNU_NODE_FLAG_NOT_SCANNED;
-                       }
-
-                       if (pNodeInfo->m_NodeState !=
-                           kEplNmtMnuNodeStateResetConf) {
-                               pNodeInfo->m_NodeState =
-                                   kEplNmtMnuNodeStateUnknown;
-                       }
-                       // $$$ d.k. check start time for 0x1F89/2 MNTimeoutPreOp1_U32
-                       // $$$ d.k. check individual timeout 0x1F89/6 MNIdentificationTimeout_U32
-                       // if mandatory node and timeout elapsed -> halt boot procedure
-                       // trigger IdentRequest again (if >= PreOp2, after delay)
-                       if (NmtState >= kEplNmtMsPreOperational2) {     // start timer
-                               EPL_NMTMNU_SET_FLAGS_TIMERARG_IDENTREQ
-                                   (pNodeInfo, uiNodeId_p, TimerArg);
-//                TimerArg.m_EventSink = kEplEventSinkNmtMnu;
-//                TimerArg.m_ulArg = EPL_NMTMNU_TIMERARG_IDENTREQ | uiNodeId_p;
-/*
-                EPL_NMTMNU_DBG_POST_TRACE_VALUE(kEplNmtMnuIntNodeEventNoIdentResponse,
-                                                uiNodeId_p,
-                                                ((pNodeInfo->m_NodeState << 8)
-                                                 | 0x80
-                                                 | ((pNodeInfo->m_wFlags & EPL_NMTMNU_NODE_FLAG_COUNT_STATREQ) >> 6)
-                                                 | ((TimerArg.m_ulArg & EPL_NMTMNU_TIMERARG_COUNT_SR) >> 8)));
-*/
-                               Ret =
-                                   EplTimeruModifyTimerMs(&pNodeInfo->
-                                                          m_TimerHdlStatReq,
-                                                          EplNmtMnuInstance_g.
-                                                          m_ulStatusRequestDelay,
-                                                          TimerArg);
-                       } else {        // trigger IdentRequest immediately
-                               Ret =
-                                   EplIdentuRequestIdentResponse(uiNodeId_p,
-                                                                 EplNmtMnuCbIdentResponse);
-                       }
-                       break;
-               }
-
-       case kEplNmtMnuIntNodeEventStatusResponse:
-               {
-                       if ((NmtState >= kEplNmtMsPreOperational2)
-                           &&
-                           ((pNodeInfo->
-                             m_wFlags & EPL_NMTMNU_NODE_FLAG_NOT_SCANNED) !=
-                            0)) {
-                               // decrement only signal slave count if checked once for ReadyToOp, CheckCom, Operational
-                               EplNmtMnuInstance_g.m_uiSignalSlaveCount--;
-                               pNodeInfo->m_wFlags &=
-                                   ~EPL_NMTMNU_NODE_FLAG_NOT_SCANNED;
-                       }
-                       // check NMT state of CN
-                       Ret =
-                           EplNmtMnuCheckNmtState(uiNodeId_p, pNodeInfo,
-                                                  NodeNmtState_p, wErrorCode_p,
-                                                  NmtState);
-                       if (Ret != kEplSuccessful) {
-                               if (Ret == kEplReject) {
-                                       Ret = kEplSuccessful;
-                               }
-                               break;
-                       }
-
-                       if (NmtState == kEplNmtMsPreOperational1) {
-                               // request next StatusResponse immediately
-                               Ret =
-                                   EplStatusuRequestStatusResponse(uiNodeId_p,
-                                                                   EplNmtMnuCbStatusResponse);
-                               if (Ret != kEplSuccessful) {
-                                       EPL_NMTMNU_DBG_POST_TRACE_VALUE
-                                           (NodeEvent_p, uiNodeId_p, Ret);
-                               }
-
-                       } else if ((pNodeInfo->m_wFlags & EPL_NMTMNU_NODE_FLAG_ISOCHRON) == 0) {        // start timer
-                               // not isochronously accessed CN (e.g. async-only or stopped CN)
-                               EPL_NMTMNU_SET_FLAGS_TIMERARG_STATREQ(pNodeInfo,
-                                                                     uiNodeId_p,
-                                                                     TimerArg);
-//                TimerArg.m_EventSink = kEplEventSinkNmtMnu;
-//                TimerArg.m_ulArg = EPL_NMTMNU_TIMERARG_STATREQ | uiNodeId_p;
-/*
-                EPL_NMTMNU_DBG_POST_TRACE_VALUE(kEplNmtMnuIntNodeEventStatusResponse,
-                                                uiNodeId_p,
-                                                ((pNodeInfo->m_NodeState << 8)
-                                                 | 0x80
-                                                 | ((pNodeInfo->m_wFlags & EPL_NMTMNU_NODE_FLAG_COUNT_STATREQ) >> 6)
-                                                 | ((TimerArg.m_ulArg & EPL_NMTMNU_TIMERARG_COUNT_SR) >> 8)));
-*/
-                               Ret =
-                                   EplTimeruModifyTimerMs(&pNodeInfo->
-                                                          m_TimerHdlStatReq,
-                                                          EplNmtMnuInstance_g.
-                                                          m_ulStatusRequestDelay,
-                                                          TimerArg);
-                       }
-
-                       break;
-               }
-
-       case kEplNmtMnuIntNodeEventNoStatusResponse:
-               {
-                       // function CheckNmtState sets node state to unknown if necessary
-/*
-            if ((NmtState >= kEplNmtMsPreOperational2)
-                && ((pNodeInfo->m_wFlags & EPL_NMTMNU_NODE_FLAG_NOT_SCANNED) != 0))
-            {
-                // decrement only signal slave count if checked once for ReadyToOp, CheckCom, Operational
-                EplNmtMnuInstance_g.m_uiSignalSlaveCount--;
-                pNodeInfo->m_wFlags &= ~EPL_NMTMNU_NODE_FLAG_NOT_SCANNED;
-            }
-*/
-                       // check NMT state of CN
-                       Ret =
-                           EplNmtMnuCheckNmtState(uiNodeId_p, pNodeInfo,
-                                                  NodeNmtState_p, wErrorCode_p,
-                                                  NmtState);
-                       if (Ret != kEplSuccessful) {
-                               if (Ret == kEplReject) {
-                                       Ret = kEplSuccessful;
-                               }
-                               break;
-                       }
-
-                       break;
-               }
-
-       case kEplNmtMnuIntNodeEventError:
-               {               // currently only issued on kEplNmtNodeCommandConfErr
-
-                       if (pNodeInfo->m_NodeState != kEplNmtMnuNodeStateIdentified) {  // wrong CN state
-                               // ignore event
-                               break;
-                       }
-                       // check NMT state of CN
-                       Ret =
-                           EplNmtMnuCheckNmtState(uiNodeId_p, pNodeInfo,
-                                                  kEplNmtCsNotActive,
-                                                  wErrorCode_p, NmtState);
-                       if (Ret != kEplSuccessful) {
-                               if (Ret == kEplReject) {
-                                       Ret = kEplSuccessful;
-                               }
-                               break;
-                       }
-
-                       break;
-               }
-
-       case kEplNmtMnuIntNodeEventExecReset:
-               {
-                       if (pNodeInfo->m_NodeState != kEplNmtMnuNodeStateIdentified) {  // wrong CN state
-                               // ignore event
-                               break;
-                       }
-
-                       pNodeInfo->m_NodeState = kEplNmtMnuNodeStateResetConf;
-
-                       EPL_NMTMNU_DBG_POST_TRACE_VALUE(NodeEvent_p,
-                                                       uiNodeId_p,
-                                                       (((NodeNmtState_p &
-                                                          0xFF) << 8)
-                                                        |
-                                                        kEplNmtCmdResetConfiguration));
-
-                       // send NMT reset configuration to CN for activation of configuration
-                       Ret =
-                           EplNmtMnuSendNmtCommand(uiNodeId_p,
-                                                   kEplNmtCmdResetConfiguration);
-
-                       break;
-               }
-
-       case kEplNmtMnuIntNodeEventHeartbeat:
-               {
-/*
-            if ((NmtState >= kEplNmtMsPreOperational2)
-                && ((pNodeInfo->m_wFlags & EPL_NMTMNU_NODE_FLAG_NOT_SCANNED) != 0))
-            {
-                // decrement only signal slave count if checked once for ReadyToOp, CheckCom, Operational
-                EplNmtMnuInstance_g.m_uiSignalSlaveCount--;
-                pNodeInfo->m_wFlags &= ~EPL_NMTMNU_NODE_FLAG_NOT_SCANNED;
-            }
-*/
-                       // check NMT state of CN
-                       Ret =
-                           EplNmtMnuCheckNmtState(uiNodeId_p, pNodeInfo,
-                                                  NodeNmtState_p, wErrorCode_p,
-                                                  NmtState);
-                       if (Ret != kEplSuccessful) {
-                               if (Ret == kEplReject) {
-                                       Ret = kEplSuccessful;
-                               }
-                               break;
-                       }
-
-                       break;
-               }
-
-       case kEplNmtMnuIntNodeEventTimerIdentReq:
-               {
-                       EPL_DBGLVL_NMTMN_TRACE1
-                           ("TimerStatReq->IdentReq(%02X)\n", uiNodeId_p);
-                       // trigger IdentRequest again
-                       Ret =
-                           EplIdentuRequestIdentResponse(uiNodeId_p,
-                                                         EplNmtMnuCbIdentResponse);
-                       if (Ret != kEplSuccessful) {
-                               EPL_NMTMNU_DBG_POST_TRACE_VALUE(NodeEvent_p,
-                                                               uiNodeId_p,
-                                                               (((NodeNmtState_p & 0xFF) << 8)
-                                                                | Ret));
-                               if (Ret == kEplInvalidOperation) {      // this can happen because of a bug in EplTimeruLinuxKernel.c
-                                       // so ignore this error.
-                                       Ret = kEplSuccessful;
-                               }
-                       }
-
-                       break;
-               }
-
-       case kEplNmtMnuIntNodeEventTimerStateMon:
-               {
-                       // reset NMT state change flag
-                       // because from now on the CN must have the correct NMT state
-                       pNodeInfo->m_wFlags &=
-                           ~EPL_NMTMNU_NODE_FLAG_NMT_CMD_ISSUED;
-
-                       // continue with normal StatReq processing
-               }
-
-       case kEplNmtMnuIntNodeEventTimerStatReq:
-               {
-                       EPL_DBGLVL_NMTMN_TRACE1("TimerStatReq->StatReq(%02X)\n",
-                                               uiNodeId_p);
-                       // request next StatusResponse
-                       Ret =
-                           EplStatusuRequestStatusResponse(uiNodeId_p,
-                                                           EplNmtMnuCbStatusResponse);
-                       if (Ret != kEplSuccessful) {
-                               EPL_NMTMNU_DBG_POST_TRACE_VALUE(NodeEvent_p,
-                                                               uiNodeId_p,
-                                                               (((NodeNmtState_p & 0xFF) << 8)
-                                                                | Ret));
-                               if (Ret == kEplInvalidOperation) {      // the only situation when this should happen is, when
-                                       // StatusResponse was already requested while processing
-                                       // event IdentResponse.
-                                       // so ignore this error.
-                                       Ret = kEplSuccessful;
-                               }
-                       }
-
-                       break;
-               }
-
-       case kEplNmtMnuIntNodeEventTimerLonger:
-               {
-                       switch (pNodeInfo->m_NodeState) {
-                       case kEplNmtMnuNodeStateConfigured:
-                               {       // node should be ReadyToOp but it is not
-
-                                       // check NMT state which shall be intentionally wrong, so that ERROR_TREATMENT will be started
-                                       Ret =
-                                           EplNmtMnuCheckNmtState(uiNodeId_p,
-                                                                  pNodeInfo,
-                                                                  kEplNmtCsNotActive,
-                                                                  EPL_E_NMT_BPO2,
-                                                                  NmtState);
-                                       if (Ret != kEplSuccessful) {
-                                               if (Ret == kEplReject) {
-                                                       Ret = kEplSuccessful;
-                                               }
-                                               break;
-                                       }
-
-                                       break;
-                               }
-
-                       case kEplNmtMnuNodeStateReadyToOp:
-                               {       // CheckCom finished successfully
-
-                                       pNodeInfo->m_NodeState =
-                                           kEplNmtMnuNodeStateComChecked;
-
-                                       if ((pNodeInfo->
-                                            m_wFlags &
-                                            EPL_NMTMNU_NODE_FLAG_NOT_SCANNED)
-                                           != 0) {
-                                               // decrement only signal slave count if checked once for ReadyToOp, CheckCom, Operational
-                                               EplNmtMnuInstance_g.
-                                                   m_uiSignalSlaveCount--;
-                                               pNodeInfo->m_wFlags &=
-                                                   ~EPL_NMTMNU_NODE_FLAG_NOT_SCANNED;
-                                       }
-
-                                       if ((pNodeInfo->
-                                            m_dwNodeCfg &
-                                            EPL_NODEASSIGN_MANDATORY_CN) !=
-                                           0) {
-                                               // decrement mandatory slave counter
-                                               EplNmtMnuInstance_g.
-                                                   m_uiMandatorySlaveCount--;
-                                       }
-                                       if (NmtState != kEplNmtMsReadyToOperate) {
-                                               EPL_NMTMNU_DBG_POST_TRACE_VALUE
-                                                   (NodeEvent_p, uiNodeId_p,
-                                                    (((NodeNmtState_p & 0xFF)
-                                                      << 8)
-                                                     | kEplNmtCmdStartNode));
-
-                                               // start optional CN
-                                               Ret =
-                                                   EplNmtMnuSendNmtCommand
-                                                   (uiNodeId_p,
-                                                    kEplNmtCmdStartNode);
-                                       }
-                                       break;
-                               }
-
-                       default:
-                               {
-                                       break;
-                               }
-                       }
-                       break;
-               }
-
-       case kEplNmtMnuIntNodeEventNmtCmdSent:
-               {
-                       u8 bNmtState;
-
-                       // update expected NMT state with the one that results
-                       // from the sent NMT command
-                       bNmtState = (u8) (NodeNmtState_p & 0xFF);
-
-                       // write object 0x1F8F NMT_MNNodeExpState_AU8
-                       Ret =
-                           EplObduWriteEntry(0x1F8F, uiNodeId_p, &bNmtState,
-                                             1);
-                       if (Ret != kEplSuccessful) {
-                               goto Exit;
-                       }
-
-                       if (NodeNmtState_p == kEplNmtCsNotActive) {     // restart processing with IdentRequest
-                               EPL_NMTMNU_SET_FLAGS_TIMERARG_IDENTREQ
-                                   (pNodeInfo, uiNodeId_p, TimerArg);
-                       } else {        // monitor NMT state change with StatusRequest after
-                               // the corresponding delay;
-                               // until then wrong NMT states will be ignored
-                               EPL_NMTMNU_SET_FLAGS_TIMERARG_STATE_MON
-                                   (pNodeInfo, uiNodeId_p, TimerArg);
-
-                               // set NMT state change flag
-                               pNodeInfo->m_wFlags |=
-                                   EPL_NMTMNU_NODE_FLAG_NMT_CMD_ISSUED;
-                       }
-
-                       Ret =
-                           EplTimeruModifyTimerMs(&pNodeInfo->
-                                                  m_TimerHdlStatReq,
-                                                  EplNmtMnuInstance_g.
-                                                  m_ulStatusRequestDelay,
-                                                  TimerArg);
-
-                       // finish processing, because NmtState_p is the expected and not the current state
-                       goto Exit;
-               }
-
-       default:
-               {
-                       break;
-               }
-       }
-
-       // check if network is ready to change local NMT state and this was not done before
-       if ((EplNmtMnuInstance_g.m_wFlags & (EPL_NMTMNU_FLAG_HALTED | EPL_NMTMNU_FLAG_APP_INFORMED)) == 0) {    // boot process is not halted
-               switch (NmtState) {
-               case kEplNmtMsPreOperational1:
-                       {
-                               if ((EplNmtMnuInstance_g.m_uiSignalSlaveCount ==
-                                    0)
-                                   && (EplNmtMnuInstance_g.m_uiMandatorySlaveCount == 0)) {    // all optional CNs scanned once and all mandatory CNs configured successfully
-                                       EplNmtMnuInstance_g.m_wFlags |=
-                                           EPL_NMTMNU_FLAG_APP_INFORMED;
-                                       // inform application
-                                       Ret =
-                                           EplNmtMnuInstance_g.
-                                           m_pfnCbBootEvent
-                                           (kEplNmtBootEventBootStep1Finish,
-                                            NmtState, EPL_E_NO_ERROR);
-                                       if (Ret != kEplSuccessful) {
-                                               if (Ret == kEplReject) {
-                                                       // wait for application
-                                                       Ret = kEplSuccessful;
-                                               }
-                                               break;
-                                       }
-                                       // enter PreOp2
-                                       Ret =
-                                           EplNmtuNmtEvent
-                                           (kEplNmtEventAllMandatoryCNIdent);
-                               }
-                               break;
-                       }
-
-               case kEplNmtMsPreOperational2:
-                       {
-                               if ((EplNmtMnuInstance_g.m_uiSignalSlaveCount ==
-                                    0)
-                                   && (EplNmtMnuInstance_g.m_uiMandatorySlaveCount == 0)) {    // all optional CNs checked once for ReadyToOp and all mandatory CNs are ReadyToOp
-                                       EplNmtMnuInstance_g.m_wFlags |=
-                                           EPL_NMTMNU_FLAG_APP_INFORMED;
-                                       // inform application
-                                       Ret =
-                                           EplNmtMnuInstance_g.
-                                           m_pfnCbBootEvent
-                                           (kEplNmtBootEventBootStep2Finish,
-                                            NmtState, EPL_E_NO_ERROR);
-                                       if (Ret != kEplSuccessful) {
-                                               if (Ret == kEplReject) {
-                                                       // wait for application
-                                                       Ret = kEplSuccessful;
-                                               }
-                                               break;
-                                       }
-                                       // enter ReadyToOp
-                                       Ret =
-                                           EplNmtuNmtEvent
-                                           (kEplNmtEventEnterReadyToOperate);
-                               }
-                               break;
-                       }
-
-               case kEplNmtMsReadyToOperate:
-                       {
-                               if ((EplNmtMnuInstance_g.m_uiSignalSlaveCount ==
-                                    0)
-                                   && (EplNmtMnuInstance_g.m_uiMandatorySlaveCount == 0)) {    // all CNs checked for errorless communication
-                                       EplNmtMnuInstance_g.m_wFlags |=
-                                           EPL_NMTMNU_FLAG_APP_INFORMED;
-                                       // inform application
-                                       Ret =
-                                           EplNmtMnuInstance_g.
-                                           m_pfnCbBootEvent
-                                           (kEplNmtBootEventCheckComFinish,
-                                            NmtState, EPL_E_NO_ERROR);
-                                       if (Ret != kEplSuccessful) {
-                                               if (Ret == kEplReject) {
-                                                       // wait for application
-                                                       Ret = kEplSuccessful;
-                                               }
-                                               break;
-                                       }
-                                       // enter Operational
-                                       Ret =
-                                           EplNmtuNmtEvent
-                                           (kEplNmtEventEnterMsOperational);
-                               }
-                               break;
-                       }
-
-               case kEplNmtMsOperational:
-                       {
-                               if ((EplNmtMnuInstance_g.m_uiSignalSlaveCount ==
-                                    0)
-                                   && (EplNmtMnuInstance_g.m_uiMandatorySlaveCount == 0)) {    // all optional CNs scanned once and all mandatory CNs are OPERATIONAL
-                                       EplNmtMnuInstance_g.m_wFlags |=
-                                           EPL_NMTMNU_FLAG_APP_INFORMED;
-                                       // inform application
-                                       Ret =
-                                           EplNmtMnuInstance_g.
-                                           m_pfnCbBootEvent
-                                           (kEplNmtBootEventOperational,
-                                            NmtState, EPL_E_NO_ERROR);
-                                       if (Ret != kEplSuccessful) {
-                                               if (Ret == kEplReject) {
-                                                       // ignore error code
-                                                       Ret = kEplSuccessful;
-                                               }
-                                               break;
-                                       }
-                               }
-                               break;
-                       }
-
-               default:
-                       {
-                               break;
-                       }
-               }
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtMnuCheckNmtState
-//
-// Description: checks the NMT state, i.e. evaluates it with object 0x1F8F
-//              NMT_MNNodeExpState_AU8 and updates object 0x1F8E
-//              NMT_MNNodeCurrState_AU8.
-//              It manipulates m_NodeState in internal node info structure.
-//
-// Parameters:  uiNodeId_p              = node ID
-//              NodeNmtState_p          = NMT state of CN
-//
-// Returns:     tEplKernel              = error code
-//                  kEplReject          = CN was in wrong state and has been reset
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplNmtMnuCheckNmtState(unsigned int uiNodeId_p,
-                                        tEplNmtMnuNodeInfo * pNodeInfo_p,
-                                        tEplNmtState NodeNmtState_p,
-                                        u16 wErrorCode_p,
-                                        tEplNmtState LocalNmtState_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplObdSize ObdSize;
-       u8 bNmtState;
-       u8 bNmtStatePrev;
-       tEplNmtState ExpNmtState;
-
-       ObdSize = 1;
-       // read object 0x1F8F NMT_MNNodeExpState_AU8
-       Ret = EplObduReadEntry(0x1F8F, uiNodeId_p, &bNmtState, &ObdSize);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // compute expected NMT state
-       ExpNmtState = (tEplNmtState) (bNmtState | EPL_NMT_TYPE_CS);
-       // compute u8 of current NMT state
-       bNmtState = ((u8) NodeNmtState_p & 0xFF);
-
-       if (ExpNmtState == kEplNmtCsNotActive) {        // ignore the current state, because the CN shall be not active
-               Ret = kEplReject;
-               goto Exit;
-       } else if ((ExpNmtState == kEplNmtCsPreOperational2)
-                  && (NodeNmtState_p == kEplNmtCsReadyToOperate)) {    // CN switched to ReadyToOp
-               // delete timer for timeout handling
-               Ret = EplTimeruDeleteTimer(&pNodeInfo_p->m_TimerHdlLonger);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-               pNodeInfo_p->m_NodeState = kEplNmtMnuNodeStateReadyToOp;
-
-               // update object 0x1F8F NMT_MNNodeExpState_AU8 to ReadyToOp
-               Ret = EplObduWriteEntry(0x1F8F, uiNodeId_p, &bNmtState, 1);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-
-               if ((pNodeInfo_p->m_dwNodeCfg & EPL_NODEASSIGN_MANDATORY_CN) != 0) {    // node is a mandatory CN -> decrement counter
-                       EplNmtMnuInstance_g.m_uiMandatorySlaveCount--;
-               }
-               if (LocalNmtState_p >= kEplNmtMsReadyToOperate) {       // start procedure CheckCommunication for this node
-                       Ret = EplNmtMnuNodeCheckCom(uiNodeId_p, pNodeInfo_p);
-                       if (Ret != kEplSuccessful) {
-                               goto Exit;
-                       }
-
-                       if ((LocalNmtState_p == kEplNmtMsOperational)
-                           && (pNodeInfo_p->m_NodeState ==
-                               kEplNmtMnuNodeStateComChecked)) {
-                               EPL_NMTMNU_DBG_POST_TRACE_VALUE(0, uiNodeId_p,
-                                                               (((NodeNmtState_p & 0xFF) << 8)
-                                                                |
-                                                                kEplNmtCmdStartNode));
-
-                               // immediately start optional CN, because communication is always OK (e.g. async-only CN)
-                               Ret =
-                                   EplNmtMnuSendNmtCommand(uiNodeId_p,
-                                                           kEplNmtCmdStartNode);
-                               if (Ret != kEplSuccessful) {
-                                       goto Exit;
-                               }
-                       }
-               }
-
-       } else if ((ExpNmtState == kEplNmtCsReadyToOperate)
-                  && (NodeNmtState_p == kEplNmtCsOperational)) {       // CN switched to OPERATIONAL
-               pNodeInfo_p->m_NodeState = kEplNmtMnuNodeStateOperational;
-
-               if ((pNodeInfo_p->m_dwNodeCfg & EPL_NODEASSIGN_MANDATORY_CN) != 0) {    // node is a mandatory CN -> decrement counter
-                       EplNmtMnuInstance_g.m_uiMandatorySlaveCount--;
-               }
-
-       } else if ((ExpNmtState != NodeNmtState_p)
-                  && !((ExpNmtState == kEplNmtCsPreOperational1)
-                       && (NodeNmtState_p == kEplNmtCsPreOperational2))) {     // CN is not in expected NMT state (without the exceptions above)
-               u16 wbeErrorCode;
-
-               if ((pNodeInfo_p->
-                    m_wFlags & EPL_NMTMNU_NODE_FLAG_NOT_SCANNED) != 0) {
-                       // decrement only signal slave count if checked once
-                       EplNmtMnuInstance_g.m_uiSignalSlaveCount--;
-                       pNodeInfo_p->m_wFlags &=
-                           ~EPL_NMTMNU_NODE_FLAG_NOT_SCANNED;
-               }
-
-               if (pNodeInfo_p->m_NodeState == kEplNmtMnuNodeStateUnknown) {   // CN is already in state unknown, which means that it got
-                       // NMT reset command earlier
-                       goto Exit;
-               }
-               // -> CN is in wrong NMT state
-               pNodeInfo_p->m_NodeState = kEplNmtMnuNodeStateUnknown;
-
-               if (wErrorCode_p == 0) {        // assume wrong NMT state error
-                       if ((pNodeInfo_p->m_wFlags & EPL_NMTMNU_NODE_FLAG_NMT_CMD_ISSUED) != 0) {       // NMT command has been just issued;
-                               // ignore wrong NMT state until timer expires;
-                               // other errors like LOSS_PRES_TH are still processed
-                               goto Exit;
-                       }
-
-                       wErrorCode_p = EPL_E_NMT_WRONG_STATE;
-               }
-
-               BENCHMARK_MOD_07_TOGGLE(9);
-
-               // $$$ start ERROR_TREATMENT and inform application
-               Ret = EplNmtMnuInstance_g.m_pfnCbNodeEvent(uiNodeId_p,
-                                                          kEplNmtNodeEventError,
-                                                          NodeNmtState_p,
-                                                          wErrorCode_p,
-                                                          (pNodeInfo_p->
-                                                           m_dwNodeCfg &
-                                                           EPL_NODEASSIGN_MANDATORY_CN)
-                                                          != 0);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-
-               EPL_NMTMNU_DBG_POST_TRACE_VALUE(0,
-                                               uiNodeId_p,
-                                               (((NodeNmtState_p & 0xFF) << 8)
-                                                | kEplNmtCmdResetNode));
-
-               // reset CN
-               // store error code in NMT command data for diagnostic purpose
-               AmiSetWordToLe(&wbeErrorCode, wErrorCode_p);
-               Ret =
-                   EplNmtMnuSendNmtCommandEx(uiNodeId_p, kEplNmtCmdResetNode,
-                                             &wbeErrorCode,
-                                             sizeof(wbeErrorCode));
-               if (Ret == kEplSuccessful) {
-                       Ret = kEplReject;
-               }
-
-               goto Exit;
-       }
-       // check if NMT_MNNodeCurrState_AU8 has to be changed
-       ObdSize = 1;
-       Ret = EplObduReadEntry(0x1F8E, uiNodeId_p, &bNmtStatePrev, &ObdSize);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       if (bNmtState != bNmtStatePrev) {
-               // update object 0x1F8E NMT_MNNodeCurrState_AU8
-               Ret = EplObduWriteEntry(0x1F8E, uiNodeId_p, &bNmtState, 1);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-               Ret = EplNmtMnuInstance_g.m_pfnCbNodeEvent(uiNodeId_p,
-                                                          kEplNmtNodeEventNmtState,
-                                                          NodeNmtState_p,
-                                                          wErrorCode_p,
-                                                          (pNodeInfo_p->
-                                                           m_dwNodeCfg &
-                                                           EPL_NODEASSIGN_MANDATORY_CN)
-                                                          != 0);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtMnuReset
-//
-// Description: reset internal structures, e.g. timers
-//
-// Parameters:  void
-//
-// Returns:     tEplKernel              = error code
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplNmtMnuReset(void)
-{
-       tEplKernel Ret;
-       int iIndex;
-
-       Ret = EplTimeruDeleteTimer(&EplNmtMnuInstance_g.m_TimerHdlNmtState);
-
-       for (iIndex = 1; iIndex <= tabentries(EplNmtMnuInstance_g.m_aNodeInfo);
-            iIndex++) {
-               // delete timer handles
-               Ret =
-                   EplTimeruDeleteTimer(&EPL_NMTMNU_GET_NODEINFO(iIndex)->
-                                        m_TimerHdlStatReq);
-               Ret =
-                   EplTimeruDeleteTimer(&EPL_NMTMNU_GET_NODEINFO(iIndex)->
-                                        m_TimerHdlLonger);
-       }
-
-       return Ret;
-}
-
-#endif // #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-
-// EOF
diff --git a/drivers/staging/epl/EplNmtk.c b/drivers/staging/epl/EplNmtk.c
deleted file mode 100644 (file)
index 609d5c0..0000000
+++ /dev/null
@@ -1,1840 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for NMT-Kernelspace-Module
-
-  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: EplNmtk.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.12 $  $Date: 2008/11/13 17:13:09 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/09 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#include "kernel/EplNmtk.h"
-#include "kernel/EplTimerk.h"
-
-#include "kernel/EplDllk.h"    // for EplDllkProcess()
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTK)) != 0)
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-// TracePoint support for realtime-debugging
-#ifdef _DBG_TRACE_POINTS_
-void TgtDbgSignalTracePoint(u8 bTracePointNumber_p);
-void TgtDbgPostTraceValue(u32 dwTraceValue_p);
-#define TGT_DBG_SIGNAL_TRACE_POINT(p)   TgtDbgSignalTracePoint(p)
-#define TGT_DBG_POST_TRACE_VALUE(v)     TgtDbgPostTraceValue(v)
-#else
-#define TGT_DBG_SIGNAL_TRACE_POINT(p)
-#define TGT_DBG_POST_TRACE_VALUE(v)
-#endif
-#define EPL_NMTK_DBG_POST_TRACE_VALUE(NmtEvent_p, OldNmtState_p, NewNmtState_p) \
-    TGT_DBG_POST_TRACE_VALUE((kEplEventSinkNmtk << 28) | (NmtEvent_p << 16) \
-                             | ((OldNmtState_p & 0xFF) << 8) \
-                             | (NewNmtState_p & 0xFF))
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-// struct for instance table
-INSTANCE_TYPE_BEGIN EPL_MCO_DECL_INSTANCE_MEMBER()
-
-STATIC volatile tEplNmtState m_NmtState;
-STATIC volatile BOOL m_fEnableReadyToOperate;
-STATIC volatile BOOL m_fAppReadyToOperate;
-STATIC volatile BOOL m_fTimerMsPreOp2;
-STATIC volatile BOOL m_fAllMandatoryCNIdent;
-STATIC volatile BOOL m_fFrozen;
-
-INSTANCE_TYPE_END
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-// This macro replace the unspecific pointer to an instance through
-// the modul specific type for the local instance table. This macro
-// must defined in each modul.
-//#define tEplPtrInstance             tEplInstanceInfo*
-EPL_MCO_DECL_INSTANCE_VAR()
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-EPL_MCO_DEFINE_INSTANCE_FCT()
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          C L A S S  <NMT_Kernel-Module>                                 */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-//
-// Description: This module realize the NMT-State-Machine of the EPL-Stack
-//
-//
-/***************************************************************************/
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-//---------------------------------------------------------------------------
-//
-// Function:        EplNmtkInit
-//
-// Description: initializes the first instance
-//
-//
-//
-// Parameters:  EPL_MCO_DECL_PTR_INSTANCE_PTR = Instance pointer
-//              uiNodeId_p = Node Id of the lokal node
-//
-//
-// Returns:     tEplKernel  =   Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplNmtkInit(EPL_MCO_DECL_PTR_INSTANCE_PTR)
-{
-       tEplKernel Ret;
-
-       Ret = EplNmtkAddInstance(EPL_MCO_PTR_INSTANCE_PTR);
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:        EplNmtkAddInstance
-//
-// Description: adds a new instance
-//
-//
-//
-// Parameters:  EPL_MCO_DECL_PTR_INSTANCE_PTR = Instance pointer
-//
-//
-// Returns:     tEplKernel  =   Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplNmtkAddInstance(EPL_MCO_DECL_PTR_INSTANCE_PTR)
-{
-       EPL_MCO_DECL_INSTANCE_PTR_LOCAL tEplKernel Ret;
-//tEplEvent               Event;
-//tEplEventNmtStateChange NmtStateChange;
-
-       // check if pointer to instance pointer valid
-       // get free instance and set the globale instance pointer
-       // set also the instance addr to parameterlist
-       EPL_MCO_CHECK_PTR_INSTANCE_PTR();
-       EPL_MCO_GET_FREE_INSTANCE_PTR();
-       EPL_MCO_SET_PTR_INSTANCE_PTR();
-
-       // sign instance as used
-       EPL_MCO_WRITE_INSTANCE_STATE(kStateUsed);
-
-       Ret = kEplSuccessful;
-
-       // initialize intern vaiables
-       // 2006/07/31 d.k.: set NMT-State to kEplNmtGsOff
-       EPL_MCO_GLB_VAR(m_NmtState) = kEplNmtGsOff;
-       // set NMT-State to kEplNmtGsInitialising
-       //EPL_MCO_GLB_VAR(m_NmtState) = kEplNmtGsInitialising;
-
-       // set flags to FALSE
-       EPL_MCO_GLB_VAR(m_fEnableReadyToOperate) = FALSE;
-       EPL_MCO_GLB_VAR(m_fAppReadyToOperate) = FALSE;
-       EPL_MCO_GLB_VAR(m_fTimerMsPreOp2) = FALSE;
-       EPL_MCO_GLB_VAR(m_fAllMandatoryCNIdent) = FALSE;
-       EPL_MCO_GLB_VAR(m_fFrozen) = FALSE;
-
-//    EPL_MCO_GLB_VAR(m_TimerHdl) = 0;
-
-       // inform higher layer about state change
-       // 2006/07/31 d.k.: The EPL API layer/application has to start NMT state
-       //                  machine via NmtEventSwReset after initialisation of
-       //                  all modules has been completed. DLL has to be initialised
-       //                  after NMTk because NMT state shall not be uninitialised
-       //                  at that time.
-/*    NmtStateChange.m_NewNmtState = EPL_MCO_GLB_VAR(m_NmtState);
-    NmtStateChange.m_NmtEvent = kEplNmtEventNoEvent;
-    Event.m_EventSink = kEplEventSinkNmtu;
-    Event.m_EventType = kEplEventTypeNmtStateChange;
-    EPL_MEMSET(&Event.m_NetTime, 0x00, sizeof(Event.m_NetTime));
-    Event.m_pArg = &NmtStateChange;
-    Event.m_uiSize = sizeof(NmtStateChange);
-    Ret = EplEventkPost(&Event);
-*/
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:        EplNmtkDelInstance
-//
-// Description: delete instance
-//
-//
-//
-// Parameters:  EPL_MCO_DECL_PTR_INSTANCE_PTR = Instance pointer
-//
-//
-// Returns:     tEplKernel  =   Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-#if (EPL_USE_DELETEINST_FUNC != FALSE)
-tEplKernel EplNmtkDelInstance(EPL_MCO_DECL_PTR_INSTANCE_PTR)
-{
-       tEplKernel Ret = kEplSuccessful;
-       // check for all API function if instance is valid
-       EPL_MCO_CHECK_INSTANCE_STATE();
-
-       // set NMT-State to kEplNmtGsOff
-       EPL_MCO_GLB_VAR(m_NmtState) = kEplNmtGsOff;
-
-       // sign instance as unused
-       EPL_MCO_WRITE_INSTANCE_STATE(kStateUnused);
-
-       // delete timer
-//    Ret = EplTimerkDeleteTimer(&EPL_MCO_GLB_VAR(m_TimerHdl));
-
-       return Ret;
-}
-#endif // (EPL_USE_DELETEINST_FUNC != FALSE)
-
-//---------------------------------------------------------------------------
-//
-// Function:        EplNmtkProcess
-//
-// Description: main process function
-//              -> process NMT-State-Maschine und read NMT-Events from Queue
-//
-//
-//
-// Parameters:  EPL_MCO_DECL_PTR_INSTANCE_PTR_ = Instance pointer
-//              pEvent_p    =   Epl-Event with NMT-event to process
-//
-//
-// Returns:     tEplKernel  =   Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplNmtkProcess(EPL_MCO_DECL_PTR_INSTANCE_PTR_ tEplEvent *pEvent_p)
-{
-       tEplKernel Ret;
-       tEplNmtState OldNmtState;
-       tEplNmtEvent NmtEvent;
-       tEplEvent Event;
-       tEplEventNmtStateChange NmtStateChange;
-
-       // check for all API function if instance is valid
-       EPL_MCO_CHECK_INSTANCE_STATE();
-
-       Ret = kEplSuccessful;
-
-       switch (pEvent_p->m_EventType) {
-       case kEplEventTypeNmtEvent:
-               {
-                       NmtEvent = *((tEplNmtEvent *) pEvent_p->m_pArg);
-                       break;
-               }
-
-       case kEplEventTypeTimer:
-               {
-                       NmtEvent =
-                           (tEplNmtEvent) ((tEplTimerEventArg *) pEvent_p->
-                                           m_pArg)->m_ulArg;
-                       break;
-               }
-       default:
-               {
-                       Ret = kEplNmtInvalidEvent;
-                       goto Exit;
-               }
-       }
-
-       // save NMT-State
-       // needed for later comparison to
-       // inform hgher layer about state change
-       OldNmtState = EPL_MCO_GLB_VAR(m_NmtState);
-
-       // NMT-State-Maschine
-       switch (EPL_MCO_GLB_VAR(m_NmtState)) {
-               //-----------------------------------------------------------
-               // general part of the statemaschine
-
-               // first init of the hardware
-       case kEplNmtGsOff:
-               {
-                       // leave this state only if higher layer says so
-                       if (NmtEvent == kEplNmtEventSwReset) {  // new state kEplNmtGsInitialising
-                               EPL_MCO_GLB_VAR(m_NmtState) =
-                                   kEplNmtGsInitialising;
-                       }
-                       break;
-               }
-
-               // first init of the hardware
-       case kEplNmtGsInitialising:
-               {
-                       // leave this state only if higher layer says so
-
-                       // check events
-                       switch (NmtEvent) {
-                               // 2006/07/31 d.k.: react also on NMT reset commands in ResetApp state
-                               // NMT Command SwitchOff
-                       case kEplNmtEventCriticalError:
-                       case kEplNmtEventSwitchOff:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsOff;
-                                       break;
-                               }
-
-                               // new state kEplNmtGsResetApplication
-                       case kEplNmtEventEnterResetApp:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetApplication;
-                                       break;
-                               }
-
-                       default:
-                               {
-                                       break;
-                               }
-                       }
-                       break;
-               }
-
-               // init of the manufacturer-specific profile area and the
-               // standardised device profile area
-       case kEplNmtGsResetApplication:
-               {
-                       // check events
-                       switch (NmtEvent) {
-                               // 2006/07/31 d.k.: react also on NMT reset commands in ResetApp state
-                               // NMT Command SwitchOff
-                       case kEplNmtEventCriticalError:
-                       case kEplNmtEventSwitchOff:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsOff;
-                                       break;
-                               }
-
-                               // NMT Command SwReset
-                       case kEplNmtEventSwReset:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsInitialising;
-                                       break;
-                               }
-
-                               // leave this state only if higher layer
-                               // say so
-                       case kEplNmtEventEnterResetCom:
-                               {
-                                       // new state kEplNmtGsResetCommunication
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetCommunication;
-                                       break;
-                               }
-
-                       default:
-                               {
-                                       break;
-                               }
-                       }
-                       break;
-               }
-
-               // init of the communication profile area
-       case kEplNmtGsResetCommunication:
-               {
-                       // check events
-                       switch (NmtEvent) {
-                               // 2006/07/31 d.k.: react also on NMT reset commands in ResetComm state
-                               // NMT Command SwitchOff
-                       case kEplNmtEventCriticalError:
-                       case kEplNmtEventSwitchOff:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsOff;
-                                       break;
-                               }
-
-                               // NMT Command SwReset
-                       case kEplNmtEventSwReset:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsInitialising;
-                                       break;
-                               }
-
-                               // NMT Command ResetNode
-                       case kEplNmtEventResetNode:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetApplication;
-                                       break;
-                               }
-
-                               // leave this state only if higher layer
-                               // say so
-                       case kEplNmtEventEnterResetConfig:
-                               {
-                                       // new state kEplNmtGsResetCommunication
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetConfiguration;
-                                       break;
-                               }
-
-                       default:
-                               {
-                                       break;
-                               }
-                       }
-                       break;
-               }
-
-               // build the configuration with infos from OD
-       case kEplNmtGsResetConfiguration:
-               {
-                       // reset flags
-                       EPL_MCO_GLB_VAR(m_fEnableReadyToOperate) = FALSE;
-                       EPL_MCO_GLB_VAR(m_fAppReadyToOperate) = FALSE;
-                       EPL_MCO_GLB_VAR(m_fFrozen) = FALSE;
-
-                       // check events
-                       switch (NmtEvent) {
-                               // 2006/07/31 d.k.: react also on NMT reset commands in ResetConf state
-                               // NMT Command SwitchOff
-                       case kEplNmtEventCriticalError:
-                       case kEplNmtEventSwitchOff:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsOff;
-                                       break;
-                               }
-
-                               // NMT Command SwReset
-                       case kEplNmtEventSwReset:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsInitialising;
-                                       break;
-                               }
-
-                               // NMT Command ResetNode
-                       case kEplNmtEventResetNode:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetApplication;
-                                       break;
-                               }
-
-                               // NMT Command ResetCommunication
-                       case kEplNmtEventResetCom:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetCommunication;
-                                       break;
-                               }
-
-                               // leave this state only if higher layer says so
-                       case kEplNmtEventEnterCsNotActive:
-                               {       // Node should be CN
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtCsNotActive;
-                                       break;
-
-                               }
-
-                       case kEplNmtEventEnterMsNotActive:
-                               {       // Node should be CN
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) == 0)
-                                       // no MN functionality
-                                       // TODO: -create error E_NMT_BA1_NO_MN_SUPPORT
-                                       EPL_MCO_GLB_VAR(m_fFrozen) = TRUE;
-#else
-
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtMsNotActive;
-#endif
-                                       break;
-
-                               }
-
-                       default:
-                               {
-                                       break;
-                               }
-                       }
-                       break;
-               }
-
-               //-----------------------------------------------------------
-               // CN part of the statemaschine
-
-               // node liste for EPL-Frames and check timeout
-       case kEplNmtCsNotActive:
-               {
-
-                       // check events
-                       switch (NmtEvent) {
-                               // 2006/07/31 d.k.: react also on NMT reset commands in NotActive state
-                               // NMT Command SwitchOff
-                       case kEplNmtEventCriticalError:
-                       case kEplNmtEventSwitchOff:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsOff;
-                                       break;
-                               }
-
-                               // NMT Command SwReset
-                       case kEplNmtEventSwReset:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsInitialising;
-//                    Ret = EplTimerkDeleteTimer(&EPL_MCO_GLB_VAR(m_TimerHdl));
-                                       break;
-                               }
-
-                               // NMT Command ResetNode
-                       case kEplNmtEventResetNode:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetApplication;
-//                    Ret = EplTimerkDeleteTimer(&EPL_MCO_GLB_VAR(m_TimerHdl));
-                                       break;
-                               }
-
-                               // NMT Command ResetCommunication
-                               // or internal Communication error
-                       case kEplNmtEventResetCom:
-                       case kEplNmtEventInternComError:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetCommunication;
-//                    Ret = EplTimerkDeleteTimer(&EPL_MCO_GLB_VAR(m_TimerHdl));
-                                       break;
-                               }
-
-                               // NMT Command Reset Configuration
-                       case kEplNmtEventResetConfig:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetConfiguration;
-//                    Ret = EplTimerkDeleteTimer(&EPL_MCO_GLB_VAR(m_TimerHdl));
-                                       break;
-                               }
-
-                               // see if SoA or SoC received
-                               // k.t. 20.07.2006: only SoA forces change of state
-                               // see EPL V2 DS 1.0.0 p.267
-                               // case kEplNmtEventDllCeSoc:
-                       case kEplNmtEventDllCeSoa:
-                               {       // new state PRE_OPERATIONAL1
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtCsPreOperational1;
-//                    Ret = EplTimerkDeleteTimer(&EPL_MCO_GLB_VAR(m_TimerHdl));
-                                       break;
-                               }
-                               // timeout for SoA and Soc
-                       case kEplNmtEventTimerBasicEthernet:
-                               {
-                                       // new state BASIC_ETHERNET
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtCsBasicEthernet;
-                                       break;
-                               }
-
-                       default:
-                               {
-                                       break;
-                               }
-                       }       // end of switch(NmtEvent)
-
-                       break;
-               }
-
-               // node processes only async frames
-       case kEplNmtCsPreOperational1:
-               {
-
-                       // check events
-                       switch (NmtEvent) {
-                               // NMT Command SwitchOff
-                       case kEplNmtEventCriticalError:
-                       case kEplNmtEventSwitchOff:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsOff;
-                                       break;
-                               }
-
-                               // NMT Command SwReset
-                       case kEplNmtEventSwReset:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsInitialising;
-                                       break;
-                               }
-
-                               // NMT Command ResetNode
-                       case kEplNmtEventResetNode:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetApplication;
-                                       break;
-                               }
-
-                               // NMT Command ResetCommunication
-                               // or internal Communication error
-                       case kEplNmtEventResetCom:
-                       case kEplNmtEventInternComError:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetCommunication;
-                                       break;
-                               }
-
-                               // NMT Command Reset Configuration
-                       case kEplNmtEventResetConfig:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetConfiguration;
-                                       break;
-                               }
-
-                               // NMT Command StopNode
-                       case kEplNmtEventStopNode:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtCsStopped;
-                                       break;
-                               }
-
-                               // check if SoC received
-                       case kEplNmtEventDllCeSoc:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtCsPreOperational2;
-                                       break;
-                               }
-
-                       default:
-                               {
-                                       break;
-                               }
-
-                       }       // end of switch(NmtEvent)
-
-                       break;
-               }
-
-               // node processes isochronous and asynchronous frames
-       case kEplNmtCsPreOperational2:
-               {
-                       // check events
-                       switch (NmtEvent) {
-                               // NMT Command SwitchOff
-                       case kEplNmtEventCriticalError:
-                       case kEplNmtEventSwitchOff:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsOff;
-                                       break;
-                               }
-
-                               // NMT Command SwReset
-                       case kEplNmtEventSwReset:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsInitialising;
-                                       break;
-                               }
-
-                               // NMT Command ResetNode
-                       case kEplNmtEventResetNode:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetApplication;
-                                       break;
-                               }
-
-                               // NMT Command ResetCommunication
-                               // or internal Communication error
-                       case kEplNmtEventResetCom:
-                       case kEplNmtEventInternComError:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetCommunication;
-                                       break;
-                               }
-
-                               // NMT Command Reset Configuration
-                       case kEplNmtEventResetConfig:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetConfiguration;
-                                       break;
-                               }
-
-                               // NMT Command StopNode
-                       case kEplNmtEventStopNode:
-                               {
-                                       // reset flags
-                                       EPL_MCO_GLB_VAR(m_fEnableReadyToOperate)
-                                           = FALSE;
-                                       EPL_MCO_GLB_VAR(m_fAppReadyToOperate) =
-                                           FALSE;
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtCsStopped;
-                                       break;
-                               }
-
-                               // error occured
-                       case kEplNmtEventNmtCycleError:
-                               {
-                                       // reset flags
-                                       EPL_MCO_GLB_VAR(m_fEnableReadyToOperate)
-                                           = FALSE;
-                                       EPL_MCO_GLB_VAR(m_fAppReadyToOperate) =
-                                           FALSE;
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtCsPreOperational1;
-                                       break;
-                               }
-
-                               // check if application is ready to operate
-                       case kEplNmtEventEnterReadyToOperate:
-                               {
-                                       // check if command NMTEnableReadyToOperate from MN was received
-                                       if (EPL_MCO_GLB_VAR(m_fEnableReadyToOperate) == TRUE) { // reset flags
-                                               EPL_MCO_GLB_VAR
-                                                   (m_fEnableReadyToOperate) =
-                                                   FALSE;
-                                               EPL_MCO_GLB_VAR
-                                                   (m_fAppReadyToOperate) =
-                                                   FALSE;
-                                               // change state
-                                               EPL_MCO_GLB_VAR(m_NmtState) =
-                                                   kEplNmtCsReadyToOperate;
-                                       } else {        // set Flag
-                                               EPL_MCO_GLB_VAR
-                                                   (m_fAppReadyToOperate) =
-                                                   TRUE;
-                                       }
-                                       break;
-                               }
-
-                               // NMT Commando EnableReadyToOperate
-                       case kEplNmtEventEnableReadyToOperate:
-                               {
-                                       // check if application is ready
-                                       if (EPL_MCO_GLB_VAR(m_fAppReadyToOperate) == TRUE) {    // reset flags
-                                               EPL_MCO_GLB_VAR
-                                                   (m_fEnableReadyToOperate) =
-                                                   FALSE;
-                                               EPL_MCO_GLB_VAR
-                                                   (m_fAppReadyToOperate) =
-                                                   FALSE;
-                                               // change state
-                                               EPL_MCO_GLB_VAR(m_NmtState) =
-                                                   kEplNmtCsReadyToOperate;
-                                       } else {        // set Flag
-                                               EPL_MCO_GLB_VAR
-                                                   (m_fEnableReadyToOperate) =
-                                                   TRUE;
-                                       }
-                                       break;
-                               }
-
-                       default:
-                               {
-                                       break;
-                               }
-
-                       }       // end of switch(NmtEvent)
-                       break;
-               }
-
-               // node should be configured und application is ready
-       case kEplNmtCsReadyToOperate:
-               {
-                       // check events
-                       switch (NmtEvent) {
-                               // NMT Command SwitchOff
-                       case kEplNmtEventCriticalError:
-                       case kEplNmtEventSwitchOff:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsOff;
-                                       break;
-                               }
-
-                               // NMT Command SwReset
-                       case kEplNmtEventSwReset:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsInitialising;
-                                       break;
-                               }
-
-                               // NMT Command ResetNode
-                       case kEplNmtEventResetNode:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetApplication;
-                                       break;
-                               }
-
-                               // NMT Command ResetCommunication
-                               // or internal Communication error
-                       case kEplNmtEventResetCom:
-                       case kEplNmtEventInternComError:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetCommunication;
-                                       break;
-                               }
-
-                               // NMT Command ResetConfiguration
-                       case kEplNmtEventResetConfig:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetConfiguration;
-                                       break;
-                               }
-
-                               // NMT Command StopNode
-                       case kEplNmtEventStopNode:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtCsStopped;
-                                       break;
-                               }
-
-                               // error occured
-                       case kEplNmtEventNmtCycleError:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtCsPreOperational1;
-                                       break;
-                               }
-
-                               // NMT Command StartNode
-                       case kEplNmtEventStartNode:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtCsOperational;
-                                       break;
-                               }
-
-                       default:
-                               {
-                                       break;
-                               }
-
-                       }       // end of switch(NmtEvent)
-                       break;
-               }
-
-               // normal work state
-       case kEplNmtCsOperational:
-               {
-
-                       // check events
-                       switch (NmtEvent) {
-                               // NMT Command SwitchOff
-                       case kEplNmtEventCriticalError:
-                       case kEplNmtEventSwitchOff:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsOff;
-                                       break;
-                               }
-
-                               // NMT Command SwReset
-                       case kEplNmtEventSwReset:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsInitialising;
-                                       break;
-                               }
-
-                               // NMT Command ResetNode
-                       case kEplNmtEventResetNode:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetApplication;
-                                       break;
-                               }
-
-                               // NMT Command ResetCommunication
-                               // or internal Communication error
-                       case kEplNmtEventResetCom:
-                       case kEplNmtEventInternComError:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetCommunication;
-                                       break;
-                               }
-
-                               // NMT Command ResetConfiguration
-                       case kEplNmtEventResetConfig:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetConfiguration;
-                                       break;
-                               }
-
-                               // NMT Command StopNode
-                       case kEplNmtEventStopNode:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtCsStopped;
-                                       break;
-                               }
-
-                               // NMT Command EnterPreOperational2
-                       case kEplNmtEventEnterPreOperational2:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtCsPreOperational2;
-                                       break;
-                               }
-
-                               // error occured
-                       case kEplNmtEventNmtCycleError:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtCsPreOperational1;
-                                       break;
-                               }
-
-                       default:
-                               {
-                                       break;
-                               }
-
-                       }       // end of switch(NmtEvent)
-                       break;
-               }
-
-               // node stopped by MN
-               // -> only process asynchronous frames
-       case kEplNmtCsStopped:
-               {
-                       // check events
-                       switch (NmtEvent) {
-                               // NMT Command SwitchOff
-                       case kEplNmtEventCriticalError:
-                       case kEplNmtEventSwitchOff:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsOff;
-                                       break;
-                               }
-
-                               // NMT Command SwReset
-                       case kEplNmtEventSwReset:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsInitialising;
-                                       break;
-                               }
-
-                               // NMT Command ResetNode
-                       case kEplNmtEventResetNode:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetApplication;
-                                       break;
-                               }
-
-                               // NMT Command ResetCommunication
-                               // or internal Communication error
-                       case kEplNmtEventResetCom:
-                       case kEplNmtEventInternComError:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetCommunication;
-                                       break;
-                               }
-
-                               // NMT Command ResetConfiguration
-                       case kEplNmtEventResetConfig:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetConfiguration;
-                                       break;
-                               }
-
-                               // NMT Command EnterPreOperational2
-                       case kEplNmtEventEnterPreOperational2:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtCsPreOperational2;
-                                       break;
-                               }
-
-                               // error occured
-                       case kEplNmtEventNmtCycleError:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtCsPreOperational1;
-                                       break;
-                               }
-
-                       default:
-                               {
-                                       break;
-                               }
-
-                       }       // end of switch(NmtEvent)
-                       break;
-               }
-
-               // no epl cycle
-               // -> normal ethernet communication
-       case kEplNmtCsBasicEthernet:
-               {
-                       // check events
-                       switch (NmtEvent) {
-                               // NMT Command SwitchOff
-                       case kEplNmtEventCriticalError:
-                       case kEplNmtEventSwitchOff:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsOff;
-                                       break;
-                               }
-
-                               // NMT Command SwReset
-                       case kEplNmtEventSwReset:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsInitialising;
-                                       break;
-                               }
-
-                               // NMT Command ResetNode
-                       case kEplNmtEventResetNode:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetApplication;
-                                       break;
-                               }
-
-                               // NMT Command ResetCommunication
-                               // or internal Communication error
-                       case kEplNmtEventResetCom:
-                       case kEplNmtEventInternComError:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetCommunication;
-                                       break;
-                               }
-
-                               // NMT Command ResetConfiguration
-                       case kEplNmtEventResetConfig:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetConfiguration;
-                                       break;
-                               }
-
-                               // error occured
-                               // d.k.: how does this error occur? on CRC errors
-/*                case kEplNmtEventNmtCycleError:
-                {
-                    EPL_MCO_GLB_VAR(m_NmtState) = kEplNmtCsPreOperational1;
-                    break;
-                }
-*/
-                       case kEplNmtEventDllCeSoc:
-                       case kEplNmtEventDllCePreq:
-                       case kEplNmtEventDllCePres:
-                       case kEplNmtEventDllCeSoa:
-                               {       // Epl-Frame on net -> stop any communication
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtCsPreOperational1;
-                                       break;
-                               }
-
-                       default:
-                               {
-                                       break;
-                               }
-
-                       }       // end of switch(NmtEvent)
-
-                       break;
-               }
-
-               //-----------------------------------------------------------
-               // MN part of the statemaschine
-
-               // MN listen to network
-               // -> if no EPL traffic go to next state
-       case kEplNmtMsNotActive:
-               {
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) == 0)
-                       // no MN functionality
-                       // TODO: -create error E_NMT_BA1_NO_MN_SUPPORT
-                       EPL_MCO_GLB_VAR(m_fFrozen) = TRUE;
-#else
-
-                       // check events
-                       switch (NmtEvent) {
-                               // NMT Command SwitchOff
-                       case kEplNmtEventCriticalError:
-                       case kEplNmtEventSwitchOff:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsOff;
-                                       break;
-                               }
-
-                               // NMT Command SwReset
-                       case kEplNmtEventSwReset:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsInitialising;
-                                       break;
-                               }
-
-                               // NMT Command ResetNode
-                       case kEplNmtEventResetNode:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetApplication;
-                                       break;
-                               }
-
-                               // NMT Command ResetCommunication
-                               // or internal Communication error
-                       case kEplNmtEventResetCom:
-                       case kEplNmtEventInternComError:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetCommunication;
-                                       break;
-                               }
-
-                               // NMT Command ResetConfiguration
-                       case kEplNmtEventResetConfig:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetConfiguration;
-                                       break;
-                               }
-
-                               // EPL frames received
-                       case kEplNmtEventDllCeSoc:
-                       case kEplNmtEventDllCeSoa:
-                               {       // other MN in network
-                                       // $$$ d.k.: generate error history entry
-                                       EPL_MCO_GLB_VAR(m_fFrozen) = TRUE;
-                                       break;
-                               }
-
-                               // timeout event
-                       case kEplNmtEventTimerBasicEthernet:
-                               {
-                                       if (EPL_MCO_GLB_VAR(m_fFrozen) == FALSE) {      // new state BasicEthernet
-                                               EPL_MCO_GLB_VAR(m_NmtState) =
-                                                   kEplNmtMsBasicEthernet;
-                                       }
-                                       break;
-                               }
-
-                               // timeout event
-                       case kEplNmtEventTimerMsPreOp1:
-                               {
-                                       if (EPL_MCO_GLB_VAR(m_fFrozen) == FALSE) {      // new state PreOp1
-                                               EPL_MCO_GLB_VAR(m_NmtState) =
-                                                   kEplNmtMsPreOperational1;
-                                               EPL_MCO_GLB_VAR
-                                                   (m_fTimerMsPreOp2) = FALSE;
-                                               EPL_MCO_GLB_VAR
-                                                   (m_fAllMandatoryCNIdent) =
-                                                   FALSE;
-
-                                       }
-                                       break;
-                               }
-
-                       default:
-                               {
-                                       break;
-                               }
-
-                       }       // end of switch(NmtEvent)
-
-#endif // ((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) == 0)
-
-                       break;
-               }
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-               // MN process reduces epl cycle
-       case kEplNmtMsPreOperational1:
-               {
-                       // check events
-                       switch (NmtEvent) {
-                               // NMT Command SwitchOff
-                       case kEplNmtEventCriticalError:
-                       case kEplNmtEventSwitchOff:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsOff;
-                                       break;
-                               }
-
-                               // NMT Command SwReset
-                       case kEplNmtEventSwReset:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsInitialising;
-                                       break;
-                               }
-
-                               // NMT Command ResetNode
-                       case kEplNmtEventResetNode:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetApplication;
-                                       break;
-                               }
-
-                               // NMT Command ResetCommunication
-                               // or internal Communication error
-                       case kEplNmtEventResetCom:
-                       case kEplNmtEventInternComError:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetCommunication;
-                                       break;
-                               }
-
-                               // NMT Command ResetConfiguration
-                       case kEplNmtEventResetConfig:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetConfiguration;
-                                       break;
-                               }
-
-                               // EPL frames received
-                       case kEplNmtEventDllCeSoc:
-                       case kEplNmtEventDllCeSoa:
-                               {       // other MN in network
-                                       // $$$ d.k.: generate error history entry
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetCommunication;
-                                       break;
-                               }
-
-                               // error occured
-                               // d.k. MSPreOp1->CSPreOp1: nonsense -> keep state
-                               /*
-                                  case kEplNmtEventNmtCycleError:
-                                  {
-                                  EPL_MCO_GLB_VAR(m_NmtState) = kEplNmtCsPreOperational1;
-                                  break;
-                                  }
-                                */
-
-                       case kEplNmtEventAllMandatoryCNIdent:
-                               {       // all mandatory CN identified
-                                       if (EPL_MCO_GLB_VAR(m_fTimerMsPreOp2) !=
-                                           FALSE) {
-                                               EPL_MCO_GLB_VAR(m_NmtState) =
-                                                   kEplNmtMsPreOperational2;
-                                       } else {
-                                               EPL_MCO_GLB_VAR
-                                                   (m_fAllMandatoryCNIdent) =
-                                                   TRUE;
-                                       }
-                                       break;
-                               }
-
-                       case kEplNmtEventTimerMsPreOp2:
-                               {       // residence time for PreOp1 is elapsed
-                                       if (EPL_MCO_GLB_VAR
-                                           (m_fAllMandatoryCNIdent) != FALSE) {
-                                               EPL_MCO_GLB_VAR(m_NmtState) =
-                                                   kEplNmtMsPreOperational2;
-                                       } else {
-                                               EPL_MCO_GLB_VAR
-                                                   (m_fTimerMsPreOp2) = TRUE;
-                                       }
-                                       break;
-                               }
-
-                       default:
-                               {
-                                       break;
-                               }
-
-                       }       // end of switch(NmtEvent)
-                       break;
-               }
-
-               // MN process full epl cycle
-       case kEplNmtMsPreOperational2:
-               {
-                       // check events
-                       switch (NmtEvent) {
-                               // NMT Command SwitchOff
-                       case kEplNmtEventCriticalError:
-                       case kEplNmtEventSwitchOff:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsOff;
-                                       break;
-                               }
-
-                               // NMT Command SwReset
-                       case kEplNmtEventSwReset:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsInitialising;
-                                       break;
-                               }
-
-                               // NMT Command ResetNode
-                       case kEplNmtEventResetNode:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetApplication;
-                                       break;
-                               }
-
-                               // NMT Command ResetCommunication
-                               // or internal Communication error
-                       case kEplNmtEventResetCom:
-                       case kEplNmtEventInternComError:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetCommunication;
-                                       break;
-                               }
-
-                               // NMT Command ResetConfiguration
-                       case kEplNmtEventResetConfig:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetConfiguration;
-                                       break;
-                               }
-
-                               // EPL frames received
-                       case kEplNmtEventDllCeSoc:
-                       case kEplNmtEventDllCeSoa:
-                               {       // other MN in network
-                                       // $$$ d.k.: generate error history entry
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetCommunication;
-                                       break;
-                               }
-
-                               // error occured
-                       case kEplNmtEventNmtCycleError:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtMsPreOperational1;
-                                       break;
-                               }
-
-                       case kEplNmtEventEnterReadyToOperate:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtMsReadyToOperate;
-                                       break;
-                               }
-
-                       default:
-                               {
-                                       break;
-                               }
-
-                       }       // end of switch(NmtEvent)
-
-                       break;
-               }
-
-               // all madatory nodes ready to operate
-               // -> MN process full epl cycle
-       case kEplNmtMsReadyToOperate:
-               {
-
-                       // check events
-                       switch (NmtEvent) {
-                               // NMT Command SwitchOff
-                       case kEplNmtEventCriticalError:
-                       case kEplNmtEventSwitchOff:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsOff;
-                                       break;
-                               }
-
-                               // NMT Command SwReset
-                       case kEplNmtEventSwReset:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsInitialising;
-                                       break;
-                               }
-
-                               // NMT Command ResetNode
-                       case kEplNmtEventResetNode:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetApplication;
-                                       break;
-                               }
-
-                               // NMT Command ResetCommunication
-                               // or internal Communication error
-                       case kEplNmtEventResetCom:
-                       case kEplNmtEventInternComError:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetCommunication;
-                                       break;
-                               }
-
-                               // NMT Command ResetConfiguration
-                       case kEplNmtEventResetConfig:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetConfiguration;
-                                       break;
-                               }
-
-                               // EPL frames received
-                       case kEplNmtEventDllCeSoc:
-                       case kEplNmtEventDllCeSoa:
-                               {       // other MN in network
-                                       // $$$ d.k.: generate error history entry
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetCommunication;
-                                       break;
-                               }
-
-                               // error occured
-                       case kEplNmtEventNmtCycleError:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtMsPreOperational1;
-                                       break;
-                               }
-
-                       case kEplNmtEventEnterMsOperational:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtMsOperational;
-                                       break;
-                               }
-
-                       default:
-                               {
-                                       break;
-                               }
-
-                       }       // end of switch(NmtEvent)
-
-                       break;
-               }
-
-               // normal eplcycle processing
-       case kEplNmtMsOperational:
-               {
-                       // check events
-                       switch (NmtEvent) {
-                               // NMT Command SwitchOff
-                       case kEplNmtEventCriticalError:
-                       case kEplNmtEventSwitchOff:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsOff;
-                                       break;
-                               }
-
-                               // NMT Command SwReset
-                       case kEplNmtEventSwReset:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsInitialising;
-                                       break;
-                               }
-
-                               // NMT Command ResetNode
-                       case kEplNmtEventResetNode:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetApplication;
-                                       break;
-                               }
-
-                               // NMT Command ResetCommunication
-                               // or internal Communication error
-                       case kEplNmtEventResetCom:
-                       case kEplNmtEventInternComError:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetCommunication;
-                                       break;
-                               }
-
-                               // NMT Command ResetConfiguration
-                       case kEplNmtEventResetConfig:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetConfiguration;
-                                       break;
-                               }
-
-                               // EPL frames received
-                       case kEplNmtEventDllCeSoc:
-                       case kEplNmtEventDllCeSoa:
-                               {       // other MN in network
-                                       // $$$ d.k.: generate error history entry
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetCommunication;
-                                       break;
-                               }
-
-                               // error occured
-                       case kEplNmtEventNmtCycleError:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtMsPreOperational1;
-                                       break;
-                               }
-
-                       default:
-                               {
-                                       break;
-                               }
-
-                       }       // end of switch(NmtEvent)
-                       break;
-               }
-
-               //  normal ethernet traffic
-       case kEplNmtMsBasicEthernet:
-               {
-
-                       // check events
-                       switch (NmtEvent) {
-                               // NMT Command SwitchOff
-                       case kEplNmtEventCriticalError:
-                       case kEplNmtEventSwitchOff:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsOff;
-                                       break;
-                               }
-
-                               // NMT Command SwReset
-                       case kEplNmtEventSwReset:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsInitialising;
-                                       break;
-                               }
-
-                               // NMT Command ResetNode
-                       case kEplNmtEventResetNode:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetApplication;
-                                       break;
-                               }
-
-                               // NMT Command ResetCommunication
-                               // or internal Communication error
-                       case kEplNmtEventResetCom:
-                       case kEplNmtEventInternComError:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetCommunication;
-                                       break;
-                               }
-
-                               // NMT Command ResetConfiguration
-                       case kEplNmtEventResetConfig:
-                               {
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetConfiguration;
-                                       break;
-                               }
-
-                               // EPL frames received
-                       case kEplNmtEventDllCeSoc:
-                       case kEplNmtEventDllCeSoa:
-                               {       // other MN in network
-                                       // $$$ d.k.: generate error history entry
-                                       EPL_MCO_GLB_VAR(m_NmtState) =
-                                           kEplNmtGsResetCommunication;
-                                       break;
-                               }
-
-                               // error occured
-                               // d.k. BE->PreOp1 on cycle error? No
-/*                case kEplNmtEventNmtCycleError:
-                {
-                    EPL_MCO_GLB_VAR(m_NmtState) = kEplNmtCsPreOperational1;
-                    break;
-                }
-*/
-                       default:
-                               {
-                                       break;
-                               }
-
-                       }       // end of switch(NmtEvent)
-                       break;
-               }
-#endif //#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-
-       default:
-               {
-                       //DEBUG_EPL_DBGLVL_NMTK_TRACE0(EPL_DBGLVL_NMT ,"Error in EplNmtProcess: Unknown NMT-State");
-                       //EPL_MCO_GLB_VAR(m_NmtState) = kEplNmtGsResetApplication;
-                       Ret = kEplNmtInvalidState;
-                       goto Exit;
-               }
-
-       }                       // end of switch(NmtEvent)
-
-       // inform higher layer about State-Change if needed
-       if (OldNmtState != EPL_MCO_GLB_VAR(m_NmtState)) {
-               EPL_NMTK_DBG_POST_TRACE_VALUE(NmtEvent, OldNmtState,
-                                             EPL_MCO_GLB_VAR(m_NmtState));
-
-               // d.k.: memorize NMT state before posting any events
-               NmtStateChange.m_NewNmtState = EPL_MCO_GLB_VAR(m_NmtState);
-
-               // inform DLL
-               if ((OldNmtState > kEplNmtGsResetConfiguration)
-                   && (EPL_MCO_GLB_VAR(m_NmtState) <=
-                       kEplNmtGsResetConfiguration)) {
-                       // send DLL DEINIT
-                       Event.m_EventSink = kEplEventSinkDllk;
-                       Event.m_EventType = kEplEventTypeDllkDestroy;
-                       EPL_MEMSET(&Event.m_NetTime, 0x00,
-                                  sizeof(Event.m_NetTime));
-                       Event.m_pArg = &OldNmtState;
-                       Event.m_uiSize = sizeof(OldNmtState);
-                       // d.k.: directly call DLLk process function, because
-                       //       1. execution of process function is still synchonized and serialized,
-                       //       2. it is the same as without event queues (i.e. well tested),
-                       //       3. DLLk will get those necessary events even if event queue is full,
-                       //       4. event queue is very inefficient
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLK)) != 0)
-                       Ret = EplDllkProcess(&Event);
-#else
-                       Ret = EplEventkPost(&Event);
-#endif
-               } else if ((OldNmtState <= kEplNmtGsResetConfiguration)
-                          && (EPL_MCO_GLB_VAR(m_NmtState) >
-                              kEplNmtGsResetConfiguration)) {
-                       // send DLL INIT
-                       Event.m_EventSink = kEplEventSinkDllk;
-                       Event.m_EventType = kEplEventTypeDllkCreate;
-                       EPL_MEMSET(&Event.m_NetTime, 0x00,
-                                  sizeof(Event.m_NetTime));
-                       Event.m_pArg = &NmtStateChange.m_NewNmtState;
-                       Event.m_uiSize = sizeof(NmtStateChange.m_NewNmtState);
-                       // d.k.: directly call DLLk process function, because
-                       //       1. execution of process function is still synchonized and serialized,
-                       //       2. it is the same as without event queues (i.e. well tested),
-                       //       3. DLLk will get those necessary events even if event queue is full
-                       //       4. event queue is very inefficient
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLK)) != 0)
-                       Ret = EplDllkProcess(&Event);
-#else
-                       Ret = EplEventkPost(&Event);
-#endif
-               } else
-                   if ((EPL_MCO_GLB_VAR(m_NmtState) == kEplNmtCsBasicEthernet)
-                       || (EPL_MCO_GLB_VAR(m_NmtState) ==
-                           kEplNmtMsBasicEthernet)) {
-                       tEplDllAsyncReqPriority AsyncReqPriority;
-
-                       // send DLL Fill Async Tx Buffer, because state BasicEthernet was entered
-                       Event.m_EventSink = kEplEventSinkDllk;
-                       Event.m_EventType = kEplEventTypeDllkFillTx;
-                       EPL_MEMSET(&Event.m_NetTime, 0x00,
-                                  sizeof(Event.m_NetTime));
-                       AsyncReqPriority = kEplDllAsyncReqPrioGeneric;
-                       Event.m_pArg = &AsyncReqPriority;
-                       Event.m_uiSize = sizeof(AsyncReqPriority);
-                       // d.k.: directly call DLLk process function, because
-                       //       1. execution of process function is still synchonized and serialized,
-                       //       2. it is the same as without event queues (i.e. well tested),
-                       //       3. DLLk will get those necessary events even if event queue is full
-                       //       4. event queue is very inefficient
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLK)) != 0)
-                       Ret = EplDllkProcess(&Event);
-#else
-                       Ret = EplEventkPost(&Event);
-#endif
-               }
-               // inform higher layer about state change
-               NmtStateChange.m_NmtEvent = NmtEvent;
-               Event.m_EventSink = kEplEventSinkNmtu;
-               Event.m_EventType = kEplEventTypeNmtStateChange;
-               EPL_MEMSET(&Event.m_NetTime, 0x00, sizeof(Event.m_NetTime));
-               Event.m_pArg = &NmtStateChange;
-               Event.m_uiSize = sizeof(NmtStateChange);
-               Ret = EplEventkPost(&Event);
-               EPL_DBGLVL_NMTK_TRACE2
-                   ("EplNmtkProcess(NMT-Event = 0x%04X): New NMT-State = 0x%03X\n",
-                    NmtEvent, NmtStateChange.m_NewNmtState);
-
-       }
-
-      Exit:
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtkGetNmtState
-//
-// Description: return the actuell NMT-State and the bits
-//              to for MN- or CN-mode
-//
-//
-//
-// Parameters:  EPL_MCO_DECL_PTR_INSTANCE_PTR_ = Instancepointer
-//
-//
-// Returns:     tEplNmtState = NMT-State
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplNmtState EplNmtkGetNmtState(EPL_MCO_DECL_PTR_INSTANCE_PTR)
-{
-       tEplNmtState NmtState;
-
-       NmtState = EPL_MCO_GLB_VAR(m_NmtState);
-
-       return NmtState;
-
-}
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   D E F I N I T I O N S                          //
-//                                                                         //
-//=========================================================================//
-EPL_MCO_DECL_INSTANCE_FCT()
-//---------------------------------------------------------------------------
-//
-// Function:
-//
-// Description:
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-#endif // #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTK)) != 0)
-// EOF
diff --git a/drivers/staging/epl/EplNmtkCal.c b/drivers/staging/epl/EplNmtkCal.c
deleted file mode 100644 (file)
index 4453c09..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for communication abstraction layer of the
-                NMT-Kernel-Module
-
-  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: EplNmtkCal.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.3 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                KEIL uVision 2
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/16 -k.t.:   start of the implementation
-
-****************************************************************************/
-
-// TODO: init function needed to prepare EplNmtkGetNmtState for
-//       io-controll-call from EplNmtuCal-Modul
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:
-//
-// Description:
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:
-//
-// Description:
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-// EOF
diff --git a/drivers/staging/epl/EplNmtu.c b/drivers/staging/epl/EplNmtu.c
deleted file mode 100644 (file)
index 9ac2e8e..0000000
+++ /dev/null
@@ -1,706 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for NMT-Userspace-Module
-
-  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: EplNmtu.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.8 $  $Date: 2008/11/10 17:17:42 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/09 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#include "EplInc.h"
-#include "user/EplNmtu.h"
-#include "user/EplObdu.h"
-#include "user/EplTimeru.h"
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTK)) != 0)
-#include "kernel/EplNmtk.h"
-#endif
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTU)) != 0)
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-typedef struct {
-       tEplNmtuStateChangeCallback m_pfnNmtChangeCb;
-       tEplTimerHdl m_TimerHdl;
-
-} tEplNmtuInstance;
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-static tEplNmtuInstance EplNmtuInstance_g;
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtuInit
-//
-// Description: init first instance of the module
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplNmtuInit(void)
-{
-       tEplKernel Ret;
-
-       Ret = EplNmtuAddInstance();
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtuAddInstance
-//
-// Description: init other instances of the module
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplNmtuAddInstance(void)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-       EplNmtuInstance_g.m_pfnNmtChangeCb = NULL;
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtuDelInstance
-//
-// Description: delete instance
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplNmtuDelInstance(void)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-       EplNmtuInstance_g.m_pfnNmtChangeCb = NULL;
-
-       // delete timer
-       Ret = EplTimeruDeleteTimer(&EplNmtuInstance_g.m_TimerHdl);
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtuNmtEvent
-//
-// Description: sends the NMT-Event to the NMT-State-Maschine
-//
-//
-//
-// Parameters:  NmtEvent_p  = NMT-Event to send
-//
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplNmtuNmtEvent(tEplNmtEvent NmtEvent_p)
-{
-       tEplKernel Ret;
-       tEplEvent Event;
-
-       Event.m_EventSink = kEplEventSinkNmtk;
-       Event.m_NetTime.m_dwNanoSec = 0;
-       Event.m_NetTime.m_dwSec = 0;
-       Event.m_EventType = kEplEventTypeNmtEvent;
-       Event.m_pArg = &NmtEvent_p;
-       Event.m_uiSize = sizeof(NmtEvent_p);
-
-       Ret = EplEventuPost(&Event);
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtuGetNmtState
-//
-// Description: returns the actuell NMT-State
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:     tEplNmtState  = NMT-State
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplNmtState EplNmtuGetNmtState(void)
-{
-       tEplNmtState NmtState;
-
-       // $$$ call function of communication abstraction layer
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTK)) != 0)
-       NmtState = EplNmtkGetNmtState();
-#else
-       NmtState = 0;
-#endif
-
-       return NmtState;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtuProcessEvent
-//
-// Description: processes events from event queue
-//
-//
-//
-// Parameters:  pEplEvent_p =   pointer to event
-//
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplNmtuProcessEvent(tEplEvent *pEplEvent_p)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-       // process event
-       switch (pEplEvent_p->m_EventType) {
-               // state change of NMT-Module
-       case kEplEventTypeNmtStateChange:
-               {
-                       tEplEventNmtStateChange *pNmtStateChange;
-
-                       // delete timer
-                       Ret =
-                           EplTimeruDeleteTimer(&EplNmtuInstance_g.m_TimerHdl);
-
-                       pNmtStateChange =
-                           (tEplEventNmtStateChange *) pEplEvent_p->m_pArg;
-
-                       // call cb-functions to inform higher layer
-                       if (EplNmtuInstance_g.m_pfnNmtChangeCb != NULL) {
-                               Ret =
-                                   EplNmtuInstance_g.
-                                   m_pfnNmtChangeCb(*pNmtStateChange);
-                       }
-
-                       if (Ret == kEplSuccessful) {    // everything is OK, so switch to next state if necessary
-                               switch (pNmtStateChange->m_NewNmtState) {
-                                       // EPL stack is not running
-                               case kEplNmtGsOff:
-                                       break;
-
-                                       // first init of the hardware
-                               case kEplNmtGsInitialising:
-                                       {
-                                               Ret =
-                                                   EplNmtuNmtEvent
-                                                   (kEplNmtEventEnterResetApp);
-                                               break;
-                                       }
-
-                                       // init of the manufacturer-specific profile area and the
-                                       // standardised device profile area
-                               case kEplNmtGsResetApplication:
-                                       {
-                                               Ret =
-                                                   EplNmtuNmtEvent
-                                                   (kEplNmtEventEnterResetCom);
-                                               break;
-                                       }
-
-                                       // init of the communication profile area
-                               case kEplNmtGsResetCommunication:
-                                       {
-                                               Ret =
-                                                   EplNmtuNmtEvent
-                                                   (kEplNmtEventEnterResetConfig);
-                                               break;
-                                       }
-
-                                       // build the configuration with infos from OD
-                               case kEplNmtGsResetConfiguration:
-                                       {
-                                               unsigned int uiNodeId;
-
-                                               // get node ID from OD
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDU)) != 0) || (EPL_OBD_USE_KERNEL != FALSE)
-                                               uiNodeId =
-                                                   EplObduGetNodeId
-                                                   (EPL_MCO_PTR_INSTANCE_PTR);
-#else
-                                               uiNodeId = 0;
-#endif
-                                               //check node ID if not should be master or slave
-                                               if (uiNodeId == EPL_C_ADR_MN_DEF_NODE_ID) {     // node shall be MN
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-                                                       Ret =
-                                                           EplNmtuNmtEvent
-                                                           (kEplNmtEventEnterMsNotActive);
-#else
-                                                       TRACE0
-                                                           ("EplNmtuProcess(): no MN functionality implemented\n");
-#endif
-                                               } else {        // node shall be CN
-                                                       Ret =
-                                                           EplNmtuNmtEvent
-                                                           (kEplNmtEventEnterCsNotActive);
-                                               }
-                                               break;
-                                       }
-
-                                       //-----------------------------------------------------------
-                                       // CN part of the state machine
-
-                                       // node listens for EPL-Frames and check timeout
-                               case kEplNmtCsNotActive:
-                                       {
-                                               u32 dwBuffer;
-                                               tEplObdSize ObdSize;
-                                               tEplTimerArg TimerArg;
-
-                                               // create timer to switch automatically to BasicEthernet if no MN available in network
-
-                                               // read NMT_CNBasicEthernetTimerout_U32 from OD
-                                               ObdSize = sizeof(dwBuffer);
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDU)) != 0) || (EPL_OBD_USE_KERNEL != FALSE)
-                                               Ret =
-                                                   EplObduReadEntry
-                                                   (EPL_MCO_PTR_INSTANCE_PTR_
-                                                    0x1F99, 0x00, &dwBuffer,
-                                                    &ObdSize);
-#else
-                                               Ret = kEplObdIndexNotExist;
-#endif
-                                               if (Ret != kEplSuccessful) {
-                                                       break;
-                                               }
-                                               if (dwBuffer != 0) {    // BasicEthernet is enabled
-                                                       // convert us into ms
-                                                       dwBuffer =
-                                                           dwBuffer / 1000;
-                                                       if (dwBuffer == 0) {    // timer was below one ms
-                                                               // set one ms
-                                                               dwBuffer = 1;
-                                                       }
-                                                       TimerArg.m_EventSink =
-                                                           kEplEventSinkNmtk;
-                                                       TimerArg.m_ulArg =
-                                                           (unsigned long)
-                                                           kEplNmtEventTimerBasicEthernet;
-                                                       Ret =
-                                                           EplTimeruModifyTimerMs
-                                                           (&EplNmtuInstance_g.
-                                                            m_TimerHdl,
-                                                            (unsigned long)
-                                                            dwBuffer,
-                                                            TimerArg);
-                                                       // potential error is forwarded to event queue which generates error event
-                                               }
-                                               break;
-                                       }
-
-                                       // node processes only async frames
-                               case kEplNmtCsPreOperational1:
-                                       {
-                                               break;
-                                       }
-
-                                       // node processes isochronous and asynchronous frames
-                               case kEplNmtCsPreOperational2:
-                                       {
-                                               Ret =
-                                                   EplNmtuNmtEvent
-                                                   (kEplNmtEventEnterReadyToOperate);
-                                               break;
-                                       }
-
-                                       // node should be configured und application is ready
-                               case kEplNmtCsReadyToOperate:
-                                       {
-                                               break;
-                                       }
-
-                                       // normal work state
-                               case kEplNmtCsOperational:
-                                       {
-                                               break;
-                                       }
-
-                                       // node stopped by MN
-                                       // -> only process asynchronous frames
-                               case kEplNmtCsStopped:
-                                       {
-                                               break;
-                                       }
-
-                                       // no EPL cycle
-                                       // -> normal ethernet communication
-                               case kEplNmtCsBasicEthernet:
-                                       {
-                                               break;
-                                       }
-
-                                       //-----------------------------------------------------------
-                                       // MN part of the state machine
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-                                       // node listens for EPL-Frames and check timeout
-                               case kEplNmtMsNotActive:
-                                       {
-                                               u32 dwBuffer;
-                                               tEplObdSize ObdSize;
-                                               tEplTimerArg TimerArg;
-
-                                               // create timer to switch automatically to BasicEthernet/PreOp1 if no other MN active in network
-
-                                               // check NMT_StartUp_U32.Bit13
-                                               // read NMT_StartUp_U32 from OD
-                                               ObdSize = sizeof(dwBuffer);
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDU)) != 0) || (EPL_OBD_USE_KERNEL != FALSE)
-                                               Ret =
-                                                   EplObduReadEntry
-                                                   (EPL_MCO_PTR_INSTANCE_PTR_
-                                                    0x1F80, 0x00, &dwBuffer,
-                                                    &ObdSize);
-#else
-                                               Ret = kEplObdIndexNotExist;
-#endif
-                                               if (Ret != kEplSuccessful) {
-                                                       break;
-                                               }
-
-                                               if ((dwBuffer & EPL_NMTST_BASICETHERNET) == 0) {        // NMT_StartUp_U32.Bit13 == 0
-                                                       // new state PreOperational1
-                                                       TimerArg.m_ulArg =
-                                                           (unsigned long)
-                                                           kEplNmtEventTimerMsPreOp1;
-                                               } else {        // NMT_StartUp_U32.Bit13 == 1
-                                                       // new state BasicEthernet
-                                                       TimerArg.m_ulArg =
-                                                           (unsigned long)
-                                                           kEplNmtEventTimerBasicEthernet;
-                                               }
-
-                                               // read NMT_BootTime_REC.MNWaitNotAct_U32 from OD
-                                               ObdSize = sizeof(dwBuffer);
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDU)) != 0) || (EPL_OBD_USE_KERNEL != FALSE)
-                                               Ret =
-                                                   EplObduReadEntry
-                                                   (EPL_MCO_PTR_INSTANCE_PTR_
-                                                    0x1F89, 0x01, &dwBuffer,
-                                                    &ObdSize);
-#else
-                                               Ret = kEplObdIndexNotExist;
-#endif
-                                               if (Ret != kEplSuccessful) {
-                                                       break;
-                                               }
-                                               // convert us into ms
-                                               dwBuffer = dwBuffer / 1000;
-                                               if (dwBuffer == 0) {    // timer was below one ms
-                                                       // set one ms
-                                                       dwBuffer = 1;
-                                               }
-                                               TimerArg.m_EventSink =
-                                                   kEplEventSinkNmtk;
-                                               Ret =
-                                                   EplTimeruModifyTimerMs
-                                                   (&EplNmtuInstance_g.
-                                                    m_TimerHdl,
-                                                    (unsigned long)dwBuffer,
-                                                    TimerArg);
-                                               // potential error is forwarded to event queue which generates error event
-                                               break;
-                                       }
-
-                                       // node processes only async frames
-                               case kEplNmtMsPreOperational1:
-                                       {
-                                               u32 dwBuffer = 0;
-                                               tEplObdSize ObdSize;
-                                               tEplTimerArg TimerArg;
-
-                                               // create timer to switch automatically to PreOp2 if MN identified all mandatory CNs
-
-                                               // read NMT_BootTime_REC.MNWaitPreOp1_U32 from OD
-                                               ObdSize = sizeof(dwBuffer);
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDU)) != 0) || (EPL_OBD_USE_KERNEL != FALSE)
-                                               Ret =
-                                                   EplObduReadEntry
-                                                   (EPL_MCO_PTR_INSTANCE_PTR_
-                                                    0x1F89, 0x03, &dwBuffer,
-                                                    &ObdSize);
-                                               if (Ret != kEplSuccessful) {
-                                                       // ignore error, because this timeout is optional
-                                                       dwBuffer = 0;
-                                               }
-#endif
-                                               if (dwBuffer == 0) {    // delay is deactivated
-                                                       // immediately post timer event
-                                                       Ret =
-                                                           EplNmtuNmtEvent
-                                                           (kEplNmtEventTimerMsPreOp2);
-                                                       break;
-                                               }
-                                               // convert us into ms
-                                               dwBuffer = dwBuffer / 1000;
-                                               if (dwBuffer == 0) {    // timer was below one ms
-                                                       // set one ms
-                                                       dwBuffer = 1;
-                                               }
-                                               TimerArg.m_EventSink =
-                                                   kEplEventSinkNmtk;
-                                               TimerArg.m_ulArg =
-                                                   (unsigned long)
-                                                   kEplNmtEventTimerMsPreOp2;
-                                               Ret =
-                                                   EplTimeruModifyTimerMs
-                                                   (&EplNmtuInstance_g.
-                                                    m_TimerHdl,
-                                                    (unsigned long)dwBuffer,
-                                                    TimerArg);
-                                               // potential error is forwarded to event queue which generates error event
-                                               break;
-                                       }
-
-                                       // node processes isochronous and asynchronous frames
-                               case kEplNmtMsPreOperational2:
-                                       {
-                                               break;
-                                       }
-
-                                       // node should be configured und application is ready
-                               case kEplNmtMsReadyToOperate:
-                                       {
-                                               break;
-                                       }
-
-                                       // normal work state
-                               case kEplNmtMsOperational:
-                                       {
-                                               break;
-                                       }
-
-                                       // no EPL cycle
-                                       // -> normal ethernet communication
-                               case kEplNmtMsBasicEthernet:
-                                       {
-                                               break;
-                                       }
-#endif // (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-
-                               default:
-                                       {
-                                               TRACE1
-                                                   ("EplNmtuProcess(): unhandled NMT state 0x%X\n",
-                                                    pNmtStateChange->
-                                                    m_NewNmtState);
-                                       }
-                               }
-                       } else if (Ret == kEplReject) { // application wants to change NMT state itself
-                               // it's OK
-                               Ret = kEplSuccessful;
-                       }
-
-                       EPL_DBGLVL_NMTU_TRACE0
-                           ("EplNmtuProcessEvent(): NMT-State-Maschine announce change of NMT State\n");
-                       break;
-               }
-
-       default:
-               {
-                       Ret = kEplNmtInvalidEvent;
-               }
-
-       }
-
-//Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtuRegisterStateChangeCb
-//
-// Description: register Callback-function go get informed about a
-//              NMT-Change-State-Event
-//
-//
-//
-// Parameters:  pfnEplNmtStateChangeCb_p = functionpointer
-//
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplNmtuRegisterStateChangeCb(tEplNmtuStateChangeCallback pfnEplNmtStateChangeCb_p)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-       // save callback-function in modul global var
-       EplNmtuInstance_g.m_pfnNmtChangeCb = pfnEplNmtStateChangeCb_p;
-
-       return Ret;
-
-}
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:
-//
-// Description:
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-#endif // #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTU)) != 0)
-
-// EOF
diff --git a/drivers/staging/epl/EplNmtuCal.c b/drivers/staging/epl/EplNmtuCal.c
deleted file mode 100644 (file)
index 92164c5..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for communication abstraction layer of the
-                NMT-Userspace-Module
-
-  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: EplNmtuCal.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.4 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                KEIL uVision 2
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/16 -k.t.:   start of the implementation
-
-****************************************************************************/
-
-#include "user/EplNmtuCal.h"
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplNmtkCalGetNmtState
-//
-// Description: return current NMT-State
-//              -> encapsulate access to kernelspace
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:     tEplNmtState = current NMT-State
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplNmtState EplNmtkCalGetNmtState(void)
-{
-       tEplNmtState NmtState;
-       // for test direkt call for EplNmtkGetNmtState()
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTK)) != 0)
-       NmtState = EplNmtkGetNmtState();
-#else
-       NmtState = 0;
-#endif
-       return NmtState;
-}
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:
-//
-// Description:
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-// EOF
diff --git a/drivers/staging/epl/EplObd.c b/drivers/staging/epl/EplObd.c
deleted file mode 100644 (file)
index 1e46323..0000000
+++ /dev/null
@@ -1,3192 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for api function of EplOBD-Module
-
-  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: EplObd.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.12 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                Microsoft VC7
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/02 k.t.:   start of the implementation, version 1.00
-                    ->based on CANopen OBD-Modul
-
-****************************************************************************/
-
-#include "EplInc.h"
-#include "kernel/EplObdk.h"    // function prototyps of the EplOBD-Modul
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDK)) != 0)
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-// float definitions and macros
-#define _SHIFTED_EXPONENT_MASK_SP   0xff
-#define _BIAS_SP                    126
-#define T_SP                        23
-#define EXPONENT_DENORM_SP          (-_BIAS_SP)
-#define BASE_TO_THE_T_SP            ((float) 8388608.0)
-#define GET_EXPONENT_SP(x)          ((((x) >> T_SP) & _SHIFTED_EXPONENT_MASK_SP) - _BIAS_SP)
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-// struct for instance table
-INSTANCE_TYPE_BEGIN EPL_MCO_DECL_INSTANCE_MEMBER()
-
-STATIC tEplObdInitParam m_ObdInitParam;
-STATIC tEplObdStoreLoadObjCallback m_fpStoreLoadObjCallback;
-
-INSTANCE_TYPE_END
-// decomposition of float
-typedef union {
-       tEplObdReal32 m_flRealPart;
-       int m_nIntegerPart;
-
-} tEplObdRealParts;
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-// This macro replace the unspecific pointer to an instance through
-// the modul specific type for the local instance table. This macro
-// must defined in each modul.
-//#define tEplPtrInstance             tEplInstanceInfo *
-
-EPL_MCO_DECL_INSTANCE_VAR()
-
-u8 abEplObdTrashObject_g[8];
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-EPL_MCO_DEFINE_INSTANCE_FCT()
-
-static tEplKernel EplObdCallObjectCallback(EPL_MCO_DECL_INSTANCE_PTR_
-                                          tEplObdCallback fpCallback_p,
-                                          tEplObdCbParam *pCbParam_p);
-
-static tEplObdSize EplObdGetDataSizeIntern(tEplObdSubEntryPtr pSubIndexEntry_p);
-
-static tEplObdSize EplObdGetStrLen(void *pObjData_p,
-                                  tEplObdSize ObjLen_p, tEplObdType ObjType_p);
-
-#if (EPL_OBD_CHECK_OBJECT_RANGE != FALSE)
-static tEplKernel EplObdCheckObjectRange(tEplObdSubEntryPtr pSubindexEntry_p,
-                                        void *pData_p);
-#endif
-
-static tEplKernel EplObdGetVarEntry(tEplObdSubEntryPtr pSubindexEntry_p,
-                                   tEplObdVarEntry **ppVarEntry_p);
-
-static tEplKernel EplObdGetEntry(EPL_MCO_DECL_INSTANCE_PTR_
-                                unsigned int uiIndex_p,
-                                unsigned int uiSubindex_p,
-                                tEplObdEntryPtr * ppObdEntry_p,
-                                tEplObdSubEntryPtr * ppObdSubEntry_p);
-
-static tEplObdSize EplObdGetObjectSize(tEplObdSubEntryPtr pSubIndexEntry_p);
-
-static tEplKernel EplObdGetIndexIntern(tEplObdInitParam *pInitParam_p,
-                                      unsigned int uiIndex_p,
-                                      tEplObdEntryPtr * ppObdEntry_p);
-
-static tEplKernel EplObdGetSubindexIntern(tEplObdEntryPtr pObdEntry_p,
-                                         unsigned int uiSubIndex_p,
-                                         tEplObdSubEntryPtr * ppObdSubEntry_p);
-
-static tEplKernel EplObdAccessOdPartIntern(EPL_MCO_DECL_INSTANCE_PTR_
-                                          tEplObdPart CurrentOdPart_p,
-                                          tEplObdEntryPtr pObdEnty_p,
-                                          tEplObdDir Direction_p);
-
-static void *EplObdGetObjectDefaultPtr(tEplObdSubEntryPtr pSubIndexEntry_p);
-static void *EplObdGetObjectCurrentPtr(tEplObdSubEntryPtr pSubIndexEntry_p);
-
-#if (EPL_OBD_USE_STORE_RESTORE != FALSE)
-
-static tEplKernel EplObdCallStoreCallback(EPL_MCO_DECL_INSTANCE_PTR_ tEplObdCbStoreParam *pCbStoreParam_p);
-
-#endif // (EPL_OBD_USE_STORE_RESTORE != FALSE)
-
-static void EplObdCopyObjectData(void *pDstData_p,
-                                void *pSrcData_p,
-                                tEplObdSize ObjSize_p, tEplObdType ObjType_p);
-
-void *EplObdGetObjectDataPtrIntern(tEplObdSubEntryPtr pSubindexEntry_p);
-
-static tEplKernel EplObdIsNumericalIntern(tEplObdSubEntryPtr pObdSubEntry_p,
-                                         BOOL * pfEntryNumerical_p);
-
-static tEplKernel EplObdWriteEntryPre(EPL_MCO_DECL_INSTANCE_PTR_ unsigned int uiIndex_p,
-                                     unsigned int uiSubIndex_p,
-                                     void *pSrcData_p,
-                                     void **ppDstData_p,
-                                     tEplObdSize Size_p,
-                                     tEplObdEntryPtr *ppObdEntry_p,
-                                     tEplObdSubEntryPtr *ppSubEntry_p,
-                                     tEplObdCbParam *pCbParam_p,
-                                     tEplObdSize *pObdSize_p);
-
-static tEplKernel EplObdWriteEntryPost(EPL_MCO_DECL_INSTANCE_PTR_ tEplObdEntryPtr pObdEntry_p,
-                                      tEplObdSubEntryPtr pSubEntry_p,
-                                      tEplObdCbParam *pCbParam_p,
-                                      void *pSrcData_p,
-                                      void *pDstData_p,
-                                      tEplObdSize ObdSize_p);
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdInit()
-//
-// Description: initializes the first instance
-//
-// Parameters:  pInitParam_p    = init parameter
-//
-// Return:      tEplKernel      =   errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplObdInit(EPL_MCO_DECL_PTR_INSTANCE_PTR_ tEplObdInitParam *pInitParam_p)
-{
-
-       tEplKernel Ret;
-       EPL_MCO_DELETE_INSTANCE_TABLE();
-
-       if (pInitParam_p == NULL) {
-               Ret = kEplSuccessful;
-               goto Exit;
-       }
-
-       Ret = EplObdAddInstance(EPL_MCO_PTR_INSTANCE_PTR_ pInitParam_p);
-
-      Exit:
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdAddInstance()
-//
-// Description: adds a new instance
-//
-// Parameters:  pInitParam_p
-//
-// Return:      tEplKernel
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplObdAddInstance(EPL_MCO_DECL_PTR_INSTANCE_PTR_ tEplObdInitParam *pInitParam_p)
-{
-
-       EPL_MCO_DECL_INSTANCE_PTR_LOCAL tEplKernel Ret;
-
-       // check if pointer to instance pointer valid
-       // get free instance and set the globale instance pointer
-       // set also the instance addr to parameterlist
-       EPL_MCO_CHECK_PTR_INSTANCE_PTR();
-       EPL_MCO_GET_FREE_INSTANCE_PTR();
-       EPL_MCO_SET_PTR_INSTANCE_PTR();
-
-       // save init parameters
-       EPL_MEMCPY(&EPL_MCO_GLB_VAR(m_ObdInitParam), pInitParam_p,
-                  sizeof(tEplObdInitParam));
-
-       // clear callback function for command LOAD and STORE
-       EPL_MCO_GLB_VAR(m_fpStoreLoadObjCallback) = NULL;
-
-       // sign instance as used
-       EPL_MCO_WRITE_INSTANCE_STATE(kStateUsed);
-
-       // initialize object dictionary
-       // so all all VarEntries will be initialized to trash object and default values will be set to current data
-       Ret = EplObdAccessOdPart(EPL_MCO_INSTANCE_PTR_
-                                kEplObdPartAll, kEplObdDirInit);
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdDeleteInstance()
-//
-// Description: delete instance
-//
-// Parameters:  EPL_MCO_DECL_INSTANCE_PTR
-//
-// Return:      tEplKernel
-//
-// State:
-//
-//---------------------------------------------------------------------------
-#if (EPL_USE_DELETEINST_FUNC != FALSE)
-tEplKernel EplObdDeleteInstance(EPL_MCO_DECL_INSTANCE_PTR)
-{
-       // check for all API function if instance is valid
-       EPL_MCO_CHECK_INSTANCE_STATE();
-
-       // sign instance as unused
-       EPL_MCO_WRITE_INSTANCE_STATE(kStateUnused);
-
-       return kEplSuccessful;
-
-}
-#endif // (EPL_USE_DELETEINST_FUNC != FALSE)
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdWriteEntry()
-//
-// Description: Function writes data to an OBD entry. Strings
-//              are stored with added '\0' character.
-//
-// Parameters:  EPL_MCO_DECL_INSTANCE_PTR_
-//              uiIndex_p       =   Index of the OD entry
-//              uiSubIndex_p    =   Subindex of the OD Entry
-//              pSrcData_p      =   Pointer to the data to write
-//              Size_p          =   Size of the data in Byte
-//
-// Return:      tEplKernel      =   Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplObdWriteEntry(EPL_MCO_DECL_INSTANCE_PTR_ unsigned int uiIndex_p,
-                           unsigned int uiSubIndex_p,
-                           void *pSrcData_p, tEplObdSize Size_p)
-{
-
-       tEplKernel Ret;
-       tEplObdEntryPtr pObdEntry;
-       tEplObdSubEntryPtr pSubEntry;
-       tEplObdCbParam CbParam;
-       void *pDstData;
-       tEplObdSize ObdSize;
-
-       Ret = EplObdWriteEntryPre(EPL_MCO_INSTANCE_PTR_
-                                 uiIndex_p,
-                                 uiSubIndex_p,
-                                 pSrcData_p,
-                                 &pDstData,
-                                 Size_p,
-                                 &pObdEntry, &pSubEntry, &CbParam, &ObdSize);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-
-       Ret = EplObdWriteEntryPost(EPL_MCO_INSTANCE_PTR_
-                                  pObdEntry,
-                                  pSubEntry,
-                                  &CbParam, pSrcData_p, pDstData, ObdSize);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-
-      Exit:
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdReadEntry()
-//
-// Description: The function reads an object entry. The application
-//              can always read the data even if attrib kEplObdAccRead
-//              is not set. The attrib is only checked up for SDO transfer.
-//
-// Parameters:  EPL_MCO_DECL_INSTANCE_PTR_
-//              uiIndex_p       = Index oof the OD entry to read
-//              uiSubIndex_p    = Subindex to read
-//              pDstData_p      = pointer to the buffer for data
-//              Offset_p        = offset in data for read access
-//              pSize_p         = IN: Size of the buffer
-//                                OUT: number of readed Bytes
-//
-// Return:      tEplKernel
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplObdReadEntry(EPL_MCO_DECL_INSTANCE_PTR_ unsigned int uiIndex_p,
-                          unsigned int uiSubIndex_p,
-                          void *pDstData_p, tEplObdSize *pSize_p)
-{
-
-       tEplKernel Ret;
-       tEplObdEntryPtr pObdEntry;
-       tEplObdSubEntryPtr pSubEntry;
-       tEplObdCbParam CbParam;
-       void *pSrcData;
-       tEplObdSize ObdSize;
-
-       // check for all API function if instance is valid
-       EPL_MCO_CHECK_INSTANCE_STATE();
-
-       ASSERT(pDstData_p != NULL);
-       ASSERT(pSize_p != NULL);
-
-       // get address of index and subindex entry
-       Ret = EplObdGetEntry(EPL_MCO_INSTANCE_PTR_
-                            uiIndex_p, uiSubIndex_p, &pObdEntry, &pSubEntry);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // get pointer to object data
-       pSrcData = EplObdGetObjectDataPtrIntern(pSubEntry);
-
-       // check source pointer
-       if (pSrcData == NULL) {
-               Ret = kEplObdReadViolation;
-               goto Exit;
-       }
-       //------------------------------------------------------------------------
-       // address of source data to structure of callback parameters
-       // so callback function can change this data before reading
-       CbParam.m_uiIndex = uiIndex_p;
-       CbParam.m_uiSubIndex = uiSubIndex_p;
-       CbParam.m_pArg = pSrcData;
-       CbParam.m_ObdEvent = kEplObdEvPreRead;
-       Ret = EplObdCallObjectCallback(EPL_MCO_INSTANCE_PTR_
-                                      pObdEntry->m_fpCallback, &CbParam);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // get size of data and check if application has reserved enough memory
-       ObdSize = EplObdGetDataSizeIntern(pSubEntry);
-       // check if offset given and calc correct number of bytes to read
-       if (*pSize_p < ObdSize) {
-               Ret = kEplObdValueLengthError;
-               goto Exit;
-       }
-       // read value from object
-       EPL_MEMCPY(pDstData_p, pSrcData, ObdSize);
-       *pSize_p = ObdSize;
-
-       // write address of destination data to structure of callback parameters
-       // so callback function can change this data after reading
-       CbParam.m_pArg = pDstData_p;
-       CbParam.m_ObdEvent = kEplObdEvPostRead;
-       Ret = EplObdCallObjectCallback(EPL_MCO_INSTANCE_PTR_
-                                      pObdEntry->m_fpCallback, &CbParam);
-
-      Exit:
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdAccessOdPart()
-//
-// Description: restores default values of one part of OD
-//
-// Parameters:  ObdPart_p
-//              Direction_p
-//
-// Return:      tEplKernel
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplObdAccessOdPart(EPL_MCO_DECL_INSTANCE_PTR_ tEplObdPart ObdPart_p,
-                             tEplObdDir Direction_p)
-{
-
-       tEplKernel Ret = kEplSuccessful;
-       BOOL fPartFount;
-       tEplObdEntryPtr pObdEntry;
-
-       // check for all API function if instance is valid
-       EPL_MCO_CHECK_INSTANCE_STATE();
-
-       //  part always has to be unequal to NULL
-       pObdEntry = EPL_MCO_GLB_VAR(m_ObdInitParam.m_pPart);
-       ASSERTMSG(pObdEntry != NULL,
-                 "EplObdAccessOdPart(): no  OD part is defined!\n");
-
-       // if ObdPart_p is not valid fPartFound keeps FALSE and function returns kEplObdIllegalPart
-       fPartFount = FALSE;
-
-       // access to  part
-       if ((ObdPart_p & kEplObdPartGen) != 0) {
-               fPartFount = TRUE;
-
-               Ret = EplObdAccessOdPartIntern(EPL_MCO_INSTANCE_PTR_
-                                              kEplObdPartGen, pObdEntry,
-                                              Direction_p);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-       }
-       // access to manufacturer part
-       pObdEntry = EPL_MCO_GLB_VAR(m_ObdInitParam.m_pManufacturerPart);
-
-       if (((ObdPart_p & kEplObdPartMan) != 0) && (pObdEntry != NULL)) {
-               fPartFount = TRUE;
-
-               Ret = EplObdAccessOdPartIntern(EPL_MCO_INSTANCE_PTR_
-                                              kEplObdPartMan, pObdEntry,
-                                              Direction_p);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-       }
-       // access to device part
-       pObdEntry = EPL_MCO_GLB_VAR(m_ObdInitParam.m_pDevicePart);
-
-       if (((ObdPart_p & kEplObdPartDev) != 0) && (pObdEntry != NULL)) {
-               fPartFount = TRUE;
-
-               Ret = EplObdAccessOdPartIntern(EPL_MCO_INSTANCE_PTR_
-                                              kEplObdPartDev, pObdEntry,
-                                              Direction_p);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-       }
-#if (defined (EPL_OBD_USER_OD) && (EPL_OBD_USER_OD != FALSE))
-       {
-               // access to user part
-               pObdEntry = EPL_MCO_GLB_VAR(m_ObdInitParam.m_pUserPart);
-
-               if (((ObdPart_p & kEplObdPartUsr) != 0) && (pObdEntry != NULL)) {
-                       fPartFount = TRUE;
-
-                       Ret = EplObdAccessOdPartIntern(EPL_MCO_INSTANCE_PTR_
-                                                      kEplObdPartUsr,
-                                                      pObdEntry, Direction_p);
-                       if (Ret != kEplSuccessful) {
-                               goto Exit;
-                       }
-               }
-       }
-#endif
-
-       // no access to an OD part was done? illegal OD part was specified!
-       if (fPartFount == FALSE) {
-               Ret = kEplObdIllegalPart;
-       }
-
-      Exit:
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdDefineVar()
-//
-// Description: defines a variable in OD
-//
-// Parameters:  pEplVarParam_p
-//
-// Return:      tEplKernel
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplObdDefineVar(EPL_MCO_DECL_INSTANCE_PTR_ tEplVarParam *pVarParam_p)
-{
-
-       tEplKernel Ret;
-       tEplObdVarEntry *pVarEntry;
-       tEplVarParamValid VarValid;
-       tEplObdSubEntryPtr pSubindexEntry;
-
-       // check for all API function if instance is valid
-       EPL_MCO_CHECK_INSTANCE_STATE();
-
-       ASSERT(pVarParam_p != NULL);    // is not allowed to be NULL
-
-       // get address of subindex entry
-       Ret = EplObdGetEntry(EPL_MCO_INSTANCE_PTR_
-                            pVarParam_p->m_uiIndex,
-                            pVarParam_p->m_uiSubindex, NULL, &pSubindexEntry);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // get var entry
-       Ret = EplObdGetVarEntry(pSubindexEntry, &pVarEntry);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-
-       VarValid = pVarParam_p->m_ValidFlag;
-
-       // copy only this values, which valid flag is set
-       if ((VarValid & kVarValidSize) != 0) {
-               if (pSubindexEntry->m_Type != kEplObdTypDomain) {
-                       tEplObdSize DataSize;
-
-                       // check passed size parameter
-                       DataSize = EplObdGetObjectSize(pSubindexEntry);
-                       if (DataSize != pVarParam_p->m_Size) {  // size of variable does not match
-                               Ret = kEplObdValueLengthError;
-                               goto Exit;
-                       }
-               } else {        // size can be set only for objects of type DOMAIN
-                       pVarEntry->m_Size = pVarParam_p->m_Size;
-               }
-       }
-
-       if ((VarValid & kVarValidData) != 0) {
-               pVarEntry->m_pData = pVarParam_p->m_pData;
-       }
-/*
-    #if (EPL_PDO_USE_STATIC_MAPPING == FALSE)
-    {
-        if ((VarValid & kVarValidCallback) != 0)
-        {
-           pVarEntry->m_fpCallback = pVarParam_p->m_fpCallback;
-        }
-
-        if ((VarValid & kVarValidArg) != 0)
-        {
-           pVarEntry->m_pArg = pVarParam_p->m_pArg;
-        }
-    }
-    #endif
-*/
-       // Ret is already set to kEplSuccessful from ObdGetVarIntern()
-
-      Exit:
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdGetObjectDataPtr()
-//
-// Description: It returnes the current data pointer. But if object is an
-//              constant object it returnes the default pointer.
-//
-// Parameters:  uiIndex_p    =   Index of the entry
-//              uiSubindex_p =   Subindex of the entry
-//
-// Return:      void *    = pointer to object data
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-void *EplObdGetObjectDataPtr(EPL_MCO_DECL_INSTANCE_PTR_ unsigned int uiIndex_p,
-                            unsigned int uiSubIndex_p)
-{
-       tEplKernel Ret;
-       void *pData;
-       tEplObdEntryPtr pObdEntry;
-       tEplObdSubEntryPtr pObdSubEntry;
-
-       // get pointer to index structure
-       Ret = EplObdGetIndexIntern(&EPL_MCO_GLB_VAR(m_ObdInitParam),
-                                  uiIndex_p, &pObdEntry);
-       if (Ret != kEplSuccessful) {
-               pData = NULL;
-               goto Exit;
-       }
-       // get pointer to subindex structure
-       Ret = EplObdGetSubindexIntern(pObdEntry, uiSubIndex_p, &pObdSubEntry);
-       if (Ret != kEplSuccessful) {
-               pData = NULL;
-               goto Exit;
-       }
-       // get Datapointer
-       pData = EplObdGetObjectDataPtrIntern(pObdSubEntry);
-
-      Exit:
-       return pData;
-
-}
-
-#if (defined (EPL_OBD_USER_OD) && (EPL_OBD_USER_OD != FALSE))
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdRegisterUserOd()
-//
-// Description: function registers the user OD
-//
-// Parameters:  pUserOd_p   =pointer to user ODd
-//
-// Return:     tEplKernel = errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplObdRegisterUserOd(EPL_MCO_DECL_INSTANCE_PTR_ tEplObdEntryPtr pUserOd_p)
-{
-
-       EPL_MCO_CHECK_INSTANCE_STATE();
-
-       EPL_MCO_GLB_VAR(m_ObdInitParam.m_pUserPart) = pUserOd_p;
-
-       return kEplSuccessful;
-
-}
-
-#endif
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdInitVarEntry()
-//
-// Description: function to initialize VarEntry dependened on object type
-//
-// Parameters:  pVarEntry_p = pointer to var entry structure
-//              Type_p      = object type
-//              ObdSize_p   = size of object data
-//
-// Returns:     none
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-void EplObdInitVarEntry(EPL_MCO_DECL_INSTANCE_PTR_ tEplObdVarEntry *pVarEntry_p,
-                       tEplObdType Type_p, tEplObdSize ObdSize_p)
-{
-/*
-    #if (EPL_PDO_USE_STATIC_MAPPING == FALSE)
-    {
-        // reset pointer to VAR callback and argument
-        pVarEntry_p->m_fpCallback  = NULL;
-        pVarEntry_p->m_pArg = NULL;
-    }
-    #endif
-*/
-
-// 10-dec-2004 r.d.: this function will not be used for strings
-       if ((Type_p == kEplObdTypDomain))
-//         (bType_p == kEplObdTypVString) /* ||
-//         (bType_p == kEplObdTypOString) ||
-//         (bType_p == kEplObdTypUString)    */ )
-       {
-               // variables which are defined as DOMAIN or VSTRING should not point to
-               // trash object, because this trash object contains only 8 bytes. DOMAINS or
-               // STRINGS can be longer.
-               pVarEntry_p->m_pData = NULL;
-               pVarEntry_p->m_Size = 0;
-       } else {
-               // set address to variable data to trash object
-               // This prevents an access violation if user forgets to call EplObdDefineVar()
-               // for this variable but mappes it in a PDO.
-               pVarEntry_p->m_pData = &abEplObdTrashObject_g[0];
-               pVarEntry_p->m_Size = ObdSize_p;
-       }
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdGetDataSize()
-//
-// Description: function to initialize VarEntry dependened on object type
-//
-//              gets the data size of an object
-//              for string objects it returnes the string length
-//
-// Parameters:  EPL_MCO_DECL_INSTANCE_PTR_ = Instancepointer
-//              uiIndex_p   =   Index
-//              uiSubIndex_p=   Subindex
-//
-// Return:      tEplObdSize
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplObdSize EplObdGetDataSize(EPL_MCO_DECL_INSTANCE_PTR_ unsigned int uiIndex_p,
-                             unsigned int uiSubIndex_p)
-{
-       tEplKernel Ret;
-       tEplObdSize ObdSize;
-       tEplObdEntryPtr pObdEntry;
-       tEplObdSubEntryPtr pObdSubEntry;
-
-       // get pointer to index structure
-       Ret = EplObdGetIndexIntern(&EPL_MCO_GLB_VAR(m_ObdInitParam),
-                                  uiIndex_p, &pObdEntry);
-       if (Ret != kEplSuccessful) {
-               ObdSize = 0;
-               goto Exit;
-       }
-       // get pointer to subindex structure
-       Ret = EplObdGetSubindexIntern(pObdEntry, uiSubIndex_p, &pObdSubEntry);
-       if (Ret != kEplSuccessful) {
-               ObdSize = 0;
-               goto Exit;
-       }
-       // get size
-       ObdSize = EplObdGetDataSizeIntern(pObdSubEntry);
-      Exit:
-       return ObdSize;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdGetNodeId()
-//
-// Description: function returns nodeid from entry 0x1F93
-//
-//
-// Parameters:  EPL_MCO_DECL_INSTANCE_PTR = Instancepointer
-//
-// Return:      unsigned int = Node Id
-//
-// State:
-//
-//---------------------------------------------------------------------------
-unsigned int EplObdGetNodeId(EPL_MCO_DECL_INSTANCE_PTR)
-{
-       tEplKernel Ret;
-       tEplObdSize ObdSize;
-       u8 bNodeId;
-
-       bNodeId = 0;
-       ObdSize = sizeof(bNodeId);
-       Ret = EplObdReadEntry(EPL_MCO_PTR_INSTANCE_PTR_
-                             EPL_OBD_NODE_ID_INDEX,
-                             EPL_OBD_NODE_ID_SUBINDEX, &bNodeId, &ObdSize);
-       if (Ret != kEplSuccessful) {
-               bNodeId = EPL_C_ADR_INVALID;
-               goto Exit;
-       }
-
-      Exit:
-       return (unsigned int)bNodeId;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdSetNodeId()
-//
-// Description: function sets nodeid in entry 0x1F93
-//
-//
-// Parameters:  EPL_MCO_DECL_INSTANCE_PTR_ = Instancepointer
-//              uiNodeId_p  =   Node Id to set
-//              NodeIdType_p=   Type on which way the Node Id was set
-//
-// Return:      tEplKernel = Errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplObdSetNodeId(EPL_MCO_DECL_PTR_INSTANCE_PTR_ unsigned int uiNodeId_p,
-                          tEplObdNodeIdType NodeIdType_p)
-{
-       tEplKernel Ret;
-       tEplObdSize ObdSize;
-       u8 fHwBool;
-       u8 bNodeId;
-
-       // check Node Id
-       if (uiNodeId_p == EPL_C_ADR_INVALID) {
-               Ret = kEplInvalidNodeId;
-               goto Exit;
-       }
-       bNodeId = (u8) uiNodeId_p;
-       ObdSize = sizeof(u8);
-       // write NodeId to OD entry
-       Ret = EplObdWriteEntry(EPL_MCO_PTR_INSTANCE_PTR_
-                              EPL_OBD_NODE_ID_INDEX,
-                              EPL_OBD_NODE_ID_SUBINDEX, &bNodeId, ObdSize);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // set HWBOOL-Flag in Subindex EPL_OBD_NODE_ID_HWBOOL_SUBINDEX
-       switch (NodeIdType_p) {
-               // type unknown
-       case kEplObdNodeIdUnknown:
-               {
-                       fHwBool = OBD_FALSE;
-                       break;
-               }
-
-       case kEplObdNodeIdSoftware:
-               {
-                       fHwBool = OBD_FALSE;
-                       break;
-               }
-
-       case kEplObdNodeIdHardware:
-               {
-                       fHwBool = OBD_TRUE;
-                       break;
-               }
-
-       default:
-               {
-                       fHwBool = OBD_FALSE;
-               }
-
-       }                       // end of switch (NodeIdType_p)
-
-       // write flag
-       ObdSize = sizeof(fHwBool);
-       Ret = EplObdWriteEntry(EPL_MCO_PTR_INSTANCE_PTR
-                              EPL_OBD_NODE_ID_INDEX,
-                              EPL_OBD_NODE_ID_HWBOOL_SUBINDEX,
-                              &fHwBool, ObdSize);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdIsNumerical()
-//
-// Description: function checks if a entry is numerical or not
-//
-//
-// Parameters:  EPL_MCO_DECL_INSTANCE_PTR_ = Instancepointer
-//              uiIndex_p           = Index
-//              uiSubIndex_p        = Subindex
-//              pfEntryNumerical_p  = pointer to BOOL for returnvalue
-//                                  -> TRUE if entry a numerical value
-//                                  -> FALSE if entry not a numerical value
-//
-// Return:      tEplKernel = Errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplObdIsNumerical(EPL_MCO_DECL_INSTANCE_PTR_ unsigned int uiIndex_p,
-                            unsigned int uiSubIndex_p,
-                            BOOL *pfEntryNumerical_p)
-{
-       tEplKernel Ret;
-       tEplObdEntryPtr pObdEntry;
-       tEplObdSubEntryPtr pObdSubEntry;
-
-       // get pointer to index structure
-       Ret = EplObdGetIndexIntern(&EPL_MCO_GLB_VAR(m_ObdInitParam),
-                                  uiIndex_p, &pObdEntry);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // get pointer to subindex structure
-       Ret = EplObdGetSubindexIntern(pObdEntry, uiSubIndex_p, &pObdSubEntry);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-
-       Ret = EplObdIsNumericalIntern(pObdSubEntry, pfEntryNumerical_p);
-
-      Exit:
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdReadEntryToLe()
-//
-// Description: The function reads an object entry from the byteoder
-//              of the system to the little endian byteorder for numerical values.
-//              For other types a normal read will be processed. This is usefull for
-//              the PDO and SDO module. The application
-//              can always read the data even if attrib kEplObdAccRead
-//              is not set. The attrib is only checked up for SDO transfer.
-//
-// Parameters:  EPL_MCO_DECL_INSTANCE_PTR_
-//              uiIndex_p       = Index of the OD entry to read
-//              uiSubIndex_p    = Subindex to read
-//              pDstData_p      = pointer to the buffer for data
-//              Offset_p        = offset in data for read access
-//              pSize_p         = IN: Size of the buffer
-//                                OUT: number of readed Bytes
-//
-// Return:      tEplKernel
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplObdReadEntryToLe(EPL_MCO_DECL_INSTANCE_PTR_ unsigned int uiIndex_p,
-                              unsigned int uiSubIndex_p,
-                              void *pDstData_p, tEplObdSize *pSize_p)
-{
-       tEplKernel Ret;
-       tEplObdEntryPtr pObdEntry;
-       tEplObdSubEntryPtr pSubEntry;
-       tEplObdCbParam CbParam;
-       void *pSrcData;
-       tEplObdSize ObdSize;
-
-       // check for all API function if instance is valid
-       EPL_MCO_CHECK_INSTANCE_STATE();
-
-       ASSERT(pDstData_p != NULL);
-       ASSERT(pSize_p != NULL);
-
-       // get address of index and subindex entry
-       Ret = EplObdGetEntry(EPL_MCO_INSTANCE_PTR_
-                            uiIndex_p, uiSubIndex_p, &pObdEntry, &pSubEntry);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // get pointer to object data
-       pSrcData = EplObdGetObjectDataPtrIntern(pSubEntry);
-
-       // check source pointer
-       if (pSrcData == NULL) {
-               Ret = kEplObdReadViolation;
-               goto Exit;
-       }
-       //------------------------------------------------------------------------
-       // address of source data to structure of callback parameters
-       // so callback function can change this data before reading
-       CbParam.m_uiIndex = uiIndex_p;
-       CbParam.m_uiSubIndex = uiSubIndex_p;
-       CbParam.m_pArg = pSrcData;
-       CbParam.m_ObdEvent = kEplObdEvPreRead;
-       Ret = EplObdCallObjectCallback(EPL_MCO_INSTANCE_PTR_
-                                      pObdEntry->m_fpCallback, &CbParam);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // get size of data and check if application has reserved enough memory
-       ObdSize = EplObdGetDataSizeIntern(pSubEntry);
-       // check if offset given and calc correct number of bytes to read
-       if (*pSize_p < ObdSize) {
-               Ret = kEplObdValueLengthError;
-               goto Exit;
-       }
-       // check if numerical type
-       switch (pSubEntry->m_Type) {
-               //-----------------------------------------------
-               // types without ami
-       case kEplObdTypVString:
-       case kEplObdTypOString:
-       case kEplObdTypDomain:
-       default:
-               {
-                       // read value from object
-                       EPL_MEMCPY(pDstData_p, pSrcData, ObdSize);
-                       break;
-               }
-
-               //-----------------------------------------------
-               // numerical type which needs ami-write
-               // 8 bit or smaller values
-       case kEplObdTypBool:
-       case kEplObdTypInt8:
-       case kEplObdTypUInt8:
-               {
-                       AmiSetByteToLe(pDstData_p, *((u8 *) pSrcData));
-                       break;
-               }
-
-               // 16 bit values
-       case kEplObdTypInt16:
-       case kEplObdTypUInt16:
-               {
-                       AmiSetWordToLe(pDstData_p, *((u16 *) pSrcData));
-                       break;
-               }
-
-               // 24 bit values
-       case kEplObdTypInt24:
-       case kEplObdTypUInt24:
-               {
-                       AmiSetDword24ToLe(pDstData_p, *((u32 *) pSrcData));
-                       break;
-               }
-
-               // 32 bit values
-       case kEplObdTypInt32:
-       case kEplObdTypUInt32:
-       case kEplObdTypReal32:
-               {
-                       AmiSetDwordToLe(pDstData_p, *((u32 *) pSrcData));
-                       break;
-               }
-
-               // 40 bit values
-       case kEplObdTypInt40:
-       case kEplObdTypUInt40:
-               {
-                       AmiSetQword40ToLe(pDstData_p, *((u64 *) pSrcData));
-                       break;
-               }
-
-               // 48 bit values
-       case kEplObdTypInt48:
-       case kEplObdTypUInt48:
-               {
-                       AmiSetQword48ToLe(pDstData_p, *((u64 *) pSrcData));
-                       break;
-               }
-
-               // 56 bit values
-       case kEplObdTypInt56:
-       case kEplObdTypUInt56:
-               {
-                       AmiSetQword56ToLe(pDstData_p, *((u64 *) pSrcData));
-                       break;
-               }
-
-               // 64 bit values
-       case kEplObdTypInt64:
-       case kEplObdTypUInt64:
-       case kEplObdTypReal64:
-               {
-                       AmiSetQword64ToLe(pDstData_p, *((u64 *) pSrcData));
-                       break;
-               }
-
-               // time of day
-       case kEplObdTypTimeOfDay:
-       case kEplObdTypTimeDiff:
-               {
-                       AmiSetTimeOfDay(pDstData_p, ((tTimeOfDay *) pSrcData));
-                       break;
-               }
-
-       }                       // end of switch(pSubEntry->m_Type)
-
-       *pSize_p = ObdSize;
-
-       // write address of destination data to structure of callback parameters
-       // so callback function can change this data after reading
-       CbParam.m_pArg = pDstData_p;
-       CbParam.m_ObdEvent = kEplObdEvPostRead;
-       Ret = EplObdCallObjectCallback(EPL_MCO_INSTANCE_PTR_
-                                      pObdEntry->m_fpCallback, &CbParam);
-
-      Exit:
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdWriteEntryFromLe()
-//
-// Description: Function writes data to an OBD entry from a source with
-//              little endian byteorder to the od with system specuific
-//              byteorder. Not numerical values will only by copied. Strings
-//              are stored with added '\0' character.
-//
-// Parameters:  EPL_MCO_DECL_INSTANCE_PTR_
-//              uiIndex_p       =   Index of the OD entry
-//              uiSubIndex_p    =   Subindex of the OD Entry
-//              pSrcData_p      =   Pointer to the data to write
-//              Size_p          =   Size of the data in Byte
-//
-// Return:      tEplKernel      =   Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplObdWriteEntryFromLe(EPL_MCO_DECL_INSTANCE_PTR_ unsigned int uiIndex_p,
-                                 unsigned int uiSubIndex_p,
-                                 void *pSrcData_p, tEplObdSize Size_p)
-{
-       tEplKernel Ret;
-       tEplObdEntryPtr pObdEntry;
-       tEplObdSubEntryPtr pSubEntry;
-       tEplObdCbParam CbParam;
-       void *pDstData;
-       tEplObdSize ObdSize;
-       u64 qwBuffer;
-       void *pBuffer = &qwBuffer;
-
-       Ret = EplObdWriteEntryPre(EPL_MCO_INSTANCE_PTR_
-                                 uiIndex_p,
-                                 uiSubIndex_p,
-                                 pSrcData_p,
-                                 &pDstData,
-                                 Size_p,
-                                 &pObdEntry, &pSubEntry, &CbParam, &ObdSize);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-
-       // check if numerical type
-       switch (pSubEntry->m_Type) {
-               //-----------------------------------------------
-               // types without ami
-       default:
-               {               // do nothing, i.e. use the given source pointer
-                       pBuffer = pSrcData_p;
-                       break;
-               }
-
-               //-----------------------------------------------
-               // numerical type which needs ami-write
-               // 8 bit or smaller values
-       case kEplObdTypBool:
-       case kEplObdTypInt8:
-       case kEplObdTypUInt8:
-               {
-                       *((u8 *) pBuffer) = AmiGetByteFromLe(pSrcData_p);
-                       break;
-               }
-
-               // 16 bit values
-       case kEplObdTypInt16:
-       case kEplObdTypUInt16:
-               {
-                       *((u16 *) pBuffer) = AmiGetWordFromLe(pSrcData_p);
-                       break;
-               }
-
-               // 24 bit values
-       case kEplObdTypInt24:
-       case kEplObdTypUInt24:
-               {
-                       *((u32 *) pBuffer) = AmiGetDword24FromLe(pSrcData_p);
-                       break;
-               }
-
-               // 32 bit values
-       case kEplObdTypInt32:
-       case kEplObdTypUInt32:
-       case kEplObdTypReal32:
-               {
-                       *((u32 *) pBuffer) = AmiGetDwordFromLe(pSrcData_p);
-                       break;
-               }
-
-               // 40 bit values
-       case kEplObdTypInt40:
-       case kEplObdTypUInt40:
-               {
-                       *((u64 *) pBuffer) = AmiGetQword40FromLe(pSrcData_p);
-                       break;
-               }
-
-               // 48 bit values
-       case kEplObdTypInt48:
-       case kEplObdTypUInt48:
-               {
-                       *((u64 *) pBuffer) = AmiGetQword48FromLe(pSrcData_p);
-                       break;
-               }
-
-               // 56 bit values
-       case kEplObdTypInt56:
-       case kEplObdTypUInt56:
-               {
-                       *((u64 *) pBuffer) = AmiGetQword56FromLe(pSrcData_p);
-                       break;
-               }
-
-               // 64 bit values
-       case kEplObdTypInt64:
-       case kEplObdTypUInt64:
-       case kEplObdTypReal64:
-               {
-                       *((u64 *) pBuffer) = AmiGetQword64FromLe(pSrcData_p);
-                       break;
-               }
-
-               // time of day
-       case kEplObdTypTimeOfDay:
-       case kEplObdTypTimeDiff:
-               {
-                       AmiGetTimeOfDay(pBuffer, ((tTimeOfDay *) pSrcData_p));
-                       break;
-               }
-
-       }                       // end of switch(pSubEntry->m_Type)
-
-       Ret = EplObdWriteEntryPost(EPL_MCO_INSTANCE_PTR_
-                                  pObdEntry,
-                                  pSubEntry,
-                                  &CbParam, pBuffer, pDstData, ObdSize);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-
-      Exit:
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdGetAccessType()
-//
-// Description: Function returns accesstype of the entry
-//
-// Parameters:  EPL_MCO_DECL_INSTANCE_PTR_
-//              uiIndex_p       =   Index of the OD entry
-//              uiSubIndex_p    =   Subindex of the OD Entry
-//              pAccessTyp_p    =   pointer to buffer to store accesstype
-//
-// Return:      tEplKernel     =   errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplObdGetAccessType(EPL_MCO_DECL_INSTANCE_PTR_ unsigned int uiIndex_p,
-                              unsigned int uiSubIndex_p,
-                              tEplObdAccess *pAccessTyp_p)
-{
-       tEplKernel Ret;
-       tEplObdEntryPtr pObdEntry;
-       tEplObdSubEntryPtr pObdSubEntry;
-
-       // get pointer to index structure
-       Ret = EplObdGetIndexIntern(&EPL_MCO_GLB_VAR(m_ObdInitParam),
-                                  uiIndex_p, &pObdEntry);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // get pointer to subindex structure
-       Ret = EplObdGetSubindexIntern(pObdEntry, uiSubIndex_p, &pObdSubEntry);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // get accessType
-       *pAccessTyp_p = pObdSubEntry->m_Access;
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdSearchVarEntry()
-//
-// Description: gets variable from OD
-//
-// Parameters:  uiIndex_p       =   index of the var entry to search
-//              uiSubindex_p    =   subindex of var entry to search
-//              ppVarEntry_p    =   pointer to the pointer to the varentry
-//
-// Return:      tEplKernel
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplObdSearchVarEntry(EPL_MCO_DECL_INSTANCE_PTR_ unsigned int uiIndex_p,
-                               unsigned int uiSubindex_p,
-                               tEplObdVarEntry **ppVarEntry_p)
-{
-
-       tEplKernel Ret;
-       tEplObdSubEntryPtr pSubindexEntry;
-
-       // check for all API function if instance is valid
-       EPL_MCO_CHECK_INSTANCE_STATE();
-
-       // get address of subindex entry
-       Ret = EplObdGetEntry(EPL_MCO_INSTANCE_PTR_
-                            uiIndex_p, uiSubindex_p, NULL, &pSubindexEntry);
-       if (Ret == kEplSuccessful) {
-               // get var entry
-               Ret = EplObdGetVarEntry(pSubindexEntry, ppVarEntry_p);
-       }
-
-       return Ret;
-
-}
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   D E F I N I T I O N S                          //
-//                                                                         //
-//=========================================================================//
-
-EPL_MCO_DECL_INSTANCE_FCT()
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdCallObjectCallback()
-//
-// Description: calls callback function of an object or of a variable
-//
-// Parameters:  fpCallback_p
-//              pCbParam_p
-//
-// Return:      tEplKernel
-//
-// State:
-//
-//---------------------------------------------------------------------------
-static tEplKernel EplObdCallObjectCallback(EPL_MCO_DECL_INSTANCE_PTR_
-                                          tEplObdCallback fpCallback_p,
-                                          tEplObdCbParam *pCbParam_p)
-{
-
-       tEplKernel Ret;
-       tEplObdCallback fpCallback;
-
-       // check for all API function if instance is valid
-       EPL_MCO_CHECK_INSTANCE_STATE();
-
-       ASSERT(pCbParam_p != NULL);
-
-       Ret = kEplSuccessful;
-
-       // check address of callback function before calling it
-       if (fpCallback_p != NULL) {
-               // KEIL C51 V6.01 has a bug.
-               // Therefore the parameter fpCallback_p has to be copied in local variable fpCallback.
-               fpCallback = fpCallback_p;
-
-               // call callback function for this object
-               Ret = fpCallback(EPL_MCO_INSTANCE_PARAM_IDX_()
-                                pCbParam_p);
-       }
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdGetDataSizeIntern()
-//
-// Description: gets the data size of an object
-//              for string objects it returnes the string length
-//
-// Parameters:  pSubIndexEntry_p
-//
-// Return:      tEplObdSize
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplObdSize EplObdGetDataSizeIntern(tEplObdSubEntryPtr pSubIndexEntry_p)
-{
-
-       tEplObdSize DataSize;
-       void *pData;
-
-       // If OD entry is defined by macro EPL_OBD_SUBINDEX_ROM_VSTRING
-       // then the current pointer is always NULL. The function
-       // returns the length of default string.
-       DataSize = EplObdGetObjectSize(pSubIndexEntry_p);
-
-       if (pSubIndexEntry_p->m_Type == kEplObdTypVString) {
-               // The pointer to current value can be received from EplObdGetObjectCurrentPtr()
-               pData = ((void *)EplObdGetObjectCurrentPtr(pSubIndexEntry_p));
-               if (pData != NULL) {
-                       DataSize =
-                           EplObdGetStrLen((void *)pData, DataSize,
-                                           pSubIndexEntry_p->m_Type);
-               }
-
-       }
-
-       return DataSize;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdGetStrLen()
-//
-// Description: The function calculates the length of string. The '\0'
-//              character is included!!
-//
-// Parameters:  pObjData_p          = pointer to string
-//              ObjLen_p            = max. length of objectr entry
-//              bObjType_p          = object type (VSTRING, ...)
-//
-// Returns:     string length + 1
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplObdSize EplObdGetStrLen(void *pObjData_p,
-                                  tEplObdSize ObjLen_p, tEplObdType ObjType_p)
-{
-
-       tEplObdSize StrLen = 0;
-       u8 *pbString;
-
-       if (pObjData_p == NULL) {
-               goto Exit;
-       }
-       //----------------------------------------
-       // Visible String: data format byte
-       if (ObjType_p == kEplObdTypVString) {
-               pbString = pObjData_p;
-
-               for (StrLen = 0; StrLen < ObjLen_p; StrLen++) {
-                       if (*pbString == '\0') {
-                               StrLen++;
-                               break;
-                       }
-
-                       pbString++;
-               }
-       }
-       //----------------------------------------
-       // other string types ...
-
-      Exit:
-       return (StrLen);
-
-}
-
-#if (EPL_OBD_CHECK_OBJECT_RANGE != FALSE)
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdCheckObjectRange()
-//
-// Description: function to check value range of object data
-//
-// NOTICE: The pointer of data (pData_p) must point out to an even address,
-//         if ObjType is unequal to kEplObdTypInt8 or kEplObdTypUInt8! But it is
-//         always realiced because pointer m_pDefault points always to an
-//         array of the SPECIFIED type.
-//
-// Parameters:  pSubindexEntry_p
-//              pData_p
-//
-// Return:      tEplKernel
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplObdCheckObjectRange(tEplObdSubEntryPtr pSubindexEntry_p,
-                                        void *pData_p)
-{
-
-       tEplKernel Ret;
-       void *pRangeData;
-
-       ASSERTMSG(pSubindexEntry_p != NULL,
-                 "EplObdCheckObjectRange(): no address to subindex struct!\n");
-
-       Ret = kEplSuccessful;
-
-       // check if data range has to be checked
-       if ((pSubindexEntry_p->m_Access & kEplObdAccRange) == 0) {
-               goto Exit;
-       }
-       // get address of default data
-       pRangeData = pSubindexEntry_p->m_pDefault;
-
-       // jump to called object type
-       switch ((tEplObdType) pSubindexEntry_p->m_Type) {
-               // -----------------------------------------------------------------
-               // ObdType kEplObdTypBool will not be checked because there are only
-               // two possible values 0 or 1.
-
-               // -----------------------------------------------------------------
-               // ObdTypes which has to be check up because numerical values
-       case kEplObdTypInt8:
-
-               // switch to lower limit
-               pRangeData = ((tEplObdInteger8 *) pRangeData) + 1;
-
-               // check if value is to low
-               if (*((tEplObdInteger8 *) pData_p) <
-                   *((tEplObdInteger8 *) pRangeData)) {
-                       Ret = kEplObdValueTooLow;
-                       break;
-               }
-               // switch to higher limit
-               pRangeData = ((tEplObdInteger8 *) pRangeData) + 1;
-
-               // check if value is to high
-               if (*((tEplObdInteger8 *) pData_p) >
-                   *((tEplObdInteger8 *) pRangeData)) {
-                       Ret = kEplObdValueTooHigh;
-               }
-
-               break;
-
-       case kEplObdTypUInt8:
-
-               // switch to lower limit
-               pRangeData = ((tEplObdUnsigned8 *) pRangeData) + 1;
-
-               // check if value is to low
-               if (*((tEplObdUnsigned8 *) pData_p) <
-                   *((tEplObdUnsigned8 *) pRangeData)) {
-                       Ret = kEplObdValueTooLow;
-                       break;
-               }
-               // switch to higher limit
-               pRangeData = ((tEplObdUnsigned8 *) pRangeData) + 1;
-
-               // check if value is to high
-               if (*((tEplObdUnsigned8 *) pData_p) >
-                   *((tEplObdUnsigned8 *) pRangeData)) {
-                       Ret = kEplObdValueTooHigh;
-               }
-
-               break;
-
-       case kEplObdTypInt16:
-
-               // switch to lower limit
-               pRangeData = ((tEplObdInteger16 *) pRangeData) + 1;
-
-               // check if value is to low
-               if (*((tEplObdInteger16 *) pData_p) <
-                   *((tEplObdInteger16 *) pRangeData)) {
-                       Ret = kEplObdValueTooLow;
-                       break;
-               }
-               // switch to higher limit
-               pRangeData = ((tEplObdInteger16 *) pRangeData) + 1;
-
-               // check if value is to high
-               if (*((tEplObdInteger16 *) pData_p) >
-                   *((tEplObdInteger16 *) pRangeData)) {
-                       Ret = kEplObdValueTooHigh;
-               }
-
-               break;
-
-       case kEplObdTypUInt16:
-
-               // switch to lower limit
-               pRangeData = ((tEplObdUnsigned16 *) pRangeData) + 1;
-
-               // check if value is to low
-               if (*((tEplObdUnsigned16 *) pData_p) <
-                   *((tEplObdUnsigned16 *) pRangeData)) {
-                       Ret = kEplObdValueTooLow;
-                       break;
-               }
-               // switch to higher limit
-               pRangeData = ((tEplObdUnsigned16 *) pRangeData) + 1;
-
-               // check if value is to high
-               if (*((tEplObdUnsigned16 *) pData_p) >
-                   *((tEplObdUnsigned16 *) pRangeData)) {
-                       Ret = kEplObdValueTooHigh;
-               }
-
-               break;
-
-       case kEplObdTypInt32:
-
-               // switch to lower limit
-               pRangeData = ((tEplObdInteger32 *) pRangeData) + 1;
-
-               // check if value is to low
-               if (*((tEplObdInteger32 *) pData_p) <
-                   *((tEplObdInteger32 *) pRangeData)) {
-                       Ret = kEplObdValueTooLow;
-                       break;
-               }
-               // switch to higher limit
-               pRangeData = ((tEplObdInteger32 *) pRangeData) + 1;
-
-               // check if value is to high
-               if (*((tEplObdInteger32 *) pData_p) >
-                   *((tEplObdInteger32 *) pRangeData)) {
-                       Ret = kEplObdValueTooHigh;
-               }
-
-               break;
-
-       case kEplObdTypUInt32:
-
-               // switch to lower limit
-               pRangeData = ((tEplObdUnsigned32 *) pRangeData) + 1;
-
-               // check if value is to low
-               if (*((tEplObdUnsigned32 *) pData_p) <
-                   *((tEplObdUnsigned32 *) pRangeData)) {
-                       Ret = kEplObdValueTooLow;
-                       break;
-               }
-               // switch to higher limit
-               pRangeData = ((tEplObdUnsigned32 *) pRangeData) + 1;
-
-               // check if value is to high
-               if (*((tEplObdUnsigned32 *) pData_p) >
-                   *((tEplObdUnsigned32 *) pRangeData)) {
-                       Ret = kEplObdValueTooHigh;
-               }
-
-               break;
-
-       case kEplObdTypReal32:
-
-               // switch to lower limit
-               pRangeData = ((tEplObdReal32 *) pRangeData) + 1;
-
-               // check if value is to low
-               if (*((tEplObdReal32 *) pData_p) <
-                   *((tEplObdReal32 *) pRangeData)) {
-                       Ret = kEplObdValueTooLow;
-                       break;
-               }
-               // switch to higher limit
-               pRangeData = ((tEplObdReal32 *) pRangeData) + 1;
-
-               // check if value is to high
-               if (*((tEplObdReal32 *) pData_p) >
-                   *((tEplObdReal32 *) pRangeData)) {
-                       Ret = kEplObdValueTooHigh;
-               }
-
-               break;
-
-               // -----------------------------------------------------------------
-       case kEplObdTypInt40:
-       case kEplObdTypInt48:
-       case kEplObdTypInt56:
-       case kEplObdTypInt64:
-
-               // switch to lower limit
-               pRangeData = ((signed u64 *)pRangeData) + 1;
-
-               // check if value is to low
-               if (*((signed u64 *)pData_p) < *((signed u64 *)pRangeData)) {
-                       Ret = kEplObdValueTooLow;
-                       break;
-               }
-               // switch to higher limit
-               pRangeData = ((signed u64 *)pRangeData) + 1;
-
-               // check if value is to high
-               if (*((signed u64 *)pData_p) > *((signed u64 *)pRangeData)) {
-                       Ret = kEplObdValueTooHigh;
-               }
-
-               break;
-
-               // -----------------------------------------------------------------
-       case kEplObdTypUInt40:
-       case kEplObdTypUInt48:
-       case kEplObdTypUInt56:
-       case kEplObdTypUInt64:
-
-               // switch to lower limit
-               pRangeData = ((unsigned u64 *)pRangeData) + 1;
-
-               // check if value is to low
-               if (*((unsigned u64 *)pData_p) <
-                   *((unsigned u64 *)pRangeData)) {
-                       Ret = kEplObdValueTooLow;
-                       break;
-               }
-               // switch to higher limit
-               pRangeData = ((unsigned u64 *)pRangeData) + 1;
-
-               // check if value is to high
-               if (*((unsigned u64 *)pData_p) >
-                   *((unsigned u64 *)pRangeData)) {
-                       Ret = kEplObdValueTooHigh;
-               }
-
-               break;
-
-               // -----------------------------------------------------------------
-       case kEplObdTypReal64:
-
-               // switch to lower limit
-               pRangeData = ((tEplObdReal64 *) pRangeData) + 1;
-
-               // check if value is to low
-               if (*((tEplObdReal64 *) pData_p) <
-                   *((tEplObdReal64 *) pRangeData)) {
-                       Ret = kEplObdValueTooLow;
-                       break;
-               }
-               // switch to higher limit
-               pRangeData = ((tEplObdReal64 *) pRangeData) + 1;
-
-               // check if value is to high
-               if (*((tEplObdReal64 *) pData_p) >
-                   *((tEplObdReal64 *) pRangeData)) {
-                       Ret = kEplObdValueTooHigh;
-               }
-
-               break;
-
-               // -----------------------------------------------------------------
-       case kEplObdTypTimeOfDay:
-       case kEplObdTypTimeDiff:
-               break;
-
-               // -----------------------------------------------------------------
-               // ObdTypes kEplObdTypXString and kEplObdTypDomain can not be checkt because
-               // they have no numerical value.
-       default:
-
-               Ret = kEplObdUnknownObjectType;
-               break;
-       }
-
-      Exit:
-
-       return Ret;
-
-}
-#endif // (EPL_OBD_CHECK_OBJECT_RANGE != FALSE)
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdWriteEntryPre()
-//
-// Description: Function prepares write of data to an OBD entry. Strings
-//              are stored with added '\0' character.
-//
-// Parameters:  EPL_MCO_DECL_INSTANCE_PTR_
-//              uiIndex_p       =   Index of the OD entry
-//              uiSubIndex_p    =   Subindex of the OD Entry
-//              pSrcData_p      =   Pointer to the data to write
-//              Size_p          =   Size of the data in Byte
-//
-// Return:      tEplKernel      =   Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplObdWriteEntryPre(EPL_MCO_DECL_INSTANCE_PTR_ unsigned int uiIndex_p,
-                                     unsigned int uiSubIndex_p,
-                                     void *pSrcData_p,
-                                     void **ppDstData_p,
-                                     tEplObdSize Size_p,
-                                     tEplObdEntryPtr *ppObdEntry_p,
-                                     tEplObdSubEntryPtr *ppSubEntry_p,
-                                     tEplObdCbParam *pCbParam_p,
-                                     tEplObdSize *pObdSize_p)
-{
-
-       tEplKernel Ret;
-       tEplObdEntryPtr pObdEntry;
-       tEplObdSubEntryPtr pSubEntry;
-       tEplObdAccess Access;
-       void *pDstData;
-       tEplObdSize ObdSize;
-       BOOL fEntryNumerical;
-
-#if (EPL_OBD_USE_STRING_DOMAIN_IN_RAM != FALSE)
-       tEplObdVStringDomain MemVStringDomain;
-       void *pCurrData;
-#endif
-
-       // check for all API function if instance is valid
-       EPL_MCO_CHECK_INSTANCE_STATE();
-
-       ASSERT(pSrcData_p != NULL);     // should never be NULL
-
-       //------------------------------------------------------------------------
-       // get address of index and subindex entry
-       Ret = EplObdGetEntry(EPL_MCO_INSTANCE_PTR_
-                            uiIndex_p, uiSubIndex_p, &pObdEntry, &pSubEntry);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // get pointer to object data
-       pDstData = (void *)EplObdGetObjectDataPtrIntern(pSubEntry);
-
-       Access = (tEplObdAccess) pSubEntry->m_Access;
-
-       // check access for write
-       // access violation if adress to current value is NULL
-       if (((Access & kEplObdAccConst) != 0) || (pDstData == NULL)) {
-               Ret = kEplObdAccessViolation;
-               goto Exit;
-       }
-       //------------------------------------------------------------------------
-       // get size of object
-       // -as ObdSize = ObdGetObjectSize (pSubEntry);
-
-       //------------------------------------------------------------------------
-       // To use the same callback function for ObdWriteEntry as well as for
-       // an SDO download call at first (kEplObdEvPre...) the callback function
-       // with the argument pointer to object size.
-       pCbParam_p->m_uiIndex = uiIndex_p;
-       pCbParam_p->m_uiSubIndex = uiSubIndex_p;
-
-       // Because object size and object pointer are
-       // adapted by user callback function, re-read
-       // this values.
-       ObdSize = EplObdGetObjectSize(pSubEntry);
-       pDstData = (void *)EplObdGetObjectDataPtrIntern(pSubEntry);
-
-       // 09-dec-2004 r.d.:
-       //      Function EplObdWriteEntry() calls new event kEplObdEvWrStringDomain
-       //      for String or Domain which lets called module directly change
-       //      the data pointer or size. This prevents a recursive call to
-       //      the callback function if it calls EplObdGetEntry().
-#if (EPL_OBD_USE_STRING_DOMAIN_IN_RAM != FALSE)
-       if ((pSubEntry->m_Type == kEplObdTypVString) ||
-           (pSubEntry->m_Type == kEplObdTypDomain) ||
-           (pSubEntry->m_Type == kEplObdTypOString)) {
-               if (pSubEntry->m_Type == kEplObdTypVString) {
-                       // reserve one byte for 0-termination
-                       // -as ObdSize -= 1;
-                       Size_p += 1;
-               }
-               // fill out new arg-struct
-               MemVStringDomain.m_DownloadSize = Size_p;
-               MemVStringDomain.m_ObjSize = ObdSize;
-               MemVStringDomain.m_pData = pDstData;
-
-               pCbParam_p->m_ObdEvent = kEplObdEvWrStringDomain;
-               pCbParam_p->m_pArg = &MemVStringDomain;
-               //  call user callback
-               Ret = EplObdCallObjectCallback(EPL_MCO_INSTANCE_PTR_
-                                              pObdEntry->m_fpCallback,
-                                              pCbParam_p);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-               // write back new settings
-               pCurrData = pSubEntry->m_pCurrent;
-               if ((pSubEntry->m_Type == kEplObdTypVString)
-                   || (pSubEntry->m_Type == kEplObdTypOString)) {
-                       ((tEplObdVString *)pCurrData)->m_Size = MemVStringDomain.m_ObjSize;
-                       ((tEplObdVString *)pCurrData)->m_pString = MemVStringDomain.m_pData;
-               } else          // if (pSdosTableEntry_p->m_bObjType == kEplObdTypDomain)
-               {
-                       ((tEplObdVarEntry *)pCurrData)->m_Size = MemVStringDomain.m_ObjSize;
-                       ((tEplObdVarEntry *)pCurrData)->m_pData = (void *)MemVStringDomain.m_pData;
-               }
-
-               // Because object size and object pointer are
-               // adapted by user callback function, re-read
-               // this values.
-               ObdSize = MemVStringDomain.m_ObjSize;
-               pDstData = (void *)MemVStringDomain.m_pData;
-       }
-#endif //#if (OBD_USE_STRING_DOMAIN_IN_RAM != FALSE)
-
-       // 07-dec-2004 r.d.: size from application is needed because callback function can change the object size
-       // -as 16.11.04 CbParam.m_pArg     = &ObdSize;
-       // 09-dec-2004 r.d.: CbParam.m_pArg     = &Size_p;
-       pCbParam_p->m_pArg = &ObdSize;
-       pCbParam_p->m_ObdEvent = kEplObdEvInitWrite;
-       Ret = EplObdCallObjectCallback(EPL_MCO_INSTANCE_PTR_
-                                      pObdEntry->m_fpCallback, pCbParam_p);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-
-       if (Size_p > ObdSize) {
-               Ret = kEplObdValueLengthError;
-               goto Exit;
-       }
-
-       if (pSubEntry->m_Type == kEplObdTypVString) {
-               if (((char *)pSrcData_p)[Size_p - 1] == '\0') { // last byte of source string contains null character
-
-                       // reserve one byte in destination for 0-termination
-                       Size_p -= 1;
-               } else if (Size_p >= ObdSize) { // source string is not 0-terminated
-                       // and destination buffer is too short
-                       Ret = kEplObdValueLengthError;
-                       goto Exit;
-               }
-       }
-
-       Ret = EplObdIsNumericalIntern(pSubEntry, &fEntryNumerical);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-
-       if ((fEntryNumerical != FALSE)
-           && (Size_p != ObdSize)) {
-               // type is numerical, therefor size has to fit, but it does not.
-               Ret = kEplObdValueLengthError;
-               goto Exit;
-       }
-       // use given size, because non-numerical objects can be written with shorter values
-       ObdSize = Size_p;
-
-       // set output parameters
-       *pObdSize_p = ObdSize;
-       *ppObdEntry_p = pObdEntry;
-       *ppSubEntry_p = pSubEntry;
-       *ppDstData_p = pDstData;
-
-       // all checks are done
-       // the caller may now convert the numerial source value to platform byte order in a temporary buffer
-
-      Exit:
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdWriteEntryPost()
-//
-// Description: Function finishes write of data to an OBD entry. Strings
-//              are stored with added '\0' character.
-//
-// Parameters:  EPL_MCO_DECL_INSTANCE_PTR_
-//              uiIndex_p       =   Index of the OD entry
-//              uiSubIndex_p    =   Subindex of the OD Entry
-//              pSrcData_p      =   Pointer to the data to write
-//              Size_p          =   Size of the data in Byte
-//
-// Return:      tEplKernel      =   Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplObdWriteEntryPost(EPL_MCO_DECL_INSTANCE_PTR_ tEplObdEntryPtr pObdEntry_p,
-                                      tEplObdSubEntryPtr pSubEntry_p,
-                                      tEplObdCbParam *pCbParam_p,
-                                      void *pSrcData_p,
-                                      void *pDstData_p,
-                                      tEplObdSize ObdSize_p)
-{
-
-       tEplKernel Ret;
-
-       // caller converted the source value to platform byte order
-       // now the range of the value may be checked
-
-#if (EPL_OBD_CHECK_OBJECT_RANGE != FALSE)
-       {
-               // check data range
-               Ret = EplObdCheckObjectRange(pSubEntry_p, pSrcData_p);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-       }
-#endif
-
-       // now call user callback function to check value
-       // write address of source data to structure of callback parameters
-       // so callback function can check this data
-       pCbParam_p->m_pArg = pSrcData_p;
-       pCbParam_p->m_ObdEvent = kEplObdEvPreWrite;
-       Ret = EplObdCallObjectCallback(EPL_MCO_INSTANCE_PTR_
-                                      pObdEntry_p->m_fpCallback, pCbParam_p);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       // copy object data to OBD
-       EPL_MEMCPY(pDstData_p, pSrcData_p, ObdSize_p);
-
-       // terminate string with 0
-       if (pSubEntry_p->m_Type == kEplObdTypVString) {
-               ((char *)pDstData_p)[ObdSize_p] = '\0';
-       }
-       // write address of destination to structure of callback parameters
-       // so callback function can change data subsequently
-       pCbParam_p->m_pArg = pDstData_p;
-       pCbParam_p->m_ObdEvent = kEplObdEvPostWrite;
-       Ret = EplObdCallObjectCallback(EPL_MCO_INSTANCE_PTR_
-                                      pObdEntry_p->m_fpCallback, pCbParam_p);
-
-      Exit:
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdGetObjectSize()
-//
-// Description: function to get size of object
-//              The function determines if an object type an fixed data type (u8, u16, ...)
-//              or non fixed object (string, domain). This information is used to decide
-//              if download data are stored temporary or not. For objects with fixed data length
-//              and types a value range checking can process.
-//              For strings the function returns the whole object size not the
-//              length of string.
-//
-// Parameters:  pSubIndexEntry_p
-//
-// Return:      tEplObdSize
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplObdSize EplObdGetObjectSize(tEplObdSubEntryPtr pSubIndexEntry_p)
-{
-
-       tEplObdSize DataSize = 0;
-       void *pData;
-
-       switch (pSubIndexEntry_p->m_Type) {
-               // -----------------------------------------------------------------
-       case kEplObdTypBool:
-
-               DataSize = 1;
-               break;
-
-               // -----------------------------------------------------------------
-               // ObdTypes which has to be check because numerical values
-       case kEplObdTypInt8:
-               DataSize = sizeof(tEplObdInteger8);
-               break;
-
-               // -----------------------------------------------------------------
-       case kEplObdTypUInt8:
-               DataSize = sizeof(tEplObdUnsigned8);
-               break;
-
-               // -----------------------------------------------------------------
-       case kEplObdTypInt16:
-               DataSize = sizeof(tEplObdInteger16);
-               break;
-
-               // -----------------------------------------------------------------
-       case kEplObdTypUInt16:
-               DataSize = sizeof(tEplObdUnsigned16);
-               break;
-
-               // -----------------------------------------------------------------
-       case kEplObdTypInt32:
-               DataSize = sizeof(tEplObdInteger32);
-               break;
-
-               // -----------------------------------------------------------------
-       case kEplObdTypUInt32:
-               DataSize = sizeof(tEplObdUnsigned32);
-               break;
-
-               // -----------------------------------------------------------------
-       case kEplObdTypReal32:
-               DataSize = sizeof(tEplObdReal32);
-               break;
-
-               // -----------------------------------------------------------------
-               // ObdTypes which has to be not checked because not NUM values
-       case kEplObdTypDomain:
-
-               pData = (void *)pSubIndexEntry_p->m_pCurrent;
-               if ((void *)pData != (void *)NULL) {
-                       DataSize = ((tEplObdVarEntry *) pData)->m_Size;
-               }
-               break;
-
-               // -----------------------------------------------------------------
-       case kEplObdTypVString:
-               //case kEplObdTypUString:
-
-               // If OD entry is defined by macro EPL_OBD_SUBINDEX_ROM_VSTRING
-               // then the current pointer is always NULL. The function
-               // returns the length of default string.
-               pData = (void *)pSubIndexEntry_p->m_pCurrent;
-               if ((void *)pData != (void *)NULL) {
-                       // The max. size of strings defined by STRING-Macro is stored in
-                       // tEplObdVString of current value.
-                       // (types tEplObdVString, tEplObdOString and tEplObdUString has the same members)
-                       DataSize = ((tEplObdVString *) pData)->m_Size;
-               } else {
-                       // The current position is not decleared. The string
-                       // is located in ROM, therefor use default pointer.
-                       pData = (void *)pSubIndexEntry_p->m_pDefault;
-                       if ((const void *)pData != (const void *)NULL) {
-                               // The max. size of strings defined by STRING-Macro is stored in
-                               // tEplObdVString of default value.
-                               DataSize = ((const tEplObdVString *)pData)->m_Size;
-                       }
-               }
-
-               break;
-
-               // -----------------------------------------------------------------
-       case kEplObdTypOString:
-
-               pData = (void *)pSubIndexEntry_p->m_pCurrent;
-               if ((void *)pData != (void *)NULL) {
-                       // The max. size of strings defined by STRING-Macro is stored in
-                       // tEplObdVString of current value.
-                       // (types tEplObdVString, tEplObdOString and tEplObdUString has the same members)
-                       DataSize = ((tEplObdOString *) pData)->m_Size;
-               } else {
-                       // The current position is not decleared. The string
-                       // is located in ROM, therefor use default pointer.
-                       pData = (void *)pSubIndexEntry_p->m_pDefault;
-                       if ((const void *)pData != (const void *)NULL) {
-                               // The max. size of strings defined by STRING-Macro is stored in
-                               // tEplObdVString of default value.
-                               DataSize = ((const tEplObdOString *)pData)->m_Size;
-                       }
-               }
-               break;
-
-               // -----------------------------------------------------------------
-       case kEplObdTypInt24:
-       case kEplObdTypUInt24:
-
-               DataSize = 3;
-               break;
-
-               // -----------------------------------------------------------------
-       case kEplObdTypInt40:
-       case kEplObdTypUInt40:
-
-               DataSize = 5;
-               break;
-
-               // -----------------------------------------------------------------
-       case kEplObdTypInt48:
-       case kEplObdTypUInt48:
-
-               DataSize = 6;
-               break;
-
-               // -----------------------------------------------------------------
-       case kEplObdTypInt56:
-       case kEplObdTypUInt56:
-
-               DataSize = 7;
-               break;
-
-               // -----------------------------------------------------------------
-       case kEplObdTypInt64:
-       case kEplObdTypUInt64:
-       case kEplObdTypReal64:
-
-               DataSize = 8;
-               break;
-
-               // -----------------------------------------------------------------
-       case kEplObdTypTimeOfDay:
-       case kEplObdTypTimeDiff:
-
-               DataSize = 6;
-               break;
-
-               // -----------------------------------------------------------------
-       default:
-               break;
-       }
-
-       return DataSize;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdGetObjectDefaultPtr()
-//
-// Description: function to get the default pointer (type specific)
-//
-// Parameters:  pSubIndexEntry_p    = pointer to subindex structure
-//
-// Returns:     (void *)   = pointer to default value
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static void *EplObdGetObjectDefaultPtr(tEplObdSubEntryPtr pSubIndexEntry_p)
-{
-
-       void *pDefault;
-       tEplObdType Type;
-
-       ASSERTMSG(pSubIndexEntry_p != NULL,
-                 "EplObdGetObjectDefaultPtr(): pointer to SubEntry not valid!\n");
-
-       // get address to default data from default pointer
-       pDefault = pSubIndexEntry_p->m_pDefault;
-       if (pDefault != NULL) {
-               // there are some special types, whose default pointer always is NULL or has to get from other structure
-               // get type from subindex structure
-               Type = pSubIndexEntry_p->m_Type;
-
-               // check if object type is a string value
-               if ((Type == kEplObdTypVString) /* ||
-                                                  (Type == kEplObdTypUString) */ ) {
-
-                       // EPL_OBD_SUBINDEX_RAM_VSTRING
-                       //    tEplObdSize         m_Size;       --> size of default string
-                       //    char *    m_pDefString; --> pointer to  default string
-                       //    char *    m_pString;    --> pointer to string in RAM
-                       //
-                       pDefault =
-                           (void *)((tEplObdVString *) pDefault)->m_pString;
-               } else if (Type == kEplObdTypOString) {
-                       pDefault =
-                           (void *)((tEplObdOString *) pDefault)->m_pString;
-               }
-       }
-
-       return pDefault;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdGetVarEntry()
-//
-// Description: gets a variable entry of an object
-//
-// Parameters:  pSubindexEntry_p
-//              ppVarEntry_p
-//
-// Return:      tCopKernel
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplObdGetVarEntry(tEplObdSubEntryPtr pSubindexEntry_p,
-                                   tEplObdVarEntry **ppVarEntry_p)
-{
-
-       tEplKernel Ret = kEplObdVarEntryNotExist;
-
-       ASSERT(ppVarEntry_p != NULL);   // is not allowed to be NULL
-       ASSERT(pSubindexEntry_p != NULL);
-
-       // check VAR-Flag - only this object points to variables
-       if ((pSubindexEntry_p->m_Access & kEplObdAccVar) != 0) {
-               // check if object is an array
-               if ((pSubindexEntry_p->m_Access & kEplObdAccArray) != 0) {
-                       *ppVarEntry_p = &((tEplObdVarEntry *)pSubindexEntry_p->m_pCurrent)[pSubindexEntry_p->m_uiSubIndex - 1];
-               } else {
-                       *ppVarEntry_p = (tEplObdVarEntry *)pSubindexEntry_p->m_pCurrent;
-               }
-
-               Ret = kEplSuccessful;
-       }
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdGetEntry()
-//
-// Description: gets a index entry from OD
-//
-// Parameters:  uiIndex_p       =   Index number
-//              uiSubindex_p    =   Subindex number
-//              ppObdEntry_p    =   pointer to the pointer to the entry
-//              ppObdSubEntry_p =   pointer to the pointer to the subentry
-//
-// Return:      tEplKernel
-
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplObdGetEntry(EPL_MCO_DECL_INSTANCE_PTR_
-                                unsigned int uiIndex_p,
-                                unsigned int uiSubindex_p,
-                                tEplObdEntryPtr * ppObdEntry_p,
-                                tEplObdSubEntryPtr * ppObdSubEntry_p)
-{
-
-       tEplObdEntryPtr pObdEntry;
-       tEplObdCbParam CbParam;
-       tEplKernel Ret;
-
-       // check for all API function if instance is valid
-       EPL_MCO_CHECK_INSTANCE_STATE();
-
-       //------------------------------------------------------------------------
-       // get address of entry of index
-       Ret =
-           EplObdGetIndexIntern(&EPL_MCO_GLB_VAR(m_ObdInitParam), uiIndex_p,
-                                &pObdEntry);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       //------------------------------------------------------------------------
-       // get address of entry of subindex
-       Ret = EplObdGetSubindexIntern(pObdEntry, uiSubindex_p, ppObdSubEntry_p);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-       //------------------------------------------------------------------------
-       // call callback function to inform user/stack that an object will be searched
-       // if the called module returnes an error then we abort the searching with kEplObdIndexNotExist
-       CbParam.m_uiIndex = uiIndex_p;
-       CbParam.m_uiSubIndex = uiSubindex_p;
-       CbParam.m_pArg = NULL;
-       CbParam.m_ObdEvent = kEplObdEvCheckExist;
-       Ret = EplObdCallObjectCallback(EPL_MCO_INSTANCE_PTR_
-                                      pObdEntry->m_fpCallback, &CbParam);
-       if (Ret != kEplSuccessful) {
-               Ret = kEplObdIndexNotExist;
-               goto Exit;
-       }
-       //------------------------------------------------------------------------
-       // it is allowed to set ppObdEntry_p to NULL
-       // if so, no address will be written to calling function
-       if (ppObdEntry_p != NULL) {
-               *ppObdEntry_p = pObdEntry;
-       }
-
-      Exit:
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdGetObjectCurrentPtr()
-//
-// Description: function to get Current pointer (type specific)
-//
-// Parameters:  pSubIndexEntry_p
-//
-// Return:      void *
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static void *EplObdGetObjectCurrentPtr(tEplObdSubEntryPtr pSubIndexEntry_p)
-{
-
-       void *pData;
-       unsigned int uiArrayIndex;
-       tEplObdSize Size;
-
-       pData = pSubIndexEntry_p->m_pCurrent;
-
-       // check if constant object
-       if (pData != NULL) {
-               // check if object is an array
-               if ((pSubIndexEntry_p->m_Access & kEplObdAccArray) != 0) {
-                       // calculate correct data pointer
-                       uiArrayIndex = pSubIndexEntry_p->m_uiSubIndex - 1;
-                       if ((pSubIndexEntry_p->m_Access & kEplObdAccVar) != 0) {
-                               Size = sizeof(tEplObdVarEntry);
-                       } else {
-                               Size = EplObdGetObjectSize(pSubIndexEntry_p);
-                       }
-                       pData = ((u8 *) pData) + (Size * uiArrayIndex);
-               }
-               // check if VarEntry
-               if ((pSubIndexEntry_p->m_Access & kEplObdAccVar) != 0) {
-                       // The data pointer is stored in VarEntry->pData
-                       pData = ((tEplObdVarEntry *) pData)->m_pData;
-               }
-               // the default pointer is stored for strings in tEplObdVString
-               else if ((pSubIndexEntry_p->m_Type == kEplObdTypVString)        /* ||
-                                                                                  (pSubIndexEntry_p->m_Type == kEplObdTypUString)    */
-                        ) {
-                       pData = (void *)((tEplObdVString *)pData)->m_pString;
-               } else if (pSubIndexEntry_p->m_Type == kEplObdTypOString) {
-                       pData =
-                           (void *)((tEplObdOString *)pData)->m_pString;
-               }
-       }
-
-       return pData;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdGetIndexIntern()
-//
-// Description: gets a index entry from OD
-//
-// Parameters:  pInitParam_p
-//              uiIndex_p
-//              ppObdEntry_p
-//
-// Return:      tEplKernel
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplObdGetIndexIntern(tEplObdInitParam *pInitParam_p,
-                                      unsigned int uiIndex_p,
-                                      tEplObdEntryPtr * ppObdEntry_p)
-{
-
-       tEplObdEntryPtr pObdEntry;
-       tEplKernel Ret;
-       unsigned int uiIndex;
-
-#if (defined (EPL_OBD_USER_OD) && (EPL_OBD_USER_OD != FALSE))
-
-       unsigned int nLoop;
-
-       // if user OD is used then objekts also has to be searched in user OD
-       // there is less code need if we do this in a loop
-       nLoop = 2;
-
-#endif
-
-       ASSERTMSG(ppObdEntry_p != NULL,
-                 "EplObdGetIndexIntern(): pointer to index entry is NULL!\n");
-
-       Ret = kEplObdIndexNotExist;
-
-       // get start address of OD part
-       // start address depends on object index because
-       // object dictionary is divided in 3 parts
-       if ((uiIndex_p >= 0x1000) && (uiIndex_p < 0x2000)) {
-               pObdEntry = pInitParam_p->m_pPart;
-       } else if ((uiIndex_p >= 0x2000) && (uiIndex_p < 0x6000)) {
-               pObdEntry = pInitParam_p->m_pManufacturerPart;
-       }
-       // index range 0xA000 to 0xFFFF is reserved for DSP-405
-       // DS-301 defines that range 0x6000 to 0x9FFF (!!!) is stored if "store" was written to 0x1010/3.
-       // Therefore default configuration is OBD_INCLUDE_A000_TO_DEVICE_PART = FALSE.
-       // But a CANopen Application which does not implement dynamic OD or user-OD but wants to use static objets 0xA000...
-       // should set OBD_INCLUDE_A000_TO_DEVICE_PART to TRUE.
-
-#if (EPL_OBD_INCLUDE_A000_TO_DEVICE_PART == FALSE)
-       else if ((uiIndex_p >= 0x6000) && (uiIndex_p < 0x9FFF))
-#else
-       else if ((uiIndex_p >= 0x6000) && (uiIndex_p < 0xFFFF))
-#endif
-       {
-               pObdEntry = pInitParam_p->m_pDevicePart;
-       }
-
-#if (defined (EPL_OBD_USER_OD) && (EPL_OBD_USER_OD != FALSE))
-
-       // if index does not match in static OD then index only has to be searched in user OD
-       else {
-               // begin from first entry of user OD part
-               pObdEntry = pInitParam_p->m_pUserPart;
-
-               // no user OD is available
-               if (pObdEntry == NULL) {
-                       goto Exit;
-               }
-               // loop must only run once
-               nLoop = 1;
-       }
-
-       do {
-
-#else
-
-       // no user OD is available
-       // so other object can be found in OD
-       else {
-               Ret = kEplObdIllegalPart;
-               goto Exit;
-       }
-
-#endif
-
-       // note:
-       // The end of Index table is marked with m_uiIndex = 0xFFFF.
-       // If this function will be called with wIndex_p = 0xFFFF, entry
-       // should not be found. Therefor it is important to use
-       // while{} instead of do{}while !!!
-
-       // get first index of index table
-       uiIndex = pObdEntry->m_uiIndex;
-
-       // search Index in OD part
-       while (uiIndex != EPL_OBD_TABLE_INDEX_END) {
-               // go to the end of this function if index is found
-               if (uiIndex_p == uiIndex) {
-                       // write address of OD entry to calling function
-                       *ppObdEntry_p = pObdEntry;
-                       Ret = kEplSuccessful;
-                       goto Exit;
-               }
-               // objects are sorted in OD
-               // if the current index in OD is greater than the index which is to search then break loop
-               // in this case user OD has to be search too
-               if (uiIndex_p < uiIndex) {
-                       break;
-               }
-               // next entry in index table
-               pObdEntry++;
-
-               // get next index of index table
-               uiIndex = pObdEntry->m_uiIndex;
-       }
-
-#if (defined (EPL_OBD_USER_OD) && (EPL_OBD_USER_OD != FALSE))
-
-       // begin from first entry of user OD part
-       pObdEntry = pInitParam_p->m_pUserPart;
-
-       // no user OD is available
-       if (pObdEntry == NULL) {
-               goto Exit;
-       }
-       // switch next loop for user OD
-       nLoop--;
-
-}
-
-while (nLoop > 0) ;
-
-#endif
-
-    // in this line Index was not found
-
-Exit:
-
-return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdGetSubindexIntern()
-//
-// Description: gets a subindex entry from a index entry
-//
-// Parameters:  pObdEntry_p
-//              bSubIndex_p
-//              ppObdSubEntry_p
-//
-// Return:      tEplKernel
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplObdGetSubindexIntern(tEplObdEntryPtr pObdEntry_p,
-                                         unsigned int uiSubIndex_p,
-                                         tEplObdSubEntryPtr * ppObdSubEntry_p)
-{
-
-       tEplObdSubEntryPtr pSubEntry;
-       unsigned int nSubIndexCount;
-       tEplKernel Ret;
-
-       ASSERTMSG(pObdEntry_p != NULL,
-                 "EplObdGetSubindexIntern(): pointer to index is NULL!\n");
-       ASSERTMSG(ppObdSubEntry_p != NULL,
-                 "EplObdGetSubindexIntern(): pointer to subindex is NULL!\n");
-
-       Ret = kEplObdSubindexNotExist;
-
-       // get start address of subindex table and count of subindices
-       pSubEntry = pObdEntry_p->m_pSubIndex;
-       nSubIndexCount = pObdEntry_p->m_uiCount;
-       ASSERTMSG((pSubEntry != NULL) && (nSubIndexCount > 0), "ObdGetSubindexIntern(): invalid subindex table within index table!\n"); // should never be NULL
-
-       // search subindex in subindex table
-       while (nSubIndexCount > 0) {
-               // check if array is found
-               if ((pSubEntry->m_Access & kEplObdAccArray) != 0) {
-                       // check if subindex is in range
-                       if (uiSubIndex_p < pObdEntry_p->m_uiCount) {
-                               // update subindex number (subindex entry of an array is always in RAM !!!)
-                               pSubEntry->m_uiSubIndex = uiSubIndex_p;
-                               *ppObdSubEntry_p = pSubEntry;
-                               Ret = kEplSuccessful;
-                               goto Exit;
-                       }
-               }
-               // go to the end of this function if subindex is found
-               else if (uiSubIndex_p == pSubEntry->m_uiSubIndex) {
-                       *ppObdSubEntry_p = pSubEntry;
-                       Ret = kEplSuccessful;
-                       goto Exit;
-               }
-               // objects are sorted in OD
-               // if the current subindex in OD is greater than the subindex which is to search then break loop
-               // in this case user OD has to be search too
-               if (uiSubIndex_p < pSubEntry->m_uiSubIndex) {
-                       break;
-               }
-
-               pSubEntry++;
-               nSubIndexCount--;
-       }
-
-       // in this line SubIndex was not fount
-
-      Exit:
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdSetStoreLoadObjCallback()
-//
-// Description: function set address to callbackfunction for command Store and Load
-//
-// Parameters:  fpCallback_p
-//
-// Return:      tEplKernel
-//
-// State:
-//
-//---------------------------------------------------------------------------
-#if (EPL_OBD_USE_STORE_RESTORE != FALSE)
-tEplKernel EplObdSetStoreLoadObjCallback(EPL_MCO_DECL_INSTANCE_PTR_ tEplObdStoreLoadObjCallback fpCallback_p)
-{
-
-       EPL_MCO_CHECK_INSTANCE_STATE();
-
-       // set new address of callback function
-       EPL_MCO_GLB_VAR(m_fpStoreLoadObjCallback) = fpCallback_p;
-
-       return kEplSuccessful;
-
-}
-#endif // (EPL_OBD_USE_STORE_RESTORE != FALSE)
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdAccessOdPartIntern()
-//
-// Description: runs through OD and executes a job
-//
-// Parameters:  CurrentOdPart_p
-//              pObdEnty_p
-//              Direction_p     = what is to do (load values from flash or EEPROM, store, ...)
-//
-// Return:      tEplKernel
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplObdAccessOdPartIntern(EPL_MCO_DECL_INSTANCE_PTR_
-                                          tEplObdPart CurrentOdPart_p,
-                                          tEplObdEntryPtr pObdEnty_p,
-                                          tEplObdDir Direction_p)
-{
-
-       tEplObdSubEntryPtr pSubIndex;
-       unsigned int nSubIndexCount;
-       tEplObdAccess Access;
-       void *pDstData;
-       void *pDefault;
-       tEplObdSize ObjSize;
-       tEplKernel Ret;
-       tEplObdCbStoreParam CbStore;
-       tEplObdVarEntry *pVarEntry;
-
-       ASSERT(pObdEnty_p != NULL);
-
-       Ret = kEplSuccessful;
-
-       // prepare structure for STORE RESTORE callback function
-       CbStore.m_bCurrentOdPart = (u8) CurrentOdPart_p;
-       CbStore.m_pData = NULL;
-       CbStore.m_ObjSize = 0;
-
-       // command of first action depends on direction to access
-#if (EPL_OBD_USE_STORE_RESTORE != FALSE)
-       if (Direction_p == kEplObdDirLoad) {
-               CbStore.m_bCommand = (u8) kEplObdCommOpenRead;
-
-               // call callback function for previous command
-               Ret = EplObdCallStoreCallback(EPL_MCO_INSTANCE_PTR_ & CbStore);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-               // set command for index and subindex loop
-               CbStore.m_bCommand = (u8) kEplObdCommReadObj;
-       } else if (Direction_p == kEplObdDirStore) {
-               CbStore.m_bCommand = (u8) kEplObdCommOpenWrite;
-
-               // call callback function for previous command
-               Ret = EplObdCallStoreCallback(EPL_MCO_INSTANCE_PTR_ & CbStore);
-               if (Ret != kEplSuccessful) {
-                       goto Exit;
-               }
-               // set command for index and subindex loop
-               CbStore.m_bCommand = (u8) kEplObdCommWriteObj;
-       }
-#endif // (EPL_OBD_USE_STORE_RESTORE != FALSE)
-
-       // we should not restore the OD values here
-       // the next NMT command "Reset Node" or "Reset Communication" resets the OD data
-       if (Direction_p != kEplObdDirRestore) {
-               // walk through OD part till end is found
-               while (pObdEnty_p->m_uiIndex != EPL_OBD_TABLE_INDEX_END) {
-                       // get address to subindex table and count of subindices
-                       pSubIndex = pObdEnty_p->m_pSubIndex;
-                       nSubIndexCount = pObdEnty_p->m_uiCount;
-                       ASSERT((pSubIndex != NULL) && (nSubIndexCount > 0));    // should never be NULL
-
-                       // walk through subindex table till all subinices were restored
-                       while (nSubIndexCount != 0) {
-                               Access = (tEplObdAccess) pSubIndex->m_Access;
-
-                               // get pointer to current and default data
-                               pDefault = EplObdGetObjectDefaultPtr(pSubIndex);
-                               pDstData = EplObdGetObjectCurrentPtr(pSubIndex);
-
-                               // NOTE (for kEplObdTypVString):
-                               //      The function returnes the max. number of bytes for a
-                               //      current string.
-                               //      r.d.: For stings the default-size will be read in other lines following (kEplObdDirInit).
-                               ObjSize = EplObdGetObjectSize(pSubIndex);
-
-                               // switch direction of OD access
-                               switch (Direction_p) {
-                                       // --------------------------------------------------------------------------
-                                       // VarEntry structures has to be initialized
-                               case kEplObdDirInit:
-
-                                       // If VAR-Flag is set, m_pCurrent means not address of data
-                                       // but address of tEplObdVarEntry. Address of data has to be get from
-                                       // this structure.
-                                       if ((Access & kEplObdAccVar) != 0) {
-                                               EplObdGetVarEntry(pSubIndex,
-                                                                 &pVarEntry);
-                                               EplObdInitVarEntry(pVarEntry,
-                                                                  pSubIndex->
-                                                                  m_Type,
-                                                                  ObjSize);
-/*
-                            if ((Access & kEplObdAccArray) == 0)
-                            {
-                                EplObdInitVarEntry (pSubIndex->m_pCurrent, pSubIndex->m_Type, ObjSize);
-                            }
-                            else
-                            {
-                                EplObdInitVarEntry ((tEplObdVarEntry *) (((u8 *) pSubIndex->m_pCurrent) + (sizeof (tEplObdVarEntry) * pSubIndex->m_uiSubIndex)),
-                                    pSubIndex->m_Type, ObjSize);
-                            }
-*/
-                                               // at this time no application variable is defined !!!
-                                               // therefore data can not be copied.
-                                               break;
-                                       } else if (pSubIndex->m_Type ==
-                                                  kEplObdTypVString) {
-                                               // If pointer m_pCurrent is not equal to NULL then the
-                                               // string was defined with EPL_OBD_SUBINDEX_RAM_VSTRING. The current
-                                               // pointer points to struct tEplObdVString located in MEM.
-                                               // The element size includes the max. number of
-                                               // bytes. The element m_pString includes the pointer
-                                               // to string in MEM. The memory location of default string
-                                               // must be copied to memory location of current string.
-
-                                               pDstData =
-                                                   pSubIndex->m_pCurrent;
-                                               if (pDstData != NULL) {
-                                                       // 08-dec-2004: code optimization !!!
-                                                       //              entries ((tEplObdVStringDef*) pSubIndex->m_pDefault)->m_pString
-                                                       //              and ((tEplObdVStringDef*) pSubIndex->m_pDefault)->m_Size were read
-                                                       //              twice. thats not necessary!
-
-                                                       // For copying data we have to set the destination pointer to the real RAM string. This
-                                                       // pointer to RAM string is located in default string info structure. (translated r.d.)
-                                                       pDstData = (void *)((tEplObdVStringDef*) pSubIndex->m_pDefault)->m_pString;
-                                                       ObjSize = ((tEplObdVStringDef *)pSubIndex->m_pDefault)->m_Size;
-
-                                                       ((tEplObdVString *)pSubIndex->m_pCurrent)->m_pString = pDstData;
-                                                       ((tEplObdVString *)pSubIndex->m_pCurrent)->m_Size = ObjSize;
-                                               }
-
-                                       } else if (pSubIndex->m_Type ==
-                                                  kEplObdTypOString) {
-                                               pDstData =
-                                                   pSubIndex->m_pCurrent;
-                                               if (pDstData != NULL) {
-                                                       // 08-dec-2004: code optimization !!!
-                                                       //              entries ((tEplObdOStringDef*) pSubIndex->m_pDefault)->m_pString
-                                                       //              and ((tEplObdOStringDef*) pSubIndex->m_pDefault)->m_Size were read
-                                                       //              twice. thats not necessary!
-
-                                                       // For copying data we have to set the destination pointer to the real RAM string. This
-                                                       // pointer to RAM string is located in default string info structure. (translated r.d.)
-                                                       pDstData = (void *)((tEplObdOStringDef *) pSubIndex->m_pDefault)->m_pString;
-                                                       ObjSize = ((tEplObdOStringDef *)pSubIndex->m_pDefault)->m_Size;
-
-                                                       ((tEplObdOString *)pSubIndex->m_pCurrent)->m_pString = pDstData;
-                                                       ((tEplObdOString *)pSubIndex->m_pCurrent)->m_Size = ObjSize;
-                                               }
-
-                                       }
-
-                                       // no break !! because copy of data has to done too.
-
-                                       // --------------------------------------------------------------------------
-                                       // all objects has to be restored with default values
-                               case kEplObdDirRestore:
-
-                                       // 09-dec-2004 r.d.: optimization! the same code for kEplObdDirRestore and kEplObdDirLoad
-                                       //                   is replaced to function ObdCopyObjectData() with a new parameter.
-
-                                       // restore object data for init phase
-                                       EplObdCopyObjectData(pDstData, pDefault,
-                                                            ObjSize,
-                                                            pSubIndex->m_Type);
-                                       break;
-
-                                       // --------------------------------------------------------------------------
-                                       // objects with attribute kEplObdAccStore has to be load from EEPROM or from a file
-                               case kEplObdDirLoad:
-
-                                       // restore object data for init phase
-                                       EplObdCopyObjectData(pDstData, pDefault,
-                                                            ObjSize,
-                                                            pSubIndex->m_Type);
-
-                                       // no break !! because callback function has to be called too.
-
-                                       // --------------------------------------------------------------------------
-                                       // objects with attribute kEplObdAccStore has to be stored in EEPROM or in a file
-                               case kEplObdDirStore:
-
-                                       // when attribute kEplObdAccStore is set, then call callback function
-#if (EPL_OBD_USE_STORE_RESTORE != FALSE)
-                                       if ((Access & kEplObdAccStore) != 0) {
-                                               // fill out data pointer and size of data
-                                               CbStore.m_pData = pDstData;
-                                               CbStore.m_ObjSize = ObjSize;
-
-                                               // call callback function for read or write object
-                                               Ret =
-                                                   ObdCallStoreCallback
-                                                   (EPL_MCO_INSTANCE_PTR_ &
-                                                    CbStore);
-                                               if (Ret != kEplSuccessful) {
-                                                       goto Exit;
-                                               }
-                                       }
-#endif // (EPL_OBD_USE_STORE_RESTORE != FALSE)
-                                       break;
-
-                                       // --------------------------------------------------------------------------
-                                       // if OD Builder key has to be checked no access to subindex and data should be made
-                               case kEplObdDirOBKCheck:
-
-                                       // no break !! because we want to break the second loop too.
-
-                                       // --------------------------------------------------------------------------
-                                       // unknown Direction
-                               default:
-
-                                       // so we can break the second loop earler
-                                       nSubIndexCount = 1;
-                                       break;
-                               }
-
-                               nSubIndexCount--;
-
-                               // next subindex entry
-                               if ((Access & kEplObdAccArray) == 0) {
-                                       pSubIndex++;
-                                       if ((nSubIndexCount > 0)
-                                           &&
-                                           ((pSubIndex->
-                                             m_Access & kEplObdAccArray) !=
-                                            0)) {
-                                               // next subindex points to an array
-                                               // reset subindex number
-                                               pSubIndex->m_uiSubIndex = 1;
-                                       }
-                               } else {
-                                       if (nSubIndexCount > 0) {
-                                               // next subindex points to an array
-                                               // increment subindex number
-                                               pSubIndex->m_uiSubIndex++;
-                                       }
-                               }
-                       }
-
-                       // next index entry
-                       pObdEnty_p++;
-               }
-       }
-       // -----------------------------------------------------------------------------------------
-       // command of last action depends on direction to access
-       if (Direction_p == kEplObdDirOBKCheck) {
-
-               goto Exit;
-       }
-#if (EPL_OBD_USE_STORE_RESTORE != FALSE)
-       else {
-               if (Direction_p == kEplObdDirLoad) {
-                       CbStore.m_bCommand = (u8) kEplObdCommCloseRead;
-               } else if (Direction_p == kEplObdDirStore) {
-                       CbStore.m_bCommand = (u8) kEplObdCommCloseWrite;
-               } else if (Direction_p == kEplObdDirRestore) {
-                       CbStore.m_bCommand = (u8) kEplObdCommClear;
-               } else {
-                       goto Exit;
-               }
-
-               // call callback function for last command
-               Ret = EplObdCallStoreCallback(EPL_MCO_INSTANCE_PTR_ & CbStore);
-       }
-#endif // (EPL_OBD_USE_STORE_RESTORE != FALSE)
-
-//    goto Exit;
-
-      Exit:
-
-       return Ret;
-
-}
-
-// ----------------------------------------------------------------------------
-// Function:    EplObdCopyObjectData()
-//
-// Description: checks pointers to object data and copy them from source to destination
-//
-// Parameters:  pDstData_p              = destination pointer
-//              pSrcData_p              = source pointer
-//              ObjSize_p               = size of object
-//              ObjType_p               =
-//
-// Returns:     tEplKernel              = error code
-// ----------------------------------------------------------------------------
-
-static void EplObdCopyObjectData(void *pDstData_p,
-                                void *pSrcData_p,
-                                tEplObdSize ObjSize_p, tEplObdType ObjType_p)
-{
-
-       tEplObdSize StrSize = 0;
-
-       // it is allowed to set default and current address to NULL (nothing to copy)
-       if (pDstData_p != NULL) {
-
-               if (ObjType_p == kEplObdTypVString) {
-                       // The function calculates the really number of characters of string. The
-                       // object entry size can be bigger as string size of default string.
-                       // The '\0'-termination is included. A string with no characters has a
-                       // size of 1.
-                       StrSize =
-                           EplObdGetStrLen((void *)pSrcData_p, ObjSize_p,
-                                           kEplObdTypVString);
-
-                       // If the string length is greater than or equal to the entry size in OD then only copy
-                       // entry size - 1 and always set the '\0'-termination.
-                       if (StrSize >= ObjSize_p) {
-                               StrSize = ObjSize_p - 1;
-                       }
-               }
-
-               if (pSrcData_p != NULL) {
-                       // copy data
-                       EPL_MEMCPY(pDstData_p, pSrcData_p, ObjSize_p);
-
-                       if (ObjType_p == kEplObdTypVString) {
-                               ((char *)pDstData_p)[StrSize] = '\0';
-                       }
-               }
-       }
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdIsNumericalIntern()
-//
-// Description: function checks if a entry is numerical or not
-//
-//
-// Parameters:  EPL_MCO_DECL_INSTANCE_PTR_ = Instancepointer
-//              uiIndex_p           = Index
-//              uiSubIndex_p        = Subindex
-//              pfEntryNumerical_p  = pointer to BOOL for returnvalue
-//                                  -> TRUE if entry a numerical value
-//                                  -> FALSE if entry not a numerical value
-//
-// Return:      tEplKernel = Errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-static tEplKernel EplObdIsNumericalIntern(tEplObdSubEntryPtr pObdSubEntry_p,
-                                         BOOL * pfEntryNumerical_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       // get Type
-       if ((pObdSubEntry_p->m_Type == kEplObdTypVString)
-           || (pObdSubEntry_p->m_Type == kEplObdTypOString)
-           || (pObdSubEntry_p->m_Type == kEplObdTypDomain)) {  // not numerical types
-               *pfEntryNumerical_p = FALSE;
-       } else {                // numerical types
-               *pfEntryNumerical_p = TRUE;
-       }
-
-       return Ret;
-
-}
-
-// -------------------------------------------------------------------------
-// function to classify object type (fixed/non fixed)
-// -------------------------------------------------------------------------
-
-// ----------------------------------------------------------------------------
-// Function:    EplObdCallStoreCallback()
-//
-// Description: checks address to callback function and calles it when unequal
-//              to NULL
-//
-// Parameters:  EPL_MCO_DECL_INSTANCE_PTR_ = (instance pointer)
-//              pCbStoreParam_p        = address to callback parameters
-//
-// Returns:     tEplKernel             = error code
-// ----------------------------------------------------------------------------
-#if (EPL_OBD_USE_STORE_RESTORE != FALSE)
-static tEplKernel EplObdCallStoreCallback(EPL_MCO_DECL_INSTANCE_PTR_
-                                         tEplObdCbStoreParam *
-                                         pCbStoreParam_p)
-{
-
-       tEplKernel Ret = kEplSuccessful;
-
-       ASSERT(pCbStoreParam_p != NULL);
-
-       // check if function pointer is NULL - if so, no callback should be called
-       if (EPL_MCO_GLB_VAR(m_fpStoreLoadObjCallback) != NULL) {
-               Ret =
-                   EPL_MCO_GLB_VAR(m_fpStoreLoadObjCallback)
-                   (EPL_MCO_INSTANCE_PARAM_IDX_()
-                    pCbStoreParam_p);
-       }
-
-       return Ret;
-
-}
-#endif // (EPL_OBD_USE_STORE_RESTORE != FALSE)
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdGetObjectDataPtrIntern()
-//
-// Description: Function gets the data pointer of an object.
-//              It returnes the current data pointer. But if object is an
-//              constant object it returnes the default pointer.
-//
-// Parameters:  pSubindexEntry_p = pointer to subindex entry
-//
-// Return:      void *    = pointer to object data
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-void *EplObdGetObjectDataPtrIntern(tEplObdSubEntryPtr pSubindexEntry_p)
-{
-
-       void *pData;
-       tEplObdAccess Access;
-
-       ASSERTMSG(pSubindexEntry_p != NULL,
-                 "EplObdGetObjectDataPtrIntern(): pointer to SubEntry not valid!\n");
-
-       // there are are some objects whose data pointer has to get from other structure
-       // get access type for this object
-       Access = pSubindexEntry_p->m_Access;
-
-       // If object has access type = const,
-       // for data only exists default values.
-       if ((Access & kEplObdAccConst) != 0) {
-               // The pointer to defualt value can be received from ObdGetObjectDefaultPtr()
-               pData = ((void *)EplObdGetObjectDefaultPtr(pSubindexEntry_p));
-       } else {
-               // The pointer to current value can be received from ObdGetObjectCurrentPtr()
-               pData = ((void *)EplObdGetObjectCurrentPtr(pSubindexEntry_p));
-       }
-
-       return pData;
-
-}
-#endif // end of #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDK)) != 0)
-// EOF
diff --git a/drivers/staging/epl/EplObd.h b/drivers/staging/epl/EplObd.h
deleted file mode 100644 (file)
index 6bb5a27..0000000
+++ /dev/null
@@ -1,456 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for api function of EplOBD-Module
-
-  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: EplObd.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.5 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                Microsoft VC7
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/02 k.t.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#ifndef _EPLOBD_H_
-#define _EPLOBD_H_
-
-#include "EplInc.h"
-
-// ============================================================================
-// defines
-// ============================================================================
-
-#define EPL_OBD_TABLE_INDEX_END     0xFFFF
-
-// for the usage of BOOLEAN in OD
-#define OBD_TRUE    0x01
-#define OBD_FALSE   0x00
-
-// default OD index for Node id
-#define EPL_OBD_NODE_ID_INDEX               0x1F93
-// default subindex for NodeId in OD
-#define EPL_OBD_NODE_ID_SUBINDEX            0x01
-// default subindex for NodeIDByHW_BOOL
-#define EPL_OBD_NODE_ID_HWBOOL_SUBINDEX     0x02
-
-// ============================================================================
-// enums
-// ============================================================================
-
-// directions for access to object dictionary
-typedef enum {
-       kEplObdDirInit = 0x00,  // initialising after power on
-       kEplObdDirStore = 0x01, // store all object values to non volatile memory
-       kEplObdDirLoad = 0x02,  // load all object values from non volatile memory
-       kEplObdDirRestore = 0x03,       // deletes non volatile memory (restore)
-       kEplObdDirOBKCheck = 0xFF       // reserved
-} tEplObdDir;
-
-// commands for store
-typedef enum {
-       kEplObdCommNothing = 0x00,
-       kEplObdCommOpenWrite = 0x01,
-       kEplObdCommWriteObj = 0x02,
-       kEplObdCommCloseWrite = 0x03,
-       kEplObdCommOpenRead = 0x04,
-       kEplObdCommReadObj = 0x05,
-       kEplObdCommCloseRead = 0x06,
-       kEplObdCommClear = 0x07,
-       kEplObdCommUnknown = 0xFF
-} tEplObdCommand;
-
-//-----------------------------------------------------------------------------------------------------------
-// events of object callback function
-typedef enum {
-//                                                                                                      m_pArg points to
-//                                                                                                    ---------------------
-       kEplObdEvCheckExist = 0x06,     // checking if object does exist (reading and writing)    NULL
-       kEplObdEvPreRead = 0x00,        // before reading an object                               source data buffer in OD
-       kEplObdEvPostRead = 0x01,       // after reading an object                                destination data buffer from caller
-       kEplObdEvWrStringDomain = 0x07, // event for changing string/domain data pointer or size  struct tEplObdVStringDomain in RAM
-       kEplObdEvInitWrite = 0x04,      // initializes writing an object (checking object size)   size of object in OD (tEplObdSize)
-       kEplObdEvPreWrite = 0x02,       // before writing an object                               source data buffer from caller
-       kEplObdEvPostWrite = 0x03,      // after writing an object                                destination data buffer in OD
-//    kEplObdEvAbortSdo              = 0x05     // after an abort of an SDO transfer
-
-} tEplObdEvent;
-
-// part of OD (bit oriented)
-typedef unsigned int tEplObdPart;
-
-#define kEplObdPartNo          0x00    // nothing
-#define kEplObdPartGen         0x01    //  part      (0x1000 - 0x1FFF)
-#define kEplObdPartMan         0x02    // manufacturer part (0x2000 - 0x5FFF)
-#define kEplObdPartDev         0x04    // device part       (0x6000 - 0x9FFF)
-#define kEplObdPartUsr         0x08    // dynamic part e.g. for ICE61131-3
-
-// combinations
-#define kEplObdPartApp         (              kEplObdPartMan | kEplObdPartDev | kEplObdPartUsr)        // manufacturer and device part (0x2000 - 0x9FFF) and user OD
-#define kEplObdPartAll         (kEplObdPartGen | kEplObdPartMan | kEplObdPartDev | kEplObdPartUsr)     // whole OD
-
-//-----------------------------------------------------------------------------------------------------------
-// access types for objects
-// must be a difine because bit-flags
-typedef unsigned int tEplObdAccess;
-
-#define kEplObdAccRead         0x01    // object can be read
-#define kEplObdAccWrite        0x02    // object can be written
-#define kEplObdAccConst        0x04    // object contains a constant value
-#define kEplObdAccPdo          0x08    // object can be mapped in a PDO
-#define kEplObdAccArray        0x10    // object contains an array of numerical values
-#define kEplObdAccRange        0x20    // object contains lower and upper limit
-#define kEplObdAccVar          0x40    // object data is placed in application
-#define kEplObdAccStore        0x80    // object data can be stored to non volatile memory
-
-// combinations (not all combinations are required)
-#define kEplObdAccR            (0            | 0          | 0            | 0          | 0            | 0            | kEplObdAccRead)
-#define kEplObdAccW            (0            | 0          | 0            | 0          | 0            | kEplObdAccWrite | 0          )
-#define kEplObdAccRW           (0            | 0          | 0            | 0          | 0            | kEplObdAccWrite | kEplObdAccRead)
-#define kEplObdAccCR           (0            | 0          | 0            | 0          | kEplObdAccConst | 0            | kEplObdAccRead)
-#define kEplObdAccGR           (0            | 0          | kEplObdAccRange | 0          | 0            | 0            | kEplObdAccRead)
-#define kEplObdAccGW           (0            | 0          | kEplObdAccRange | 0          | 0            | kEplObdAccWrite | 0          )
-#define kEplObdAccGRW          (0            | 0          | kEplObdAccRange | 0          | 0            | kEplObdAccWrite | kEplObdAccRead)
-#define kEplObdAccVR           (0            | kEplObdAccVar | 0            | 0          | 0            | 0            | kEplObdAccRead)
-#define kEplObdAccVW           (0            | kEplObdAccVar | 0            | 0          | 0            | kEplObdAccWrite | 0          )
-#define kEplObdAccVRW          (0            | kEplObdAccVar | 0            | 0          | 0            | kEplObdAccWrite | kEplObdAccRead)
-#define kEplObdAccVPR          (0            | kEplObdAccVar | 0            | kEplObdAccPdo | 0            | 0            | kEplObdAccRead)
-#define kEplObdAccVPW          (0            | kEplObdAccVar | 0            | kEplObdAccPdo | 0            | kEplObdAccWrite | 0          )
-#define kEplObdAccVPRW         (0            | kEplObdAccVar | 0            | kEplObdAccPdo | 0            | kEplObdAccWrite | kEplObdAccRead)
-#define kEplObdAccVGR          (0            | kEplObdAccVar | kEplObdAccRange | 0          | 0            | 0            | kEplObdAccRead)
-#define kEplObdAccVGW          (0            | kEplObdAccVar | kEplObdAccRange | 0          | 0            | kEplObdAccWrite | 0          )
-#define kEplObdAccVGRW         (0            | kEplObdAccVar | kEplObdAccRange | 0          | 0            | kEplObdAccWrite | kEplObdAccRead)
-#define kEplObdAccVGPR         (0            | kEplObdAccVar | kEplObdAccRange | kEplObdAccPdo | 0            | 0            | kEplObdAccRead)
-#define kEplObdAccVGPW         (0            | kEplObdAccVar | kEplObdAccRange | kEplObdAccPdo | 0            | kEplObdAccWrite | 0          )
-#define kEplObdAccVGPRW        (0            | kEplObdAccVar | kEplObdAccRange | kEplObdAccPdo | 0            | kEplObdAccWrite | kEplObdAccRead)
-#define kEplObdAccSR           (kEplObdAccStore | 0          | 0            | 0          | 0            | 0            | kEplObdAccRead)
-#define kEplObdAccSW           (kEplObdAccStore | 0          | 0            | 0          | 0            | kEplObdAccWrite | 0          )
-#define kEplObdAccSRW          (kEplObdAccStore | 0          | 0            | 0          | 0            | kEplObdAccWrite | kEplObdAccRead)
-#define kEplObdAccSCR          (kEplObdAccStore | 0          | 0            | 0          | kEplObdAccConst | 0            | kEplObdAccRead)
-#define kEplObdAccSGR          (kEplObdAccStore | 0          | kEplObdAccRange | 0          | 0            | 0            | kEplObdAccRead)
-#define kEplObdAccSGW          (kEplObdAccStore | 0          | kEplObdAccRange | 0          | 0            | kEplObdAccWrite | 0          )
-#define kEplObdAccSGRW         (kEplObdAccStore | 0          | kEplObdAccRange | 0          | 0            | kEplObdAccWrite | kEplObdAccRead)
-#define kEplObdAccSVR          (kEplObdAccStore | kEplObdAccVar | 0            | 0          | 0            | 0            | kEplObdAccRead)
-#define kEplObdAccSVW          (kEplObdAccStore | kEplObdAccVar | 0            | 0          | 0            | kEplObdAccWrite | 0          )
-#define kEplObdAccSVRW         (kEplObdAccStore | kEplObdAccVar | 0            | 0          | 0            | kEplObdAccWrite | kEplObdAccRead)
-#define kEplObdAccSVPR         (kEplObdAccStore | kEplObdAccVar | 0            | kEplObdAccPdo | 0            | 0            | kEplObdAccRead)
-#define kEplObdAccSVPW         (kEplObdAccStore | kEplObdAccVar | 0            | kEplObdAccPdo | 0            | kEplObdAccWrite | 0          )
-#define kEplObdAccSVPRW        (kEplObdAccStore | kEplObdAccVar | 0            | kEplObdAccPdo | 0            | kEplObdAccWrite | kEplObdAccRead)
-#define kEplObdAccSVGR         (kEplObdAccStore | kEplObdAccVar | kEplObdAccRange | 0          | 0            | 0            | kEplObdAccRead)
-#define kEplObdAccSVGW         (kEplObdAccStore | kEplObdAccVar | kEplObdAccRange | 0          | 0            | kEplObdAccWrite | 0          )
-#define kEplObdAccSVGRW        (kEplObdAccStore | kEplObdAccVar | kEplObdAccRange | 0          | 0            | kEplObdAccWrite | kEplObdAccRead)
-#define kEplObdAccSVGPR        (kEplObdAccStore | kEplObdAccVar | kEplObdAccRange | kEplObdAccPdo | 0            | 0            | kEplObdAccRead)
-#define kEplObdAccSVGPW        (kEplObdAccStore | kEplObdAccVar | kEplObdAccRange | kEplObdAccPdo | 0            | kEplObdAccWrite | 0          )
-#define kEplObdAccSVGPRW       (kEplObdAccStore | kEplObdAccVar | kEplObdAccRange | kEplObdAccPdo | 0            | kEplObdAccWrite | kEplObdAccRead)
-
-typedef unsigned int tEplObdSize;      // For all objects as objects size are used an unsigned int.
-
-// -------------------------------------------------------------------------
-// types for data types defined in DS301
-// -------------------------------------------------------------------------
-
-// types of objects in object dictionary
-// DS-301 defines these types as u16
-typedef enum {
-// types which are always supported
-       kEplObdTypBool = 0x0001,
-
-       kEplObdTypInt8 = 0x0002,
-       kEplObdTypInt16 = 0x0003,
-       kEplObdTypInt32 = 0x0004,
-       kEplObdTypUInt8 = 0x0005,
-       kEplObdTypUInt16 = 0x0006,
-       kEplObdTypUInt32 = 0x0007,
-       kEplObdTypReal32 = 0x0008,
-       kEplObdTypVString = 0x0009,
-       kEplObdTypOString = 0x000A,
-       kEplObdTypDomain = 0x000F,
-
-       kEplObdTypInt24 = 0x0010,
-       kEplObdTypUInt24 = 0x0016,
-
-       kEplObdTypReal64 = 0x0011,
-       kEplObdTypInt40 = 0x0012,
-       kEplObdTypInt48 = 0x0013,
-       kEplObdTypInt56 = 0x0014,
-       kEplObdTypInt64 = 0x0015,
-       kEplObdTypUInt40 = 0x0018,
-       kEplObdTypUInt48 = 0x0019,
-       kEplObdTypUInt56 = 0x001A,
-       kEplObdTypUInt64 = 0x001B,
-       kEplObdTypTimeOfDay = 0x000C,
-       kEplObdTypTimeDiff = 0x000D
-} tEplObdType;
-// other types are not supported in this version
-
-// -------------------------------------------------------------------------
-// types for data types defined in DS301
-// -------------------------------------------------------------------------
-
-typedef unsigned char tEplObdBoolean;  // 0001
-typedef signed char tEplObdInteger8;   // 0002
-typedef signed short int tEplObdInteger16;     // 0003
-typedef signed long tEplObdInteger32;  // 0004
-typedef unsigned char tEplObdUnsigned8;        // 0005
-typedef unsigned short int tEplObdUnsigned16;  // 0006
-typedef unsigned long tEplObdUnsigned32;       // 0007
-typedef float tEplObdReal32;   // 0008
-typedef unsigned char tEplObdDomain;   // 000F
-typedef signed long tEplObdInteger24;  // 0010
-typedef unsigned long tEplObdUnsigned24;       // 0016
-
-typedef s64 tEplObdInteger40;  // 0012
-typedef s64 tEplObdInteger48;  // 0013
-typedef s64 tEplObdInteger56;  // 0014
-typedef s64 tEplObdInteger64;  // 0015
-
-typedef u64 tEplObdUnsigned40; // 0018
-typedef u64 tEplObdUnsigned48; // 0019
-typedef u64 tEplObdUnsigned56; // 001A
-typedef u64 tEplObdUnsigned64; // 001B
-
-typedef double tEplObdReal64;  // 0011
-
-typedef tTimeOfDay tEplObdTimeOfDay;   // 000C
-typedef tTimeOfDay tEplObdTimeDifference;      // 000D
-
-// -------------------------------------------------------------------------
-// structur for defining a variable
-// -------------------------------------------------------------------------
-// -------------------------------------------------------------------------
-typedef enum {
-       kVarValidSize = 0x01,
-       kVarValidData = 0x02,
-//    kVarValidCallback       = 0x04,
-//    kVarValidArg            = 0x08,
-
-       kVarValidAll = 0x03     // currently only size and data are implemented and used
-} tEplVarParamValid;
-
-typedef tEplKernel(*tEplVarCallback) (CCM_DECL_INSTANCE_HDL_ void *pParam_p);
-
-typedef struct {
-       tEplVarParamValid m_ValidFlag;
-       unsigned int m_uiIndex;
-       unsigned int m_uiSubindex;
-       tEplObdSize m_Size;
-       void *m_pData;
-//    tEplVarCallback     m_fpCallback;
-//    void *       m_pArg;
-
-} tEplVarParam;
-
-typedef struct {
-       void *m_pData;
-       tEplObdSize m_Size;
-/*
-    #if (EPL_PDO_USE_STATIC_MAPPING == FALSE)
-        tEplVarCallback    m_fpCallback;
-        void *   m_pArg;
-    #endif
-*/
-} tEplObdVarEntry;
-
-typedef struct {
-       tEplObdSize m_Size;
-       u8 *m_pString;
-
-} tEplObdOString;              // 000C
-
-typedef struct {
-       tEplObdSize m_Size;
-       char *m_pString;
-} tEplObdVString;              // 000D
-
-typedef struct {
-       tEplObdSize m_Size;
-       char *m_pDefString;     // $$$ d.k. it is unused, so we could delete it
-       char *m_pString;
-
-} tEplObdVStringDef;
-
-typedef struct {
-       tEplObdSize m_Size;
-       u8 *m_pDefString;       // $$$ d.k. it is unused, so we could delete it
-       u8 *m_pString;
-
-} tEplObdOStringDef;
-
-//r.d. parameter struct for changing object size and/or pointer to data of Strings or Domains
-typedef struct {
-       tEplObdSize m_DownloadSize;     // download size from SDO or APP
-       tEplObdSize m_ObjSize;  // current object size from OD - should be changed from callback function
-       void *m_pData;          // current object ptr  from OD - should be changed from callback function
-
-} tEplObdVStringDomain;                // 000D
-
-// ============================================================================
-// types
-// ============================================================================
-// -------------------------------------------------------------------------
-// subindexstruct
-// -------------------------------------------------------------------------
-
-// Change not the order for this struct!!!
-typedef struct {
-       unsigned int m_uiSubIndex;
-       tEplObdType m_Type;
-       tEplObdAccess m_Access;
-       void *m_pDefault;
-       void *m_pCurrent;       // points always to RAM
-
-} tEplObdSubEntry;
-
-// r.d.: has always to be  because new OBD-Macros for arrays
-typedef tEplObdSubEntry *tEplObdSubEntryPtr;
-
-// -------------------------------------------------------------------------
-// callback function for objdictionary modul
-// -------------------------------------------------------------------------
-
-// parameters for callback function
-typedef struct {
-       tEplObdEvent m_ObdEvent;
-       unsigned int m_uiIndex;
-       unsigned int m_uiSubIndex;
-       void *m_pArg;
-       u32 m_dwAbortCode;
-
-} tEplObdCbParam;
-
-// define type for callback function: pParam_p points to tEplObdCbParam
-typedef tEplKernel(*tEplObdCallback) (CCM_DECL_INSTANCE_HDL_ tEplObdCbParam *pParam_p);
-
-// do not change the order for this struct!!!
-
-typedef struct {
-       unsigned int m_uiIndex;
-       tEplObdSubEntryPtr m_pSubIndex;
-       unsigned int m_uiCount;
-       tEplObdCallback m_fpCallback;   // function is called back if object access
-
-} tEplObdEntry;
-
-// allways  pointer
-typedef tEplObdEntry *tEplObdEntryPtr;
-
-// -------------------------------------------------------------------------
-// structur to initialize OBD module
-// -------------------------------------------------------------------------
-
-typedef struct {
-       tEplObdEntryPtr m_pPart;
-       tEplObdEntryPtr m_pManufacturerPart;
-       tEplObdEntryPtr m_pDevicePart;
-
-#if (defined (EPL_OBD_USER_OD) && (EPL_OBD_USER_OD != FALSE))
-
-       tEplObdEntryPtr m_pUserPart;
-
-#endif
-
-} tEplObdInitParam;
-
-// -------------------------------------------------------------------------
-// structur for parameters of STORE RESTORE command
-// -------------------------------------------------------------------------
-
-typedef struct {
-       tEplObdCommand m_bCommand;
-       tEplObdPart m_bCurrentOdPart;
-       void *m_pData;
-       tEplObdSize m_ObjSize;
-
-} tEplObdCbStoreParam;
-
-typedef tEplKernel(*tInitTabEntryCallback) (void *pTabEntry_p, unsigned int uiObjIndex_p);
-
-typedef tEplKernel(*tEplObdStoreLoadObjCallback) (CCM_DECL_INSTANCE_HDL_ tEplObdCbStoreParam *pCbStoreParam_p);
-
-// -------------------------------------------------------------------------
-// this stucture is used for parameters for function ObdInitModuleTab()
-// -------------------------------------------------------------------------
-typedef struct {
-       unsigned int m_uiLowerObjIndex; // lower limit of ObjIndex
-       unsigned int m_uiUpperObjIndex; // upper limit of ObjIndex
-       tInitTabEntryCallback m_fpInitTabEntry; // will be called if ObjIndex was found
-       void *m_pTabBase;       // base address of table
-       unsigned int m_uiEntrySize;     // size of table entry      // 25-feb-2005 r.d.: expansion from u8 to u16 necessary for PDO bit mapping
-       unsigned int m_uiMaxEntries;    // max. tabel entries
-
-} tEplObdModulTabParam;
-
-//-------------------------------------------------------------------
-//  enum for function EplObdSetNodeId
-//-------------------------------------------------------------------
-typedef enum {
-       kEplObdNodeIdUnknown = 0x00,    // unknown how the node id was set
-       kEplObdNodeIdSoftware = 0x01,   // node id set by software
-       kEplObdNodeIdHardware = 0x02    // node id set by hardware
-} tEplObdNodeIdType;
-
-// ============================================================================
-// global variables
-// ============================================================================
-
-// ============================================================================
-// public functions
-// ============================================================================
-
-#endif // #ifndef _EPLOBD_H_
diff --git a/drivers/staging/epl/EplObdMacro.h b/drivers/staging/epl/EplObdMacro.h
deleted file mode 100644 (file)
index fc325bf..0000000
+++ /dev/null
@@ -1,354 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for macros of EplOBD-Module
-
-  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: EplObdMacro.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.4 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/05 k.t.:   start of the implementation
-                    -> based on CANopen ObdMacro.h
-
-****************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-#if defined (EPL_OBD_DEFINE_MACRO)
-
-    //-------------------------------------------------------------------------------------------
-#if defined (EPL_OBD_CREATE_ROM_DATA)
-
-//        #pragma message ("EPL_OBD_CREATE_ROM_DATA")
-
-#define EPL_OBD_BEGIN()                                                         static  u32  dwObd_OBK_g = 0x0000;
-#define EPL_OBD_END()
-
-       //---------------------------------------------------------------------------------------
-#define EPL_OBD_BEGIN_PART_GENERIC()
-#define EPL_OBD_BEGIN_PART_MANUFACTURER()
-#define EPL_OBD_BEGIN_PART_DEVICE()
-#define EPL_OBD_END_PART()
-
-       //---------------------------------------------------------------------------------------
-#define EPL_OBD_BEGIN_INDEX_RAM(ind,cnt,call)
-#define EPL_OBD_END_INDEX(ind)
-#define EPL_OBD_RAM_INDEX_RAM_ARRAY(ind,cnt,call,typ,acc,dtyp,name,def)         static  tEplObdUnsigned8    xDef##ind##_0x00_g = (cnt); \
-                                                                                        static  dtyp  xDef##ind##_0x01_g = (def);
-#define EPL_OBD_RAM_INDEX_RAM_VARARRAY(ind,cnt,call,typ,acc,dtyp,name,def)      static  tEplObdUnsigned8    xDef##ind##_0x00_g = (cnt); \
-                                                                                        static  dtyp  xDef##ind##_0x01_g = (def);
-#define EPL_OBD_RAM_INDEX_RAM_VARARRAY_NOINIT(ind,cnt,call,typ,acc,dtyp,name)   static  tEplObdUnsigned8    xDef##ind##_0x00_g = (cnt);
-
-       //---------------------------------------------------------------------------------------
-#define EPL_OBD_SUBINDEX_RAM_VAR(ind,sub,typ,acc,dtyp,name,val)                 static  dtyp  xDef##ind##_##sub##_g        = val;
-#define EPL_OBD_SUBINDEX_RAM_VAR_RG(ind,sub,typ,acc,dtyp,name,val,low,high)     static  dtyp  xDef##ind##_##sub##_g[3]     = {val,low,high};
-#define EPL_OBD_SUBINDEX_RAM_VAR_NOINIT(ind,sub,typ,acc,dtyp,name)
-#define EPL_OBD_SUBINDEX_RAM_VSTRING(ind,sub,acc,name,size,val)                 static char  szCur##ind##_##sub##_g[size+1]; \
-                                                                                        static  tEplObdVStringDef  xDef##ind##_##sub##_g = {size, val, szCur##ind##_##sub##_g};
-
-#define EPL_OBD_SUBINDEX_RAM_OSTRING(ind,sub,acc,name,size)                     static  u8  bCur##ind##_##sub##_g[size]; \
-                                                                                        static  tEplObdOStringDef  xDef##ind##_##sub##_g = {size, ((u8*)""), bCur##ind##_##sub##_g};
-#define EPL_OBD_SUBINDEX_RAM_DOMAIN(ind,sub,acc,name)
-#define EPL_OBD_SUBINDEX_RAM_USERDEF(ind,sub,typ,acc,dtyp,name,val)             static  dtyp  xDef##ind##_##sub##_g        = val;
-#define EPL_OBD_SUBINDEX_RAM_USERDEF_RG(ind,sub,typ,acc,dtyp,name,val,low,high) static  dtyp  xDef##ind##_##sub##_g[3]     = {val,low,high};
-#define EPL_OBD_SUBINDEX_RAM_USERDEF_NOINIT(ind,sub,typ,acc,dtyp,name)
-
-//-------------------------------------------------------------------------------------------
-#elif defined (EPL_OBD_CREATE_RAM_DATA)
-
-//        #pragma message ("EPL_OBD_CREATE_RAM_DATA")
-
-#define EPL_OBD_BEGIN()
-#define EPL_OBD_END()
-
-       //---------------------------------------------------------------------------------------
-#define EPL_OBD_BEGIN_PART_GENERIC()
-#define EPL_OBD_BEGIN_PART_MANUFACTURER()
-#define EPL_OBD_BEGIN_PART_DEVICE()
-#define EPL_OBD_END_PART()
-
-       //---------------------------------------------------------------------------------------
-#define EPL_OBD_BEGIN_INDEX_RAM(ind,cnt,call)
-#define EPL_OBD_END_INDEX(ind)
-#define EPL_OBD_RAM_INDEX_RAM_ARRAY(ind,cnt,call,typ,acc,dtyp,name,def)         static dtyp         axCur##ind##_g[cnt];
-#define EPL_OBD_RAM_INDEX_RAM_VARARRAY(ind,cnt,call,typ,acc,dtyp,name,def)      static tEplObdVarEntry aVarEntry##ind##_g[cnt];
-#define EPL_OBD_RAM_INDEX_RAM_VARARRAY_NOINIT(ind,cnt,call,typ,acc,dtyp,name)   static tEplObdVarEntry aVarEntry##ind##_g[cnt];
-
-       //---------------------------------------------------------------------------------------
-#define EPL_OBD_SUBINDEX_RAM_VAR(ind,sub,typ,acc,dtyp,name,val)                 static dtyp         xCur##ind##_##sub##_g;
-#define EPL_OBD_SUBINDEX_RAM_VAR_RG(ind,sub,typ,acc,dtyp,name,val,low,high)     static dtyp         xCur##ind##_##sub##_g;
-#define EPL_OBD_SUBINDEX_RAM_VSTRING(ind,sub,acc,name,size,val)                 static tEplObdVString  xCur##ind##_##sub##_g;
-#define EPL_OBD_SUBINDEX_RAM_OSTRING(ind,sub,acc,name,size)                     static tEplObdOString  xCur##ind##_##sub##_g;
-#define EPL_OBD_SUBINDEX_RAM_VAR_NOINIT(ind,sub,typ,acc,dtyp,name)              static dtyp         xCur##ind##_##sub##_g;
-#define EPL_OBD_SUBINDEX_RAM_DOMAIN(ind,sub,acc,name)                           static tEplObdVarEntry VarEntry##ind##_##sub##_g;
-#define EPL_OBD_SUBINDEX_RAM_USERDEF(ind,sub,typ,acc,dtyp,name,val)             static tEplObdVarEntry VarEntry##ind##_##sub##_g;
-#define EPL_OBD_SUBINDEX_RAM_USERDEF_RG(ind,sub,typ,acc,dtyp,name,val,low,high) static tEplObdVarEntry VarEntry##ind##_##sub##_g;
-#define EPL_OBD_SUBINDEX_RAM_USERDEF_NOINIT(ind,sub,typ,acc,dtyp,name)          static tEplObdVarEntry VarEntry##ind##_##sub##_g;
-
-    //-------------------------------------------------------------------------------------------
-#elif defined (EPL_OBD_CREATE_SUBINDEX_TAB)
-
-//        #pragma message ("EPL_OBD_CREATE_SUBINDEX_TAB")
-
-#define EPL_OBD_BEGIN()
-#define EPL_OBD_END()
-
-       //---------------------------------------------------------------------------------------
-#define EPL_OBD_BEGIN_PART_GENERIC()
-#define EPL_OBD_BEGIN_PART_MANUFACTURER()
-#define EPL_OBD_BEGIN_PART_DEVICE()
-#define EPL_OBD_END_PART()
-
-       //---------------------------------------------------------------------------------------
-#define EPL_OBD_BEGIN_INDEX_RAM(ind,cnt,call)                                   static tEplObdSubEntry aObdSubEntry##ind##Ram_g[cnt]= {
-#define EPL_OBD_END_INDEX(ind)                                                  EPL_OBD_END_SUBINDEX()};
-#define EPL_OBD_RAM_INDEX_RAM_ARRAY(ind,cnt,call,typ,acc,dtyp,name,def)         static tEplObdSubEntry aObdSubEntry##ind##Ram_g[]= { \
-                                                                                        {0, kEplObdTypUInt8, kEplObdAccCR,          &xDef##ind##_0x00_g,   NULL}, \
-                                                                                        {1, typ,          (acc)|kEplObdAccArray, &xDef##ind##_0x01_g,   &axCur##ind##_g[0]}, \
-                                                                                        EPL_OBD_END_SUBINDEX()};
-#define EPL_OBD_RAM_INDEX_RAM_VARARRAY(ind,cnt,call,typ,acc,dtyp,name,def)      static tEplObdSubEntry aObdSubEntry##ind##Ram_g[]= { \
-                                                                                        {0, kEplObdTypUInt8, kEplObdAccCR,                     &xDef##ind##_0x00_g,   NULL}, \
-                                                                                        {1, typ,          (acc)|kEplObdAccArray|kEplObdAccVar, &xDef##ind##_0x01_g,   &aVarEntry##ind##_g[0]}, \
-                                                                                        EPL_OBD_END_SUBINDEX()};
-#define EPL_OBD_RAM_INDEX_RAM_VARARRAY_NOINIT(ind,cnt,call,typ,acc,dtyp,name)   static tEplObdSubEntry aObdSubEntry##ind##Ram_g[]= { \
-                                                                                        {0, kEplObdTypUInt8, kEplObdAccCR,                     &xDef##ind##_0x00_g,   NULL}, \
-                                                                                        {1, typ,          (acc)|kEplObdAccArray|kEplObdAccVar, NULL,                  &aVarEntry##ind##_g[0]}, \
-                                                                                        EPL_OBD_END_SUBINDEX()};
-
-       //---------------------------------------------------------------------------------------
-#define EPL_OBD_SUBINDEX_RAM_VAR(ind,sub,typ,acc,dtyp,name,val)                 {sub,typ,            (acc),                        &xDef##ind##_##sub##_g,   &xCur##ind##_##sub##_g},
-#define EPL_OBD_SUBINDEX_RAM_VAR_RG(ind,sub,typ,acc,dtyp,name,val,low,high)     {sub,typ,            (acc)|kEplObdAccRange,           &xDef##ind##_##sub##_g[0],&xCur##ind##_##sub##_g},
-#define EPL_OBD_SUBINDEX_RAM_VAR_NOINIT(ind,sub,typ,acc,dtyp,name)              {sub,typ,            (acc),                        NULL,   &xCur##ind##_##sub##_g},
-#define EPL_OBD_SUBINDEX_RAM_VSTRING(ind,sub,acc,name,size,val)                 {sub,kEplObdTypVString,(acc)/*|kEplObdAccVar*/,         &xDef##ind##_##sub##_g,   &xCur##ind##_##sub##_g},
-#define EPL_OBD_SUBINDEX_RAM_OSTRING(ind,sub,acc,name,size)                     {sub,kEplObdTypOString,(acc)/*|kEplObdAccVar*/,         &xDef##ind##_##sub##_g,   &xCur##ind##_##sub##_g},
-#define EPL_OBD_SUBINDEX_RAM_DOMAIN(ind,sub,acc,name)                           {sub,kEplObdTypDomain, (acc)|kEplObdAccVar,             NULL,                     &VarEntry##ind##_##sub##_g},
-#define EPL_OBD_SUBINDEX_RAM_USERDEF(ind,sub,typ,acc,dtyp,name,val)             {sub,typ,           (acc)|kEplObdAccVar,             &xDef##ind##_##sub##_g,   &VarEntry##ind##_##sub##_g},
-#define EPL_OBD_SUBINDEX_RAM_USERDEF_RG(ind,sub,typ,acc,dtyp,name,val,low,high) {sub,typ,           (acc)|kEplObdAccVar|kEplObdAccRange,&xDef##ind##_##sub##_g[0],&VarEntry##ind##_##sub##_g},
-#define EPL_OBD_SUBINDEX_RAM_USERDEF_NOINIT(ind,sub,typ,acc,dtyp,name)          {sub,typ,           (acc)|kEplObdAccVar,             NULL,    &VarEntry##ind##_##sub##_g},
-
-    //-------------------------------------------------------------------------------------------
-#elif defined (EPL_OBD_CREATE_INDEX_TAB)
-
-//        #pragma message ("EPL_OBD_CREATE_INDEX_TAB")
-
-#define EPL_OBD_BEGIN()
-#define EPL_OBD_END()
-
-       //---------------------------------------------------------------------------------------
-#define EPL_OBD_BEGIN_PART_GENERIC()                                                   static  tEplObdEntry  aObdTab_g[]      = {
-#define EPL_OBD_BEGIN_PART_MANUFACTURER()                                       static  tEplObdEntry  aObdTabManufacturer_g[] = {
-#define EPL_OBD_BEGIN_PART_DEVICE()                                             static  tEplObdEntry  aObdTabDevice_g[]       = {
-#define EPL_OBD_END_PART()                                                      {EPL_OBD_TABLE_INDEX_END,(tEplObdSubEntryPtr)&dwObd_OBK_g,0,NULL}};
-
-       //---------------------------------------------------------------------------------------
-#define EPL_OBD_BEGIN_INDEX_RAM(ind,cnt,call)                                   {ind,(tEplObdSubEntryPtr)&aObdSubEntry##ind##Ram_g[0],cnt,(tEplObdCallback)call},
-#define EPL_OBD_END_INDEX(ind)
-#define EPL_OBD_RAM_INDEX_RAM_ARRAY(ind,cnt,call,typ,acc,dtyp,name,def)         {ind,(tEplObdSubEntryPtr)&aObdSubEntry##ind##Ram_g[0],(cnt)+1,(tEplObdCallback)call},
-#define EPL_OBD_RAM_INDEX_RAM_VARARRAY(ind,cnt,call,typ,acc,dtyp,name,def)      {ind,(tEplObdSubEntryPtr)&aObdSubEntry##ind##Ram_g[0],(cnt)+1,(tEplObdCallback)call},
-#define EPL_OBD_RAM_INDEX_RAM_VARARRAY_NOINIT(ind,cnt,call,typ,acc,dtyp,name)   {ind,(tEplObdSubEntryPtr)&aObdSubEntry##ind##Ram_g[0],(cnt)+1,(tEplObdCallback)call},
-
-       //---------------------------------------------------------------------------------------
-#define EPL_OBD_SUBINDEX_RAM_VAR(ind,sub,typ,acc,dtyp,name,val)
-#define EPL_OBD_SUBINDEX_RAM_VAR_RG(ind,sub,typ,acc,dtyp,name,val,low,high)
-#define EPL_OBD_SUBINDEX_RAM_VSTRING(ind,sub,acc,name,size,val)
-#define EPL_OBD_SUBINDEX_RAM_OSTRING(ind,sub,acc,name,size)
-#define EPL_OBD_SUBINDEX_RAM_VAR_NOINIT(ind,sub,typ,acc,dtyp,name)
-#define EPL_OBD_SUBINDEX_RAM_DOMAIN(ind,sub,acc,name)
-#define EPL_OBD_SUBINDEX_RAM_USERDEF(ind,sub,typ,acc,dtyp,name,val)
-#define EPL_OBD_SUBINDEX_RAM_USERDEF_RG(ind,sub,typ,acc,dtyp,name,val,low,high)
-#define EPL_OBD_SUBINDEX_RAM_USERDEF_NOINIT(ind,sub,typ,acc,dtyp,name)
-
-           //-------------------------------------------------------------------------------------------
-#elif defined (EPL_OBD_CREATE_INIT_FUNCTION)
-
-//        #pragma message ("EPL_OBD_CREATE_INIT_FUNCTION")
-
-#define EPL_OBD_BEGIN()
-#define EPL_OBD_END()
-
-       //---------------------------------------------------------------------------------------
-#define EPL_OBD_BEGIN_PART_GENERIC()                                                   pInitParam->m_pPart      = (tEplObdEntryPtr) &aObdTab_g[0];
-#define EPL_OBD_BEGIN_PART_MANUFACTURER()                                       pInitParam->m_pManufacturerPart = (tEplObdEntryPtr) &aObdTabManufacturer_g[0];
-#define EPL_OBD_BEGIN_PART_DEVICE()                                             pInitParam->m_pDevicePart       = (tEplObdEntryPtr) &aObdTabDevice_g[0];
-#define EPL_OBD_END_PART()
-
-       //---------------------------------------------------------------------------------------
-#define EPL_OBD_BEGIN_INDEX_RAM(ind,cnt,call)
-#define EPL_OBD_END_INDEX(ind)
-#define EPL_OBD_RAM_INDEX_RAM_ARRAY(ind,cnt,call,typ,acc,dtyp,name,def)
-#define EPL_OBD_RAM_INDEX_RAM_VARARRAY(ind,cnt,call,typ,acc,dtyp,name,def)
-#define EPL_OBD_RAM_INDEX_RAM_VARARRAY_NOINIT(ind,cnt,call,typ,acc,dtyp,name)
-
-       //---------------------------------------------------------------------------------------
-#define EPL_OBD_SUBINDEX_RAM_VAR(ind,sub,typ,acc,dtyp,name,val)
-#define EPL_OBD_SUBINDEX_RAM_VAR_RG(ind,sub,typ,acc,dtyp,name,val,low,high)
-#define EPL_OBD_SUBINDEX_RAM_VSTRING(ind,sub,acc,name,size,val)
-#define EPL_OBD_SUBINDEX_RAM_OSTRING(ind,sub,acc,name,size)
-#define EPL_OBD_SUBINDEX_RAM_VAR_NOINIT(ind,sub,typ,acc,dtyp,name)
-#define EPL_OBD_SUBINDEX_RAM_DOMAIN(ind,sub,acc,name)
-#define EPL_OBD_SUBINDEX_RAM_USERDEF(ind,sub,typ,acc,dtyp,name,val)
-#define EPL_OBD_SUBINDEX_RAM_USERDEF_RG(ind,sub,typ,acc,dtyp,name,val,low,high)
-#define EPL_OBD_SUBINDEX_RAM_USERDEF_NOINIT(ind,sub,typ,acc,dtyp,name)
-
-    //-------------------------------------------------------------------------------------------
-#elif defined (EPL_OBD_CREATE_INIT_SUBINDEX)
-
-//        #pragma message ("EPL_OBD_CREATE_INIT_SUBINDEX")
-
-#define EPL_OBD_BEGIN()
-#define EPL_OBD_END()
-
-       //---------------------------------------------------------------------------------------
-#define EPL_OBD_BEGIN_PART_GENERIC()
-#define EPL_OBD_BEGIN_PART_MANUFACTURER()
-#define EPL_OBD_BEGIN_PART_DEVICE()
-#define EPL_OBD_END_PART()
-
-       //---------------------------------------------------------------------------------------
-#define EPL_OBD_BEGIN_INDEX_RAM(ind,cnt,call)  //CCM_SUBINDEX_RAM_ONLY (EPL_MEMCPY (&aObdSubEntry##ind##Ram_g[0],&aObdSubEntry##ind##Rom_g[0],sizeof(aObdSubEntry##ind##Ram_g)));
-#define EPL_OBD_END_INDEX(ind)
-#define EPL_OBD_RAM_INDEX_RAM_ARRAY(ind,cnt,call,typ,acc,dtyp,name,def)        //EPL_MEMCPY (&aObdSubEntry##ind##Ram_g[0],&aObdSubEntry##ind##Rom_g[0],sizeof(aObdSubEntry##ind##Ram_g));
-#define EPL_OBD_RAM_INDEX_RAM_VARARRAY(ind,cnt,call,typ,acc,dtyp,name,def)     //EPL_MEMCPY (&aObdSubEntry##ind##Ram_g[0],&aObdSubEntry##ind##Rom_g[0],sizeof(aObdSubEntry##ind##Ram_g));
-#define EPL_OBD_RAM_INDEX_RAM_VARARRAY_NOINIT(ind,cnt,call,typ,acc,dtyp,name)  //EPL_MEMCPY (&aObdSubEntry##ind##Ram_g[0],&aObdSubEntry##ind##Rom_g[0],sizeof(aObdSubEntry##ind##Ram_g));
-
-       //---------------------------------------------------------------------------------------
-#define EPL_OBD_SUBINDEX_RAM_VAR(ind,sub,typ,acc,dtyp,name,val)
-#define EPL_OBD_SUBINDEX_RAM_VAR_RG(ind,sub,typ,acc,dtyp,name,val,low,high)
-#define EPL_OBD_SUBINDEX_RAM_VSTRING(ind,sub,acc,name,size,val)
-#define EPL_OBD_SUBINDEX_RAM_OSTRING(ind,sub,acc,name,size)
-#define EPL_OBD_SUBINDEX_RAM_VAR_NOINIT(ind,sub,typ,acc,dtyp,name)
-#define EPL_OBD_SUBINDEX_RAM_DOMAIN(ind,sub,acc,name)
-#define EPL_OBD_SUBINDEX_RAM_USERDEF(ind,sub,typ,acc,dtyp,name,val)
-#define EPL_OBD_SUBINDEX_RAM_USERDEF_RG(ind,sub,typ,acc,dtyp,name,val,low,high)
-#define EPL_OBD_SUBINDEX_RAM_USERDEF_NOINIT(ind,sub,typ,acc,dtyp,name)
-
-    //-------------------------------------------------------------------------------------------
-#else
-
-//        #pragma message ("ELSE OF DEFINE")
-
-#define EPL_OBD_BEGIN()
-#define EPL_OBD_END()
-
-       //---------------------------------------------------------------------------------------
-#define EPL_OBD_BEGIN_PART_GENERIC()
-#define EPL_OBD_BEGIN_PART_MANUFACTURER()
-#define EPL_OBD_BEGIN_PART_DEVICE()
-#define EPL_OBD_END_PART()
-
-       //---------------------------------------------------------------------------------------
-#define EPL_OBD_BEGIN_INDEX_RAM(ind,cnt,call)
-#define EPL_OBD_END_INDEX(ind)
-#define EPL_OBD_RAM_INDEX_RAM_ARRAY(ind,cnt,call,typ,acc,dtyp,name,def)
-#define EPL_OBD_RAM_INDEX_RAM_VARARRAY(ind,cnt,call,typ,acc,dtyp,name,def)
-#define EPL_OBD_RAM_INDEX_RAM_VARARRAY_NOINIT(ind,cnt,call,typ,acc,dtyp,name)
-
-       //---------------------------------------------------------------------------------------
-#define EPL_OBD_SUBINDEX_RAM_VAR(ind,sub,typ,acc,dtyp,name,val)
-#define EPL_OBD_SUBINDEX_RAM_VAR_RG(ind,sub,typ,acc,dtyp,name,val,low,high)
-#define EPL_OBD_SUBINDEX_RAM_VSTRING(ind,sub,acc,name,sizes,val)
-#define EPL_OBD_SUBINDEX_RAM_OSTRING(ind,sub,acc,name,size)
-#define EPL_OBD_SUBINDEX_RAM_VAR_NOINIT(ind,sub,typ,acc,dtyp,name)
-#define EPL_OBD_SUBINDEX_RAM_DOMAIN(ind,sub,acc,name)
-#define EPL_OBD_SUBINDEX_RAM_USERDEF(ind,sub,typ,acc,dtyp,name,val)
-#define EPL_OBD_SUBINDEX_RAM_USERDEF_RG(ind,sub,typ,acc,dtyp,name,val,low,high)
-#define EPL_OBD_SUBINDEX_RAM_USERDEF_NOINIT(ind,sub,typ,acc,dtyp,name)
-
-#endif
-
-    //-------------------------------------------------------------------------------------------
-#elif defined (EPL_OBD_UNDEFINE_MACRO)
-
-//    #pragma message ("EPL_OBD_UNDEFINE_MACRO")
-
-#undef EPL_OBD_BEGIN
-#undef EPL_OBD_END
-
-    //---------------------------------------------------------------------------------------
-#undef EPL_OBD_BEGIN_PART_GENERIC
-#undef EPL_OBD_BEGIN_PART_MANUFACTURER
-#undef EPL_OBD_BEGIN_PART_DEVICE
-#undef EPL_OBD_END_PART
-
-    //---------------------------------------------------------------------------------------
-#undef EPL_OBD_BEGIN_INDEX_RAM
-#undef EPL_OBD_END_INDEX
-#undef EPL_OBD_RAM_INDEX_RAM_ARRAY
-#undef EPL_OBD_RAM_INDEX_RAM_VARARRAY
-#undef EPL_OBD_RAM_INDEX_RAM_VARARRAY_NOINIT
-
-    //---------------------------------------------------------------------------------------
-#undef EPL_OBD_SUBINDEX_RAM_VAR
-#undef EPL_OBD_SUBINDEX_RAM_VAR_RG
-#undef EPL_OBD_SUBINDEX_RAM_VSTRING
-#undef EPL_OBD_SUBINDEX_RAM_OSTRING
-#undef EPL_OBD_SUBINDEX_RAM_VAR_NOINIT
-#undef EPL_OBD_SUBINDEX_RAM_DOMAIN
-#undef EPL_OBD_SUBINDEX_RAM_USERDEF
-#undef EPL_OBD_SUBINDEX_RAM_USERDEF_RG
-#undef EPL_OBD_SUBINDEX_RAM_USERDEF_NOINIT
-
-#else
-
-#error "nothing defined"
-
-#endif
diff --git a/drivers/staging/epl/EplObdkCal.c b/drivers/staging/epl/EplObdkCal.c
deleted file mode 100644 (file)
index 02bd722..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for communication abstraction layer
-                for the Epl-Obd-Kernelspace-Modul
-
-  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: EplObdkCal.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.3 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                KEIL uVision 2
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/19 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#include "EplInc.h"
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:
-//
-// Description:
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:
-//
-// Description:
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-// EOF
diff --git a/drivers/staging/epl/EplObdu.c b/drivers/staging/epl/EplObdu.c
deleted file mode 100644 (file)
index 5f1d998..0000000
+++ /dev/null
@@ -1,506 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for Epl-Obd-Userspace-module
-
-  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: EplObdu.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.5 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/19 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#include "EplInc.h"
-#include "user/EplObdu.h"
-#include "user/EplObduCal.h"
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDU)) != 0)
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObduWriteEntry()
-//
-// Description: Function writes data to an OBD entry. Strings
-//              are stored with added '\0' character.
-//
-// Parameters:  uiIndex_p       =   Index of the OD entry
-//              uiSubIndex_p    =   Subindex of the OD Entry
-//              pSrcData_p      =   Pointer to the data to write
-//              Size_p          =   Size of the data in Byte
-//
-// Return:      tEplKernel      =   Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplObduWriteEntry(unsigned int uiIndex_p,
-                            unsigned int uiSubIndex_p,
-                            void *pSrcData_p, tEplObdSize Size_p)
-{
-       tEplKernel Ret;
-
-       Ret = EplObduCalWriteEntry(uiIndex_p, uiSubIndex_p, pSrcData_p, Size_p);
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObduReadEntry()
-//
-// Description: The function reads an object entry. The application
-//              can always read the data even if attrib kEplObdAccRead
-//              is not set. The attrib is only checked up for SDO transfer.
-//
-// Parameters:  uiIndex_p       = Index oof the OD entry to read
-//              uiSubIndex_p    = Subindex to read
-//              pDstData_p      = pointer to the buffer for data
-//              Offset_p        = offset in data for read access
-//              pSize_p         = IN: Size of the buffer
-//                                OUT: number of readed Bytes
-//
-// Return:      tEplKernel      =   errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplObduReadEntry(unsigned int uiIndex_p,
-                           unsigned int uiSubIndex_p,
-                           void *pDstData_p,
-                           tEplObdSize *pSize_p)
-{
-       tEplKernel Ret;
-
-       Ret = EplObduCalReadEntry(uiIndex_p, uiSubIndex_p, pDstData_p, pSize_p);
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdAccessOdPart()
-//
-// Description: restores default values of one part of OD
-//
-// Parameters:  ObdPart_p       = od-part to reset
-//              Direction_p     = directory flag for
-//
-// Return:      tEplKernel  = errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplObduAccessOdPart(tEplObdPart ObdPart_p, tEplObdDir Direction_p)
-{
-       tEplKernel Ret;
-
-       Ret = EplObduCalAccessOdPart(ObdPart_p, Direction_p);
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObduDefineVar()
-//
-// Description: defines a variable in OD
-//
-// Parameters:  pEplVarParam_p = varentry
-//
-// Return:      tEplKernel  =   errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplObduDefineVar(tEplVarParam *pVarParam_p)
-{
-       tEplKernel Ret;
-
-       Ret = EplObduCalDefineVar(pVarParam_p);
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObduGetObjectDataPtr()
-//
-// Description: It returnes the current data pointer. But if object is an
-//              constant object it returnes the default pointer.
-//
-// Parameters:  uiIndex_p    =   Index of the entry
-//              uiSubindex_p =   Subindex of the entry
-//
-// Return:      void *    = pointer to object data
-//
-// State:
-//
-//---------------------------------------------------------------------------
-void *EplObduGetObjectDataPtr(unsigned int uiIndex_p, unsigned int uiSubIndex_p)
-{
-       void *pData;
-
-       pData = EplObduCalGetObjectDataPtr(uiIndex_p, uiSubIndex_p);
-
-       return pData;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObduRegisterUserOd()
-//
-// Description: function registers the user OD
-//
-// Parameters:  pUserOd_p   =pointer to user ODd
-//
-// Return:     tEplKernel = errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-#if (defined (EPL_OBD_USER_OD) && (EPL_OBD_USER_OD != FALSE))
-tEplKernel EplObduRegisterUserOd(tEplObdEntryPtr pUserOd_p)
-{
-       tEplKernel Ret;
-
-       Ret = EplObduCalRegisterUserOd(pUserOd_p);
-
-       return Ret;
-
-}
-#endif
-//---------------------------------------------------------------------------
-//
-// Function:    EplObduInitVarEntry()
-//
-// Description: function to initialize VarEntry dependened on object type
-//
-// Parameters:  pVarEntry_p = pointer to var entry structure
-//              bType_p     = object type
-//              ObdSize_p   = size of object data
-//
-// Returns:     none
-//
-// State:
-//
-//---------------------------------------------------------------------------
-void EplObduInitVarEntry(tEplObdVarEntry *pVarEntry_p, u8 bType_p, tEplObdSize ObdSize_p)
-{
-       EplObduCalInitVarEntry(pVarEntry_p, bType_p, ObdSize_p);
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObduGetDataSize()
-//
-// Description: function to initialize VarEntry dependened on object type
-//
-//              gets the data size of an object
-//              for string objects it returnes the string length
-//
-// Parameters:  uiIndex_p   =   Index
-//              uiSubIndex_p=   Subindex
-//
-// Return:      tEplObdSize
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplObdSize EplObduGetDataSize(unsigned int uiIndex_p, unsigned int uiSubIndex_p)
-{
-       tEplObdSize Size;
-
-       Size = EplObduCalGetDataSize(uiIndex_p, uiSubIndex_p);
-
-       return Size;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObduGetNodeId()
-//
-// Description: function returns nodeid from entry 0x1F93
-//
-//
-// Parameters:
-//
-// Return:      unsigned int = Node Id
-//
-// State:
-//
-//---------------------------------------------------------------------------
-unsigned int EplObduGetNodeId(void)
-{
-       unsigned int uiNodeId;
-
-       uiNodeId = EplObduCalGetNodeId();
-
-       return uiNodeId;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObduSetNodeId()
-//
-// Description: function sets nodeid in entry 0x1F93
-//
-//
-// Parameters:  uiNodeId_p  =   Node Id to set
-//              NodeIdType_p=   Type on which way the Node Id was set
-//
-// Return:      tEplKernel = Errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplObduSetNodeId(unsigned int uiNodeId_p, tEplObdNodeIdType NodeIdType_p)
-{
-       tEplKernel Ret;
-
-       Ret = EplObduCalSetNodeId(uiNodeId_p, NodeIdType_p);
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObduGetAccessType()
-//
-// Description: Function returns accesstype of the entry
-//
-// Parameters:  uiIndex_p       =   Index of the OD entry
-//              uiSubIndex_p    =   Subindex of the OD Entry
-//              pAccessTyp_p    =   pointer to buffer to store accesstyp
-//
-// Return:      tEplKernel      =   Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplObduGetAccessType(unsigned int uiIndex_p,
-                               unsigned int uiSubIndex_p,
-                               tEplObdAccess *pAccessTyp_p)
-{
-       tEplObdAccess AccessType;
-
-       AccessType =
-           EplObduCalGetAccessType(uiIndex_p, uiSubIndex_p, pAccessTyp_p);
-
-       return AccessType;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObdReaduEntryToLe()
-//
-// Description: The function reads an object entry from the byteoder
-//              of the system to the little endian byteorder for numeric values.
-//              For other types a normal read will be processed. This is usefull for
-//              the PDO and SDO module. The application
-//              can always read the data even if attrib kEplObdAccRead
-//              is not set. The attrib is only checked up for SDO transfer.
-//
-// Parameters:  EPL_MCO_DECL_INSTANCE_PTR_
-//              uiIndex_p       = Index of the OD entry to read
-//              uiSubIndex_p    = Subindex to read
-//              pDstData_p      = pointer to the buffer for data
-//              Offset_p        = offset in data for read access
-//              pSize_p         = IN: Size of the buffer
-//                                OUT: number of readed Bytes
-//
-// Return:      tEplKernel
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplObduReadEntryToLe(unsigned int uiIndex_p,
-                               unsigned int uiSubIndex_p,
-                               void *pDstData_p,
-                               tEplObdSize *pSize_p)
-{
-       tEplKernel Ret;
-
-       Ret =
-           EplObduCalReadEntryToLe(uiIndex_p, uiSubIndex_p, pDstData_p,
-                                   pSize_p);
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObduWriteEntryFromLe()
-//
-// Description: Function writes data to an OBD entry from a source with
-//              little endian byteorder to the od with system specuific
-//              byteorder. Not numeric values will only by copied. Strings
-//              are stored with added '\0' character.
-//
-// Parameters:  EPL_MCO_DECL_INSTANCE_PTR_
-//              uiIndex_p       =   Index of the OD entry
-//              uiSubIndex_p    =   Subindex of the OD Entry
-//              pSrcData_p      =   Pointer to the data to write
-//              Size_p          =   Size of the data in Byte
-//
-// Return:      tEplKernel      =   Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplObduWriteEntryFromLe(unsigned int uiIndex_p,
-                                  unsigned int uiSubIndex_p,
-                                  void *pSrcData_p,
-                                  tEplObdSize Size_p)
-{
-       tEplKernel Ret;
-
-       Ret =
-           EplObduCalWriteEntryFromLe(uiIndex_p, uiSubIndex_p, pSrcData_p,
-                                      Size_p);
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObduSearchVarEntry()
-//
-// Description: gets variable from OD
-//
-// Parameters:  uiIndex_p       =   index of the var entry to search
-//              uiSubindex_p    =   subindex of var entry to search
-//              ppVarEntry_p    =   pointer to the pointer to the varentry
-//
-// Return:      tEplKernel
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplObduSearchVarEntry(EPL_MCO_DECL_INSTANCE_PTR_ unsigned int uiIndex_p,
-                                unsigned int uiSubindex_p,
-                                tEplObdVarEntry **ppVarEntry_p)
-{
-       tEplKernel Ret;
-
-       Ret = EplObduCalSearchVarEntry(uiIndex_p, uiSubindex_p, ppVarEntry_p);
-
-       return Ret;
-}
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:
-//
-// Description:
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-#endif // #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDU)) != 0)
-
-// EOF
diff --git a/drivers/staging/epl/EplObduCal.c b/drivers/staging/epl/EplObduCal.c
deleted file mode 100644 (file)
index 55612cf..0000000
+++ /dev/null
@@ -1,543 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for communication abstraction layer
-                for the Epl-Obd-Userspace-Modul
-
-  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: EplObduCal.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.6 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/19 k.t.:   start of the implementation
-
-****************************************************************************/
-#include "EplInc.h"
-#include "user/EplObduCal.h"
-#include "kernel/EplObdk.h"
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDU)) != 0) && (EPL_OBD_USE_KERNEL != FALSE)
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObduCalWriteEntry()
-//
-// Description: Function encapsulate access of function EplObdWriteEntry
-//
-// Parameters:  uiIndex_p       =   Index of the OD entry
-//              uiSubIndex_p    =   Subindex of the OD Entry
-//              pSrcData_p      =   Pointer to the data to write
-//              Size_p          =   Size of the data in Byte
-//
-// Return:      tEplKernel      =   Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplObduCalWriteEntry(unsigned int uiIndex_p,
-                               unsigned int uiSubIndex_p,
-                               void *pSrcData_p, tEplObdSize Size_p)
-{
-       tEplKernel Ret;
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDK)) != 0)
-       Ret = EplObdWriteEntry(uiIndex_p, uiSubIndex_p, pSrcData_p, Size_p);
-#else
-       Ret = kEplSuccessful;
-#endif
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObduCalReadEntry()
-//
-// Description: Function encapsulate access of function EplObdReadEntry
-//
-// Parameters:  uiIndex_p       = Index oof the OD entry to read
-//              uiSubIndex_p    = Subindex to read
-//              pDstData_p      = pointer to the buffer for data
-//              Offset_p        = offset in data for read access
-//              pSize_p         = IN: Size of the buffer
-//                                OUT: number of readed Bytes
-//
-// Return:      tEplKernel      =   errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplObduCalReadEntry(unsigned int uiIndex_p,
-                              unsigned int uiSubIndex_p,
-                              void *pDstData_p, tEplObdSize *pSize_p)
-{
-       tEplKernel Ret;
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDK)) != 0)
-       Ret = EplObdReadEntry(uiIndex_p, uiSubIndex_p, pDstData_p, pSize_p);
-#else
-       Ret = kEplSuccessful;
-#endif
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObduCalAccessOdPart()
-//
-// Description: Function encapsulate access of function EplObdAccessOdPart
-//
-// Parameters:  ObdPart_p       = od-part to reset
-//              Direction_p     = directory flag for
-//
-// Return:      tEplKernel  = errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplObduCalAccessOdPart(tEplObdPart ObdPart_p, tEplObdDir Direction_p)
-{
-       tEplKernel Ret;
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDK)) != 0)
-       Ret = EplObdAccessOdPart(ObdPart_p, Direction_p);
-#else
-       Ret = kEplSuccessful;
-#endif
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObduCalDefineVar()
-//
-// Description: Function encapsulate access of function EplObdDefineVar
-//
-// Parameters:  pEplVarParam_p = varentry
-//
-// Return:      tEplKernel  =   errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplObduCalDefineVar(tEplVarParam *pVarParam_p)
-{
-       tEplKernel Ret;
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDK)) != 0)
-       Ret = EplObdDefineVar(pVarParam_p);
-#else
-       Ret = kEplSuccessful;
-#endif
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObduCalGetObjectDataPtr()
-//
-// Description: Function encapsulate access of function EplObdGetObjectDataPtr
-//
-// Parameters:  uiIndex_p    =   Index of the entry
-//              uiSubindex_p =   Subindex of the entry
-//
-// Return:      void *    = pointer to object data
-//
-// State:
-//
-//---------------------------------------------------------------------------
-void *EplObduCalGetObjectDataPtr(unsigned int uiIndex_p, unsigned int uiSubIndex_p)
-{
-       void *pData;
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDK)) != 0)
-       pData = EplObdGetObjectDataPtr(uiIndex_p, uiSubIndex_p);
-#else
-       pData = NULL;
-#endif
-
-       return pData;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObduCalRegisterUserOd()
-//
-// Description: Function encapsulate access of function EplObdRegisterUserOd
-//
-// Parameters:  pUserOd_p   = pointer to user OD
-//
-// Return:     tEplKernel = errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-#if (defined (EPL_OBD_USER_OD) && (EPL_OBD_USER_OD != FALSE))
-tEplKernel EplObduCalRegisterUserOd(tEplObdEntryPtr pUserOd_p)
-{
-       tEplKernel Ret;
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDK)) != 0)
-       Ret = EplObdRegisterUserOd(pUserOd_p);
-#else
-       Ret = kEplSuccessful;
-#endif
-
-       return Ret;
-
-}
-#endif
-//---------------------------------------------------------------------------
-//
-// Function:    EplObduCalInitVarEntry()
-//
-// Description: Function encapsulate access of function EplObdInitVarEntry
-//
-// Parameters:  pVarEntry_p = pointer to var entry structure
-//              bType_p     = object type
-//              ObdSize_p   = size of object data
-//
-// Returns:     none
-//
-// State:
-//
-//---------------------------------------------------------------------------
-void EplObduCalInitVarEntry(tEplObdVarEntry *pVarEntry_p, u8 bType_p,
-                           tEplObdSize ObdSize_p)
-{
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDK)) != 0)
-       EplObdInitVarEntry(pVarEntry_p, bType_p, ObdSize_p);
-#endif
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObduCalGetDataSize()
-//
-// Description: Function encapsulate access of function EplObdGetDataSize
-//
-//              gets the data size of an object
-//              for string objects it returnes the string length
-//
-// Parameters:  uiIndex_p   =   Index
-//              uiSubIndex_p=   Subindex
-//
-// Return:      tEplObdSize
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplObdSize EplObduCalGetDataSize(unsigned int uiIndex_p,
-                                 unsigned int uiSubIndex_p)
-{
-       tEplObdSize Size;
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDK)) != 0)
-       Size = EplObdGetDataSize(uiIndex_p, uiSubIndex_p);
-#else
-       Size = 0;
-#endif
-
-       return Size;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObduCalGetNodeId()
-//
-// Description: Function encapsulate access of function EplObdGetNodeId
-//
-//
-// Parameters:
-//
-// Return:      unsigned int = Node Id
-//
-// State:
-//
-//---------------------------------------------------------------------------
-unsigned int EplObduCalGetNodeId(void)
-{
-       unsigned int uiNodeId;
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDK)) != 0)
-       uiNodeId = EplObdGetNodeId();
-#else
-       uiNodeId = 0;
-#endif
-
-       return uiNodeId;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObduCalSetNodeId()
-//
-// Description: Function encapsulate access of function EplObdSetNodeId
-//
-//
-// Parameters:  uiNodeId_p  =   Node Id to set
-//              NodeIdType_p=   Type on which way the Node Id was set
-//
-// Return:      tEplKernel = Errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplObduCalSetNodeId(unsigned int uiNodeId_p,
-                              tEplObdNodeIdType NodeIdType_p)
-{
-       tEplKernel Ret;
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDK)) != 0)
-       Ret = EplObdSetNodeId(uiNodeId_p, NodeIdType_p);
-#else
-       Ret = kEplSuccessful;
-#endif
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObduCalGetAccessType()
-//
-// Description: Function encapsulate access of function EplObdGetAccessType
-//
-// Parameters:  uiIndex_p       =   Index of the OD entry
-//              uiSubIndex_p    =   Subindex of the OD Entry
-//              pAccessTyp_p    =   pointer to buffer to store accesstype
-//
-// Return:      tEplKernel      =   errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplObduCalGetAccessType(unsigned int uiIndex_p,
-                                  unsigned int uiSubIndex_p,
-                                  tEplObdAccess *pAccessTyp_p)
-{
-       tEplObdAccess AccesType;
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDK)) != 0)
-       AccesType = EplObdGetAccessType(uiIndex_p, uiSubIndex_p, pAccessTyp_p);
-#else
-       AccesType = 0;
-#endif
-
-       return AccesType;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObduCalReadEntryToLe()
-//
-// Description: Function encapsulate access of function EplObdReadEntryToLe
-//
-// Parameters:  uiIndex_p       = Index of the OD entry to read
-//              uiSubIndex_p    = Subindex to read
-//              pDstData_p      = pointer to the buffer for data
-//              Offset_p        = offset in data for read access
-//              pSize_p         = IN: Size of the buffer
-//                                OUT: number of readed Bytes
-//
-// Return:      tEplKernel
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplObduCalReadEntryToLe(unsigned int uiIndex_p,
-                                  unsigned int uiSubIndex_p,
-                                  void *pDstData_p,
-                                  tEplObdSize *pSize_p)
-{
-       tEplKernel Ret;
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDK)) != 0)
-       Ret = EplObdReadEntryToLe(uiIndex_p, uiSubIndex_p, pDstData_p, pSize_p);
-#else
-       Ret = kEplSuccessful;
-#endif
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObduCalWriteEntryFromLe()
-//
-// Description: Function encapsulate access of function EplObdWriteEntryFromLe
-//
-// Parameters:  uiIndex_p       =   Index of the OD entry
-//              uiSubIndex_p    =   Subindex of the OD Entry
-//              pSrcData_p      =   Pointer to the data to write
-//              Size_p          =   Size of the data in Byte
-//
-// Return:      tEplKernel      =   Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplObduCalWriteEntryFromLe(unsigned int uiIndex_p,
-                                     unsigned int uiSubIndex_p,
-                                     void *pSrcData_p, tEplObdSize Size_p)
-{
-       tEplKernel Ret;
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDK)) != 0)
-       Ret =
-           EplObdWriteEntryFromLe(uiIndex_p, uiSubIndex_p, pSrcData_p, Size_p);
-#else
-       Ret = kEplSuccessful;
-#endif
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplObduCalSearchVarEntry()
-//
-// Description: gets variable from OD
-//
-// Parameters:  uiIndex_p       =   index of the var entry to search
-//              uiSubindex_p    =   subindex of var entry to search
-//              ppVarEntry_p    =   pointer to the pointer to the varentry
-//
-// Return:      tEplKernel
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplObduCalSearchVarEntry(EPL_MCO_DECL_INSTANCE_PTR_ unsigned int uiIndex_p,
-                                   unsigned int uiSubindex_p,
-                                   tEplObdVarEntry **ppVarEntry_p)
-{
-       tEplKernel Ret;
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDK)) != 0)
-       Ret = EplObdSearchVarEntry(uiIndex_p, uiSubindex_p, ppVarEntry_p);
-#else
-       Ret = kEplSuccessful;
-#endif
-       return Ret;
-}
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:
-//
-// Description:
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-#endif //(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDU)) != 0)
-
-// EOF
diff --git a/drivers/staging/epl/EplPdo.h b/drivers/staging/epl/EplPdo.h
deleted file mode 100644 (file)
index 0b3ad5b..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for PDO module
-
-  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: EplPdo.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.5 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/05/22 d.k.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#ifndef _EPL_PDO_H_
-#define _EPL_PDO_H_
-
-#include "EplInc.h"
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-// invalid PDO-NodeId
-#define EPL_PDO_INVALID_NODE_ID     0xFF
-// NodeId for PReq RPDO
-#define EPL_PDO_PREQ_NODE_ID        0x00
-// NodeId for PRes TPDO
-#define EPL_PDO_PRES_NODE_ID        0x00
-
-//---------------------------------------------------------------------------
-// typedef
-//---------------------------------------------------------------------------
-
-typedef struct {
-       void *m_pVar;
-       u16 m_wOffset;          // in Bits
-       u16 m_wSize;            // in Bits
-       BOOL m_fNumeric;        // numeric value -> use AMI functions
-
-} tEplPdoMapping;
-
-typedef struct {
-       unsigned int m_uiSizeOfStruct;
-       unsigned int m_uiPdoId;
-       unsigned int m_uiNodeId;
-       // 0xFF=invalid, RPDO: 0x00=PReq, localNodeId=PRes, remoteNodeId=PRes
-       //               TPDO: 0x00=PRes, MN: CnNodeId=PReq
-
-       BOOL m_fTxRx;
-       u8 m_bMappingVersion;
-       unsigned int m_uiMaxMappingEntries;     // maximum number of mapping entries, i.e. size of m_aPdoMapping
-       tEplPdoMapping m_aPdoMapping[1];
-
-} tEplPdoParam;
-
-//---------------------------------------------------------------------------
-// function prototypes
-//---------------------------------------------------------------------------
-
-#endif // #ifndef _EPL_PDO_H_
diff --git a/drivers/staging/epl/EplPdok.c b/drivers/staging/epl/EplPdok.c
deleted file mode 100644 (file)
index db9b3f0..0000000
+++ /dev/null
@@ -1,669 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for kernel PDO module
-
-  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: EplPdok.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.8 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/05/22 d.k.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#include "kernel/EplPdok.h"
-#include "kernel/EplPdokCal.h"
-#include "kernel/EplEventk.h"
-#include "kernel/EplObdk.h"
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_PDOK)) != 0)
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLK)) == 0)
-
-#error 'ERROR: Missing DLLk-Modul!'
-
-#endif
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDK)) == 0)
-
-#error 'ERROR: Missing OBDk-Modul!'
-
-#endif
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-#define EPL_PDOK_OBD_IDX_RX_COMM_PARAM  0x1400
-#define EPL_PDOK_OBD_IDX_RX_MAPP_PARAM  0x1600
-#define EPL_PDOK_OBD_IDX_TX_COMM_PARAM  0x1800
-#define EPL_PDOK_OBD_IDX_TX_MAPP_PARAM  0x1A00
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          C L A S S  EplPdok                                             */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-//
-// Description:
-//
-//
-/***************************************************************************/
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   D E F I N I T I O N S                          //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local vars
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplPdokAddInstance()
-//
-// Description: add and initialize new instance of EPL stack
-//
-// Parameters:  none
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplPdokAddInstance(void)
-{
-
-       return kEplSuccessful;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplPdokDelInstance()
-//
-// Description: deletes an instance of EPL stack
-//
-// Parameters:  none
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplPdokDelInstance(void)
-{
-
-       return kEplSuccessful;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplPdokCbPdoReceived
-//
-// Description: This function is called by DLL if PRes or PReq frame was
-//              received. It posts the frame to the event queue.
-//              It is called in states NMT_CS_READY_TO_OPERATE and NMT_CS_OPERATIONAL.
-//              The passed PDO needs not to be valid.
-//
-// Parameters:  pFrameInfo_p            = pointer to frame info structure
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplPdokCbPdoReceived(tEplFrameInfo * pFrameInfo_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplEvent Event;
-
-       Event.m_EventSink = kEplEventSinkPdok;
-       Event.m_EventType = kEplEventTypePdoRx;
-       // limit copied data to size of PDO (because from some CNs the frame is larger than necessary)
-       Event.m_uiSize = AmiGetWordFromLe(&pFrameInfo_p->m_pFrame->m_Data.m_Pres.m_le_wSize) + 24;      // pFrameInfo_p->m_uiFrameSize;
-       Event.m_pArg = pFrameInfo_p->m_pFrame;
-       Ret = EplEventkPost(&Event);
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplPdokCbPdoTransmitted
-//
-// Description: This function is called by DLL if PRes or PReq frame was
-//              sent. It posts the pointer to the frame to the event queue.
-//              It is called in NMT_CS_PRE_OPERATIONAL_2,
-//              NMT_CS_READY_TO_OPERATE and NMT_CS_OPERATIONAL.
-//
-// Parameters:  pFrameInfo_p            = pointer to frame info structure
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplPdokCbPdoTransmitted(tEplFrameInfo * pFrameInfo_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplEvent Event;
-
-       Event.m_EventSink = kEplEventSinkPdok;
-       Event.m_EventType = kEplEventTypePdoTx;
-       Event.m_uiSize = sizeof(tEplFrameInfo);
-       Event.m_pArg = pFrameInfo_p;
-       Ret = EplEventkPost(&Event);
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplPdokCbSoa
-//
-// Description: This function is called by DLL if SoA frame was
-//              received resp. sent. It posts this event to the event queue.
-//
-// Parameters:  pFrameInfo_p            = pointer to frame info structure
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplPdokCbSoa(tEplFrameInfo * pFrameInfo_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplEvent Event;
-
-       Event.m_EventSink = kEplEventSinkPdok;
-       Event.m_EventType = kEplEventTypePdoSoa;
-       Event.m_uiSize = 0;
-       Event.m_pArg = NULL;
-       Ret = EplEventkPost(&Event);
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplPdokProcess
-//
-// Description: This function processes all received and transmitted PDOs.
-//              This function must not be interrupted by any other task
-//              except ISRs (like the ethernet driver ISR, which may call
-//              EplPdokCbFrameReceived() or EplPdokCbFrameTransmitted()).
-//
-// Parameters:  pEvent_p                = pointer to event structure
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplPdokProcess(tEplEvent * pEvent_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       u16 wPdoSize;
-       u16 wBitOffset;
-       u16 wBitSize;
-       u16 wVarSize;
-       u64 qwObjectMapping;
-       u8 bMappSubindex;
-       u8 bObdSubindex;
-       u16 wObdMappIndex;
-       u16 wObdCommIndex;
-       u16 wPdoId;
-       u8 bObdData;
-       u8 bObjectCount;
-       u8 bFrameData;
-       BOOL fValid;
-       tEplObdSize ObdSize;
-       tEplFrame *pFrame;
-       tEplFrameInfo *pFrameInfo;
-       unsigned int uiNodeId;
-       tEplMsgType MsgType;
-
-       // 0xFF=invalid, RPDO: 0x00=PReq, localNodeId=PRes, remoteNodeId=PRes
-       //               TPDO: 0x00=PRes, MN: CnNodeId=PReq
-
-       switch (pEvent_p->m_EventType) {
-       case kEplEventTypePdoRx:        // RPDO received
-               pFrame = (tEplFrame *) pEvent_p->m_pArg;
-
-               // check if received RPDO is valid
-               bFrameData =
-                   AmiGetByteFromLe(&pFrame->m_Data.m_Pres.m_le_bFlag1);
-               if ((bFrameData & EPL_FRAME_FLAG1_RD) == 0) {   // RPDO invalid
-                       goto Exit;
-               }
-               // retrieve EPL message type
-               MsgType = AmiGetByteFromLe(&pFrame->m_le_bMessageType);
-               if (MsgType == kEplMsgTypePreq) {       // RPDO is PReq frame
-                       uiNodeId = EPL_PDO_PREQ_NODE_ID;        // 0x00
-               } else {        // RPDO is PRes frame
-                       // retrieve node ID
-                       uiNodeId = AmiGetByteFromLe(&pFrame->m_le_bSrcNodeId);
-               }
-
-               // search for appropriate valid RPDO in OD
-               wObdMappIndex = EPL_PDOK_OBD_IDX_RX_MAPP_PARAM;
-               for (wObdCommIndex = EPL_PDOK_OBD_IDX_RX_COMM_PARAM;
-                    wObdCommIndex < (EPL_PDOK_OBD_IDX_RX_COMM_PARAM + 0x00FF);
-                    wObdCommIndex++, wObdMappIndex++) {
-                       ObdSize = 1;
-                       // read node ID from OD
-                       Ret =
-                           EplObdReadEntry(wObdCommIndex, 0x01, &bObdData,
-                                           &ObdSize);
-                       if ((Ret == kEplObdIndexNotExist)
-                           || (Ret == kEplObdSubindexNotExist)
-                           || (Ret == kEplObdIllegalPart)) {   // PDO does not exist; last PDO reached
-                               Ret = kEplSuccessful;
-                               goto Exit;
-                       } else if (Ret != kEplSuccessful) {     // other fatal error occured
-                               goto Exit;
-                       }
-                       // entry read successfully
-                       if (bObdData != uiNodeId) {     // node ID does not equal - wrong PDO, try next PDO in OD
-                               continue;
-                       }
-                       ObdSize = 1;
-                       // read number of mapped objects from OD; this indicates if the PDO is valid
-                       Ret =
-                           EplObdReadEntry(wObdMappIndex, 0x00, &bObjectCount,
-                                           &ObdSize);
-                       if ((Ret == kEplObdIndexNotExist)
-                           || (Ret == kEplObdSubindexNotExist)
-                           || (Ret == kEplObdIllegalPart)) {   // PDO does not exist; last PDO reached
-                               Ret = kEplSuccessful;
-                               goto Exit;
-                       } else if (Ret != kEplSuccessful) {     // other fatal error occured
-                               goto Exit;
-                       }
-                       // entry read successfully
-                       if (bObjectCount == 0) {        // PDO in OD not valid, try next PDO in OD
-                               continue;
-                       }
-
-                       ObdSize = 1;
-                       // check PDO mapping version
-                       Ret =
-                           EplObdReadEntry(wObdCommIndex, 0x02, &bObdData,
-                                           &ObdSize);
-                       if (Ret != kEplSuccessful) {    // other fatal error occured
-                               goto Exit;
-                       }
-                       // entry read successfully
-                       // retrieve PDO version from frame
-                       bFrameData =
-                           AmiGetByteFromLe(&pFrame->m_Data.m_Pres.
-                                            m_le_bPdoVersion);
-                       if ((bObdData & EPL_VERSION_MAIN) != (bFrameData & EPL_VERSION_MAIN)) { // PDO versions do not match
-                               // $$$ raise PDO error
-                               // termiate processing of this RPDO
-                               goto Exit;
-                       }
-                       // valid RPDO found
-
-                       // retrieve PDO size
-                       wPdoSize =
-                           AmiGetWordFromLe(&pFrame->m_Data.m_Pres.m_le_wSize);
-
-                       // process mapping
-                       for (bMappSubindex = 1; bMappSubindex <= bObjectCount;
-                            bMappSubindex++) {
-                               ObdSize = 8;    // u64
-                               // read object mapping from OD
-                               Ret =
-                                   EplObdReadEntry(wObdMappIndex,
-                                                   bMappSubindex,
-                                                   &qwObjectMapping, &ObdSize);
-                               if (Ret != kEplSuccessful) {    // other fatal error occured
-                                       goto Exit;
-                               }
-                               // check if object mapping entry is valid, i.e. unequal zero, because "empty" entries are allowed
-                               if (qwObjectMapping == 0) {     // invalid entry, continue with next entry
-                                       continue;
-                               }
-                               // decode object mapping
-                               wObdCommIndex =
-                                   (u16) (qwObjectMapping &
-                                           0x000000000000FFFFLL);
-                               bObdSubindex =
-                                   (u8) ((qwObjectMapping &
-                                            0x0000000000FF0000LL) >> 16);
-                               wBitOffset =
-                                   (u16) ((qwObjectMapping &
-                                            0x0000FFFF00000000LL) >> 32);
-                               wBitSize =
-                                   (u16) ((qwObjectMapping &
-                                            0xFFFF000000000000LL) >> 48);
-
-                               // check if object exceeds PDO size
-                               if (((wBitOffset + wBitSize) >> 3) > wPdoSize) {        // wrong object mapping; PDO size is too low
-                                       // $$$ raise PDO error
-                                       // terminate processing of this RPDO
-                                       goto Exit;
-                               }
-                               // copy object from RPDO to process/OD variable
-                               ObdSize = wBitSize >> 3;
-                               Ret =
-                                   EplObdWriteEntryFromLe(wObdCommIndex,
-                                                          bObdSubindex,
-                                                          &pFrame->m_Data.
-                                                          m_Pres.
-                                                          m_le_abPayload[(wBitOffset >> 3)], ObdSize);
-                               if (Ret != kEplSuccessful) {    // other fatal error occured
-                                       goto Exit;
-                               }
-
-                       }
-
-                       // processing finished successfully
-                       goto Exit;
-               }
-               break;
-
-       case kEplEventTypePdoTx:        // TPDO transmitted
-               pFrameInfo = (tEplFrameInfo *) pEvent_p->m_pArg;
-               pFrame = pFrameInfo->m_pFrame;
-
-               // set TPDO invalid, so that only fully processed TPDOs are sent as valid
-               bFrameData =
-                   AmiGetByteFromLe(&pFrame->m_Data.m_Pres.m_le_bFlag1);
-               AmiSetByteToLe(&pFrame->m_Data.m_Pres.m_le_bFlag1,
-                              (bFrameData & ~EPL_FRAME_FLAG1_RD));
-
-               // retrieve EPL message type
-               MsgType = AmiGetByteFromLe(&pFrame->m_le_bMessageType);
-               if (MsgType == kEplMsgTypePres) {       // TPDO is PRes frame
-                       uiNodeId = EPL_PDO_PRES_NODE_ID;        // 0x00
-               } else {        // TPDO is PReq frame
-                       // retrieve node ID
-                       uiNodeId = AmiGetByteFromLe(&pFrame->m_le_bDstNodeId);
-               }
-
-               // search for appropriate valid TPDO in OD
-               wObdMappIndex = EPL_PDOK_OBD_IDX_TX_MAPP_PARAM;
-               wObdCommIndex = EPL_PDOK_OBD_IDX_TX_COMM_PARAM;
-               for (wPdoId = 0;; wPdoId++, wObdCommIndex++, wObdMappIndex++) {
-                       ObdSize = 1;
-                       // read node ID from OD
-                       Ret =
-                           EplObdReadEntry(wObdCommIndex, 0x01, &bObdData,
-                                           &ObdSize);
-                       if ((Ret == kEplObdIndexNotExist)
-                           || (Ret == kEplObdSubindexNotExist)
-                           || (Ret == kEplObdIllegalPart)) {   // PDO does not exist; last PDO reached
-                               Ret = kEplSuccessful;
-                               goto Exit;
-                       } else if (Ret != kEplSuccessful) {     // other fatal error occured
-                               goto Exit;
-                       }
-                       // entry read successfully
-                       if (bObdData != uiNodeId) {     // node ID does not equal - wrong PDO, try next PDO in OD
-                               continue;
-                       }
-                       ObdSize = 1;
-                       // read number of mapped objects from OD; this indicates if the PDO is valid
-                       Ret =
-                           EplObdReadEntry(wObdMappIndex, 0x00, &bObjectCount,
-                                           &ObdSize);
-                       if ((Ret == kEplObdIndexNotExist)
-                           || (Ret == kEplObdSubindexNotExist)
-                           || (Ret == kEplObdIllegalPart)) {   // PDO does not exist; last PDO reached
-                               Ret = kEplSuccessful;
-                               goto Exit;
-                       } else if (Ret != kEplSuccessful) {     // other fatal error occured
-                               goto Exit;
-                       }
-                       // entry read successfully
-                       if (bObjectCount == 0) {        // PDO in OD not valid, try next PDO in OD
-                               continue;
-                       }
-                       // valid TPDO found
-
-                       ObdSize = 1;
-                       // get PDO mapping version from OD
-                       Ret =
-                           EplObdReadEntry(wObdCommIndex, 0x02, &bObdData,
-                                           &ObdSize);
-                       if (Ret != kEplSuccessful) {    // other fatal error occured
-                               goto Exit;
-                       }
-                       // entry read successfully
-                       // set PDO version in frame
-                       AmiSetByteToLe(&pFrame->m_Data.m_Pres.m_le_bPdoVersion,
-                                      bObdData);
-
-                       // calculate PDO size
-                       wPdoSize = 0;
-
-                       // process mapping
-                       for (bMappSubindex = 1; bMappSubindex <= bObjectCount;
-                            bMappSubindex++) {
-                               ObdSize = 8;    // u64
-                               // read object mapping from OD
-                               Ret =
-                                   EplObdReadEntry(wObdMappIndex,
-                                                   bMappSubindex,
-                                                   &qwObjectMapping, &ObdSize);
-                               if (Ret != kEplSuccessful) {    // other fatal error occured
-                                       goto Exit;
-                               }
-                               // check if object mapping entry is valid, i.e. unequal zero, because "empty" entries are allowed
-                               if (qwObjectMapping == 0) {     // invalid entry, continue with next entry
-                                       continue;
-                               }
-                               // decode object mapping
-                               wObdCommIndex =
-                                   (u16) (qwObjectMapping &
-                                           0x000000000000FFFFLL);
-                               bObdSubindex =
-                                   (u8) ((qwObjectMapping &
-                                            0x0000000000FF0000LL) >> 16);
-                               wBitOffset =
-                                   (u16) ((qwObjectMapping &
-                                            0x0000FFFF00000000LL) >> 32);
-                               wBitSize =
-                                   (u16) ((qwObjectMapping &
-                                            0xFFFF000000000000LL) >> 48);
-
-                               // calculate max PDO size
-                               ObdSize = wBitSize >> 3;
-                               wVarSize = (wBitOffset >> 3) + (u16) ObdSize;
-                               if ((unsigned int)(wVarSize + 24) > pFrameInfo->m_uiFrameSize) {        // TPDO is too short
-                                       // $$$ raise PDO error, set Ret
-                                       goto Exit;
-                               }
-                               if (wVarSize > wPdoSize) {      // memorize new PDO size
-                                       wPdoSize = wVarSize;
-                               }
-                               // copy object from process/OD variable to TPDO
-                               Ret =
-                                   EplObdReadEntryToLe(wObdCommIndex,
-                                                       bObdSubindex,
-                                                       &pFrame->m_Data.m_Pres.
-                                                       m_le_abPayload[(wBitOffset >> 3)], &ObdSize);
-                               if (Ret != kEplSuccessful) {    // other fatal error occured
-                                       goto Exit;
-                               }
-
-                       }
-
-                       // set PDO size in frame
-                       AmiSetWordToLe(&pFrame->m_Data.m_Pres.m_le_wSize,
-                                      wPdoSize);
-
-                       Ret = EplPdokCalAreTpdosValid(&fValid);
-                       if (fValid != FALSE) {
-                               // set TPDO valid
-                               bFrameData =
-                                   AmiGetByteFromLe(&pFrame->m_Data.m_Pres.
-                                                    m_le_bFlag1);
-                               AmiSetByteToLe(&pFrame->m_Data.m_Pres.
-                                              m_le_bFlag1,
-                                              (bFrameData |
-                                               EPL_FRAME_FLAG1_RD));
-                       }
-                       // processing finished successfully
-
-                       goto Exit;
-               }
-               break;
-
-       case kEplEventTypePdoSoa:       // SoA received
-
-               // invalidate TPDOs
-               Ret = EplPdokCalSetTpdosValid(FALSE);
-               break;
-
-       default:
-               {
-                       ASSERTMSG(FALSE,
-                                 "EplPdokProcess(): unhandled event type!\n");
-               }
-       }
-
-      Exit:
-       return Ret;
-}
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:
-//
-// Description:
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-#endif // #if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_PDOK)) != 0)
-
-// EOF
diff --git a/drivers/staging/epl/EplPdokCal.c b/drivers/staging/epl/EplPdokCal.c
deleted file mode 100644 (file)
index f44c475..0000000
+++ /dev/null
@@ -1,266 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for kernel PDO Communication Abstraction Layer module
-
-  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: EplPdokCal.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.6 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/27 d.k.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#include "kernel/EplPdokCal.h"
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_PDOK)) != 0)
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          C L A S S  EplPdokCal                                          */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-//
-// Description:
-//
-//
-/***************************************************************************/
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   D E F I N I T I O N S                          //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-typedef struct {
-       BOOL m_fTpdosValid;
-
-} tEplPdokCalInstance;
-
-//---------------------------------------------------------------------------
-// local vars
-//---------------------------------------------------------------------------
-
-static tEplPdokCalInstance EplPdokCalInstance_g;
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplPdokCalAddInstance()
-//
-// Description: add and initialize new instance of EPL stack
-//
-// Parameters:  none
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplPdokCalAddInstance(void)
-{
-
-       EPL_MEMSET(&EplPdokCalInstance_g, 0, sizeof(EplPdokCalInstance_g));
-
-       return kEplSuccessful;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplPdokCalDelInstance()
-//
-// Description: deletes an instance of EPL stack
-//
-// Parameters:  none
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplPdokCalDelInstance(void)
-{
-
-       return kEplSuccessful;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplPdokCalSetTpdosValid()
-//
-// Description: This function sets the validity flag for TPDOs to the
-//              specified value.
-//
-// Parameters:  fValid_p                = validity flag
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplPdokCalSetTpdosValid(BOOL fValid_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       EplPdokCalInstance_g.m_fTpdosValid = fValid_p;
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplPdokCalAreTpdosValid()
-//
-// Description: This function returns the validity flag for TPDOs.
-//
-// Parameters:  pfValid_p               = OUT: validity flag
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplPdokCalAreTpdosValid(BOOL * pfValid_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       *pfValid_p = EplPdokCalInstance_g.m_fTpdosValid;
-
-       return Ret;
-}
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:
-//
-// Description:
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-#endif
-
-// EOF
diff --git a/drivers/staging/epl/EplPdou.c b/drivers/staging/epl/EplPdou.c
deleted file mode 100644 (file)
index d6d0624..0000000
+++ /dev/null
@@ -1,565 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for user PDO module
-                Currently, this module just implements a OD callback function
-                to check if the PDO configuration is valid.
-
-  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: EplPdou.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.5 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/05/22 d.k.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#include "EplInc.h"
-//#include "user/EplPdouCal.h"
-#include "user/EplObdu.h"
-#include "user/EplPdou.h"
-#include "EplSdoAc.h"
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_PDOU)) != 0)
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDU)) == 0) && (EPL_OBD_USE_KERNEL == FALSE)
-#error "EPL PDOu module needs EPL module OBDU or OBDK!"
-#endif
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-#define EPL_PDOU_OBD_IDX_RX_COMM_PARAM  0x1400
-#define EPL_PDOU_OBD_IDX_RX_MAPP_PARAM  0x1600
-#define EPL_PDOU_OBD_IDX_TX_COMM_PARAM  0x1800
-#define EPL_PDOU_OBD_IDX_TX_MAPP_PARAM  0x1A00
-#define EPL_PDOU_OBD_IDX_MAPP_PARAM     0x0200
-#define EPL_PDOU_OBD_IDX_MASK           0xFF00
-#define EPL_PDOU_PDO_ID_MASK            0x00FF
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          C L A S S  EplPdou                                             */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-//
-// Description:
-//
-//
-/***************************************************************************/
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   D E F I N I T I O N S                          //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local vars
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-static tEplKernel EplPdouCheckPdoValidity(tEplObdCbParam *pParam_p,
-                                         unsigned int uiIndex_p);
-
-static void EplPdouDecodeObjectMapping(u64 qwObjectMapping_p,
-                                      unsigned int *puiIndex_p,
-                                      unsigned int *puiSubIndex_p,
-                                      unsigned int *puiBitOffset_p,
-                                      unsigned int *puiBitSize_p);
-
-static tEplKernel EplPdouCheckObjectMapping(u64 qwObjectMapping_p,
-                                           tEplObdAccess AccessType_p,
-                                           u32 * pdwAbortCode_p,
-                                           unsigned int *puiPdoSize_p);
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplPdouAddInstance()
-//
-// Description: add and initialize new instance of EPL stack
-//
-// Parameters:  none
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplPdouAddInstance(void)
-{
-
-       return kEplSuccessful;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplPdouDelInstance()
-//
-// Description: deletes an instance of EPL stack
-//
-// Parameters:  none
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplPdouDelInstance(void)
-{
-
-       return kEplSuccessful;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplPdouCbObdAccess
-//
-// Description: callback function for OD accesses
-//
-// Parameters:  pParam_p                = OBD parameter
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplPdouCbObdAccess(tEplObdCbParam *pParam_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       unsigned int uiPdoId;
-       unsigned int uiIndexType;
-       tEplObdSize ObdSize;
-       u8 bObjectCount;
-       u64 qwObjectMapping;
-       tEplObdAccess AccessType;
-       u8 bMappSubindex;
-       unsigned int uiCurPdoSize;
-       u16 wMaxPdoSize;
-       unsigned int uiSubIndex;
-
-       // fetch PDO ID
-       uiPdoId = pParam_p->m_uiIndex & EPL_PDOU_PDO_ID_MASK;
-
-       // fetch object index type
-       uiIndexType = pParam_p->m_uiIndex & EPL_PDOU_OBD_IDX_MASK;
-
-       if (pParam_p->m_ObdEvent != kEplObdEvPreWrite) {        // read accesses, post write events etc. are OK
-               pParam_p->m_dwAbortCode = 0;
-               goto Exit;
-       }
-       // check index type
-       switch (uiIndexType) {
-       case EPL_PDOU_OBD_IDX_RX_COMM_PARAM:
-               // RPDO communication parameter accessed
-       case EPL_PDOU_OBD_IDX_TX_COMM_PARAM:
-               {               // TPDO communication parameter accessed
-                       Ret = EplPdouCheckPdoValidity(pParam_p,
-                                                     (EPL_PDOU_OBD_IDX_MAPP_PARAM
-                                                      | pParam_p->m_uiIndex));
-                       if (Ret != kEplSuccessful) {    // PDO is valid or does not exist
-                               goto Exit;
-                       }
-
-                       goto Exit;
-               }
-
-       case EPL_PDOU_OBD_IDX_RX_MAPP_PARAM:
-               {               // RPDO mapping parameter accessed
-
-                       AccessType = kEplObdAccWrite;
-                       break;
-               }
-
-       case EPL_PDOU_OBD_IDX_TX_MAPP_PARAM:
-               {               // TPDO mapping parameter accessed
-
-                       AccessType = kEplObdAccRead;
-                       break;
-               }
-
-       default:
-               {               // this callback function is only for
-                       // PDO mapping and communication parameters
-                       pParam_p->m_dwAbortCode = EPL_SDOAC_GENERAL_ERROR;
-                       goto Exit;
-               }
-       }
-
-       // RPDO and TPDO mapping parameter accessed
-
-       if (pParam_p->m_uiSubIndex == 0) {      // object mapping count accessed
-
-               // PDO is enabled or disabled
-               bObjectCount = *((u8 *) pParam_p->m_pArg);
-
-               if (bObjectCount == 0) {        // PDO shall be disabled
-
-                       // that is always possible
-                       goto Exit;
-               }
-               // PDO shall be enabled
-               // it should have been disabled for this operation
-               Ret = EplPdouCheckPdoValidity(pParam_p, pParam_p->m_uiIndex);
-               if (Ret != kEplSuccessful) {    // PDO is valid or does not exist
-                       goto Exit;
-               }
-
-               if (AccessType == kEplObdAccWrite) {
-                       uiSubIndex = 0x04;      // PReqActPayloadLimit_U16
-               } else {
-                       uiSubIndex = 0x05;      // PResActPayloadLimit_U16
-               }
-
-               // fetch maximum PDO size from Object 1F98h: NMT_CycleTiming_REC
-               ObdSize = sizeof(wMaxPdoSize);
-               Ret =
-                   EplObduReadEntry(0x1F98, uiSubIndex, &wMaxPdoSize,
-                                    &ObdSize);
-               if (Ret != kEplSuccessful) {    // other fatal error occured
-                       pParam_p->m_dwAbortCode = EPL_SDOAC_GENERAL_ERROR;
-                       goto Exit;
-               }
-               // check all objectmappings
-               for (bMappSubindex = 1; bMappSubindex <= bObjectCount;
-                    bMappSubindex++) {
-                       // read object mapping from OD
-                       ObdSize = sizeof(qwObjectMapping);      // u64
-                       Ret = EplObduReadEntry(pParam_p->m_uiIndex,
-                                              bMappSubindex, &qwObjectMapping,
-                                              &ObdSize);
-                       if (Ret != kEplSuccessful) {    // other fatal error occured
-                               pParam_p->m_dwAbortCode =
-                                   EPL_SDOAC_GENERAL_ERROR;
-                               goto Exit;
-                       }
-                       // check object mapping
-                       Ret = EplPdouCheckObjectMapping(qwObjectMapping,
-                                                       AccessType,
-                                                       &pParam_p->
-                                                       m_dwAbortCode,
-                                                       &uiCurPdoSize);
-                       if (Ret != kEplSuccessful) {    // illegal object mapping
-                               goto Exit;
-                       }
-
-                       if (uiCurPdoSize > wMaxPdoSize) {       // mapping exceeds object size
-                               pParam_p->m_dwAbortCode =
-                                   EPL_SDOAC_GENERAL_ERROR;
-                               Ret = kEplPdoVarNotFound;
-                       }
-
-               }
-
-       } else {                // ObjectMapping
-               Ret = EplPdouCheckPdoValidity(pParam_p, pParam_p->m_uiIndex);
-               if (Ret != kEplSuccessful) {    // PDO is valid or does not exist
-                       goto Exit;
-               }
-               // check existence of object and validity of object length
-
-               qwObjectMapping = *((u64 *) pParam_p->m_pArg);
-
-               Ret = EplPdouCheckObjectMapping(qwObjectMapping,
-                                               AccessType,
-                                               &pParam_p->m_dwAbortCode,
-                                               &uiCurPdoSize);
-
-       }
-
-      Exit:
-       return Ret;
-}
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplPdouCheckPdoValidity
-//
-// Description: check if PDO is valid
-//
-// Parameters:  pParam_p                = OBD parameter
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplPdouCheckPdoValidity(tEplObdCbParam *pParam_p,
-                                         unsigned int uiIndex_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplObdSize ObdSize;
-       u8 bObjectCount;
-
-       ObdSize = 1;
-       // read number of mapped objects from OD; this indicates if the PDO is valid
-       Ret = EplObduReadEntry(uiIndex_p, 0x00, &bObjectCount, &ObdSize);
-       if (Ret != kEplSuccessful) {    // other fatal error occured
-               pParam_p->m_dwAbortCode =
-                   EPL_SDOAC_GEN_INTERNAL_INCOMPATIBILITY;
-               goto Exit;
-       }
-       // entry read successfully
-       if (bObjectCount != 0) {        // PDO in OD is still valid
-               pParam_p->m_dwAbortCode = EPL_SDOAC_GEN_PARAM_INCOMPATIBILITY;
-               Ret = kEplPdoNotExist;
-               goto Exit;
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplPdouDecodeObjectMapping
-//
-// Description: decodes the given object mapping entry into index, subindex,
-//              bit offset and bit size.
-//
-// Parameters:  qwObjectMapping_p       = object mapping entry
-//              puiIndex_p              = [OUT] pointer to object index
-//              puiSubIndex_p           = [OUT] pointer to subindex
-//              puiBitOffset_p          = [OUT] pointer to bit offset
-//              puiBitSize_p            = [OUT] pointer to bit size
-//
-// Returns:     (void)
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static void EplPdouDecodeObjectMapping(u64 qwObjectMapping_p,
-                                      unsigned int *puiIndex_p,
-                                      unsigned int *puiSubIndex_p,
-                                      unsigned int *puiBitOffset_p,
-                                      unsigned int *puiBitSize_p)
-{
-       *puiIndex_p = (unsigned int)
-           (qwObjectMapping_p & 0x000000000000FFFFLL);
-
-       *puiSubIndex_p = (unsigned int)
-           ((qwObjectMapping_p & 0x0000000000FF0000LL) >> 16);
-
-       *puiBitOffset_p = (unsigned int)
-           ((qwObjectMapping_p & 0x0000FFFF00000000LL) >> 32);
-
-       *puiBitSize_p = (unsigned int)
-           ((qwObjectMapping_p & 0xFFFF000000000000LL) >> 48);
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplPdouCheckObjectMapping
-//
-// Description: checks the given object mapping entry.
-//
-// Parameters:  qwObjectMapping_p       = object mapping entry
-//              AccessType_p            = access type to mapped object:
-//                                        write = RPDO and read = TPDO
-//              puiPdoSize_p            = [OUT] pointer to covered PDO size
-//                                        (offset + size) in byte;
-//                                        0 if mapping failed
-//              pdwAbortCode_p          = [OUT] pointer to SDO abort code;
-//                                        0 if mapping is possible
-//
-// Returns:     tEplKernel              = error code
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static tEplKernel EplPdouCheckObjectMapping(u64 qwObjectMapping_p,
-                                           tEplObdAccess AccessType_p,
-                                           u32 * pdwAbortCode_p,
-                                           unsigned int *puiPdoSize_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplObdSize ObdSize;
-       unsigned int uiIndex;
-       unsigned int uiSubIndex;
-       unsigned int uiBitOffset;
-       unsigned int uiBitSize;
-       tEplObdAccess AccessType;
-       BOOL fNumerical;
-
-       if (qwObjectMapping_p == 0) {   // discard zero value
-               *puiPdoSize_p = 0;
-               goto Exit;
-       }
-       // decode object mapping
-       EplPdouDecodeObjectMapping(qwObjectMapping_p,
-                                  &uiIndex,
-                                  &uiSubIndex, &uiBitOffset, &uiBitSize);
-
-       if ((uiBitOffset & 0x7) != 0x0) {       // bit mapping is not supported
-               *pdwAbortCode_p = EPL_SDOAC_GENERAL_ERROR;
-               Ret = kEplPdoGranularityMismatch;
-               goto Exit;
-       }
-
-       if ((uiBitSize & 0x7) != 0x0) { // bit mapping is not supported
-               *pdwAbortCode_p = EPL_SDOAC_GENERAL_ERROR;
-               Ret = kEplPdoGranularityMismatch;
-               goto Exit;
-       }
-       // check access type
-       Ret = EplObduGetAccessType(uiIndex, uiSubIndex, &AccessType);
-       if (Ret != kEplSuccessful) {    // entry doesn't exist
-               *pdwAbortCode_p = EPL_SDOAC_OBJECT_NOT_EXIST;
-               goto Exit;
-       }
-
-       if ((AccessType & kEplObdAccPdo) == 0) {        // object is not mappable
-               *pdwAbortCode_p = EPL_SDOAC_OBJECT_NOT_MAPPABLE;
-               Ret = kEplPdoVarNotFound;
-               goto Exit;
-       }
-
-       if ((AccessType & AccessType_p) == 0) { // object is not writeable (RPDO) or readable (TPDO) respectively
-               *pdwAbortCode_p = EPL_SDOAC_OBJECT_NOT_MAPPABLE;
-               Ret = kEplPdoVarNotFound;
-               goto Exit;
-       }
-
-       ObdSize = EplObduGetDataSize(uiIndex, uiSubIndex);
-       if (ObdSize < (uiBitSize >> 3)) {       // object does not exist or has smaller size
-               *pdwAbortCode_p = EPL_SDOAC_GENERAL_ERROR;
-               Ret = kEplPdoVarNotFound;
-       }
-
-       Ret = EplObduIsNumerical(uiIndex, uiSubIndex, &fNumerical);
-       if (Ret != kEplSuccessful) {    // entry doesn't exist
-               *pdwAbortCode_p = EPL_SDOAC_OBJECT_NOT_EXIST;
-               goto Exit;
-       }
-
-       if ((fNumerical != FALSE)
-           && ((uiBitSize >> 3) != ObdSize)) {
-               // object is numerical,
-               // therefor size has to fit, but it does not.
-               *pdwAbortCode_p = EPL_SDOAC_GENERAL_ERROR;
-               Ret = kEplPdoVarNotFound;
-               goto Exit;
-       }
-       // calucaled needed PDO size
-       *puiPdoSize_p = (uiBitOffset >> 3) + (uiBitSize >> 3);
-
-      Exit:
-       return Ret;
-}
-
-#endif // #if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_PDOU)) != 0)
-
-// EOF
diff --git a/drivers/staging/epl/EplSdo.h b/drivers/staging/epl/EplSdo.h
deleted file mode 100644 (file)
index 8002e0c..0000000
+++ /dev/null
@@ -1,241 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for api function of the sdo module
-
-  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: EplSdo.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.6 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
- 2006/06/26 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#include "EplInc.h"
-#include "EplFrame.h"
-#include "EplSdoAc.h"
-
-#ifndef _EPLSDO_H_
-#define _EPLSDO_H_
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-// global defines
-#ifndef EPL_SDO_MAX_PAYLOAD
-#define EPL_SDO_MAX_PAYLOAD     256
-#endif
-
-// handle between Protocol Abstraction Layer and asynchronous SDO Sequence Layer
-#define EPL_SDO_UDP_HANDLE      0x8000
-#define EPL_SDO_ASND_HANDLE     0x4000
-#define EPL_SDO_ASY_HANDLE_MASK 0xC000
-#define EPL_SDO_ASY_INVALID_HDL 0x3FFF
-
-// handle between  SDO Sequence Layer and sdo command layer
-#define EPL_SDO_ASY_HANDLE      0x8000
-#define EPL_SDO_PDO_HANDLE      0x4000
-#define EPL_SDO_SEQ_HANDLE_MASK 0xC000
-#define EPL_SDO_SEQ_INVALID_HDL 0x3FFF
-
-#define EPL_ASND_HEADER_SIZE        4
-//#define EPL_SEQ_HEADER_SIZE         4
-#define EPL_ETHERNET_HEADER_SIZE    14
-
-#define EPL_SEQ_NUM_MASK            0xFC
-
-// size for send buffer and history
-#define EPL_MAX_SDO_FRAME_SIZE      EPL_C_IP_MIN_MTU
-// size for receive frame
-// -> needed because SND-Kit sends up to 1518 Byte
-//    without Sdo-Command: Maximum Segment Size
-#define EPL_MAX_SDO_REC_FRAME_SIZE  EPL_C_IP_MAX_MTU
-
-//---------------------------------------------------------------------------
-// typedef
-//---------------------------------------------------------------------------
-// handle between Protocol Abstraction Layer and asynchronuus SDO Sequence Layer
-typedef unsigned int tEplSdoConHdl;
-
-// callback function pointer for Protocol Abstraction Layer to call
-// asynchronuus SDO Sequence Layer
-typedef tEplKernel(*tEplSequLayerReceiveCb) (tEplSdoConHdl ConHdl_p,
-                                            tEplAsySdoSeq *pSdoSeqData_p,
-                                            unsigned int uiDataSize_p);
-
-// handle between asynchronuus SDO Sequence Layer and SDO Command layer
-typedef unsigned int tEplSdoSeqConHdl;
-
-// callback function pointer for asynchronuus SDO Sequence Layer to call
-// SDO Command layer for received data
-typedef tEplKernel(* tEplSdoComReceiveCb) (tEplSdoSeqConHdl SdoSeqConHdl_p,
-                                          tEplAsySdoCom *pAsySdoCom_p,
-                                          unsigned int uiDataSize_p);
-
-// status of connection
-typedef enum {
-       kAsySdoConStateConnected = 0x00,
-       kAsySdoConStateInitError = 0x01,
-       kAsySdoConStateConClosed = 0x02,
-       kAsySdoConStateAckReceived = 0x03,
-       kAsySdoConStateFrameSended = 0x04,
-       kAsySdoConStateTimeout = 0x05
-} tEplAsySdoConState;
-
-// callback function pointer for asynchronuus SDO Sequence Layer to call
-// SDO Command layer for connection status
-typedef tEplKernel(* tEplSdoComConCb) (tEplSdoSeqConHdl SdoSeqConHdl_p,
-                                      tEplAsySdoConState AsySdoConState_p);
-
-// handle between  SDO Command layer and application
-typedef unsigned int tEplSdoComConHdl;
-
-// status of connection
-typedef enum {
-       kEplSdoComTransferNotActive = 0x00,
-       kEplSdoComTransferRunning = 0x01,
-       kEplSdoComTransferTxAborted = 0x02,
-       kEplSdoComTransferRxAborted = 0x03,
-       kEplSdoComTransferFinished = 0x04,
-       kEplSdoComTransferLowerLayerAbort = 0x05
-} tEplSdoComConState;
-
-// SDO Services and Command-Ids from DS 1.0.0 p.152
-typedef enum {
-       kEplSdoServiceNIL = 0x00,
-       kEplSdoServiceWriteByIndex = 0x01,
-       kEplSdoServiceReadByIndex = 0x02
-           //--------------------------------
-           // the following services are optional and
-           // not supported now
-/*
-    kEplSdoServiceWriteAllByIndex   = 0x03,
-    kEplSdoServiceReadAllByIndex    = 0x04,
-    kEplSdoServiceWriteByName       = 0x05,
-    kEplSdoServiceReadByName        = 0x06,
-
-    kEplSdoServiceFileWrite         = 0x20,
-    kEplSdoServiceFileRead          = 0x21,
-
-    kEplSdoServiceWriteMultiByIndex = 0x31,
-    kEplSdoServiceReadMultiByIndex  = 0x32,
-
-    kEplSdoServiceMaxSegSize        = 0x70
-
-    // 0x80 - 0xFF manufacturer specific
-
- */
-} tEplSdoServiceType;
-
-// describes if read or write access
-typedef enum {
-       kEplSdoAccessTypeRead = 0x00,
-       kEplSdoAccessTypeWrite = 0x01
-} tEplSdoAccessType;
-
-typedef enum {
-       kEplSdoTypeAuto = 0x00,
-       kEplSdoTypeUdp = 0x01,
-       kEplSdoTypeAsnd = 0x02,
-       kEplSdoTypePdo = 0x03
-} tEplSdoType;
-
-typedef enum {
-       kEplSdoTransAuto = 0x00,
-       kEplSdoTransExpedited = 0x01,
-       kEplSdoTransSegmented = 0x02
-} tEplSdoTransType;
-
-// structure to inform application about finish of SDO transfer
-typedef struct {
-       tEplSdoComConHdl m_SdoComConHdl;
-       tEplSdoComConState m_SdoComConState;
-       u32 m_dwAbortCode;
-       tEplSdoAccessType m_SdoAccessType;
-       unsigned int m_uiNodeId;        // NodeId of the target
-       unsigned int m_uiTargetIndex;   // index which was accessed
-       unsigned int m_uiTargetSubIndex;        // subindex which was accessed
-       unsigned int m_uiTransferredByte;       // number of bytes transferred
-       void *m_pUserArg;       // user definable argument pointer
-
-} tEplSdoComFinished;
-
-// callback function pointer to inform application about connection
-typedef tEplKernel(* tEplSdoFinishedCb) (tEplSdoComFinished *pSdoComFinished_p);
-
-// structure to init SDO transfer to Read or Write by Index
-typedef struct {
-       tEplSdoComConHdl m_SdoComConHdl;
-       unsigned int m_uiIndex;
-       unsigned int m_uiSubindex;
-       void *m_pData;
-       unsigned int m_uiDataSize;
-       unsigned int m_uiTimeout;       // not used in this version
-       tEplSdoAccessType m_SdoAccessType;
-       tEplSdoFinishedCb m_pfnSdoFinishedCb;
-       void *m_pUserArg;       // user definable argument pointer
-
-} tEplSdoComTransParamByIndex;
-
-//---------------------------------------------------------------------------
-// function prototypes
-//---------------------------------------------------------------------------
-
-#endif // #ifndef _EPLSDO_H_
diff --git a/drivers/staging/epl/EplSdoAc.h b/drivers/staging/epl/EplSdoAc.h
deleted file mode 100644 (file)
index 400fb38..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  definitions for SDO Abort codes
-
-  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: EplSdoAc.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.4 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    ...
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/30 k.t.: first implementation
-
-****************************************************************************/
-
-#ifndef _EPLSDOAC_H_
-#define _EPLSDOAC_H_
-
-// =========================================================================
-// SDO abort codes
-// =========================================================================
-
-#define    EPL_SDOAC_TIME_OUT                            0x05040000L
-#define    EPL_SDOAC_UNKNOWN_COMMAND_SPECIFIER           0x05040001L
-#define    EPL_SDOAC_INVALID_BLOCK_SIZE                  0x05040002L
-#define    EPL_SDOAC_INVALID_SEQUENCE_NUMBER             0x05040003L
-#define    EPL_SDOAC_OUT_OF_MEMORY                       0x05040005L
-#define    EPL_SDOAC_UNSUPPORTED_ACCESS                  0x06010000L
-#define    EPL_SDOAC_READ_TO_WRITE_ONLY_OBJ              0x06010001L
-#define    EPL_SDOAC_WRITE_TO_READ_ONLY_OBJ              0x06010002L
-#define    EPL_SDOAC_OBJECT_NOT_EXIST                    0x06020000L
-#define    EPL_SDOAC_OBJECT_NOT_MAPPABLE                 0x06040041L
-#define    EPL_SDOAC_PDO_LENGTH_EXCEEDED                 0x06040042L
-#define    EPL_SDOAC_GEN_PARAM_INCOMPATIBILITY           0x06040043L
-#define    EPL_SDOAC_INVALID_HEARTBEAT_DEC               0x06040044L
-#define    EPL_SDOAC_GEN_INTERNAL_INCOMPATIBILITY        0x06040047L
-#define    EPL_SDOAC_ACCESS_FAILED_DUE_HW_ERROR          0x06060000L
-#define    EPL_SDOAC_DATA_TYPE_LENGTH_NOT_MATCH          0x06070010L
-#define    EPL_SDOAC_DATA_TYPE_LENGTH_TOO_HIGH           0x06070012L
-#define    EPL_SDOAC_DATA_TYPE_LENGTH_TOO_LOW            0x06070013L
-#define    EPL_SDOAC_SUB_INDEX_NOT_EXIST                 0x06090011L
-#define    EPL_SDOAC_VALUE_RANGE_EXCEEDED                0x06090030L
-#define    EPL_SDOAC_VALUE_RANGE_TOO_HIGH                0x06090031L
-#define    EPL_SDOAC_VALUE_RANGE_TOO_LOW                 0x06090032L
-#define    EPL_SDOAC_MAX_VALUE_LESS_MIN_VALUE            0x06090036L
-#define    EPL_SDOAC_GENERAL_ERROR                       0x08000000L
-#define    EPL_SDOAC_DATA_NOT_TRANSF_OR_STORED           0x08000020L
-#define    EPL_SDOAC_DATA_NOT_TRANSF_DUE_LOCAL_CONTROL   0x08000021L
-#define    EPL_SDOAC_DATA_NOT_TRANSF_DUE_DEVICE_STATE    0x08000022L
-#define    EPL_SDOAC_OBJECT_DICTIONARY_NOT_EXIST         0x08000023L
-#define    EPL_SDOAC_CONFIG_DATA_EMPTY                   0x08000024L
-
-#endif // _EPLSDOAC_H_
-
-// Die letzte Zeile muß unbedingt eine leere Zeile sein, weil manche Compiler
-// damit ein Problem haben, wenn das nicht so ist (z.B. GNU oder Borland C++ Builder).
diff --git a/drivers/staging/epl/EplSdoAsndu.c b/drivers/staging/epl/EplSdoAsndu.c
deleted file mode 100644 (file)
index aa8bdef..0000000
+++ /dev/null
@@ -1,483 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for SDO/Asnd-Protocolabstractionlayer module
-
-  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: EplSdoAsndu.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.7 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/07/07 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#include "user/EplSdoAsndu.h"
-#include "user/EplDlluCal.h"
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_ASND)) != 0)
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-#ifndef EPL_SDO_MAX_CONNECTION_ASND
-#define EPL_SDO_MAX_CONNECTION_ASND 5
-#endif
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-// instance table
-typedef struct {
-       unsigned int m_auiSdoAsndConnection[EPL_SDO_MAX_CONNECTION_ASND];
-       tEplSequLayerReceiveCb m_fpSdoAsySeqCb;
-
-} tEplSdoAsndInstance;
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-static tEplSdoAsndInstance SdoAsndInstance_g;
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-tEplKernel EplSdoAsnduCb(tEplFrameInfo *pFrameInfo_p);
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          C L A S S  <EPL SDO-Asnd Protocolabstraction layer>            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-//
-// Description: EPL SDO-Asnd Protocolabstraction layer
-//
-//
-/***************************************************************************/
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoAsnduInit
-//
-// Description: init first instance of the module
-//
-//
-//
-// Parameters:  pReceiveCb_p    =   functionpointer to Sdo-Sequence layer
-//                                  callback-function
-//
-//
-// Returns:     tEplKernel  = Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoAsnduInit(tEplSequLayerReceiveCb fpReceiveCb_p)
-{
-       tEplKernel Ret;
-
-       Ret = EplSdoAsnduAddInstance(fpReceiveCb_p);
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoAsnduAddInstance
-//
-// Description: init additional instance of the module
-//
-//
-//
-// Parameters:  pReceiveCb_p    =   functionpointer to Sdo-Sequence layer
-//                                  callback-function
-//
-//
-// Returns:     tEplKernel  = Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoAsnduAddInstance(tEplSequLayerReceiveCb fpReceiveCb_p)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-       // init control structure
-       EPL_MEMSET(&SdoAsndInstance_g, 0x00, sizeof(SdoAsndInstance_g));
-
-       // save pointer to callback-function
-       if (fpReceiveCb_p != NULL) {
-               SdoAsndInstance_g.m_fpSdoAsySeqCb = fpReceiveCb_p;
-       } else {
-               Ret = kEplSdoUdpMissCb;
-       }
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLU)) != 0)
-       Ret = EplDlluCalRegAsndService(kEplDllAsndSdo,
-                                      EplSdoAsnduCb, kEplDllAsndFilterLocal);
-#endif
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoAsnduDelInstance
-//
-// Description: del instance of the module
-//              del socket and del Listen-Thread
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:     tEplKernel  = Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoAsnduDelInstance(void)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLU)) != 0)
-       // deregister callback function from DLL
-       Ret = EplDlluCalRegAsndService(kEplDllAsndSdo,
-                                      NULL, kEplDllAsndFilterNone);
-#endif
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoAsnduInitCon
-//
-// Description: init a new connect
-//
-//
-//
-// Parameters:  pSdoConHandle_p = pointer for the new connection handle
-//              uiTargetNodeId_p = NodeId of the target node
-//
-//
-// Returns:     tEplKernel  = Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoAsnduInitCon(tEplSdoConHdl *pSdoConHandle_p,
-                             unsigned int uiTargetNodeId_p)
-{
-       tEplKernel Ret;
-       unsigned int uiCount;
-       unsigned int uiFreeCon;
-       unsigned int *puiConnection;
-
-       Ret = kEplSuccessful;
-
-       if ((uiTargetNodeId_p == EPL_C_ADR_INVALID)
-           || (uiTargetNodeId_p >= EPL_C_ADR_BROADCAST)) {
-               Ret = kEplSdoAsndInvalidNodeId;
-               goto Exit;
-       }
-       // get free entry in control structure
-       uiCount = 0;
-       uiFreeCon = EPL_SDO_MAX_CONNECTION_ASND;
-       puiConnection = &SdoAsndInstance_g.m_auiSdoAsndConnection[0];
-       while (uiCount < EPL_SDO_MAX_CONNECTION_ASND) {
-               if (*puiConnection == uiTargetNodeId_p) {       // existing connection to target node found
-                       // save handle for higher layer
-                       *pSdoConHandle_p = (uiCount | EPL_SDO_ASND_HANDLE);
-
-                       goto Exit;
-               } else if (*puiConnection == 0) {       // free entry-> save target nodeId
-                       uiFreeCon = uiCount;
-               }
-               uiCount++;
-               puiConnection++;
-       }
-
-       if (uiFreeCon == EPL_SDO_MAX_CONNECTION_ASND) {
-               // no free connection
-               Ret = kEplSdoAsndNoFreeHandle;
-       } else {
-               puiConnection =
-                   &SdoAsndInstance_g.m_auiSdoAsndConnection[uiFreeCon];
-               *puiConnection = uiTargetNodeId_p;
-               // save handle for higher layer
-               *pSdoConHandle_p = (uiFreeCon | EPL_SDO_ASND_HANDLE);
-
-               goto Exit;
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoAsnduSendData
-//
-// Description: send data using exisiting connection
-//
-//
-//
-// Parameters:  SdoConHandle_p  = connection handle
-//              pSrcData_p      = pointer to data
-//              dwDataSize_p    = number of databyte
-//                                  -> without asnd-header!!!
-//
-// Returns:     tEplKernel  = Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoAsnduSendData(tEplSdoConHdl SdoConHandle_p,
-                              tEplFrame *pSrcData_p,
-                              u32 dwDataSize_p)
-{
-       tEplKernel Ret;
-       unsigned int uiArray;
-       tEplFrameInfo FrameInfo;
-
-       Ret = kEplSuccessful;
-
-       uiArray = (SdoConHandle_p & ~EPL_SDO_ASY_HANDLE_MASK);
-
-       if (uiArray > EPL_SDO_MAX_CONNECTION_ASND) {
-               Ret = kEplSdoAsndInvalidHandle;
-               goto Exit;
-       }
-       // fillout Asnd header
-       // own node id not needed -> filled by DLL
-
-       // set message type
-       AmiSetByteToLe(&pSrcData_p->m_le_bMessageType, (u8) kEplMsgTypeAsnd);   // ASnd == 0x06
-       // target node id
-       AmiSetByteToLe(&pSrcData_p->m_le_bDstNodeId,
-                      (u8) SdoAsndInstance_g.
-                      m_auiSdoAsndConnection[uiArray]);
-       // set source-nodeid (filled by DLL 0)
-       AmiSetByteToLe(&pSrcData_p->m_le_bSrcNodeId, 0x00);
-
-       // calc size
-       dwDataSize_p += EPL_ASND_HEADER_SIZE;
-
-       // send function of DLL
-       FrameInfo.m_uiFrameSize = dwDataSize_p;
-       FrameInfo.m_pFrame = pSrcData_p;
-       EPL_MEMSET(&FrameInfo.m_NetTime, 0x00, sizeof(tEplNetTime));
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLU)) != 0)
-       Ret = EplDlluCalAsyncSend(&FrameInfo, kEplDllAsyncReqPrioGeneric);
-#endif
-
-      Exit:
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoAsnduDelCon
-//
-// Description: delete connection from intern structure
-//
-//
-//
-// Parameters:  SdoConHandle_p  = connection handle
-//
-// Returns:     tEplKernel  = Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoAsnduDelCon(tEplSdoConHdl SdoConHandle_p)
-{
-       tEplKernel Ret;
-       unsigned int uiArray;
-
-       Ret = kEplSuccessful;
-
-       uiArray = (SdoConHandle_p & ~EPL_SDO_ASY_HANDLE_MASK);
-       // check parameter
-       if (uiArray > EPL_SDO_MAX_CONNECTION_ASND) {
-               Ret = kEplSdoAsndInvalidHandle;
-               goto Exit;
-       }
-       // set target nodeId to 0
-       SdoAsndInstance_g.m_auiSdoAsndConnection[uiArray] = 0;
-
-      Exit:
-       return Ret;
-}
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoAsnduCb
-//
-// Description: callback function for SDO ASnd frames
-//
-//
-//
-// Parameters:      pFrameInfo_p = Frame with SDO payload
-//
-//
-// Returns:         tEplKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoAsnduCb(tEplFrameInfo *pFrameInfo_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       unsigned int uiCount;
-       unsigned int *puiConnection;
-       unsigned int uiNodeId;
-       unsigned int uiFreeEntry = 0xFFFF;
-       tEplSdoConHdl SdoConHdl;
-       tEplFrame *pFrame;
-
-       pFrame = pFrameInfo_p->m_pFrame;
-
-       uiNodeId = AmiGetByteFromLe(&pFrame->m_le_bSrcNodeId);
-
-       // search corresponding entry in control structure
-       uiCount = 0;
-       puiConnection = &SdoAsndInstance_g.m_auiSdoAsndConnection[0];
-       while (uiCount < EPL_SDO_MAX_CONNECTION_ASND) {
-               if (uiNodeId == *puiConnection) {
-                       break;
-               } else if ((*puiConnection == 0)
-                          && (uiFreeEntry == 0xFFFF)) {        // free entry
-                       uiFreeEntry = uiCount;
-               }
-               uiCount++;
-               puiConnection++;
-       }
-
-       if (uiCount == EPL_SDO_MAX_CONNECTION_ASND) {
-               if (uiFreeEntry != 0xFFFF) {
-                       puiConnection =
-                           &SdoAsndInstance_g.
-                           m_auiSdoAsndConnection[uiFreeEntry];
-                       *puiConnection = uiNodeId;
-                       uiCount = uiFreeEntry;
-               } else {
-                       EPL_DBGLVL_SDO_TRACE0
-                           ("EplSdoAsnduCb(): no free handle\n");
-                       goto Exit;
-               }
-       }
-//    if (uiNodeId == *puiConnection)
-       {                       // entry found or created
-               SdoConHdl = (uiCount | EPL_SDO_ASND_HANDLE);
-
-               SdoAsndInstance_g.m_fpSdoAsySeqCb(SdoConHdl,
-                                                 &pFrame->m_Data.m_Asnd.
-                                                 m_Payload.m_SdoSequenceFrame,
-                                                 (pFrameInfo_p->m_uiFrameSize -
-                                                  18));
-       }
-
-      Exit:
-       return Ret;
-
-}
-
-#endif // end of #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_ASND)) != 0)
-// EOF
diff --git a/drivers/staging/epl/EplSdoAsySequ.c b/drivers/staging/epl/EplSdoAsySequ.c
deleted file mode 100644 (file)
index 256d708..0000000
+++ /dev/null
@@ -1,2522 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for asychronous SDO Sequence Layer module
-
-  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: EplSdoAsySequ.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.10 $  $Date: 2008/11/13 17:13:09 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/26 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#include "user/EplSdoAsySequ.h"
-
-#if ((((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_UDP)) == 0) &&\
-     (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_ASND)) == 0)   )
-
-#error 'ERROR: At least UDP or Asnd module needed!'
-
-#endif
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-#define EPL_SDO_HISTORY_SIZE        5
-
-#ifndef EPL_MAX_SDO_SEQ_CON
-#define EPL_MAX_SDO_SEQ_CON         10
-#endif
-
-#define EPL_SEQ_DEFAULT_TIMEOUT     5000       // in [ms] => 5 sec
-
-#define EPL_SEQ_RETRY_COUNT         5  // => max. Timeout 30 sec
-
-#define EPL_SEQ_NUM_THRESHOLD       100        // threshold which distinguishes between old and new sequence numbers
-
-// define frame with size of Asnd-Header-, SDO Sequenze Header size, SDO Command header
-// and Ethernet-Header size
-#define EPL_SEQ_FRAME_SIZE          24
-// size of the header of the asynchronus SDO Sequence layer
-#define EPL_SEQ_HEADER_SIZE         4
-
-// buffersize for one frame in history
-#define EPL_SEQ_HISTROY_FRAME_SIZE  EPL_MAX_SDO_FRAME_SIZE
-
-// mask to get scon and rcon
-#define EPL_ASY_SDO_CON_MASK        0x03
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-// events for processfunction
-typedef enum {
-       kAsySdoSeqEventNoEvent = 0x00,  // no Event
-       kAsySdoSeqEventInitCon = 0x01,  // init connection
-       kAsySdoSeqEventFrameRec = 0x02, // frame received
-       kAsySdoSeqEventFrameSend = 0x03,        // frame to send
-       kAsySdoSeqEventTimeout = 0x04,  // Timeout for connection
-       kAsySdoSeqEventCloseCon = 0x05  // higher layer close connection
-} tEplAsySdoSeqEvent;
-
-// structure for History-Buffer
-typedef struct {
-       u8 m_bFreeEntries;
-       u8 m_bWrite;            // index of the next free buffer entry
-       u8 m_bAck;              // index of the next message which should become acknowledged
-       u8 m_bRead;             // index between m_bAck and m_bWrite to the next message for retransmission
-       u8 m_aabHistoryFrame[EPL_SDO_HISTORY_SIZE]
-           [EPL_SEQ_HISTROY_FRAME_SIZE];
-       unsigned int m_auiFrameSize[EPL_SDO_HISTORY_SIZE];
-
-} tEplAsySdoConHistory;
-
-// state of the statemaschine
-typedef enum {
-       kEplAsySdoStateIdle = 0x00,
-       kEplAsySdoStateInit1 = 0x01,
-       kEplAsySdoStateInit2 = 0x02,
-       kEplAsySdoStateInit3 = 0x03,
-       kEplAsySdoStateConnected = 0x04,
-       kEplAsySdoStateWaitAck = 0x05
-} tEplAsySdoState;
-
-// connection control structure
-typedef struct {
-       tEplSdoConHdl m_ConHandle;
-       tEplAsySdoState m_SdoState;
-       u8 m_bRecSeqNum;        // name from view of the communication partner
-       u8 m_bSendSeqNum;       // name from view of the communication partner
-       tEplAsySdoConHistory m_SdoConHistory;
-       tEplTimerHdl m_EplTimerHdl;
-       unsigned int m_uiRetryCount;    // retry counter
-       unsigned int m_uiUseCount;      // one sequence layer connection may be used by
-       // multiple command layer connections
-
-} tEplAsySdoSeqCon;
-
-// instance structure
-typedef struct {
-       tEplAsySdoSeqCon m_AsySdoConnection[EPL_MAX_SDO_SEQ_CON];
-       tEplSdoComReceiveCb m_fpSdoComReceiveCb;
-       tEplSdoComConCb m_fpSdoComConCb;
-
-#if defined(WIN32) || defined(_WIN32)
-       LPCRITICAL_SECTION m_pCriticalSection;
-       CRITICAL_SECTION m_CriticalSection;
-
-       LPCRITICAL_SECTION m_pCriticalSectionReceive;
-       CRITICAL_SECTION m_CriticalSectionReceive;
-#endif
-
-} tEplAsySdoSequInstance;
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-static tEplAsySdoSequInstance AsySdoSequInstance_g;
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-static tEplKernel EplSdoAsySeqProcess(unsigned int uiHandle_p,
-                                     unsigned int uiDataSize_p,
-                                     tEplFrame * pData_p,
-                                     tEplAsySdoSeq * pRecFrame_p,
-                                     tEplAsySdoSeqEvent Event_p);
-
-static tEplKernel EplSdoAsySeqSendIntern(tEplAsySdoSeqCon * pAsySdoSeqCon_p,
-                                        unsigned int uiDataSize_p,
-                                        tEplFrame * pData_p,
-                                        BOOL fFrameInHistory);
-
-static tEplKernel EplSdoAsySeqSendLowerLayer(tEplAsySdoSeqCon * pAsySdoSeqCon_p,
-                                            unsigned int uiDataSize_p,
-                                            tEplFrame * pEplFrame_p);
-
-tEplKernel EplSdoAsyReceiveCb(tEplSdoConHdl ConHdl_p,
-                             tEplAsySdoSeq *pSdoSeqData_p,
-                             unsigned int uiDataSize_p);
-
-static tEplKernel EplSdoAsyInitHistory(void);
-
-static tEplKernel EplSdoAsyAddFrameToHistory(tEplAsySdoSeqCon * pAsySdoSeqCon_p,
-                                            tEplFrame * pFrame_p,
-                                            unsigned int uiSize_p);
-
-static tEplKernel EplSdoAsyAckFrameToHistory(tEplAsySdoSeqCon * pAsySdoSeqCon_p,
-                                            u8 bRecSeqNumber_p);
-
-static tEplKernel EplSdoAsyReadFromHistory(tEplAsySdoSeqCon * pAsySdoSeqCon_p,
-                                          tEplFrame ** ppFrame_p,
-                                          unsigned int *puiSize_p,
-                                          BOOL fInitRead);
-
-static unsigned int EplSdoAsyGetFreeEntriesFromHistory(tEplAsySdoSeqCon *
-                                                      pAsySdoSeqCon_p);
-
-static tEplKernel EplSdoAsySeqSetTimer(tEplAsySdoSeqCon * pAsySdoSeqCon_p,
-                                      unsigned long ulTimeout);
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          C L A S S  <EPL asychronus SDO Sequence layer>                 */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-//
-// Description: this module contains the asynchronus SDO Sequence Layer for
-//              the EPL SDO service
-//
-//
-/***************************************************************************/
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoAsySeqInit
-//
-// Description: init first instance
-//
-//
-//
-// Parameters:  fpSdoComCb_p    = callback function to inform Command layer
-//                                about new frames
-//              fpSdoComConCb_p = callback function to inform command layer
-//                                about connection state
-//
-//
-// Returns:     tEplKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoAsySeqInit(tEplSdoComReceiveCb fpSdoComCb_p,
-                           tEplSdoComConCb fpSdoComConCb_p)
-{
-       tEplKernel Ret;
-
-       Ret = EplSdoAsySeqAddInstance(fpSdoComCb_p, fpSdoComConCb_p);
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoAsySeqAddInstance
-//
-// Description: init following instances
-//
-//
-//
-// Parameters:  fpSdoComCb_p    = callback function to inform Command layer
-//                                about new frames
-//              fpSdoComConCb_p = callback function to inform command layer
-//                                about connection state
-//
-// Returns:     tEplKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoAsySeqAddInstance(tEplSdoComReceiveCb fpSdoComCb_p,
-                                  tEplSdoComConCb fpSdoComConCb_p)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-       // check functionpointer
-       if (fpSdoComCb_p == NULL) {
-               Ret = kEplSdoSeqMissCb;
-               goto Exit;
-       } else {
-               AsySdoSequInstance_g.m_fpSdoComReceiveCb = fpSdoComCb_p;
-       }
-
-       // check functionpointer
-       if (fpSdoComConCb_p == NULL) {
-               Ret = kEplSdoSeqMissCb;
-               goto Exit;
-       } else {
-               AsySdoSequInstance_g.m_fpSdoComConCb = fpSdoComConCb_p;
-       }
-
-       // set controllstructure to 0
-       EPL_MEMSET(&AsySdoSequInstance_g.m_AsySdoConnection[0], 0x00,
-                  sizeof(AsySdoSequInstance_g.m_AsySdoConnection));
-
-       // init History
-       Ret = EplSdoAsyInitHistory();
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-#if defined(WIN32) || defined(_WIN32)
-       // create critical section for process function
-       AsySdoSequInstance_g.m_pCriticalSection =
-           &AsySdoSequInstance_g.m_CriticalSection;
-       InitializeCriticalSection(AsySdoSequInstance_g.m_pCriticalSection);
-
-       // init critical section for receive cb function
-       AsySdoSequInstance_g.m_pCriticalSectionReceive =
-           &AsySdoSequInstance_g.m_CriticalSectionReceive;
-       InitializeCriticalSection(AsySdoSequInstance_g.
-                                 m_pCriticalSectionReceive);
-#endif
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_UDP)) != 0)
-       // init lower layer
-       Ret = EplSdoUdpuAddInstance(EplSdoAsyReceiveCb);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-#endif
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_ASND)) != 0)
-       // init lower layer
-       Ret = EplSdoAsnduAddInstance(EplSdoAsyReceiveCb);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-#endif
-
-      Exit:
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoAsySeqDelInstance
-//
-// Description: delete instances
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:     tEplKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoAsySeqDelInstance(void)
-{
-       tEplKernel Ret;
-       unsigned int uiCount;
-       tEplAsySdoSeqCon *pAsySdoSeqCon;
-
-       Ret = kEplSuccessful;
-
-       // delete timer of open connections
-       uiCount = 0;
-       pAsySdoSeqCon = &AsySdoSequInstance_g.m_AsySdoConnection[0];
-       while (uiCount < EPL_MAX_SDO_SEQ_CON) {
-               if (pAsySdoSeqCon->m_ConHandle != 0) {
-                       EplTimeruDeleteTimer(&pAsySdoSeqCon->m_EplTimerHdl);
-               }
-               uiCount++;
-               pAsySdoSeqCon++;
-       }
-
-#if defined(WIN32) || defined(_WIN32)
-       // delete critical section for process function
-       DeleteCriticalSection(AsySdoSequInstance_g.m_pCriticalSection);
-#endif
-
-       // set instance-table to 0
-       EPL_MEMSET(&AsySdoSequInstance_g, 0x00, sizeof(AsySdoSequInstance_g));
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_UDP)) != 0)
-       // delete lower layer
-       Ret = EplSdoUdpuDelInstance();
-#endif
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_ASND)) != 0)
-       // delete lower layer
-       Ret = EplSdoAsnduDelInstance();
-#endif
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoAsySeqInitCon
-//
-// Description: start initialization of a sequence layer connection.
-//              It tries to reuse an existing connection to the same node.
-//
-//
-// Parameters:  pSdoSeqConHdl_p = pointer to the variable for the connection handle
-//              uiNodeId_p      = Node Id of the target
-//              SdoType          = Type of the SDO connection
-//
-//
-// Returns:     tEplKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoAsySeqInitCon(tEplSdoSeqConHdl *pSdoSeqConHdl_p,
-                              unsigned int uiNodeId_p,
-                              tEplSdoType SdoType)
-{
-       tEplKernel Ret;
-       unsigned int uiCount;
-       unsigned int uiFreeCon;
-       tEplSdoConHdl ConHandle;
-       tEplAsySdoSeqCon *pAsySdoSeqCon;
-       Ret = kEplSuccessful;
-
-       // check SdoType
-       // call init function of the protcol abstraction layer
-       // which tries to find an existing connection to the same node
-       switch (SdoType) {
-               // SDO over UDP
-       case kEplSdoTypeUdp:
-               {
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_UDP)) != 0)
-                       Ret = EplSdoUdpuInitCon(&ConHandle, uiNodeId_p);
-                       if (Ret != kEplSuccessful) {
-                               goto Exit;
-                       }
-#else
-                       Ret = kEplSdoSeqUnsupportedProt;
-#endif
-                       break;
-               }
-
-               // SDO over Asnd
-       case kEplSdoTypeAsnd:
-               {
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_ASND)) != 0)
-                       Ret = EplSdoAsnduInitCon(&ConHandle, uiNodeId_p);
-                       if (Ret != kEplSuccessful) {
-                               goto Exit;
-                       }
-#else
-                       Ret = kEplSdoSeqUnsupportedProt;
-#endif
-                       break;
-               }
-
-               // unsupported protocols
-               // -> auto should be replaced by command layer
-       case kEplSdoTypeAuto:
-       case kEplSdoTypePdo:
-       default:
-               {
-                       Ret = kEplSdoSeqUnsupportedProt;
-                       goto Exit;
-               }
-
-       }                       // end of switch(SdoType)
-
-       // find existing connection to the same node or find empty entry for connection
-       uiCount = 0;
-       uiFreeCon = EPL_MAX_SDO_SEQ_CON;
-       pAsySdoSeqCon = &AsySdoSequInstance_g.m_AsySdoConnection[0];
-
-       while (uiCount < EPL_MAX_SDO_SEQ_CON) {
-               if (pAsySdoSeqCon->m_ConHandle == ConHandle) {  // existing connection found
-                       break;
-               }
-               if (pAsySdoSeqCon->m_ConHandle == 0) {
-                       uiFreeCon = uiCount;
-               }
-               uiCount++;
-               pAsySdoSeqCon++;
-       }
-
-       if (uiCount == EPL_MAX_SDO_SEQ_CON) {
-               if (uiFreeCon == EPL_MAX_SDO_SEQ_CON) { // no free entry found
-                       switch (SdoType) {
-                               // SDO over UDP
-                       case kEplSdoTypeUdp:
-                               {
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_UDP)) != 0)
-                                       Ret = EplSdoUdpuDelCon(ConHandle);
-                                       if (Ret != kEplSuccessful) {
-                                               goto Exit;
-                                       }
-#endif
-                                       break;
-                               }
-
-                               // SDO over Asnd
-                       case kEplSdoTypeAsnd:
-                               {
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_ASND)) != 0)
-                                       Ret = EplSdoAsnduDelCon(ConHandle);
-                                       if (Ret != kEplSuccessful) {
-                                               goto Exit;
-                                       }
-#endif
-                                       break;
-                               }
-
-                               // unsupported protocols
-                               // -> auto should be replaced by command layer
-                       case kEplSdoTypeAuto:
-                       case kEplSdoTypePdo:
-                       default:
-                               {
-                                       Ret = kEplSdoSeqUnsupportedProt;
-                                       goto Exit;
-                               }
-
-                       }       // end of switch(SdoType)
-
-                       Ret = kEplSdoSeqNoFreeHandle;
-                       goto Exit;
-               } else {        // free entry found
-                       pAsySdoSeqCon =
-                           &AsySdoSequInstance_g.m_AsySdoConnection[uiFreeCon];
-                       pAsySdoSeqCon->m_ConHandle = ConHandle;
-                       uiCount = uiFreeCon;
-               }
-       }
-       // set handle
-       *pSdoSeqConHdl_p = (uiCount | EPL_SDO_ASY_HANDLE);
-
-       // increment use counter
-       pAsySdoSeqCon->m_uiUseCount++;
-
-       // call intern process function
-       Ret = EplSdoAsySeqProcess(uiCount,
-                                 0, NULL, NULL, kAsySdoSeqEventInitCon);
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoAsySeqSendData
-//
-// Description: send sata unsing a established connection
-//
-//
-//
-// Parameters:  pSdoSeqConHdl_p = connection handle
-//              uiDataSize_p    = Size of Frame to send
-//                                  -> wihtout SDO sequence layer header, Asnd header
-//                                     and ethernetnet
-//                                  ==> SDO Sequence layer payload
-//              SdoType          = Type of the SDO connection
-//
-//
-// Returns:     tEplKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoAsySeqSendData(tEplSdoSeqConHdl SdoSeqConHdl_p,
-                               unsigned int uiDataSize_p,
-                               tEplFrame *pabData_p)
-{
-       tEplKernel Ret;
-       unsigned int uiHandle;
-
-       uiHandle = (SdoSeqConHdl_p & ~EPL_SDO_SEQ_HANDLE_MASK);
-
-       // check if connection ready
-       if (AsySdoSequInstance_g.m_AsySdoConnection[uiHandle].m_SdoState ==
-           kEplAsySdoStateIdle) {
-               // no connection with this handle
-               Ret = kEplSdoSeqInvalidHdl;
-               goto Exit;
-       } else if (AsySdoSequInstance_g.m_AsySdoConnection[uiHandle].
-                  m_SdoState != kEplAsySdoStateConnected) {
-               Ret = kEplSdoSeqConnectionBusy;
-               goto Exit;
-       }
-
-       Ret = EplSdoAsySeqProcess(uiHandle,
-                                 uiDataSize_p,
-                                 pabData_p, NULL, kAsySdoSeqEventFrameSend);
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoAsySeqProcessEvent
-//
-// Description: function processes extern events
-//              -> later needed for timeout controll with timer-module
-//
-//
-//
-// Parameters:  pEvent_p = pointer to event
-//
-//
-// Returns:     tEplKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoAsySeqProcessEvent(tEplEvent *pEvent_p)
-{
-       tEplKernel Ret;
-       tEplTimerEventArg *pTimerEventArg;
-       tEplAsySdoSeqCon *pAsySdoSeqCon;
-       tEplTimerHdl EplTimerHdl;
-       unsigned int uiCount;
-
-       Ret = kEplSuccessful;
-       // check parameter
-       if (pEvent_p == NULL) {
-               Ret = kEplSdoSeqInvalidEvent;
-               goto Exit;
-       }
-
-       if (pEvent_p->m_EventType != kEplEventTypeTimer) {
-               Ret = kEplSdoSeqInvalidEvent;
-               goto Exit;
-       }
-       // get timerhdl
-       pTimerEventArg = (tEplTimerEventArg *) pEvent_p->m_pArg;
-       EplTimerHdl = pTimerEventArg->m_TimerHdl;
-
-       // get pointer to intern control structure of connection
-       if (pTimerEventArg->m_ulArg == 0) {
-               goto Exit;
-       }
-       pAsySdoSeqCon = (tEplAsySdoSeqCon *) pTimerEventArg->m_ulArg;
-
-       // check if time is current
-       if (EplTimerHdl != pAsySdoSeqCon->m_EplTimerHdl) {
-               // delete timer
-               EplTimeruDeleteTimer(&EplTimerHdl);
-               goto Exit;
-       }
-       // delete timer
-       EplTimeruDeleteTimer(&pAsySdoSeqCon->m_EplTimerHdl);
-
-       // get indexnumber of control structure
-       uiCount = 0;
-       while ((&AsySdoSequInstance_g.m_AsySdoConnection[uiCount]) !=
-              pAsySdoSeqCon) {
-               uiCount++;
-               if (uiCount > EPL_MAX_SDO_SEQ_CON) {
-                       goto Exit;
-               }
-       }
-
-       // process event and call processfunction if needed
-       Ret = EplSdoAsySeqProcess(uiCount,
-                                 0, NULL, NULL, kAsySdoSeqEventTimeout);
-
-      Exit:
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoAsySeqDelCon
-//
-// Description: del and close one connection
-//
-//
-//
-// Parameters:  SdoSeqConHdl_p = handle of connection
-//
-//
-// Returns:     tEplKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoAsySeqDelCon(tEplSdoSeqConHdl SdoSeqConHdl_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       unsigned int uiHandle;
-       tEplAsySdoSeqCon *pAsySdoSeqCon;
-
-       uiHandle = (SdoSeqConHdl_p & ~EPL_SDO_SEQ_HANDLE_MASK);
-
-       // check if handle invalid
-       if (uiHandle >= EPL_MAX_SDO_SEQ_CON) {
-               Ret = kEplSdoSeqInvalidHdl;
-               goto Exit;
-       }
-       // get pointer to connection
-       pAsySdoSeqCon = &AsySdoSequInstance_g.m_AsySdoConnection[uiHandle];
-
-       // decrement use counter
-       pAsySdoSeqCon->m_uiUseCount--;
-
-       if (pAsySdoSeqCon->m_uiUseCount == 0) {
-               // process close in processfunction
-               Ret = EplSdoAsySeqProcess(uiHandle,
-                                         0,
-                                         NULL, NULL, kAsySdoSeqEventCloseCon);
-
-               //check protocol
-               if ((pAsySdoSeqCon->m_ConHandle & EPL_SDO_ASY_HANDLE_MASK) ==
-                   EPL_SDO_UDP_HANDLE) {
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_UDP)) != 0)
-                       // call close function of lower layer
-                       EplSdoUdpuDelCon(pAsySdoSeqCon->m_ConHandle);
-#endif // end of #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_UDP)) != 0)
-               } else {
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_ASND)) != 0)
-                       // call close function of lower layer
-                       EplSdoAsnduDelCon(pAsySdoSeqCon->m_ConHandle);
-#endif // end of #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_ASND)) != 0)
-               }
-
-               // delete timer
-               EplTimeruDeleteTimer(&pAsySdoSeqCon->m_EplTimerHdl);
-
-               // clean controllstructure
-               EPL_MEMSET(pAsySdoSeqCon, 0x00, sizeof(tEplAsySdoSeqCon));
-               pAsySdoSeqCon->m_SdoConHistory.m_bFreeEntries =
-                   EPL_SDO_HISTORY_SIZE;
-       }
-
-      Exit:
-       return Ret;
-
-}
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplEplSdoAsySeqProcess
-//
-// Description: intern function to process the asynchronus SDO Sequence Layer
-//              state maschine
-//
-//
-//
-// Parameters:  uiHandle_p      = index of the control structure of the connection
-//              uiDataSize_p    = size of data frame to process (can be 0)
-//                                  -> without size of sequence header and Asnd header!!!
-//
-//              pData_p         = pointer to frame to send (can be NULL)
-//              pRecFrame_p     = pointer to received frame (can be NULL)
-//              Event_p         = Event to process
-//
-//
-//
-// Returns:     tEplKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-static tEplKernel EplSdoAsySeqProcess(unsigned int uiHandle_p,
-                                     unsigned int uiDataSize_p,
-                                     tEplFrame * pData_p,
-                                     tEplAsySdoSeq * pRecFrame_p,
-                                     tEplAsySdoSeqEvent Event_p)
-{
-       tEplKernel Ret;
-       unsigned int uiFrameSize;
-       tEplFrame *pEplFrame;
-       tEplAsySdoSeqCon *pAsySdoSeqCon;
-       tEplSdoSeqConHdl SdoSeqConHdl;
-       unsigned int uiFreeEntries;
-
-#if defined(WIN32) || defined(_WIN32)
-       // enter  critical section for process function
-       EnterCriticalSection(AsySdoSequInstance_g.m_pCriticalSection);
-#endif
-
-       Ret = kEplSuccessful;
-
-       // get handle for hinger layer
-       SdoSeqConHdl = uiHandle_p | EPL_SDO_ASY_HANDLE;
-
-       // check if handle invalid
-       if ((SdoSeqConHdl & ~EPL_SDO_SEQ_HANDLE_MASK) ==
-           EPL_SDO_SEQ_INVALID_HDL) {
-               Ret = kEplSdoSeqInvalidHdl;
-               goto Exit;
-       }
-       // get pointer to connection
-       pAsySdoSeqCon = &AsySdoSequInstance_g.m_AsySdoConnection[uiHandle_p];
-
-       // check size
-       if ((pData_p == NULL) && (pRecFrame_p == NULL) && (uiDataSize_p != 0)) {
-               Ret = kEplSdoSeqInvalidFrame;
-               goto Exit;
-       }
-       // check state
-       switch (pAsySdoSeqCon->m_SdoState) {
-               // idle state
-       case kEplAsySdoStateIdle:
-               {
-                       // check event
-                       switch (Event_p) {
-                               // new connection
-                               // -> send init frame and change to
-                               // kEplAsySdoStateInit1
-                       case kAsySdoSeqEventInitCon:
-                               {
-                                       // set sending scon to 1
-                                       pAsySdoSeqCon->m_bRecSeqNum = 0x01;
-                                       // set set send rcon to 0
-                                       pAsySdoSeqCon->m_bSendSeqNum = 0x00;
-                                       Ret =
-                                           EplSdoAsySeqSendIntern
-                                           (pAsySdoSeqCon, 0, NULL, FALSE);
-                                       if (Ret != kEplSuccessful) {
-                                               goto Exit;
-                                       }
-                                       // change state
-                                       pAsySdoSeqCon->m_SdoState =
-                                           kEplAsySdoStateInit1;
-
-                                       // set timer
-                                       Ret =
-                                           EplSdoAsySeqSetTimer(pAsySdoSeqCon,
-                                                                EPL_SEQ_DEFAULT_TIMEOUT);
-
-                                       break;
-                               }
-
-                               // init con from extern
-                               // check rcon and scon
-                               // -> send answer
-                       case kAsySdoSeqEventFrameRec:
-                               {
-/*
-                    PRINTF3("%s scon=%u rcon=%u\n",
-                            __func__,
-                            pRecFrame_p->m_le_bSendSeqNumCon,
-                            pRecFrame_p->m_le_bRecSeqNumCon);
-*/
-                                       // check if scon == 1 and rcon == 0
-                                       if (((pRecFrame_p->
-                                             m_le_bRecSeqNumCon &
-                                             EPL_ASY_SDO_CON_MASK) == 0x00)
-                                           &&
-                                           ((pRecFrame_p->
-                                             m_le_bSendSeqNumCon &
-                                             EPL_ASY_SDO_CON_MASK) == 0x01)) {
-                                               // save sequence numbers
-                                               pAsySdoSeqCon->m_bRecSeqNum =
-                                                   AmiGetByteFromLe
-                                                   (&pRecFrame_p->
-                                                    m_le_bRecSeqNumCon);
-                                               pAsySdoSeqCon->m_bSendSeqNum =
-                                                   AmiGetByteFromLe
-                                                   (&pRecFrame_p->
-                                                    m_le_bSendSeqNumCon);
-                                               // create answer and send answer
-                                               // set rcon to 1 (in send direction own scon)
-                                               pAsySdoSeqCon->m_bRecSeqNum++;
-                                               Ret =
-                                                   EplSdoAsySeqSendIntern
-                                                   (pAsySdoSeqCon, 0, NULL,
-                                                    FALSE);
-                                               if (Ret != kEplSuccessful) {
-                                                       goto Exit;
-                                               }
-                                               // change state to kEplAsySdoStateInit2
-                                               pAsySdoSeqCon->m_SdoState =
-                                                   kEplAsySdoStateInit2;
-
-                                               // set timer
-                                               Ret =
-                                                   EplSdoAsySeqSetTimer
-                                                   (pAsySdoSeqCon,
-                                                    EPL_SEQ_DEFAULT_TIMEOUT);
-                                       } else {        // error -> close
-                                               // delete timer
-                                               EplTimeruDeleteTimer
-                                                   (&pAsySdoSeqCon->
-                                                    m_EplTimerHdl);
-                                               if (((pRecFrame_p->
-                                                     m_le_bRecSeqNumCon &
-                                                     EPL_ASY_SDO_CON_MASK) !=
-                                                    0x00)
-                                                   || ((pRecFrame_p->m_le_bSendSeqNumCon & EPL_ASY_SDO_CON_MASK) != 0x00)) {   // d.k. only answer with close message if the message sent was not a close message
-                                                       // save sequence numbers
-                                                       pAsySdoSeqCon->
-                                                           m_bRecSeqNum =
-                                                           AmiGetByteFromLe
-                                                           (&pRecFrame_p->
-                                                            m_le_bRecSeqNumCon);
-                                                       pAsySdoSeqCon->
-                                                           m_bSendSeqNum =
-                                                           AmiGetByteFromLe
-                                                           (&pRecFrame_p->
-                                                            m_le_bSendSeqNumCon);
-                                                       // set rcon and scon to 0
-                                                       pAsySdoSeqCon->
-                                                           m_bSendSeqNum &=
-                                                           EPL_SEQ_NUM_MASK;
-                                                       pAsySdoSeqCon->
-                                                           m_bRecSeqNum &=
-                                                           EPL_SEQ_NUM_MASK;
-                                                       // send frame
-                                                       EplSdoAsySeqSendIntern
-                                                           (pAsySdoSeqCon, 0,
-                                                            NULL, FALSE);
-                                               }
-                                               // call Command Layer Cb
-                                               AsySdoSequInstance_g.
-                                                   m_fpSdoComConCb
-                                                   (SdoSeqConHdl,
-                                                    kAsySdoConStateInitError);
-                                       }
-                                       break;
-                               }
-
-                       default:
-                               // d.k. do nothing
-                               break;
-
-                       }       // end of switch(Event_p)
-                       break;
-               }
-
-               // init connection step 1
-               // wait for frame with scon = 1
-               // and rcon = 1
-       case kEplAsySdoStateInit1:
-               {
-//            PRINTF0("EplSdoAsySequ: StateInit1\n");
-
-                       // check event
-                       switch (Event_p) {
-                               // frame received
-                       case kAsySdoSeqEventFrameRec:
-                               {
-                                       // check scon == 1 and rcon == 1
-                                       if (((pRecFrame_p->
-                                             m_le_bRecSeqNumCon &
-                                             EPL_ASY_SDO_CON_MASK) == 0x01)
-                                           && ((pRecFrame_p->m_le_bSendSeqNumCon & EPL_ASY_SDO_CON_MASK) == 0x01)) {   // create answer own scon = 2
-                                               // save sequence numbers
-                                               pAsySdoSeqCon->m_bRecSeqNum =
-                                                   AmiGetByteFromLe
-                                                   (&pRecFrame_p->
-                                                    m_le_bRecSeqNumCon);
-                                               pAsySdoSeqCon->m_bSendSeqNum =
-                                                   AmiGetByteFromLe
-                                                   (&pRecFrame_p->
-                                                    m_le_bSendSeqNumCon);
-
-                                               pAsySdoSeqCon->m_bRecSeqNum++;
-                                               Ret =
-                                                   EplSdoAsySeqSendIntern
-                                                   (pAsySdoSeqCon, 0, NULL,
-                                                    FALSE);
-                                               if (Ret != kEplSuccessful) {
-                                                       goto Exit;
-                                               }
-                                               // change state to kEplAsySdoStateInit3
-                                               pAsySdoSeqCon->m_SdoState =
-                                                   kEplAsySdoStateInit3;
-
-                                               // set timer
-                                               Ret =
-                                                   EplSdoAsySeqSetTimer
-                                                   (pAsySdoSeqCon,
-                                                    EPL_SEQ_DEFAULT_TIMEOUT);
-
-                                       }
-                                       // check if scon == 1 and rcon == 0, i.e. other side wants me to be server
-                                       else if (((pRecFrame_p->
-                                                  m_le_bRecSeqNumCon &
-                                                  EPL_ASY_SDO_CON_MASK) ==
-                                                 0x00)
-                                                &&
-                                                ((pRecFrame_p->
-                                                  m_le_bSendSeqNumCon &
-                                                  EPL_ASY_SDO_CON_MASK) ==
-                                                 0x01)) {
-                                               // save sequence numbers
-                                               pAsySdoSeqCon->m_bRecSeqNum =
-                                                   AmiGetByteFromLe
-                                                   (&pRecFrame_p->
-                                                    m_le_bRecSeqNumCon);
-                                               pAsySdoSeqCon->m_bSendSeqNum =
-                                                   AmiGetByteFromLe
-                                                   (&pRecFrame_p->
-                                                    m_le_bSendSeqNumCon);
-                                               // create answer and send answer
-                                               // set rcon to 1 (in send direction own scon)
-                                               pAsySdoSeqCon->m_bRecSeqNum++;
-                                               Ret =
-                                                   EplSdoAsySeqSendIntern
-                                                   (pAsySdoSeqCon, 0, NULL,
-                                                    FALSE);
-                                               if (Ret != kEplSuccessful) {
-                                                       goto Exit;
-                                               }
-                                               // change state to kEplAsySdoStateInit2
-                                               pAsySdoSeqCon->m_SdoState =
-                                                   kEplAsySdoStateInit2;
-
-                                               // set timer
-                                               Ret =
-                                                   EplSdoAsySeqSetTimer
-                                                   (pAsySdoSeqCon,
-                                                    EPL_SEQ_DEFAULT_TIMEOUT);
-                                       } else {        // error -> Close
-                                               pAsySdoSeqCon->m_SdoState =
-                                                   kEplAsySdoStateIdle;
-                                               // delete timer
-                                               EplTimeruDeleteTimer
-                                                   (&pAsySdoSeqCon->
-                                                    m_EplTimerHdl);
-                                               if (((pRecFrame_p->
-                                                     m_le_bRecSeqNumCon &
-                                                     EPL_ASY_SDO_CON_MASK) !=
-                                                    0x00)
-                                                   || ((pRecFrame_p->m_le_bSendSeqNumCon & EPL_ASY_SDO_CON_MASK) != 0x00)) {   // d.k. only answer with close message if the message sent was not a close message
-                                                       // save sequence numbers
-                                                       pAsySdoSeqCon->
-                                                           m_bRecSeqNum =
-                                                           AmiGetByteFromLe
-                                                           (&pRecFrame_p->
-                                                            m_le_bRecSeqNumCon);
-                                                       pAsySdoSeqCon->
-                                                           m_bSendSeqNum =
-                                                           AmiGetByteFromLe
-                                                           (&pRecFrame_p->
-                                                            m_le_bSendSeqNumCon);
-
-                                                       // set rcon and scon to 0
-                                                       pAsySdoSeqCon->
-                                                           m_bSendSeqNum &=
-                                                           EPL_SEQ_NUM_MASK;
-                                                       pAsySdoSeqCon->
-                                                           m_bRecSeqNum &=
-                                                           EPL_SEQ_NUM_MASK;
-                                                       // send frame
-                                                       EplSdoAsySeqSendIntern
-                                                           (pAsySdoSeqCon, 0,
-                                                            NULL, FALSE);
-                                               }
-                                               // call Command Layer Cb
-                                               AsySdoSequInstance_g.
-                                                   m_fpSdoComConCb
-                                                   (SdoSeqConHdl,
-                                                    kAsySdoConStateInitError);
-                                       }
-                                       break;
-                               }
-
-                               // timeout
-                       case kAsySdoSeqEventTimeout:
-                               {       // error -> Close
-                                       pAsySdoSeqCon->m_SdoState =
-                                           kEplAsySdoStateIdle;
-
-                                       // set rcon and scon to 0
-                                       pAsySdoSeqCon->m_bSendSeqNum &=
-                                           EPL_SEQ_NUM_MASK;
-                                       pAsySdoSeqCon->m_bRecSeqNum &=
-                                           EPL_SEQ_NUM_MASK;
-                                       // send frame
-                                       EplSdoAsySeqSendIntern(pAsySdoSeqCon,
-                                                              0, NULL, FALSE);
-                                       // call Command Layer Cb
-                                       AsySdoSequInstance_g.
-                                           m_fpSdoComConCb(SdoSeqConHdl,
-                                                           kAsySdoConStateInitError);
-                                       break;
-                               }
-
-                       default:
-                               // d.k. do nothing
-                               break;
-
-                       }       // end of switch(Event_p)
-                       break;
-               }
-
-               // init connection step 2
-       case kEplAsySdoStateInit2:
-               {
-//            PRINTF0("EplSdoAsySequ: StateInit2\n");
-
-                       // check event
-                       switch (Event_p) {
-                               // frame received
-                       case kAsySdoSeqEventFrameRec:
-                               {
-                                       // check scon == 2 and rcon == 1
-                                       if (((pRecFrame_p->
-                                             m_le_bRecSeqNumCon &
-                                             EPL_ASY_SDO_CON_MASK) == 0x01)
-                                           && ((pRecFrame_p->m_le_bSendSeqNumCon & EPL_ASY_SDO_CON_MASK) == 0x02)) {   // create answer own rcon = 2
-                                               // save sequence numbers
-                                               pAsySdoSeqCon->m_bRecSeqNum =
-                                                   AmiGetByteFromLe
-                                                   (&pRecFrame_p->
-                                                    m_le_bRecSeqNumCon);
-                                               pAsySdoSeqCon->m_bSendSeqNum =
-                                                   AmiGetByteFromLe
-                                                   (&pRecFrame_p->
-                                                    m_le_bSendSeqNumCon);
-
-                                               pAsySdoSeqCon->m_bRecSeqNum++;
-                                               Ret =
-                                                   EplSdoAsySeqSendIntern
-                                                   (pAsySdoSeqCon, 0, NULL,
-                                                    FALSE);
-                                               if (Ret != kEplSuccessful) {
-                                                       goto Exit;
-                                               }
-                                               // change state to kEplAsySdoStateConnected
-                                               pAsySdoSeqCon->m_SdoState =
-                                                   kEplAsySdoStateConnected;
-
-                                               // set timer
-                                               Ret =
-                                                   EplSdoAsySeqSetTimer
-                                                   (pAsySdoSeqCon,
-                                                    EPL_SEQ_DEFAULT_TIMEOUT);
-
-                                               // call Command Layer Cb
-                                               AsySdoSequInstance_g.
-                                                   m_fpSdoComConCb
-                                                   (SdoSeqConHdl,
-                                                    kAsySdoConStateConnected);
-
-                                       }
-                                       // check scon == 1 and rcon == 1, i.e. other side wants me to initiate the connection
-                                       else if (((pRecFrame_p->
-                                                  m_le_bRecSeqNumCon &
-                                                  EPL_ASY_SDO_CON_MASK) ==
-                                                 0x01)
-                                                &&
-                                                ((pRecFrame_p->
-                                                  m_le_bSendSeqNumCon &
-                                                  EPL_ASY_SDO_CON_MASK) ==
-                                                 0x01)) {
-                                               // save sequence numbers
-                                               pAsySdoSeqCon->m_bRecSeqNum =
-                                                   AmiGetByteFromLe
-                                                   (&pRecFrame_p->
-                                                    m_le_bRecSeqNumCon);
-                                               pAsySdoSeqCon->m_bSendSeqNum =
-                                                   AmiGetByteFromLe
-                                                   (&pRecFrame_p->
-                                                    m_le_bSendSeqNumCon);
-                                               // create answer and send answer
-                                               // set rcon to 1 (in send direction own scon)
-                                               pAsySdoSeqCon->m_bRecSeqNum++;
-                                               Ret =
-                                                   EplSdoAsySeqSendIntern
-                                                   (pAsySdoSeqCon, 0, NULL,
-                                                    FALSE);
-                                               if (Ret != kEplSuccessful) {
-                                                       goto Exit;
-                                               }
-                                               // set timer
-                                               Ret =
-                                                   EplSdoAsySeqSetTimer
-                                                   (pAsySdoSeqCon,
-                                                    EPL_SEQ_DEFAULT_TIMEOUT);
-                                               // change state to kEplAsySdoStateInit3
-                                               pAsySdoSeqCon->m_SdoState =
-                                                   kEplAsySdoStateInit3;
-
-                                       } else {        // error -> Close
-                                               pAsySdoSeqCon->m_SdoState =
-                                                   kEplAsySdoStateIdle;
-                                               // delete timer
-                                               EplTimeruDeleteTimer
-                                                   (&pAsySdoSeqCon->
-                                                    m_EplTimerHdl);
-                                               if (((pRecFrame_p->
-                                                     m_le_bRecSeqNumCon &
-                                                     EPL_ASY_SDO_CON_MASK) !=
-                                                    0x00)
-                                                   || ((pRecFrame_p->m_le_bSendSeqNumCon & EPL_ASY_SDO_CON_MASK) != 0x00)) {   // d.k. only answer with close message if the message sent was not a close message
-                                                       // save sequence numbers
-                                                       pAsySdoSeqCon->
-                                                           m_bRecSeqNum =
-                                                           AmiGetByteFromLe
-                                                           (&pRecFrame_p->
-                                                            m_le_bRecSeqNumCon);
-                                                       pAsySdoSeqCon->
-                                                           m_bSendSeqNum =
-                                                           AmiGetByteFromLe
-                                                           (&pRecFrame_p->
-                                                            m_le_bSendSeqNumCon);
-                                                       // set rcon and scon to 0
-                                                       pAsySdoSeqCon->
-                                                           m_bSendSeqNum &=
-                                                           EPL_SEQ_NUM_MASK;
-                                                       pAsySdoSeqCon->
-                                                           m_bRecSeqNum &=
-                                                           EPL_SEQ_NUM_MASK;
-                                                       // send frame
-                                                       EplSdoAsySeqSendIntern
-                                                           (pAsySdoSeqCon, 0,
-                                                            NULL, FALSE);
-                                               }
-                                               // call Command Layer Cb
-                                               AsySdoSequInstance_g.
-                                                   m_fpSdoComConCb
-                                                   (SdoSeqConHdl,
-                                                    kAsySdoConStateInitError);
-                                       }
-                                       break;
-                               }
-
-                               // timeout
-                       case kAsySdoSeqEventTimeout:
-                               {       // error -> Close
-                                       pAsySdoSeqCon->m_SdoState =
-                                           kEplAsySdoStateIdle;
-                                       // set rcon and scon to 0
-                                       pAsySdoSeqCon->m_bSendSeqNum &=
-                                           EPL_SEQ_NUM_MASK;
-                                       pAsySdoSeqCon->m_bRecSeqNum &=
-                                           EPL_SEQ_NUM_MASK;
-                                       // send frame
-                                       EplSdoAsySeqSendIntern(pAsySdoSeqCon,
-                                                              0, NULL, FALSE);
-
-                                       // call Command Layer Cb
-                                       AsySdoSequInstance_g.
-                                           m_fpSdoComConCb(SdoSeqConHdl,
-                                                           kAsySdoConStateInitError);
-                                       break;
-                               }
-
-                       default:
-                               // d.k. do nothing
-                               break;
-
-                       }       // end of switch(Event_p)
-                       break;
-               }
-
-               // init connection step 3
-       case kEplAsySdoStateInit3:
-               {
-                       // check event
-                       switch (Event_p) {
-                               // frame received
-                       case kAsySdoSeqEventFrameRec:
-                               {
-                                       // check scon == 2 and rcon == 2
-                                       if (((pRecFrame_p->
-                                             m_le_bRecSeqNumCon &
-                                             EPL_ASY_SDO_CON_MASK) == 0x02)
-                                           &&
-                                           ((pRecFrame_p->
-                                             m_le_bSendSeqNumCon &
-                                             EPL_ASY_SDO_CON_MASK) == 0x02)) {
-                                               // save sequence numbers
-                                               pAsySdoSeqCon->m_bRecSeqNum =
-                                                   AmiGetByteFromLe
-                                                   (&pRecFrame_p->
-                                                    m_le_bRecSeqNumCon);
-                                               pAsySdoSeqCon->m_bSendSeqNum =
-                                                   AmiGetByteFromLe
-                                                   (&pRecFrame_p->
-                                                    m_le_bSendSeqNumCon);
-                                               // change state to kEplAsySdoStateConnected
-                                               pAsySdoSeqCon->m_SdoState =
-                                                   kEplAsySdoStateConnected;
-
-                                               // set timer
-                                               Ret =
-                                                   EplSdoAsySeqSetTimer
-                                                   (pAsySdoSeqCon,
-                                                    EPL_SEQ_DEFAULT_TIMEOUT);
-                                               // call Command Layer Cb
-                                               AsySdoSequInstance_g.
-                                                   m_fpSdoComConCb
-                                                   (SdoSeqConHdl,
-                                                    kAsySdoConStateConnected);
-
-                                       }
-                                       // check scon == 2 and rcon == 1
-                                       else if (((pRecFrame_p->
-                                                  m_le_bRecSeqNumCon &
-                                                  EPL_ASY_SDO_CON_MASK) ==
-                                                 0x01)
-                                                && ((pRecFrame_p->m_le_bSendSeqNumCon & EPL_ASY_SDO_CON_MASK) == 0x02)) {      // create answer own rcon = 2
-                                               // save sequence numbers
-                                               pAsySdoSeqCon->m_bRecSeqNum =
-                                                   AmiGetByteFromLe
-                                                   (&pRecFrame_p->
-                                                    m_le_bRecSeqNumCon);
-                                               pAsySdoSeqCon->m_bSendSeqNum =
-                                                   AmiGetByteFromLe
-                                                   (&pRecFrame_p->
-                                                    m_le_bSendSeqNumCon);
-
-                                               pAsySdoSeqCon->m_bRecSeqNum++;
-                                               Ret =
-                                                   EplSdoAsySeqSendIntern
-                                                   (pAsySdoSeqCon, 0, NULL,
-                                                    FALSE);
-                                               if (Ret != kEplSuccessful) {
-                                                       goto Exit;
-                                               }
-                                               // change state to kEplAsySdoStateConnected
-                                               pAsySdoSeqCon->m_SdoState =
-                                                   kEplAsySdoStateConnected;
-
-                                               // set timer
-                                               Ret =
-                                                   EplSdoAsySeqSetTimer
-                                                   (pAsySdoSeqCon,
-                                                    EPL_SEQ_DEFAULT_TIMEOUT);
-
-                                               // call Command Layer Cb
-                                               AsySdoSequInstance_g.
-                                                   m_fpSdoComConCb
-                                                   (SdoSeqConHdl,
-                                                    kAsySdoConStateConnected);
-
-                                       } else {        // error -> Close
-                                               pAsySdoSeqCon->m_SdoState =
-                                                   kEplAsySdoStateIdle;
-                                               // delete timer
-                                               EplTimeruDeleteTimer
-                                                   (&pAsySdoSeqCon->
-                                                    m_EplTimerHdl);
-                                               if (((pRecFrame_p->
-                                                     m_le_bRecSeqNumCon &
-                                                     EPL_ASY_SDO_CON_MASK) !=
-                                                    0x00)
-                                                   || ((pRecFrame_p->m_le_bSendSeqNumCon & EPL_ASY_SDO_CON_MASK) != 0x00)) {   // d.k. only answer with close message if the message sent was not a close message
-                                                       // save sequence numbers
-                                                       pAsySdoSeqCon->
-                                                           m_bRecSeqNum =
-                                                           AmiGetByteFromLe
-                                                           (&pRecFrame_p->
-                                                            m_le_bRecSeqNumCon);
-                                                       pAsySdoSeqCon->
-                                                           m_bSendSeqNum =
-                                                           AmiGetByteFromLe
-                                                           (&pRecFrame_p->
-                                                            m_le_bSendSeqNumCon);
-                                                       // set rcon and scon to 0
-                                                       pAsySdoSeqCon->
-                                                           m_bSendSeqNum &=
-                                                           EPL_SEQ_NUM_MASK;
-                                                       pAsySdoSeqCon->
-                                                           m_bRecSeqNum &=
-                                                           EPL_SEQ_NUM_MASK;
-                                                       // send frame
-                                                       EplSdoAsySeqSendIntern
-                                                           (pAsySdoSeqCon, 0,
-                                                            NULL, FALSE);
-                                               }
-                                               // call Command Layer Cb
-                                               AsySdoSequInstance_g.
-                                                   m_fpSdoComConCb
-                                                   (SdoSeqConHdl,
-                                                    kAsySdoConStateInitError);
-                                       }
-                                       break;
-                               }
-
-                               // timeout
-                       case kAsySdoSeqEventTimeout:
-                               {       // error -> Close
-                                       pAsySdoSeqCon->m_SdoState =
-                                           kEplAsySdoStateIdle;
-                                       // set rcon and scon to 0
-                                       pAsySdoSeqCon->m_bSendSeqNum &=
-                                           EPL_SEQ_NUM_MASK;
-                                       pAsySdoSeqCon->m_bRecSeqNum &=
-                                           EPL_SEQ_NUM_MASK;
-                                       // send frame
-                                       EplSdoAsySeqSendIntern(pAsySdoSeqCon,
-                                                              0, NULL, FALSE);
-
-                                       // call Command Layer Cb
-                                       AsySdoSequInstance_g.
-                                           m_fpSdoComConCb(SdoSeqConHdl,
-                                                           kAsySdoConStateInitError);
-                                       break;
-                               }
-
-                       default:
-                               // d.k. do nothing
-                               break;
-
-                       }       // end of switch(Event_p)
-                       break;
-               }
-
-               // connection established
-       case kEplAsySdoStateConnected:
-               {
-                       // check event
-                       switch (Event_p) {
-
-                               // frame to send
-                       case kAsySdoSeqEventFrameSend:
-                               {
-                                       // set timer
-                                       Ret =
-                                           EplSdoAsySeqSetTimer(pAsySdoSeqCon,
-                                                                EPL_SEQ_DEFAULT_TIMEOUT);
-                                       // check if data frame or ack
-                                       if (pData_p == NULL) {  // send ack
-                                               // inc scon
-                                               //pAsySdoSeqCon->m_bRecSeqNum += 4;
-                                               Ret =
-                                                   EplSdoAsySeqSendIntern
-                                                   (pAsySdoSeqCon, 0, NULL,
-                                                    FALSE);
-                                               if (Ret != kEplSuccessful) {
-                                                       goto Exit;
-                                               }
-                                       } else {        // send dataframe
-                                               // increment send sequence number
-                                               pAsySdoSeqCon->m_bRecSeqNum +=
-                                                   4;
-                                               Ret =
-                                                   EplSdoAsySeqSendIntern
-                                                   (pAsySdoSeqCon,
-                                                    uiDataSize_p, pData_p,
-                                                    TRUE);
-                                               if (Ret == kEplSdoSeqRequestAckNeeded) {        // request ack
-                                                       // change state to wait ack
-                                                       pAsySdoSeqCon->
-                                                           m_SdoState =
-                                                           kEplAsySdoStateWaitAck;
-                                                       // set Ret to kEplSuccessful, because no error
-                                                       // for higher layer
-                                                       Ret = kEplSuccessful;
-
-                                               } else if (Ret !=
-                                                          kEplSuccessful) {
-                                                       goto Exit;
-                                               } else {
-                                                       // call Command Layer Cb
-                                                       AsySdoSequInstance_g.
-                                                           m_fpSdoComConCb
-                                                           (SdoSeqConHdl,
-                                                            kAsySdoConStateFrameSended);
-                                               }
-                                       }
-                                       break;
-                               }       // end of case kAsySdoSeqEventFrameSend
-
-                               // frame received
-                       case kAsySdoSeqEventFrameRec:
-                               {
-                                       u8 bSendSeqNumCon =
-                                           AmiGetByteFromLe(&pRecFrame_p->
-                                                            m_le_bSendSeqNumCon);
-
-                                       // set timer
-                                       Ret =
-                                           EplSdoAsySeqSetTimer(pAsySdoSeqCon,
-                                                                EPL_SEQ_DEFAULT_TIMEOUT);
-                                       // check scon
-                                       switch (bSendSeqNumCon &
-                                               EPL_ASY_SDO_CON_MASK) {
-                                               // close from other node
-                                       case 0:
-                                       case 1:
-                                               {
-                                                       // return to idle
-                                                       pAsySdoSeqCon->
-                                                           m_SdoState =
-                                                           kEplAsySdoStateIdle;
-                                                       // delete timer
-                                                       EplTimeruDeleteTimer
-                                                           (&pAsySdoSeqCon->
-                                                            m_EplTimerHdl);
-                                                       // call Command Layer Cb
-                                                       AsySdoSequInstance_g.
-                                                           m_fpSdoComConCb
-                                                           (SdoSeqConHdl,
-                                                            kAsySdoConStateConClosed);
-
-                                                       break;
-                                               }
-
-                                               // Request Ack or Error Ack
-                                               // possible contain data
-                                       case 3:
-                                               // normal frame
-                                       case 2:
-                                               {
-                                                       if ((AmiGetByteFromLe
-                                                            (&pRecFrame_p->
-                                                             m_le_bRecSeqNumCon)
-                                                            &
-                                                            EPL_ASY_SDO_CON_MASK)
-                                                           == 3) {
-//                                PRINTF0("EplSdoAsySequ: error response received\n");
-
-                                                               // error response (retransmission request)
-                                                               // resend frames from history
-
-                                                               // read frame from history
-                                                               Ret =
-                                                                   EplSdoAsyReadFromHistory
-                                                                   (pAsySdoSeqCon,
-                                                                    &pEplFrame,
-                                                                    &uiFrameSize,
-                                                                    TRUE);
-                                                               if (Ret !=
-                                                                   kEplSuccessful)
-                                                               {
-                                                                       goto Exit;
-                                                               }
-
-                                                               while ((pEplFrame != NULL)
-                                                                      &&
-                                                                      (uiFrameSize
-                                                                       != 0)) {
-                                                                       // send frame
-                                                                       Ret =
-                                                                           EplSdoAsySeqSendLowerLayer
-                                                                           (pAsySdoSeqCon,
-                                                                            uiFrameSize,
-                                                                            pEplFrame);
-                                                                       if (Ret
-                                                                           !=
-                                                                           kEplSuccessful)
-                                                                       {
-                                                                               goto Exit;
-                                                                       }
-                                                                       // read next frame from history
-                                                                       Ret =
-                                                                           EplSdoAsyReadFromHistory
-                                                                           (pAsySdoSeqCon,
-                                                                            &pEplFrame,
-                                                                            &uiFrameSize,
-                                                                            FALSE);
-                                                                       if (Ret
-                                                                           !=
-                                                                           kEplSuccessful)
-                                                                       {
-                                                                               goto Exit;
-                                                                       }
-                                                               }       // end of while((pabFrame != NULL)
-                                                       }       // end of if (error response)
-
-                                                       if (((pAsySdoSeqCon->m_bSendSeqNum + 4) & EPL_SEQ_NUM_MASK) == (bSendSeqNumCon & EPL_SEQ_NUM_MASK)) {   // next frame of sequence received
-                                                               // save send sequence number (without ack request)
-                                                               pAsySdoSeqCon->
-                                                                   m_bSendSeqNum
-                                                                   =
-                                                                   bSendSeqNumCon
-                                                                   & ~0x01;
-
-                                                               // check if ack or data-frame
-                                                               //ignore ack -> already processed
-                                                               if (uiDataSize_p
-                                                                   >
-                                                                   EPL_SEQ_HEADER_SIZE)
-                                                               {
-                                                                       AsySdoSequInstance_g.
-                                                                           m_fpSdoComReceiveCb
-                                                                           (SdoSeqConHdl,
-                                                                            ((tEplAsySdoCom *) & pRecFrame_p->m_le_abSdoSeqPayload), (uiDataSize_p - EPL_SEQ_HEADER_SIZE));
-                                                                       // call Command Layer Cb
-                                                                       AsySdoSequInstance_g.
-                                                                           m_fpSdoComConCb
-                                                                           (SdoSeqConHdl,
-                                                                            kAsySdoConStateFrameSended);
-
-                                                               } else {
-                                                                       // call Command Layer Cb
-                                                                       AsySdoSequInstance_g.
-                                                                           m_fpSdoComConCb
-                                                                           (SdoSeqConHdl,
-                                                                            kAsySdoConStateAckReceived);
-                                                               }
-                                                       } else if (((bSendSeqNumCon - pAsySdoSeqCon->m_bSendSeqNum - 4) & EPL_SEQ_NUM_MASK) < EPL_SEQ_NUM_THRESHOLD) {  // frame of sequence was lost,
-                                                               // because difference of received and old value
-                                                               // is less then halve of the values range.
-
-                                                               // send error frame with own rcon = 3
-                                                               pAsySdoSeqCon->
-                                                                   m_bSendSeqNum
-                                                                   |= 0x03;
-                                                               Ret =
-                                                                   EplSdoAsySeqSendIntern
-                                                                   (pAsySdoSeqCon,
-                                                                    0, NULL,
-                                                                    FALSE);
-                                                               // restore send sequence number
-                                                               pAsySdoSeqCon->
-                                                                   m_bSendSeqNum
-                                                                   =
-                                                                   (pAsySdoSeqCon->
-                                                                    m_bSendSeqNum
-                                                                    &
-                                                                    EPL_SEQ_NUM_MASK)
-                                                                   | 0x02;
-                                                               if (Ret !=
-                                                                   kEplSuccessful)
-                                                               {
-                                                                       goto Exit;
-                                                               }
-                                                               // break here, because a requested acknowledge
-                                                               // was sent implicitly above
-                                                               break;
-                                                       }
-                                                       // else, ignore repeated frame
-
-                                                       if ((bSendSeqNumCon & EPL_ASY_SDO_CON_MASK) == 3) {     // ack request received
-
-                                                               // create ack with own scon = 2
-                                                               Ret =
-                                                                   EplSdoAsySeqSendIntern
-                                                                   (pAsySdoSeqCon,
-                                                                    0, NULL,
-                                                                    FALSE);
-                                                               if (Ret !=
-                                                                   kEplSuccessful)
-                                                               {
-                                                                       goto Exit;
-                                                               }
-                                                       }
-
-                                                       break;
-                                               }
-
-                                       }       // switch(pAsySdoSeqCon->m_bSendSeqNum & EPL_ASY_SDO_CON_MASK)
-                                       break;
-                               }       // end of case kAsySdoSeqEventFrameRec:
-
-                               //close event from higher layer
-                       case kAsySdoSeqEventCloseCon:
-                               {
-                                       pAsySdoSeqCon->m_SdoState =
-                                           kEplAsySdoStateIdle;
-                                       // set rcon and scon to 0
-                                       pAsySdoSeqCon->m_bSendSeqNum &=
-                                           EPL_SEQ_NUM_MASK;
-                                       pAsySdoSeqCon->m_bRecSeqNum &=
-                                           EPL_SEQ_NUM_MASK;
-                                       // send frame
-                                       EplSdoAsySeqSendIntern(pAsySdoSeqCon,
-                                                              0, NULL, FALSE);
-
-                                       // delete timer
-                                       EplTimeruDeleteTimer(&pAsySdoSeqCon->
-                                                            m_EplTimerHdl);
-                                       // call Command Layer Cb is not necessary, because the event came from there
-//                    AsySdoSequInstance_g.m_fpSdoComConCb(SdoSeqConHdl,
-//                                                            kAsySdoConStateInitError);
-                                       break;
-                               }
-
-                               // timeout
-                       case kAsySdoSeqEventTimeout:
-                               {
-
-                                       uiFreeEntries =
-                                           EplSdoAsyGetFreeEntriesFromHistory
-                                           (pAsySdoSeqCon);
-                                       if ((uiFreeEntries <
-                                            EPL_SDO_HISTORY_SIZE)
-                                           && (pAsySdoSeqCon->m_uiRetryCount < EPL_SEQ_RETRY_COUNT)) { // unacknowlegded frames in history
-                                               // and retry counter not exceeded
-
-                                               // resend data with acknowledge request
-
-                                               // increment retry counter
-                                               pAsySdoSeqCon->m_uiRetryCount++;
-
-                                               // set timer
-                                               Ret =
-                                                   EplSdoAsySeqSetTimer
-                                                   (pAsySdoSeqCon,
-                                                    EPL_SEQ_DEFAULT_TIMEOUT);
-
-                                               // read first frame from history
-                                               Ret =
-                                                   EplSdoAsyReadFromHistory
-                                                   (pAsySdoSeqCon, &pEplFrame,
-                                                    &uiFrameSize, TRUE);
-                                               if (Ret != kEplSuccessful) {
-                                                       goto Exit;
-                                               }
-
-                                               if ((pEplFrame != NULL)
-                                                   && (uiFrameSize != 0)) {
-
-                                                       // set ack request in scon
-                                                       AmiSetByteToLe
-                                                           (&pEplFrame->m_Data.
-                                                            m_Asnd.m_Payload.
-                                                            m_SdoSequenceFrame.
-                                                            m_le_bSendSeqNumCon,
-                                                            AmiGetByteFromLe
-                                                            (&pEplFrame->
-                                                             m_Data.m_Asnd.
-                                                             m_Payload.
-                                                             m_SdoSequenceFrame.
-                                                             m_le_bSendSeqNumCon)
-                                                            | 0x03);
-
-                                                       // send frame
-                                                       Ret =
-                                                           EplSdoAsySeqSendLowerLayer
-                                                           (pAsySdoSeqCon,
-                                                            uiFrameSize,
-                                                            pEplFrame);
-                                                       if (Ret !=
-                                                           kEplSuccessful) {
-                                                               goto Exit;
-                                                       }
-
-                                               }
-                                       } else {
-                                               // timeout, because of no traffic -> Close
-                                               pAsySdoSeqCon->m_SdoState =
-                                                   kEplAsySdoStateIdle;
-                                               // set rcon and scon to 0
-                                               pAsySdoSeqCon->m_bSendSeqNum &=
-                                                   EPL_SEQ_NUM_MASK;
-                                               pAsySdoSeqCon->m_bRecSeqNum &=
-                                                   EPL_SEQ_NUM_MASK;
-                                               // send frame
-                                               EplSdoAsySeqSendIntern
-                                                   (pAsySdoSeqCon, 0, NULL,
-                                                    FALSE);
-
-                                               // call Command Layer Cb
-                                               AsySdoSequInstance_g.
-                                                   m_fpSdoComConCb
-                                                   (SdoSeqConHdl,
-                                                    kAsySdoConStateTimeout);
-                                       }
-
-                                       break;
-                               }
-
-                       default:
-                               // d.k. do nothing
-                               break;
-
-                       }       // end of switch(Event_p)
-                       break;
-               }
-
-               // wait for Acknowledge (history buffer full)
-       case kEplAsySdoStateWaitAck:
-               {
-                       PRINTF0("EplSdoAsySequ: StateWaitAck\n");
-
-                       // set timer
-                       Ret = EplSdoAsySeqSetTimer(pAsySdoSeqCon,
-                                                  EPL_SEQ_DEFAULT_TIMEOUT);
-
-                       //TODO: retry of acknowledge
-                       if (Event_p == kAsySdoSeqEventFrameRec) {
-                               // check rcon
-                               switch (pRecFrame_p->
-                                       m_le_bRecSeqNumCon &
-                                       EPL_ASY_SDO_CON_MASK) {
-                                       // close-frome other node
-                               case 0:
-                                       {
-                                               // return to idle
-                                               pAsySdoSeqCon->m_SdoState =
-                                                   kEplAsySdoStateIdle;
-                                               // delete timer
-                                               EplTimeruDeleteTimer
-                                                   (&pAsySdoSeqCon->
-                                                    m_EplTimerHdl);
-                                               // call Command Layer Cb
-                                               AsySdoSequInstance_g.
-                                                   m_fpSdoComConCb
-                                                   (SdoSeqConHdl,
-                                                    kAsySdoConStateConClosed);
-
-                                               break;
-                                       }
-
-                                       // normal frame
-                               case 2:
-                                       {
-                                               // should be ack
-                                               // -> change to state kEplAsySdoStateConnected
-                                               pAsySdoSeqCon->m_SdoState =
-                                                   kEplAsySdoStateConnected;
-                                               // call Command Layer Cb
-                                               AsySdoSequInstance_g.
-                                                   m_fpSdoComConCb
-                                                   (SdoSeqConHdl,
-                                                    kAsySdoConStateAckReceived);
-                                               // send data to higher layer if needed
-                                               if (uiDataSize_p >
-                                                   EPL_SEQ_HEADER_SIZE) {
-                                                       AsySdoSequInstance_g.
-                                                           m_fpSdoComReceiveCb
-                                                           (SdoSeqConHdl,
-                                                            ((tEplAsySdoCom *)
-                                                             & pRecFrame_p->
-                                                             m_le_abSdoSeqPayload),
-                                                            (uiDataSize_p -
-                                                             EPL_SEQ_HEADER_SIZE));
-                                               }
-                                               break;
-                                       }
-
-                                       // Request Ack or Error Ack
-                               case 3:
-                                       {
-                                               // -> change to state kEplAsySdoStateConnected
-                                               pAsySdoSeqCon->m_SdoState =
-                                                   kEplAsySdoStateConnected;
-
-                                               if (pRecFrame_p->m_le_bRecSeqNumCon == pAsySdoSeqCon->m_bRecSeqNum) {   // ack request
-                                                       // -> send ack
-                                                       // save sequence numbers
-                                                       pAsySdoSeqCon->
-                                                           m_bRecSeqNum =
-                                                           AmiGetByteFromLe
-                                                           (&pRecFrame_p->
-                                                            m_le_bRecSeqNumCon);
-                                                       pAsySdoSeqCon->
-                                                           m_bSendSeqNum =
-                                                           AmiGetByteFromLe
-                                                           (&pRecFrame_p->
-                                                            m_le_bSendSeqNumCon);
-
-                                                       // create answer own rcon = 2
-                                                       pAsySdoSeqCon->
-                                                           m_bRecSeqNum--;
-
-                                                       // check if ack or data-frame
-                                                       if (uiDataSize_p >
-                                                           EPL_SEQ_HEADER_SIZE)
-                                                       {
-                                                               AsySdoSequInstance_g.
-                                                                   m_fpSdoComReceiveCb
-                                                                   (SdoSeqConHdl,
-                                                                    ((tEplAsySdoCom *) & pRecFrame_p->m_le_abSdoSeqPayload), (uiDataSize_p - EPL_SEQ_HEADER_SIZE));
-                                                               // call Command Layer Cb
-                                                               AsySdoSequInstance_g.
-                                                                   m_fpSdoComConCb
-                                                                   (SdoSeqConHdl,
-                                                                    kAsySdoConStateFrameSended);
-
-                                                       } else {
-                                                               Ret =
-                                                                   EplSdoAsySeqSendIntern
-                                                                   (pAsySdoSeqCon,
-                                                                    0, NULL,
-                                                                    FALSE);
-                                                               if (Ret !=
-                                                                   kEplSuccessful)
-                                                               {
-                                                                       goto Exit;
-                                                               }
-                                                       }
-
-                                               } else {
-                                                       // error ack
-                                                       // resend frames from history
-
-                                                       // read frame from history
-                                                       Ret =
-                                                           EplSdoAsyReadFromHistory
-                                                           (pAsySdoSeqCon,
-                                                            &pEplFrame,
-                                                            &uiFrameSize,
-                                                            TRUE);
-                                                       while ((pEplFrame !=
-                                                               NULL)
-                                                              && (uiFrameSize
-                                                                  != 0)) {
-                                                               // send frame
-                                                               Ret =
-                                                                   EplSdoAsySeqSendLowerLayer
-                                                                   (pAsySdoSeqCon,
-                                                                    uiFrameSize,
-                                                                    pEplFrame);
-                                                               if (Ret !=
-                                                                   kEplSuccessful)
-                                                               {
-                                                                       goto Exit;
-                                                               }
-                                                               // read next frame
-
-                                                               // read frame from history
-                                                               Ret =
-                                                                   EplSdoAsyReadFromHistory
-                                                                   (pAsySdoSeqCon,
-                                                                    &pEplFrame,
-                                                                    &uiFrameSize,
-                                                                    FALSE);
-                                                       }       // end of while((pabFrame != NULL)
-                                               }
-                                               break;
-                                       }
-                               }       // end of switch(pRecFrame_p->m_le_bRecSeqNumCon & EPL_ASY_SDO_CON_MASK)
-
-                       } else if (Event_p == kAsySdoSeqEventTimeout) { // error -> Close
-                               pAsySdoSeqCon->m_SdoState = kEplAsySdoStateIdle;
-                               // set rcon and scon to 0
-                               pAsySdoSeqCon->m_bSendSeqNum &=
-                                   EPL_SEQ_NUM_MASK;
-                               pAsySdoSeqCon->m_bRecSeqNum &= EPL_SEQ_NUM_MASK;
-                               // send frame
-                               EplSdoAsySeqSendIntern(pAsySdoSeqCon,
-                                                      0, NULL, FALSE);
-
-                               // call Command Layer Cb
-                               AsySdoSequInstance_g.
-                                   m_fpSdoComConCb(SdoSeqConHdl,
-                                                   kAsySdoConStateTimeout);
-                       }
-
-                       break;
-               }
-
-               // unknown state
-       default:
-               {
-                       EPL_DBGLVL_SDO_TRACE0
-                           ("Error: Unknown State in EplSdoAsySeqProcess\n");
-
-               }
-       }                       // end of switch(pAsySdoSeqCon->m_SdoState)
-
-      Exit:
-
-#if defined(WIN32) || defined(_WIN32)
-       // leave critical section for process function
-       LeaveCriticalSection(AsySdoSequInstance_g.m_pCriticalSection);
-#endif
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoAsySeqSendIntern
-//
-// Description: intern function to create and send a frame
-//              -> if uiDataSize_p == 0 create a frame with infos from
-//                 pAsySdoSeqCon_p
-//
-//
-//
-// Parameters:  pAsySdoSeqCon_p = pointer to control structure of the connection
-//              uiDataSize_p    = size of data frame to process (can be 0)
-//                                  -> without size of sequence header and Asnd header!!!
-//              pData_p         = pointer to frame to process (can be NULL)
-//              fFrameInHistory = if TRUE frame is saved to history else not
-//
-//
-//
-// Returns:     tEplKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-static tEplKernel EplSdoAsySeqSendIntern(tEplAsySdoSeqCon * pAsySdoSeqCon_p,
-                                        unsigned int uiDataSize_p,
-                                        tEplFrame * pData_p,
-                                        BOOL fFrameInHistory_p)
-{
-       tEplKernel Ret;
-       u8 abFrame[EPL_SEQ_FRAME_SIZE];
-       tEplFrame *pEplFrame;
-       unsigned int uiFreeEntries;
-
-       if (pData_p == NULL) {  // set pointer to own frame
-               EPL_MEMSET(&abFrame[0], 0x00, sizeof(abFrame));
-               pEplFrame = (tEplFrame *) & abFrame[0];
-       } else {                // set pointer to frame from calling function
-               pEplFrame = pData_p;
-       }
-
-       if (fFrameInHistory_p != FALSE) {
-               // check if only one free entry in history buffer
-               uiFreeEntries =
-                   EplSdoAsyGetFreeEntriesFromHistory(pAsySdoSeqCon_p);
-               if (uiFreeEntries == 1) {       // request an acknowledge in dataframe
-                       // own scon = 3
-                       pAsySdoSeqCon_p->m_bRecSeqNum |= 0x03;
-               }
-       }
-       // fillin header informations
-       // set service id sdo
-       AmiSetByteToLe(&pEplFrame->m_Data.m_Asnd.m_le_bServiceId, 0x05);
-       AmiSetByteToLe(&pEplFrame->m_Data.m_Asnd.m_Payload.m_SdoSequenceFrame.
-                      m_le_abReserved, 0x00);
-       // set receive sequence number and rcon
-       AmiSetByteToLe(&pEplFrame->m_Data.m_Asnd.m_Payload.m_SdoSequenceFrame.
-                      m_le_bRecSeqNumCon, pAsySdoSeqCon_p->m_bSendSeqNum);
-       // set send sequence number and scon
-       AmiSetByteToLe(&pEplFrame->m_Data.m_Asnd.m_Payload.m_SdoSequenceFrame.
-                      m_le_bSendSeqNumCon, pAsySdoSeqCon_p->m_bRecSeqNum);
-
-       // add size
-       uiDataSize_p += EPL_SEQ_HEADER_SIZE;
-
-       // forward frame to appropriate lower layer
-       Ret = EplSdoAsySeqSendLowerLayer(pAsySdoSeqCon_p, uiDataSize_p, pEplFrame);     // pointer to frame
-
-       // check if all allright
-       if ((Ret == kEplSuccessful)
-           && (fFrameInHistory_p != FALSE)) {
-               // set own scon to 2 if needed
-               if ((pAsySdoSeqCon_p->m_bRecSeqNum & 0x03) == 0x03) {
-                       pAsySdoSeqCon_p->m_bRecSeqNum--;
-               }
-               // save frame to history
-               Ret = EplSdoAsyAddFrameToHistory(pAsySdoSeqCon_p,
-                                                pEplFrame, uiDataSize_p);
-               if (Ret == kEplSdoSeqNoFreeHistory) {   // request Ack needed
-                       Ret = kEplSdoSeqRequestAckNeeded;
-               }
-
-       }
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoAsySeqSendLowerLayer
-//
-// Description: intern function to send a previously created frame to lower layer
-//
-// Parameters:  pAsySdoSeqCon_p = pointer to control structure of the connection
-//              uiDataSize_p    = size of data frame to process (can be 0)
-//                                  -> without size of Asnd header!!!
-//              pData_p         = pointer to frame to process (can be NULL)
-//
-// Returns:     tEplKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-static tEplKernel EplSdoAsySeqSendLowerLayer(tEplAsySdoSeqCon * pAsySdoSeqCon_p,
-                                            unsigned int uiDataSize_p,
-                                            tEplFrame * pEplFrame_p)
-{
-       tEplKernel Ret;
-
-       // call send-function
-       // check handle for UDP or Asnd
-       if ((pAsySdoSeqCon_p->m_ConHandle & EPL_SDO_ASY_HANDLE_MASK) == EPL_SDO_UDP_HANDLE) {   // send over UDP
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_UDP)) != 0)
-               Ret = EplSdoUdpuSendData(pAsySdoSeqCon_p->m_ConHandle, pEplFrame_p,     // pointer to frame
-                                        uiDataSize_p);
-#else
-               Ret = kEplSdoSeqUnsupportedProt;
-#endif
-
-       } else if ((pAsySdoSeqCon_p->m_ConHandle & EPL_SDO_ASY_HANDLE_MASK) == EPL_SDO_ASND_HANDLE) {   // ASND
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_ASND)) != 0)
-               Ret = EplSdoAsnduSendData(pAsySdoSeqCon_p->m_ConHandle, pEplFrame_p,    // pointer to frame
-                                         uiDataSize_p);
-#else
-               Ret = kEplSdoSeqUnsupportedProt;
-#endif
-       } else {                // error
-               Ret = kEplSdoSeqInvalidHdl;
-       }
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:        EplSdoAsyReceiveCb
-//
-// Description:     callback-function for received frames from lower layer
-//
-//
-//
-// Parameters:      ConHdl_p        = handle of the connection
-//                  pSdoSeqData_p   = pointer to frame
-//                  uiDataSize_p    = size of frame
-//
-//
-// Returns:         tEplKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoAsyReceiveCb(tEplSdoConHdl ConHdl_p,
-                             tEplAsySdoSeq *pSdoSeqData_p,
-                             unsigned int uiDataSize_p)
-{
-       tEplKernel Ret;
-       unsigned int uiCount = 0;
-       unsigned int uiFreeEntry = EPL_MAX_SDO_SEQ_CON;
-       tEplAsySdoSeqCon *pAsySdoSeqCon;
-
-#if defined(WIN32) || defined(_WIN32)
-       // enter  critical section
-       EnterCriticalSection(AsySdoSequInstance_g.m_pCriticalSectionReceive);
-#endif
-
-       EPL_DBGLVL_SDO_TRACE2("Handle: 0x%x , First Databyte 0x%x\n", ConHdl_p,
-                             ((u8 *) pSdoSeqData_p)[0]);
-
-       // search controll structure for this connection
-       pAsySdoSeqCon = &AsySdoSequInstance_g.m_AsySdoConnection[uiCount];
-       while (uiCount < EPL_MAX_SDO_SEQ_CON) {
-               if (pAsySdoSeqCon->m_ConHandle == ConHdl_p) {
-                       break;
-               } else if ((pAsySdoSeqCon->m_ConHandle == 0)
-                          && (uiFreeEntry == EPL_MAX_SDO_SEQ_CON)) {
-                       // free entry
-                       uiFreeEntry = uiCount;
-               }
-               uiCount++;
-               pAsySdoSeqCon++;
-       }
-
-       if (uiCount == EPL_MAX_SDO_SEQ_CON) {   // new connection
-               if (uiFreeEntry == EPL_MAX_SDO_SEQ_CON) {
-                       Ret = kEplSdoSeqNoFreeHandle;
-                       goto Exit;
-               } else {
-                       pAsySdoSeqCon =
-                           &AsySdoSequInstance_g.
-                           m_AsySdoConnection[uiFreeEntry];
-                       // save handle from lower layer
-                       pAsySdoSeqCon->m_ConHandle = ConHdl_p;
-                       // increment use counter
-                       pAsySdoSeqCon->m_uiUseCount++;
-                       uiCount = uiFreeEntry;
-               }
-       }
-       // call history ack function
-       Ret = EplSdoAsyAckFrameToHistory(pAsySdoSeqCon,
-                                        (AmiGetByteFromLe
-                                         (&pSdoSeqData_p->
-                                          m_le_bRecSeqNumCon) &
-                                         EPL_SEQ_NUM_MASK));
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-#if defined(WIN32) || defined(_WIN32)
-       // leave critical section
-       LeaveCriticalSection(AsySdoSequInstance_g.m_pCriticalSectionReceive);
-#endif
-
-       // call process function with pointer of frame and event kAsySdoSeqEventFrameRec
-       Ret = EplSdoAsySeqProcess(uiCount,
-                                 uiDataSize_p,
-                                 NULL, pSdoSeqData_p, kAsySdoSeqEventFrameRec);
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:        EplSdoAsyInitHistory
-//
-// Description:     inti function for history buffer
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:         tEplKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-static tEplKernel EplSdoAsyInitHistory(void)
-{
-       tEplKernel Ret;
-       unsigned int uiCount;
-
-       Ret = kEplSuccessful;
-       // init m_bFreeEntries in history-buffer
-       for (uiCount = 0; uiCount < EPL_MAX_SDO_SEQ_CON; uiCount++) {
-               AsySdoSequInstance_g.m_AsySdoConnection[uiCount].
-                   m_SdoConHistory.m_bFreeEntries = EPL_SDO_HISTORY_SIZE;
-       }
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:        EplSdoAsyAddFrameToHistory
-//
-// Description:     function to add a frame to the history buffer
-//
-//
-//
-// Parameters:      pAsySdoSeqCon_p = pointer to control structure of this connection
-//                  pFrame_p        = pointer to frame
-//                  uiSize_p        = size of the frame
-//                                     -> without size of the ethernet header
-//                                        and the asnd header
-//
-// Returns:         tEplKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-static tEplKernel EplSdoAsyAddFrameToHistory(tEplAsySdoSeqCon * pAsySdoSeqCon_p,
-                                            tEplFrame * pFrame_p,
-                                            unsigned int uiSize_p)
-{
-       tEplKernel Ret;
-       tEplAsySdoConHistory *pHistory;
-
-       Ret = kEplSuccessful;
-
-       // add frame to history buffer
-
-       // check size
-       // $$$ d.k. EPL_SEQ_HISTORY_FRAME_SIZE includes the header size, but uiSize_p does not!!!
-       if (uiSize_p > EPL_SEQ_HISTROY_FRAME_SIZE) {
-               Ret = kEplSdoSeqFrameSizeError;
-               goto Exit;
-       }
-       // save pointer to history
-       pHistory = &pAsySdoSeqCon_p->m_SdoConHistory;
-
-       // check if a free entry is available
-       if (pHistory->m_bFreeEntries > 0) {     // write message in free entry
-               EPL_MEMCPY(&
-                          ((tEplFrame *) pHistory->
-                           m_aabHistoryFrame[pHistory->m_bWrite])->
-                          m_le_bMessageType, &pFrame_p->m_le_bMessageType,
-                          uiSize_p + EPL_ASND_HEADER_SIZE);
-               // store size
-               pHistory->m_auiFrameSize[pHistory->m_bWrite] = uiSize_p;
-
-               // decremend number of free bufferentries
-               pHistory->m_bFreeEntries--;
-
-               // increment writeindex
-               pHistory->m_bWrite++;
-
-               // check if write-index run over array-boarder
-               if (pHistory->m_bWrite == EPL_SDO_HISTORY_SIZE) {
-                       pHistory->m_bWrite = 0;
-               }
-
-       } else {                // no free entry
-               Ret = kEplSdoSeqNoFreeHistory;
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:        EplSdoAsyAckFrameToHistory
-//
-// Description:     function to delete acknowledged frames fron history buffer
-//
-//
-//
-// Parameters:      pAsySdoSeqCon_p = pointer to control structure of this connection
-//                  bRecSeqNumber_p = receive sequence number of the received frame
-//
-//
-// Returns:         tEplKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-static tEplKernel EplSdoAsyAckFrameToHistory(tEplAsySdoSeqCon * pAsySdoSeqCon_p,
-                                            u8 bRecSeqNumber_p)
-{
-       tEplKernel Ret;
-       tEplAsySdoConHistory *pHistory;
-       u8 bAckIndex;
-       u8 bCurrentSeqNum;
-
-       Ret = kEplSuccessful;
-
-       // get pointer to history buffer
-       pHistory = &pAsySdoSeqCon_p->m_SdoConHistory;
-
-       // release all acknowledged frames from history buffer
-
-       // check if there are entries in history
-       if (pHistory->m_bFreeEntries < EPL_SDO_HISTORY_SIZE) {
-               bAckIndex = pHistory->m_bAck;
-               do {
-                       bCurrentSeqNum =
-                           (((tEplFrame *) pHistory->
-                             m_aabHistoryFrame[bAckIndex])->m_Data.m_Asnd.
-                            m_Payload.m_SdoSequenceFrame.
-                            m_le_bSendSeqNumCon & EPL_SEQ_NUM_MASK);
-                       if (((bRecSeqNumber_p -
-                             bCurrentSeqNum) & EPL_SEQ_NUM_MASK)
-                           < EPL_SEQ_NUM_THRESHOLD) {
-                               pHistory->m_auiFrameSize[bAckIndex] = 0;
-                               bAckIndex++;
-                               pHistory->m_bFreeEntries++;
-                               if (bAckIndex == EPL_SDO_HISTORY_SIZE) {        // read index run over array-boarder
-                                       bAckIndex = 0;
-                               }
-                       } else {        // nothing to do anymore,
-                               // because any further frame in history has larger sequence
-                               // number than the acknowledge
-                               goto Exit;
-                       }
-               }
-               while ((((bRecSeqNumber_p - 1 -
-                         bCurrentSeqNum) & EPL_SEQ_NUM_MASK)
-                       < EPL_SEQ_NUM_THRESHOLD)
-                      && (pHistory->m_bWrite != bAckIndex));
-
-               // store local read-index to global var
-               pHistory->m_bAck = bAckIndex;
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:        EplSdoAsyReadFromHistory
-//
-// Description:     function to one frame from history
-//
-//
-//
-// Parameters:      pAsySdoSeqCon_p = pointer to control structure of this connection
-//                  ppFrame_p       = pointer to pointer to the buffer of the stored frame
-//                  puiSize_p       = OUT: size of the frame
-//                  fInitRead       = bool which indicate a start of retransmission
-//                                      -> return last not acknowledged message if TRUE
-//
-//
-// Returns:         tEplKernel = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-static tEplKernel EplSdoAsyReadFromHistory(tEplAsySdoSeqCon * pAsySdoSeqCon_p,
-                                          tEplFrame ** ppFrame_p,
-                                          unsigned int *puiSize_p,
-                                          BOOL fInitRead_p)
-{
-       tEplKernel Ret;
-       tEplAsySdoConHistory *pHistory;
-
-       Ret = kEplSuccessful;
-
-       // read one message from History
-
-       // get pointer to history buffer
-       pHistory = &pAsySdoSeqCon_p->m_SdoConHistory;
-
-       // check if init
-       if (fInitRead_p != FALSE) {     // initialize read index to the index which shall be acknowledged next
-               pHistory->m_bRead = pHistory->m_bAck;
-       }
-       // check if entries are available for reading
-       if ((pHistory->m_bFreeEntries < EPL_SDO_HISTORY_SIZE)
-           && (pHistory->m_bWrite != pHistory->m_bRead)) {
-//        PRINTF4("EplSdoAsyReadFromHistory(): init = %d, read = %u, write = %u, ack = %u", (int) fInitRead_p, (u16)pHistory->m_bRead, (u16)pHistory->m_bWrite, (u16)pHistory->m_bAck);
-//        PRINTF2(", free entries = %u, next frame size = %u\n", (u16)pHistory->m_bFreeEntries, pHistory->m_auiFrameSize[pHistory->m_bRead]);
-
-               // return pointer to stored frame
-               *ppFrame_p =
-                   (tEplFrame *) pHistory->m_aabHistoryFrame[pHistory->
-                                                             m_bRead];
-
-               // save size
-               *puiSize_p = pHistory->m_auiFrameSize[pHistory->m_bRead];
-
-               pHistory->m_bRead++;
-               if (pHistory->m_bRead == EPL_SDO_HISTORY_SIZE) {
-                       pHistory->m_bRead = 0;
-               }
-
-       } else {
-//        PRINTF3("EplSdoAsyReadFromHistory(): read = %u, ack = %u, free entries = %u, no frame\n", (u16)pHistory->m_bRead, (u16)pHistory->m_bAck, (u16)pHistory->m_bFreeEntries);
-
-               // no more frames to send
-               // return null pointer
-               *ppFrame_p = NULL;
-
-               *puiSize_p = 0;
-       }
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:        EplSdoAsyGetFreeEntriesFromHistory
-//
-// Description:     function returns the number of free histroy entries
-//
-//
-//
-// Parameters:      pAsySdoSeqCon_p = pointer to control structure of this connection
-//
-//
-// Returns:         unsigned int    = number of free entries
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-static unsigned int EplSdoAsyGetFreeEntriesFromHistory(tEplAsySdoSeqCon *
-                                                      pAsySdoSeqCon_p)
-{
-       unsigned int uiFreeEntries;
-
-       uiFreeEntries =
-           (unsigned int)pAsySdoSeqCon_p->m_SdoConHistory.m_bFreeEntries;
-
-       return uiFreeEntries;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:        EplSdoAsySeqSetTimer
-//
-// Description:     function sets or modify timer in timermosule
-//
-//
-//
-// Parameters:      pAsySdoSeqCon_p = pointer to control structure of this connection
-//                  ulTimeout       = timeout in ms
-//
-//
-// Returns:         unsigned int    = number of free entries
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-static tEplKernel EplSdoAsySeqSetTimer(tEplAsySdoSeqCon * pAsySdoSeqCon_p,
-                                      unsigned long ulTimeout)
-{
-       tEplKernel Ret;
-       tEplTimerArg TimerArg;
-
-       TimerArg.m_EventSink = kEplEventSinkSdoAsySeq;
-       TimerArg.m_ulArg = (unsigned long)pAsySdoSeqCon_p;
-
-       if (pAsySdoSeqCon_p->m_EplTimerHdl == 0) {      // create new timer
-               Ret = EplTimeruSetTimerMs(&pAsySdoSeqCon_p->m_EplTimerHdl,
-                                         ulTimeout, TimerArg);
-       } else {                // modify exisiting timer
-               Ret = EplTimeruModifyTimerMs(&pAsySdoSeqCon_p->m_EplTimerHdl,
-                                            ulTimeout, TimerArg);
-
-       }
-
-       return Ret;
-}
-
-// EOF
diff --git a/drivers/staging/epl/EplSdoComu.c b/drivers/staging/epl/EplSdoComu.c
deleted file mode 100644 (file)
index bf35afa..0000000
+++ /dev/null
@@ -1,3345 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for SDO Command Layer module
-
-  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: EplSdoComu.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.14 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/26 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#include "user/EplSdoComu.h"
-
-#if ((((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOS)) == 0) &&\
-     (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) == 0)   )
-
-#error 'ERROR: At least SDO Server or SDO Client should be activate!'
-
-#endif
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOS)) != 0)
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDU)) == 0) && (EPL_OBD_USE_KERNEL == FALSE)
-
-#error 'ERROR: SDO Server needs OBDu module!'
-
-#endif
-
-#endif
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-#ifndef EPL_MAX_SDO_COM_CON
-#define EPL_MAX_SDO_COM_CON         5
-#endif
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-// intern events
-typedef enum {
-       kEplSdoComConEventSendFirst = 0x00,     // first frame to send
-       kEplSdoComConEventRec = 0x01,   // frame received
-       kEplSdoComConEventConEstablished = 0x02,        // connection established
-       kEplSdoComConEventConClosed = 0x03,     // connection closed
-       kEplSdoComConEventAckReceived = 0x04,   // acknowledge received by lower layer
-       // -> continue sending
-       kEplSdoComConEventFrameSended = 0x05,   // lower has send a frame
-       kEplSdoComConEventInitError = 0x06,     // error duringinitialisiation
-       // of the connection
-       kEplSdoComConEventTimeout = 0x07        // timeout in lower layer
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) != 0)
-           ,
-
-       kEplSdoComConEventInitCon = 0x08,       // init connection (only client)
-       kEplSdoComConEventAbort = 0x09  // abort sdo transfer (only client)
-#endif
-} tEplSdoComConEvent;
-
-typedef enum {
-       kEplSdoComSendTypeReq = 0x00,   // send a request
-       kEplSdoComSendTypeAckRes = 0x01,        // send a resonse without data
-       kEplSdoComSendTypeRes = 0x02,   // send response with data
-       kEplSdoComSendTypeAbort = 0x03  // send abort
-} tEplSdoComSendType;
-
-// state of the state maschine
-typedef enum {
-       // General State
-       kEplSdoComStateIdle = 0x00,     // idle state
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOS)) != 0)
-       // Server States
-       kEplSdoComStateServerSegmTrans = 0x01,  // send following frames
-#endif
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) != 0)
-       // Client States
-       kEplSdoComStateClientWaitInit = 0x10,   // wait for init connection
-       // on lower layer
-       kEplSdoComStateClientConnected = 0x11,  // connection established
-       kEplSdoComStateClientSegmTrans = 0x12   // send following frames
-#endif
-} tEplSdoComState;
-
-// control structure for transaction
-typedef struct {
-       tEplSdoSeqConHdl m_SdoSeqConHdl;        // if != 0 -> entry used
-       tEplSdoComState m_SdoComState;
-       u8 m_bTransactionId;
-       unsigned int m_uiNodeId;        // NodeId of the target
-       // -> needed to reinit connection
-       //    after timeout
-       tEplSdoTransType m_SdoTransType;        // Auto, Expedited, Segmented
-       tEplSdoServiceType m_SdoServiceType;    // WriteByIndex, ReadByIndex
-       tEplSdoType m_SdoProtType;      // protocol layer: Auto, Udp, Asnd, Pdo
-       u8 *m_pData;            // pointer to data
-       unsigned int m_uiTransSize;     // number of bytes
-       // to transfer
-       unsigned int m_uiTransferredByte;       // number of bytes
-       // already transferred
-       tEplSdoFinishedCb m_pfnTransferFinished;        // callback function of the
-       // application
-       // -> called in the end of
-       //    the SDO transfer
-       void *m_pUserArg;       // user definable argument pointer
-
-       u32 m_dwLastAbortCode;  // save the last abort code
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) != 0)
-       // only for client
-       unsigned int m_uiTargetIndex;   // index to access
-       unsigned int m_uiTargetSubIndex;        // subiondex to access
-
-       // for future use
-       unsigned int m_uiTimeout;       // timeout for this connection
-
-#endif
-
-} tEplSdoComCon;
-
-// instance table
-typedef struct {
-       tEplSdoComCon m_SdoComCon[EPL_MAX_SDO_COM_CON];
-
-#if defined(WIN32) || defined(_WIN32)
-       LPCRITICAL_SECTION m_pCriticalSection;
-       CRITICAL_SECTION m_CriticalSection;
-#endif
-
-} tEplSdoComInstance;
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-static tEplSdoComInstance SdoComInstance_g;
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-tEplKernel EplSdoComReceiveCb(tEplSdoSeqConHdl SdoSeqConHdl_p,
-                             tEplAsySdoCom *pAsySdoCom_p,
-                             unsigned int uiDataSize_p);
-
-tEplKernel EplSdoComConCb(tEplSdoSeqConHdl SdoSeqConHdl_p,
-                         tEplAsySdoConState AsySdoConState_p);
-
-static tEplKernel EplSdoComSearchConIntern(tEplSdoSeqConHdl SdoSeqConHdl_p,
-                                          tEplSdoComConEvent SdoComConEvent_p,
-                                          tEplAsySdoCom * pAsySdoCom_p);
-
-static tEplKernel EplSdoComProcessIntern(tEplSdoComConHdl SdoComCon_p,
-                                        tEplSdoComConEvent SdoComConEvent_p,
-                                        tEplAsySdoCom * pAsySdoCom_p);
-
-static tEplKernel EplSdoComTransferFinished(tEplSdoComConHdl SdoComCon_p,
-                                           tEplSdoComCon * pSdoComCon_p,
-                                           tEplSdoComConState
-                                           SdoComConState_p);
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOS)) != 0)
-static tEplKernel EplSdoComServerInitReadByIndex(tEplSdoComCon * pSdoComCon_p,
-                                                tEplAsySdoCom * pAsySdoCom_p);
-
-static tEplKernel EplSdoComServerSendFrameIntern(tEplSdoComCon * pSdoComCon_p,
-                                                unsigned int uiIndex_p,
-                                                unsigned int uiSubIndex_p,
-                                                tEplSdoComSendType SendType_p);
-
-static tEplKernel EplSdoComServerInitWriteByIndex(tEplSdoComCon * pSdoComCon_p,
-                                                 tEplAsySdoCom * pAsySdoCom_p);
-#endif
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) != 0)
-
-static tEplKernel EplSdoComClientSend(tEplSdoComCon * pSdoComCon_p);
-
-static tEplKernel EplSdoComClientProcessFrame(tEplSdoComConHdl SdoComCon_p,
-                                             tEplAsySdoCom * pAsySdoCom_p);
-
-static tEplKernel EplSdoComClientSendAbort(tEplSdoComCon * pSdoComCon_p,
-                                          u32 dwAbortCode_p);
-#endif
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          C L A S S  <SDO Command Layer>                                 */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-//
-// Description: SDO Command layer Modul
-//
-//
-/***************************************************************************/
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoComInit
-//
-// Description: Init first instance of the module
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoComInit(void)
-{
-       tEplKernel Ret;
-
-       Ret = EplSdoComAddInstance();
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoComAddInstance
-//
-// Description: Init additional instance of the module
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoComAddInstance(void)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-       // init controll structure
-       EPL_MEMSET(&SdoComInstance_g, 0x00, sizeof(SdoComInstance_g));
-
-       // init instance of lower layer
-       Ret = EplSdoAsySeqAddInstance(EplSdoComReceiveCb, EplSdoComConCb);
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-#if defined(WIN32) || defined(_WIN32)
-       // create critical section for process function
-       SdoComInstance_g.m_pCriticalSection =
-           &SdoComInstance_g.m_CriticalSection;
-       InitializeCriticalSection(SdoComInstance_g.m_pCriticalSection);
-#endif
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoComDelInstance
-//
-// Description: delete instance of the module
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoComDelInstance(void)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-#if defined(WIN32) || defined(_WIN32)
-       // delete critical section for process function
-       DeleteCriticalSection(SdoComInstance_g.m_pCriticalSection);
-#endif
-
-       Ret = EplSdoAsySeqDelInstance();
-       if (Ret != kEplSuccessful) {
-               goto Exit;
-       }
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoComDefineCon
-//
-// Description: function defines a SDO connection to another node
-//              -> init lower layer and returns a handle for the connection.
-//              Two client connections to the same node via the same protocol
-//              are not allowed. If this function detects such a situation
-//              it will return kEplSdoComHandleExists and the handle of
-//              the existing connection in pSdoComConHdl_p.
-//              Using of existing server connections is possible.
-//
-// Parameters:  pSdoComConHdl_p     = pointer to the buffer of the handle
-//              uiTargetNodeId_p    = NodeId of the targetnode
-//              ProtType_p          = type of protocol to use for connection
-//
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) != 0)
-tEplKernel EplSdoComDefineCon(tEplSdoComConHdl *pSdoComConHdl_p,
-                             unsigned int uiTargetNodeId_p,
-                             tEplSdoType ProtType_p)
-{
-       tEplKernel Ret;
-       unsigned int uiCount;
-       unsigned int uiFreeHdl;
-       tEplSdoComCon *pSdoComCon;
-
-       // check Parameter
-       ASSERT(pSdoComConHdl_p != NULL);
-
-       // check NodeId
-       if ((uiTargetNodeId_p == EPL_C_ADR_INVALID)
-           || (uiTargetNodeId_p >= EPL_C_ADR_BROADCAST)) {
-               Ret = kEplInvalidNodeId;
-
-       }
-       // search free control structure
-       pSdoComCon = &SdoComInstance_g.m_SdoComCon[0];
-       uiCount = 0;
-       uiFreeHdl = EPL_MAX_SDO_COM_CON;
-       while (uiCount < EPL_MAX_SDO_COM_CON) {
-               if (pSdoComCon->m_SdoSeqConHdl == 0) {  // free entry
-                       uiFreeHdl = uiCount;
-               } else if ((pSdoComCon->m_uiNodeId == uiTargetNodeId_p)
-                          && (pSdoComCon->m_SdoProtType == ProtType_p)) {      // existing client connection with same node ID and same protocol type
-                       *pSdoComConHdl_p = uiCount;
-                       Ret = kEplSdoComHandleExists;
-                       goto Exit;
-               }
-               uiCount++;
-               pSdoComCon++;
-       }
-
-       if (uiFreeHdl == EPL_MAX_SDO_COM_CON) {
-               Ret = kEplSdoComNoFreeHandle;
-               goto Exit;
-       }
-
-       pSdoComCon = &SdoComInstance_g.m_SdoComCon[uiFreeHdl];
-       // save handle for application
-       *pSdoComConHdl_p = uiFreeHdl;
-       // save parameters
-       pSdoComCon->m_SdoProtType = ProtType_p;
-       pSdoComCon->m_uiNodeId = uiTargetNodeId_p;
-
-       // set Transaction Id
-       pSdoComCon->m_bTransactionId = 0;
-
-       // check protocol
-       switch (ProtType_p) {
-               // udp
-       case kEplSdoTypeUdp:
-               {
-                       // call connection int function of lower layer
-                       Ret = EplSdoAsySeqInitCon(&pSdoComCon->m_SdoSeqConHdl,
-                                                 pSdoComCon->m_uiNodeId,
-                                                 kEplSdoTypeUdp);
-                       if (Ret != kEplSuccessful) {
-                               goto Exit;
-                       }
-                       break;
-               }
-
-               // Asend
-       case kEplSdoTypeAsnd:
-               {
-                       // call connection int function of lower layer
-                       Ret = EplSdoAsySeqInitCon(&pSdoComCon->m_SdoSeqConHdl,
-                                                 pSdoComCon->m_uiNodeId,
-                                                 kEplSdoTypeAsnd);
-                       if (Ret != kEplSuccessful) {
-                               goto Exit;
-                       }
-                       break;
-               }
-
-               // Pdo -> not supported
-       case kEplSdoTypePdo:
-       default:
-               {
-                       Ret = kEplSdoComUnsupportedProt;
-                       goto Exit;
-               }
-       }                       // end of switch(m_ProtType_p)
-
-       // call process function
-       Ret = EplSdoComProcessIntern(uiFreeHdl,
-                                    kEplSdoComConEventInitCon, NULL);
-
-      Exit:
-       return Ret;
-}
-#endif
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoComInitTransferByIndex
-//
-// Description: function init SDO Transfer for a defined connection
-//
-//
-//
-// Parameters:  SdoComTransParam_p    = Structure with parameters for connection
-//
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) != 0)
-tEplKernel EplSdoComInitTransferByIndex(tEplSdoComTransParamByIndex *pSdoComTransParam_p)
-{
-       tEplKernel Ret;
-       tEplSdoComCon *pSdoComCon;
-
-       // check parameter
-       if ((pSdoComTransParam_p->m_uiSubindex >= 0xFF)
-           || (pSdoComTransParam_p->m_uiIndex == 0)
-           || (pSdoComTransParam_p->m_uiIndex > 0xFFFF)
-           || (pSdoComTransParam_p->m_pData == NULL)
-           || (pSdoComTransParam_p->m_uiDataSize == 0)) {
-               Ret = kEplSdoComInvalidParam;
-               goto Exit;
-       }
-
-       if (pSdoComTransParam_p->m_SdoComConHdl >= EPL_MAX_SDO_COM_CON) {
-               Ret = kEplSdoComInvalidHandle;
-               goto Exit;
-       }
-       // get pointer to control structure of connection
-       pSdoComCon =
-           &SdoComInstance_g.m_SdoComCon[pSdoComTransParam_p->m_SdoComConHdl];
-
-       // check if handle ok
-       if (pSdoComCon->m_SdoSeqConHdl == 0) {
-               Ret = kEplSdoComInvalidHandle;
-               goto Exit;
-       }
-       // check if command layer is idle
-       if ((pSdoComCon->m_uiTransferredByte + pSdoComCon->m_uiTransSize) > 0) {        // handle is not idle
-               Ret = kEplSdoComHandleBusy;
-               goto Exit;
-       }
-       // save parameter
-       // callback function for end of transfer
-       pSdoComCon->m_pfnTransferFinished =
-           pSdoComTransParam_p->m_pfnSdoFinishedCb;
-       pSdoComCon->m_pUserArg = pSdoComTransParam_p->m_pUserArg;
-
-       // set type of SDO command
-       if (pSdoComTransParam_p->m_SdoAccessType == kEplSdoAccessTypeRead) {
-               pSdoComCon->m_SdoServiceType = kEplSdoServiceReadByIndex;
-       } else {
-               pSdoComCon->m_SdoServiceType = kEplSdoServiceWriteByIndex;
-
-       }
-       // save pointer to data
-       pSdoComCon->m_pData = pSdoComTransParam_p->m_pData;
-       // maximal bytes to transfer
-       pSdoComCon->m_uiTransSize = pSdoComTransParam_p->m_uiDataSize;
-       // bytes already transfered
-       pSdoComCon->m_uiTransferredByte = 0;
-
-       // reset parts of control structure
-       pSdoComCon->m_dwLastAbortCode = 0;
-       pSdoComCon->m_SdoTransType = kEplSdoTransAuto;
-       // save timeout
-       //pSdoComCon->m_uiTimeout = SdoComTransParam_p.m_uiTimeout;
-
-       // save index and subindex
-       pSdoComCon->m_uiTargetIndex = pSdoComTransParam_p->m_uiIndex;
-       pSdoComCon->m_uiTargetSubIndex = pSdoComTransParam_p->m_uiSubindex;
-
-       // call process function
-       Ret = EplSdoComProcessIntern(pSdoComTransParam_p->m_SdoComConHdl, kEplSdoComConEventSendFirst,  // event to start transfer
-                                    NULL);
-
-      Exit:
-       return Ret;
-
-}
-#endif
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoComUndefineCon
-//
-// Description: function undefine a SDO connection
-//
-//
-//
-// Parameters:  SdoComConHdl_p    = handle for the connection
-//
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) != 0)
-tEplKernel EplSdoComUndefineCon(tEplSdoComConHdl SdoComConHdl_p)
-{
-       tEplKernel Ret;
-       tEplSdoComCon *pSdoComCon;
-
-       Ret = kEplSuccessful;
-
-       if (SdoComConHdl_p >= EPL_MAX_SDO_COM_CON) {
-               Ret = kEplSdoComInvalidHandle;
-               goto Exit;
-       }
-       // get pointer to control structure
-       pSdoComCon = &SdoComInstance_g.m_SdoComCon[SdoComConHdl_p];
-
-       // $$$ d.k. abort a running transfer before closing the sequence layer
-
-       if (((pSdoComCon->m_SdoSeqConHdl & ~EPL_SDO_SEQ_HANDLE_MASK) !=
-            EPL_SDO_SEQ_INVALID_HDL)
-           && (pSdoComCon->m_SdoSeqConHdl != 0)) {
-               // close connection in lower layer
-               switch (pSdoComCon->m_SdoProtType) {
-               case kEplSdoTypeAsnd:
-               case kEplSdoTypeUdp:
-                       {
-                               Ret =
-                                   EplSdoAsySeqDelCon(pSdoComCon->
-                                                      m_SdoSeqConHdl);
-                               break;
-                       }
-
-               case kEplSdoTypePdo:
-               case kEplSdoTypeAuto:
-               default:
-                       {
-                               Ret = kEplSdoComUnsupportedProt;
-                               goto Exit;
-                       }
-
-               }               // end of switch(pSdoComCon->m_SdoProtType)
-       }
-
-       // clean controll structure
-       EPL_MEMSET(pSdoComCon, 0x00, sizeof(tEplSdoComCon));
-      Exit:
-       return Ret;
-}
-#endif
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoComGetState
-//
-// Description: function returns the state fo the connection
-//
-//
-//
-// Parameters:  SdoComConHdl_p    = handle for the connection
-//              pSdoComFinished_p = pointer to structur for sdo state
-//
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) != 0)
-tEplKernel EplSdoComGetState(tEplSdoComConHdl SdoComConHdl_p,
-                            tEplSdoComFinished *pSdoComFinished_p)
-{
-       tEplKernel Ret;
-       tEplSdoComCon *pSdoComCon;
-
-       Ret = kEplSuccessful;
-
-       if (SdoComConHdl_p >= EPL_MAX_SDO_COM_CON) {
-               Ret = kEplSdoComInvalidHandle;
-               goto Exit;
-       }
-       // get pointer to control structure
-       pSdoComCon = &SdoComInstance_g.m_SdoComCon[SdoComConHdl_p];
-
-       // check if handle ok
-       if (pSdoComCon->m_SdoSeqConHdl == 0) {
-               Ret = kEplSdoComInvalidHandle;
-               goto Exit;
-       }
-
-       pSdoComFinished_p->m_pUserArg = pSdoComCon->m_pUserArg;
-       pSdoComFinished_p->m_uiNodeId = pSdoComCon->m_uiNodeId;
-       pSdoComFinished_p->m_uiTargetIndex = pSdoComCon->m_uiTargetIndex;
-       pSdoComFinished_p->m_uiTargetSubIndex = pSdoComCon->m_uiTargetSubIndex;
-       pSdoComFinished_p->m_uiTransferredByte =
-           pSdoComCon->m_uiTransferredByte;
-       pSdoComFinished_p->m_dwAbortCode = pSdoComCon->m_dwLastAbortCode;
-       pSdoComFinished_p->m_SdoComConHdl = SdoComConHdl_p;
-       if (pSdoComCon->m_SdoServiceType == kEplSdoServiceWriteByIndex) {
-               pSdoComFinished_p->m_SdoAccessType = kEplSdoAccessTypeWrite;
-       } else {
-               pSdoComFinished_p->m_SdoAccessType = kEplSdoAccessTypeRead;
-       }
-
-       if (pSdoComCon->m_dwLastAbortCode != 0) {       // sdo abort
-               pSdoComFinished_p->m_SdoComConState =
-                   kEplSdoComTransferRxAborted;
-
-               // delete abort code
-               pSdoComCon->m_dwLastAbortCode = 0;
-
-       } else if ((pSdoComCon->m_SdoSeqConHdl & ~EPL_SDO_SEQ_HANDLE_MASK) == EPL_SDO_SEQ_INVALID_HDL) {        // check state
-               pSdoComFinished_p->m_SdoComConState =
-                   kEplSdoComTransferLowerLayerAbort;
-       } else if (pSdoComCon->m_SdoComState == kEplSdoComStateClientWaitInit) {
-               // finished
-               pSdoComFinished_p->m_SdoComConState =
-                   kEplSdoComTransferNotActive;
-       } else if (pSdoComCon->m_uiTransSize == 0) {    // finished
-               pSdoComFinished_p->m_SdoComConState =
-                   kEplSdoComTransferFinished;
-       }
-
-      Exit:
-       return Ret;
-
-}
-#endif
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoComSdoAbort
-//
-// Description: function abort a sdo transfer
-//
-//
-//
-// Parameters:  SdoComConHdl_p    = handle for the connection
-//              dwAbortCode_p     = abort code
-//
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) != 0)
-tEplKernel EplSdoComSdoAbort(tEplSdoComConHdl SdoComConHdl_p,
-                            u32 dwAbortCode_p)
-{
-       tEplKernel Ret;
-       tEplSdoComCon *pSdoComCon;
-
-       if (SdoComConHdl_p >= EPL_MAX_SDO_COM_CON) {
-               Ret = kEplSdoComInvalidHandle;
-               goto Exit;
-       }
-       // get pointer to control structure of connection
-       pSdoComCon = &SdoComInstance_g.m_SdoComCon[SdoComConHdl_p];
-
-       // check if handle ok
-       if (pSdoComCon->m_SdoSeqConHdl == 0) {
-               Ret = kEplSdoComInvalidHandle;
-               goto Exit;
-       }
-       // save pointer to abort code
-       pSdoComCon->m_pData = (u8 *) & dwAbortCode_p;
-
-       Ret = EplSdoComProcessIntern(SdoComConHdl_p,
-                                    kEplSdoComConEventAbort,
-                                    (tEplAsySdoCom *) NULL);
-
-      Exit:
-       return Ret;
-}
-#endif
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:        EplSdoComReceiveCb
-//
-// Description:     callback function for SDO Sequence Layer
-//                  -> indicates new data
-//
-//
-//
-// Parameters:      SdoSeqConHdl_p = Handle for connection
-//                  pAsySdoCom_p   = pointer to data
-//                  uiDataSize_p   = size of data ($$$ not used yet, but it should)
-//
-//
-// Returns:
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoComReceiveCb(tEplSdoSeqConHdl SdoSeqConHdl_p,
-                             tEplAsySdoCom *pAsySdoCom_p,
-                             unsigned int uiDataSize_p)
-{
-       tEplKernel Ret;
-
-       // search connection internally
-       Ret = EplSdoComSearchConIntern(SdoSeqConHdl_p,
-                                      kEplSdoComConEventRec, pAsySdoCom_p);
-
-       EPL_DBGLVL_SDO_TRACE3
-           ("EplSdoComReceiveCb SdoSeqConHdl: 0x%X, First Byte of pAsySdoCom_p: 0x%02X, uiDataSize_p: 0x%04X\n",
-            SdoSeqConHdl_p, (u16) pAsySdoCom_p->m_le_abCommandData[0],
-            uiDataSize_p);
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:        EplSdoComConCb
-//
-// Description:     callback function called by SDO Sequence Layer to inform
-//                  command layer about state change of connection
-//
-//
-//
-// Parameters:      SdoSeqConHdl_p      = Handle of the connection
-//                  AsySdoConState_p    = Event of the connection
-//
-//
-// Returns:         tEplKernel  = Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoComConCb(tEplSdoSeqConHdl SdoSeqConHdl_p,
-                         tEplAsySdoConState AsySdoConState_p)
-{
-       tEplKernel Ret;
-       tEplSdoComConEvent SdoComConEvent = kEplSdoComConEventSendFirst;
-
-       Ret = kEplSuccessful;
-
-       // check state
-       switch (AsySdoConState_p) {
-       case kAsySdoConStateConnected:
-               {
-                       EPL_DBGLVL_SDO_TRACE0("Connection established\n");
-                       SdoComConEvent = kEplSdoComConEventConEstablished;
-                       // start transmission if needed
-                       break;
-               }
-
-       case kAsySdoConStateInitError:
-               {
-                       EPL_DBGLVL_SDO_TRACE0("Error during initialisation\n");
-                       SdoComConEvent = kEplSdoComConEventInitError;
-                       // inform app about error and close sequence layer handle
-                       break;
-               }
-
-       case kAsySdoConStateConClosed:
-               {
-                       EPL_DBGLVL_SDO_TRACE0("Connection closed\n");
-                       SdoComConEvent = kEplSdoComConEventConClosed;
-                       // close sequence layer handle
-                       break;
-               }
-
-       case kAsySdoConStateAckReceived:
-               {
-                       EPL_DBGLVL_SDO_TRACE0("Acknowlage received\n");
-                       SdoComConEvent = kEplSdoComConEventAckReceived;
-                       // continue transmission
-                       break;
-               }
-
-       case kAsySdoConStateFrameSended:
-               {
-                       EPL_DBGLVL_SDO_TRACE0("One Frame sent\n");
-                       SdoComConEvent = kEplSdoComConEventFrameSended;
-                       // to continue transmission
-                       break;
-
-               }
-
-       case kAsySdoConStateTimeout:
-               {
-                       EPL_DBGLVL_SDO_TRACE0("Timeout\n");
-                       SdoComConEvent = kEplSdoComConEventTimeout;
-                       // close sequence layer handle
-                       break;
-
-               }
-       }                       // end of switch(AsySdoConState_p)
-
-       Ret = EplSdoComSearchConIntern(SdoSeqConHdl_p,
-                                      SdoComConEvent, (tEplAsySdoCom *) NULL);
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:        EplSdoComSearchConIntern
-//
-// Description:     search a Sdo Sequence Layer connection handle in the
-//                  control structure of the Command Layer
-//
-// Parameters:      SdoSeqConHdl_p     = Handle to search
-//                  SdoComConEvent_p = event to process
-//                  pAsySdoCom_p     = pointer to received frame
-//
-// Returns:         tEplKernel
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-static tEplKernel EplSdoComSearchConIntern(tEplSdoSeqConHdl SdoSeqConHdl_p,
-                                          tEplSdoComConEvent SdoComConEvent_p,
-                                          tEplAsySdoCom * pAsySdoCom_p)
-{
-       tEplKernel Ret;
-       tEplSdoComCon *pSdoComCon;
-       tEplSdoComConHdl HdlCount;
-       tEplSdoComConHdl HdlFree;
-
-       Ret = kEplSdoComNotResponsible;
-
-       // get pointer to first element of the array
-       pSdoComCon = &SdoComInstance_g.m_SdoComCon[0];
-       HdlCount = 0;
-       HdlFree = 0xFFFF;
-       while (HdlCount < EPL_MAX_SDO_COM_CON) {
-               if (pSdoComCon->m_SdoSeqConHdl == SdoSeqConHdl_p) {     // matching command layer handle found
-                       Ret = EplSdoComProcessIntern(HdlCount,
-                                                    SdoComConEvent_p,
-                                                    pAsySdoCom_p);
-               } else if ((pSdoComCon->m_SdoSeqConHdl == 0)
-                          && (HdlFree == 0xFFFF)) {
-                       HdlFree = HdlCount;
-               }
-
-               pSdoComCon++;
-               HdlCount++;
-       }
-
-       if (Ret == kEplSdoComNotResponsible) {  // no responsible command layer handle found
-               if (HdlFree == 0xFFFF) {        // no free handle
-                       // delete connection immediately
-                       // 2008/04/14 m.u./d.k. This connection actually does not exist.
-                       //                      pSdoComCon is invalid.
-                       // Ret = EplSdoAsySeqDelCon(pSdoComCon->m_SdoSeqConHdl);
-                       Ret = kEplSdoComNoFreeHandle;
-               } else {        // create new handle
-                       HdlCount = HdlFree;
-                       pSdoComCon = &SdoComInstance_g.m_SdoComCon[HdlCount];
-                       pSdoComCon->m_SdoSeqConHdl = SdoSeqConHdl_p;
-                       Ret = EplSdoComProcessIntern(HdlCount,
-                                                    SdoComConEvent_p,
-                                                    pAsySdoCom_p);
-               }
-       }
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:        EplSdoComProcessIntern
-//
-// Description:     search a Sdo Sequence Layer connection handle in the
-//                  control structer of the Command Layer
-//
-//
-//
-// Parameters:      SdoComCon_p     = index of control structure of connection
-//                  SdoComConEvent_p = event to process
-//                  pAsySdoCom_p     = pointer to received frame
-//
-// Returns:         tEplKernel  =  errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-static tEplKernel EplSdoComProcessIntern(tEplSdoComConHdl SdoComCon_p,
-                                        tEplSdoComConEvent SdoComConEvent_p,
-                                        tEplAsySdoCom * pAsySdoCom_p)
-{
-       tEplKernel Ret;
-       tEplSdoComCon *pSdoComCon;
-       u8 bFlag;
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOS)) != 0)
-       u32 dwAbortCode;
-       unsigned int uiSize;
-#endif
-
-#if defined(WIN32) || defined(_WIN32)
-       // enter  critical section for process function
-       EnterCriticalSection(SdoComInstance_g.m_pCriticalSection);
-       EPL_DBGLVL_SDO_TRACE0
-           ("\n\tEnterCiticalSection EplSdoComProcessIntern\n\n");
-#endif
-
-       Ret = kEplSuccessful;
-
-       // get pointer to control structure
-       pSdoComCon = &SdoComInstance_g.m_SdoComCon[SdoComCon_p];
-
-       // process state maschine
-       switch (pSdoComCon->m_SdoComState) {
-               // idle state
-       case kEplSdoComStateIdle:
-               {
-                       // check events
-                       switch (SdoComConEvent_p) {
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) != 0)
-                               // init con for client
-                       case kEplSdoComConEventInitCon:
-                               {
-
-                                       // call of the init function already
-                                       // processed in EplSdoComDefineCon()
-                                       // only change state to kEplSdoComStateClientWaitInit
-                                       pSdoComCon->m_SdoComState =
-                                           kEplSdoComStateClientWaitInit;
-                                       break;
-                               }
-#endif
-
-                               // int con for server
-                       case kEplSdoComConEventRec:
-                               {
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOS)) != 0)
-                                       // check if init of an transfer and no SDO abort
-                                       if ((pAsySdoCom_p->m_le_bFlags & 0x80) == 0) {  // SDO request
-                                               if ((pAsySdoCom_p->m_le_bFlags & 0x40) == 0) {  // no SDO abort
-                                                       // save tansaction id
-                                                       pSdoComCon->
-                                                           m_bTransactionId =
-                                                           AmiGetByteFromLe
-                                                           (&pAsySdoCom_p->
-                                                            m_le_bTransactionId);
-                                                       // check command
-                                                       switch (pAsySdoCom_p->
-                                                               m_le_bCommandId)
-                                                       {
-                                                       case kEplSdoServiceNIL:
-                                                               {       // simply acknowlegde NIL command on sequence layer
-
-                                                                       Ret =
-                                                                           EplSdoAsySeqSendData
-                                                                           (pSdoComCon->
-                                                                            m_SdoSeqConHdl,
-                                                                            0,
-                                                                            (tEplFrame
-                                                                             *)
-                                                                            NULL);
-
-                                                                       break;
-                                                               }
-
-                                                       case kEplSdoServiceReadByIndex:
-                                                               {       // read by index
-
-                                                                       // search entry an start transfer
-                                                                       EplSdoComServerInitReadByIndex
-                                                                           (pSdoComCon,
-                                                                            pAsySdoCom_p);
-                                                                       // check next state
-                                                                       if (pSdoComCon->m_uiTransSize == 0) {   // ready -> stay idle
-                                                                               pSdoComCon->
-                                                                                   m_SdoComState
-                                                                                   =
-                                                                                   kEplSdoComStateIdle;
-                                                                               // reset abort code
-                                                                               pSdoComCon->
-                                                                                   m_dwLastAbortCode
-                                                                                   =
-                                                                                   0;
-                                                                       } else {        // segmented transfer
-                                                                               pSdoComCon->
-                                                                                   m_SdoComState
-                                                                                   =
-                                                                                   kEplSdoComStateServerSegmTrans;
-                                                                       }
-
-                                                                       break;
-                                                               }
-
-                                                       case kEplSdoServiceWriteByIndex:
-                                                               {
-
-                                                                       // search entry an start write
-                                                                       EplSdoComServerInitWriteByIndex
-                                                                           (pSdoComCon,
-                                                                            pAsySdoCom_p);
-                                                                       // check next state
-                                                                       if (pSdoComCon->m_uiTransSize == 0) {   // already -> stay idle
-                                                                               pSdoComCon->
-                                                                                   m_SdoComState
-                                                                                   =
-                                                                                   kEplSdoComStateIdle;
-                                                                               // reset abort code
-                                                                               pSdoComCon->
-                                                                                   m_dwLastAbortCode
-                                                                                   =
-                                                                                   0;
-                                                                       } else {        // segmented transfer
-                                                                               pSdoComCon->
-                                                                                   m_SdoComState
-                                                                                   =
-                                                                                   kEplSdoComStateServerSegmTrans;
-                                                                       }
-
-                                                                       break;
-                                                               }
-
-                                                       default:
-                                                               {
-                                                                       //  unsupported command
-                                                                       //       -> abort senden
-                                                                       dwAbortCode
-                                                                           =
-                                                                           EPL_SDOAC_UNKNOWN_COMMAND_SPECIFIER;
-                                                                       // send abort
-                                                                       pSdoComCon->
-                                                                           m_pData
-                                                                           =
-                                                                           (u8
-                                                                            *)
-                                                                           &
-                                                                           dwAbortCode;
-                                                                       Ret =
-                                                                           EplSdoComServerSendFrameIntern
-                                                                           (pSdoComCon,
-                                                                            0,
-                                                                            0,
-                                                                            kEplSdoComSendTypeAbort);
-
-                                                               }
-
-                                                       }       // end of switch(pAsySdoCom_p->m_le_bCommandId)
-                                               }
-                                       } else {        // this command layer handle is not responsible
-                                               // (wrong direction or wrong transaction ID)
-                                               Ret = kEplSdoComNotResponsible;
-                                               goto Exit;
-                                       }
-#endif // end of #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOS)) != 0)
-
-                                       break;
-                               }
-
-                               // connection closed
-                       case kEplSdoComConEventInitError:
-                       case kEplSdoComConEventTimeout:
-                       case kEplSdoComConEventConClosed:
-                               {
-                                       Ret =
-                                           EplSdoAsySeqDelCon(pSdoComCon->
-                                                              m_SdoSeqConHdl);
-                                       // clean control structure
-                                       EPL_MEMSET(pSdoComCon, 0x00,
-                                                  sizeof(tEplSdoComCon));
-                                       break;
-                               }
-
-                       default:
-                               // d.k. do nothing
-                               break;
-                       }       // end of switch(SdoComConEvent_p)
-                       break;
-               }
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOS)) != 0)
-               //-------------------------------------------------------------------------
-               // SDO Server part
-               // segmented transfer
-       case kEplSdoComStateServerSegmTrans:
-               {
-                       // check events
-                       switch (SdoComConEvent_p) {
-                               // send next frame
-                       case kEplSdoComConEventAckReceived:
-                       case kEplSdoComConEventFrameSended:
-                               {
-                                       // check if it is a read
-                                       if (pSdoComCon->m_SdoServiceType ==
-                                           kEplSdoServiceReadByIndex) {
-                                               // send next frame
-                                               EplSdoComServerSendFrameIntern
-                                                   (pSdoComCon, 0, 0,
-                                                    kEplSdoComSendTypeRes);
-                                               // if all send -> back to idle
-                                               if (pSdoComCon->m_uiTransSize == 0) {   // back to idle
-                                                       pSdoComCon->
-                                                           m_SdoComState =
-                                                           kEplSdoComStateIdle;
-                                                       // reset abort code
-                                                       pSdoComCon->
-                                                           m_dwLastAbortCode =
-                                                           0;
-                                               }
-
-                                       }
-                                       break;
-                               }
-
-                               // process next frame
-                       case kEplSdoComConEventRec:
-                               {
-                                       // check if the frame is a SDO response and has the right transaction ID
-                                       bFlag =
-                                           AmiGetByteFromLe(&pAsySdoCom_p->
-                                                            m_le_bFlags);
-                                       if (((bFlag & 0x80) != 0)
-                                           &&
-                                           (AmiGetByteFromLe
-                                            (&pAsySdoCom_p->
-                                             m_le_bTransactionId) ==
-                                            pSdoComCon->m_bTransactionId)) {
-                                               // check if it is a abort
-                                               if ((bFlag & 0x40) != 0) {      // SDO abort
-                                                       // clear control structure
-                                                       pSdoComCon->
-                                                           m_uiTransSize = 0;
-                                                       pSdoComCon->
-                                                           m_uiTransferredByte
-                                                           = 0;
-                                                       // change state
-                                                       pSdoComCon->
-                                                           m_SdoComState =
-                                                           kEplSdoComStateIdle;
-                                                       // reset abort code
-                                                       pSdoComCon->
-                                                           m_dwLastAbortCode =
-                                                           0;
-                                                       // d.k.: do not execute anything further on this command
-                                                       break;
-                                               }
-                                               // check if it is a write
-                                               if (pSdoComCon->
-                                                   m_SdoServiceType ==
-                                                   kEplSdoServiceWriteByIndex)
-                                               {
-                                                       // write data to OD
-                                                       uiSize =
-                                                           AmiGetWordFromLe
-                                                           (&pAsySdoCom_p->
-                                                            m_le_wSegmentSize);
-                                                       if (pSdoComCon->
-                                                           m_dwLastAbortCode ==
-                                                           0) {
-                                                               EPL_MEMCPY
-                                                                   (pSdoComCon->
-                                                                    m_pData,
-                                                                    &pAsySdoCom_p->
-                                                                    m_le_abCommandData
-                                                                    [0],
-                                                                    uiSize);
-                                                       }
-                                                       // update counter
-                                                       pSdoComCon->
-                                                           m_uiTransferredByte
-                                                           += uiSize;
-                                                       pSdoComCon->
-                                                           m_uiTransSize -=
-                                                           uiSize;
-
-                                                       // update pointer
-                                                       if (pSdoComCon->
-                                                           m_dwLastAbortCode ==
-                                                           0) {
-                                                               ( /*(u8*) */
-                                                                pSdoComCon->
-                                                                m_pData) +=
-                                                     uiSize;
-                                                       }
-                                                       // check end of transfer
-                                                       if ((pAsySdoCom_p->m_le_bFlags & 0x30) == 0x30) {       // transfer ready
-                                                               pSdoComCon->
-                                                                   m_uiTransSize
-                                                                   = 0;
-
-                                                               if (pSdoComCon->
-                                                                   m_dwLastAbortCode
-                                                                   == 0) {
-                                                                       // send response
-                                                                       // send next frame
-                                                                       EplSdoComServerSendFrameIntern
-                                                                           (pSdoComCon,
-                                                                            0,
-                                                                            0,
-                                                                            kEplSdoComSendTypeRes);
-                                                                       // if all send -> back to idle
-                                                                       if (pSdoComCon->m_uiTransSize == 0) {   // back to idle
-                                                                               pSdoComCon->
-                                                                                   m_SdoComState
-                                                                                   =
-                                                                                   kEplSdoComStateIdle;
-                                                                               // reset abort code
-                                                                               pSdoComCon->
-                                                                                   m_dwLastAbortCode
-                                                                                   =
-                                                                                   0;
-                                                                       }
-                                                               } else {        // send dabort code
-                                                                       // send abort
-                                                                       pSdoComCon->
-                                                                           m_pData
-                                                                           =
-                                                                           (u8
-                                                                            *)
-                                                                           &
-                                                                           pSdoComCon->
-                                                                           m_dwLastAbortCode;
-                                                                       Ret =
-                                                                           EplSdoComServerSendFrameIntern
-                                                                           (pSdoComCon,
-                                                                            0,
-                                                                            0,
-                                                                            kEplSdoComSendTypeAbort);
-
-                                                                       // reset abort code
-                                                                       pSdoComCon->
-                                                                           m_dwLastAbortCode
-                                                                           = 0;
-
-                                                               }
-                                                       } else {
-                                                               // send acknowledge without any Command layer data
-                                                               Ret =
-                                                                   EplSdoAsySeqSendData
-                                                                   (pSdoComCon->
-                                                                    m_SdoSeqConHdl,
-                                                                    0,
-                                                                    (tEplFrame
-                                                                     *) NULL);
-                                                       }
-                                               }
-                                       } else {        // this command layer handle is not responsible
-                                               // (wrong direction or wrong transaction ID)
-                                               Ret = kEplSdoComNotResponsible;
-                                               goto Exit;
-                                       }
-                                       break;
-                               }
-
-                               // connection closed
-                       case kEplSdoComConEventInitError:
-                       case kEplSdoComConEventTimeout:
-                       case kEplSdoComConEventConClosed:
-                               {
-                                       Ret =
-                                           EplSdoAsySeqDelCon(pSdoComCon->
-                                                              m_SdoSeqConHdl);
-                                       // clean control structure
-                                       EPL_MEMSET(pSdoComCon, 0x00,
-                                                  sizeof(tEplSdoComCon));
-                                       break;
-                               }
-
-                       default:
-                               // d.k. do nothing
-                               break;
-                       }       // end of switch(SdoComConEvent_p)
-
-                       break;
-               }
-#endif // endif of #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOS)) != 0)
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) != 0)
-               //-------------------------------------------------------------------------
-               // SDO Client part
-               // wait for finish of establishing connection
-       case kEplSdoComStateClientWaitInit:
-               {
-
-                       // if connection handle is invalid reinit connection
-                       // d.k.: this will be done only on new events (i.e. InitTransfer)
-                       if ((pSdoComCon->
-                            m_SdoSeqConHdl & ~EPL_SDO_SEQ_HANDLE_MASK) ==
-                           EPL_SDO_SEQ_INVALID_HDL) {
-                               // check kind of connection to reinit
-                               // check protocol
-                               switch (pSdoComCon->m_SdoProtType) {
-                                       // udp
-                               case kEplSdoTypeUdp:
-                                       {
-                                               // call connection int function of lower layer
-                                               Ret =
-                                                   EplSdoAsySeqInitCon
-                                                   (&pSdoComCon->
-                                                    m_SdoSeqConHdl,
-                                                    pSdoComCon->m_uiNodeId,
-                                                    kEplSdoTypeUdp);
-                                               if (Ret != kEplSuccessful) {
-                                                       goto Exit;
-                                               }
-                                               break;
-                                       }
-
-                                       // Asend -> not supported
-                               case kEplSdoTypeAsnd:
-                                       {
-                                               // call connection int function of lower layer
-                                               Ret =
-                                                   EplSdoAsySeqInitCon
-                                                   (&pSdoComCon->
-                                                    m_SdoSeqConHdl,
-                                                    pSdoComCon->m_uiNodeId,
-                                                    kEplSdoTypeAsnd);
-                                               if (Ret != kEplSuccessful) {
-                                                       goto Exit;
-                                               }
-                                               break;
-                                       }
-
-                                       // Pdo -> not supported
-                               case kEplSdoTypePdo:
-                               default:
-                                       {
-                                               Ret = kEplSdoComUnsupportedProt;
-                                               goto Exit;
-                                       }
-                               }       // end of switch(m_ProtType_p)
-                               // d.k.: reset transaction ID, because new sequence layer connection was initialized
-                               // $$$ d.k. is this really necessary?
-                               //pSdoComCon->m_bTransactionId = 0;
-                       }
-                       // check events
-                       switch (SdoComConEvent_p) {
-                               // connection established
-                       case kEplSdoComConEventConEstablished:
-                               {
-                                       //send first frame if needed
-                                       if ((pSdoComCon->m_uiTransSize > 0)
-                                           && (pSdoComCon->m_uiTargetIndex != 0)) {    // start SDO transfer
-                                               Ret =
-                                                   EplSdoComClientSend
-                                                   (pSdoComCon);
-                                               if (Ret != kEplSuccessful) {
-                                                       goto Exit;
-                                               }
-                                               // check if segemted transfer
-                                               if (pSdoComCon->
-                                                   m_SdoTransType ==
-                                                   kEplSdoTransSegmented) {
-                                                       pSdoComCon->
-                                                           m_SdoComState =
-                                                           kEplSdoComStateClientSegmTrans;
-                                                       goto Exit;
-                                               }
-                                       }
-                                       // goto state kEplSdoComStateClientConnected
-                                       pSdoComCon->m_SdoComState =
-                                           kEplSdoComStateClientConnected;
-                                       goto Exit;
-                               }
-
-                       case kEplSdoComConEventSendFirst:
-                               {
-                                       // infos for transfer already saved by function EplSdoComInitTransferByIndex
-                                       break;
-                               }
-
-                       case kEplSdoComConEventConClosed:
-                       case kEplSdoComConEventInitError:
-                       case kEplSdoComConEventTimeout:
-                               {
-                                       // close sequence layer handle
-                                       Ret =
-                                           EplSdoAsySeqDelCon(pSdoComCon->
-                                                              m_SdoSeqConHdl);
-                                       pSdoComCon->m_SdoSeqConHdl |=
-                                           EPL_SDO_SEQ_INVALID_HDL;
-                                       // call callback function
-                                       if (SdoComConEvent_p ==
-                                           kEplSdoComConEventTimeout) {
-                                               pSdoComCon->m_dwLastAbortCode =
-                                                   EPL_SDOAC_TIME_OUT;
-                                       } else {
-                                               pSdoComCon->m_dwLastAbortCode =
-                                                   0;
-                                       }
-                                       Ret =
-                                           EplSdoComTransferFinished
-                                           (SdoComCon_p, pSdoComCon,
-                                            kEplSdoComTransferLowerLayerAbort);
-                                       // d.k.: do not clean control structure
-                                       break;
-                               }
-
-                       default:
-                               // d.k. do nothing
-                               break;
-
-                       }       // end of  switch(SdoComConEvent_p)
-                       break;
-               }
-
-               // connected
-       case kEplSdoComStateClientConnected:
-               {
-                       // check events
-                       switch (SdoComConEvent_p) {
-                               // send a frame
-                       case kEplSdoComConEventSendFirst:
-                       case kEplSdoComConEventAckReceived:
-                       case kEplSdoComConEventFrameSended:
-                               {
-                                       Ret = EplSdoComClientSend(pSdoComCon);
-                                       if (Ret != kEplSuccessful) {
-                                               goto Exit;
-                                       }
-                                       // check if read transfer finished
-                                       if ((pSdoComCon->m_uiTransSize == 0)
-                                           && (pSdoComCon->
-                                               m_uiTransferredByte != 0)
-                                           && (pSdoComCon->m_SdoServiceType ==
-                                               kEplSdoServiceReadByIndex)) {
-                                               // inc transaction id
-                                               pSdoComCon->m_bTransactionId++;
-                                               // call callback of application
-                                               pSdoComCon->m_dwLastAbortCode =
-                                                   0;
-                                               Ret =
-                                                   EplSdoComTransferFinished
-                                                   (SdoComCon_p, pSdoComCon,
-                                                    kEplSdoComTransferFinished);
-
-                                               goto Exit;
-                                       }
-                                       // check if segemted transfer
-                                       if (pSdoComCon->m_SdoTransType ==
-                                           kEplSdoTransSegmented) {
-                                               pSdoComCon->m_SdoComState =
-                                                   kEplSdoComStateClientSegmTrans;
-                                               goto Exit;
-                                       }
-                                       break;
-                               }
-
-                               // frame received
-                       case kEplSdoComConEventRec:
-                               {
-                                       // check if the frame is a SDO response and has the right transaction ID
-                                       bFlag =
-                                           AmiGetByteFromLe(&pAsySdoCom_p->
-                                                            m_le_bFlags);
-                                       if (((bFlag & 0x80) != 0)
-                                           &&
-                                           (AmiGetByteFromLe
-                                            (&pAsySdoCom_p->
-                                             m_le_bTransactionId) ==
-                                            pSdoComCon->m_bTransactionId)) {
-                                               // check if abort or not
-                                               if ((bFlag & 0x40) != 0) {
-                                                       // send acknowledge without any Command layer data
-                                                       Ret =
-                                                           EplSdoAsySeqSendData
-                                                           (pSdoComCon->
-                                                            m_SdoSeqConHdl, 0,
-                                                            (tEplFrame *)
-                                                            NULL);
-                                                       // inc transaction id
-                                                       pSdoComCon->
-                                                           m_bTransactionId++;
-                                                       // save abort code
-                                                       pSdoComCon->
-                                                           m_dwLastAbortCode =
-                                                           AmiGetDwordFromLe
-                                                           (&pAsySdoCom_p->
-                                                            m_le_abCommandData
-                                                            [0]);
-                                                       // call callback of application
-                                                       Ret =
-                                                           EplSdoComTransferFinished
-                                                           (SdoComCon_p,
-                                                            pSdoComCon,
-                                                            kEplSdoComTransferRxAborted);
-
-                                                       goto Exit;
-                                               } else {        // normal frame received
-                                                       // check frame
-                                                       Ret =
-                                                           EplSdoComClientProcessFrame
-                                                           (SdoComCon_p,
-                                                            pAsySdoCom_p);
-
-                                                       // check if transfer ready
-                                                       if (pSdoComCon->
-                                                           m_uiTransSize ==
-                                                           0) {
-                                                               // send acknowledge without any Command layer data
-                                                               Ret =
-                                                                   EplSdoAsySeqSendData
-                                                                   (pSdoComCon->
-                                                                    m_SdoSeqConHdl,
-                                                                    0,
-                                                                    (tEplFrame
-                                                                     *) NULL);
-                                                               // inc transaction id
-                                                               pSdoComCon->
-                                                                   m_bTransactionId++;
-                                                               // call callback of application
-                                                               pSdoComCon->
-                                                                   m_dwLastAbortCode
-                                                                   = 0;
-                                                               Ret =
-                                                                   EplSdoComTransferFinished
-                                                                   (SdoComCon_p,
-                                                                    pSdoComCon,
-                                                                    kEplSdoComTransferFinished);
-
-                                                               goto Exit;
-                                                       }
-
-                                               }
-                                       } else {        // this command layer handle is not responsible
-                                               // (wrong direction or wrong transaction ID)
-                                               Ret = kEplSdoComNotResponsible;
-                                               goto Exit;
-                                       }
-                                       break;
-                               }
-
-                               // connection closed event go back to kEplSdoComStateClientWaitInit
-                       case kEplSdoComConEventConClosed:
-                               {       // connection closed by communication partner
-                                       // close sequence layer handle
-                                       Ret =
-                                           EplSdoAsySeqDelCon(pSdoComCon->
-                                                              m_SdoSeqConHdl);
-                                       // set handle to invalid and enter kEplSdoComStateClientWaitInit
-                                       pSdoComCon->m_SdoSeqConHdl |=
-                                           EPL_SDO_SEQ_INVALID_HDL;
-                                       // change state
-                                       pSdoComCon->m_SdoComState =
-                                           kEplSdoComStateClientWaitInit;
-
-                                       // call callback of application
-                                       pSdoComCon->m_dwLastAbortCode = 0;
-                                       Ret =
-                                           EplSdoComTransferFinished
-                                           (SdoComCon_p, pSdoComCon,
-                                            kEplSdoComTransferLowerLayerAbort);
-
-                                       goto Exit;
-
-                                       break;
-                               }
-
-                               // abort to send from higher layer
-                       case kEplSdoComConEventAbort:
-                               {
-                                       EplSdoComClientSendAbort(pSdoComCon,
-                                                                *((u32 *)
-                                                                  pSdoComCon->
-                                                                  m_pData));
-
-                                       // inc transaction id
-                                       pSdoComCon->m_bTransactionId++;
-                                       // call callback of application
-                                       pSdoComCon->m_dwLastAbortCode =
-                                           *((u32 *) pSdoComCon->m_pData);
-                                       Ret =
-                                           EplSdoComTransferFinished
-                                           (SdoComCon_p, pSdoComCon,
-                                            kEplSdoComTransferTxAborted);
-
-                                       break;
-                               }
-
-                       case kEplSdoComConEventInitError:
-                       case kEplSdoComConEventTimeout:
-                               {
-                                       // close sequence layer handle
-                                       Ret =
-                                           EplSdoAsySeqDelCon(pSdoComCon->
-                                                              m_SdoSeqConHdl);
-                                       pSdoComCon->m_SdoSeqConHdl |=
-                                           EPL_SDO_SEQ_INVALID_HDL;
-                                       // change state
-                                       pSdoComCon->m_SdoComState =
-                                           kEplSdoComStateClientWaitInit;
-                                       // call callback of application
-                                       pSdoComCon->m_dwLastAbortCode =
-                                           EPL_SDOAC_TIME_OUT;
-                                       Ret =
-                                           EplSdoComTransferFinished
-                                           (SdoComCon_p, pSdoComCon,
-                                            kEplSdoComTransferLowerLayerAbort);
-
-                               }
-
-                       default:
-                               // d.k. do nothing
-                               break;
-
-                       }       // end of switch(SdoComConEvent_p)
-
-                       break;
-               }
-
-               // process segmented transfer
-       case kEplSdoComStateClientSegmTrans:
-               {
-                       // check events
-                       switch (SdoComConEvent_p) {
-                               // sned a frame
-                       case kEplSdoComConEventSendFirst:
-                       case kEplSdoComConEventAckReceived:
-                       case kEplSdoComConEventFrameSended:
-                               {
-                                       Ret = EplSdoComClientSend(pSdoComCon);
-                                       if (Ret != kEplSuccessful) {
-                                               goto Exit;
-                                       }
-                                       // check if read transfer finished
-                                       if ((pSdoComCon->m_uiTransSize == 0)
-                                           && (pSdoComCon->m_SdoServiceType ==
-                                               kEplSdoServiceReadByIndex)) {
-                                               // inc transaction id
-                                               pSdoComCon->m_bTransactionId++;
-                                               // change state
-                                               pSdoComCon->m_SdoComState =
-                                                   kEplSdoComStateClientConnected;
-                                               // call callback of application
-                                               pSdoComCon->m_dwLastAbortCode =
-                                                   0;
-                                               Ret =
-                                                   EplSdoComTransferFinished
-                                                   (SdoComCon_p, pSdoComCon,
-                                                    kEplSdoComTransferFinished);
-
-                                               goto Exit;
-                                       }
-
-                                       break;
-                               }
-
-                               // frame received
-                       case kEplSdoComConEventRec:
-                               {
-                                       // check if the frame is a response
-                                       bFlag =
-                                           AmiGetByteFromLe(&pAsySdoCom_p->
-                                                            m_le_bFlags);
-                                       if (((bFlag & 0x80) != 0)
-                                           &&
-                                           (AmiGetByteFromLe
-                                            (&pAsySdoCom_p->
-                                             m_le_bTransactionId) ==
-                                            pSdoComCon->m_bTransactionId)) {
-                                               // check if abort or not
-                                               if ((bFlag & 0x40) != 0) {
-                                                       // send acknowledge without any Command layer data
-                                                       Ret =
-                                                           EplSdoAsySeqSendData
-                                                           (pSdoComCon->
-                                                            m_SdoSeqConHdl, 0,
-                                                            (tEplFrame *)
-                                                            NULL);
-                                                       // inc transaction id
-                                                       pSdoComCon->
-                                                           m_bTransactionId++;
-                                                       // change state
-                                                       pSdoComCon->
-                                                           m_SdoComState =
-                                                           kEplSdoComStateClientConnected;
-                                                       // save abort code
-                                                       pSdoComCon->
-                                                           m_dwLastAbortCode =
-                                                           AmiGetDwordFromLe
-                                                           (&pAsySdoCom_p->
-                                                            m_le_abCommandData
-                                                            [0]);
-                                                       // call callback of application
-                                                       Ret =
-                                                           EplSdoComTransferFinished
-                                                           (SdoComCon_p,
-                                                            pSdoComCon,
-                                                            kEplSdoComTransferRxAborted);
-
-                                                       goto Exit;
-                                               } else {        // normal frame received
-                                                       // check frame
-                                                       Ret =
-                                                           EplSdoComClientProcessFrame
-                                                           (SdoComCon_p,
-                                                            pAsySdoCom_p);
-
-                                                       // check if transfer ready
-                                                       if (pSdoComCon->
-                                                           m_uiTransSize ==
-                                                           0) {
-                                                               // send acknowledge without any Command layer data
-                                                               Ret =
-                                                                   EplSdoAsySeqSendData
-                                                                   (pSdoComCon->
-                                                                    m_SdoSeqConHdl,
-                                                                    0,
-                                                                    (tEplFrame
-                                                                     *) NULL);
-                                                               // inc transaction id
-                                                               pSdoComCon->
-                                                                   m_bTransactionId++;
-                                                               // change state
-                                                               pSdoComCon->
-                                                                   m_SdoComState
-                                                                   =
-                                                                   kEplSdoComStateClientConnected;
-                                                               // call callback of application
-                                                               pSdoComCon->
-                                                                   m_dwLastAbortCode
-                                                                   = 0;
-                                                               Ret =
-                                                                   EplSdoComTransferFinished
-                                                                   (SdoComCon_p,
-                                                                    pSdoComCon,
-                                                                    kEplSdoComTransferFinished);
-
-                                                       }
-
-                                               }
-                                       }
-                                       break;
-                               }
-
-                               // connection closed event go back to kEplSdoComStateClientWaitInit
-                       case kEplSdoComConEventConClosed:
-                               {       // connection closed by communication partner
-                                       // close sequence layer handle
-                                       Ret =
-                                           EplSdoAsySeqDelCon(pSdoComCon->
-                                                              m_SdoSeqConHdl);
-                                       // set handle to invalid and enter kEplSdoComStateClientWaitInit
-                                       pSdoComCon->m_SdoSeqConHdl |=
-                                           EPL_SDO_SEQ_INVALID_HDL;
-                                       // change state
-                                       pSdoComCon->m_SdoComState =
-                                           kEplSdoComStateClientWaitInit;
-                                       // inc transaction id
-                                       pSdoComCon->m_bTransactionId++;
-                                       // call callback of application
-                                       pSdoComCon->m_dwLastAbortCode = 0;
-                                       Ret =
-                                           EplSdoComTransferFinished
-                                           (SdoComCon_p, pSdoComCon,
-                                            kEplSdoComTransferFinished);
-
-                                       break;
-                               }
-
-                               // abort to send from higher layer
-                       case kEplSdoComConEventAbort:
-                               {
-                                       EplSdoComClientSendAbort(pSdoComCon,
-                                                                *((u32 *)
-                                                                  pSdoComCon->
-                                                                  m_pData));
-
-                                       // inc transaction id
-                                       pSdoComCon->m_bTransactionId++;
-                                       // change state
-                                       pSdoComCon->m_SdoComState =
-                                           kEplSdoComStateClientConnected;
-                                       // call callback of application
-                                       pSdoComCon->m_dwLastAbortCode =
-                                           *((u32 *) pSdoComCon->m_pData);
-                                       Ret =
-                                           EplSdoComTransferFinished
-                                           (SdoComCon_p, pSdoComCon,
-                                            kEplSdoComTransferTxAborted);
-
-                                       break;
-                               }
-
-                       case kEplSdoComConEventInitError:
-                       case kEplSdoComConEventTimeout:
-                               {
-                                       // close sequence layer handle
-                                       Ret =
-                                           EplSdoAsySeqDelCon(pSdoComCon->
-                                                              m_SdoSeqConHdl);
-                                       pSdoComCon->m_SdoSeqConHdl |=
-                                           EPL_SDO_SEQ_INVALID_HDL;
-                                       // change state
-                                       pSdoComCon->m_SdoComState =
-                                           kEplSdoComStateClientWaitInit;
-                                       // call callback of application
-                                       pSdoComCon->m_dwLastAbortCode =
-                                           EPL_SDOAC_TIME_OUT;
-                                       Ret =
-                                           EplSdoComTransferFinished
-                                           (SdoComCon_p, pSdoComCon,
-                                            kEplSdoComTransferLowerLayerAbort);
-
-                               }
-
-                       default:
-                               // d.k. do nothing
-                               break;
-
-                       }       // end of switch(SdoComConEvent_p)
-
-                       break;
-               }
-#endif // endo of #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) != 0)
-
-       }                       // end of switch(pSdoComCon->m_SdoComState)
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) != 0)
-      Exit:
-#endif
-
-#if defined(WIN32) || defined(_WIN32)
-       // leave critical section for process function
-       EPL_DBGLVL_SDO_TRACE0
-           ("\n\tLeaveCriticalSection EplSdoComProcessIntern\n\n");
-       LeaveCriticalSection(SdoComInstance_g.m_pCriticalSection);
-
-#endif
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:        EplSdoComServerInitReadByIndex
-//
-// Description:    function start the processing of an read by index command
-//
-//
-//
-// Parameters:      pSdoComCon_p     = pointer to control structure of connection
-//                  pAsySdoCom_p     = pointer to received frame
-//
-// Returns:         tEplKernel  =  errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOS)) != 0)
-static tEplKernel EplSdoComServerInitReadByIndex(tEplSdoComCon * pSdoComCon_p,
-                                                tEplAsySdoCom * pAsySdoCom_p)
-{
-       tEplKernel Ret;
-       unsigned int uiIndex;
-       unsigned int uiSubindex;
-       tEplObdSize EntrySize;
-       tEplObdAccess AccessType;
-       u32 dwAbortCode;
-
-       dwAbortCode = 0;
-
-       // a init of a read could not be a segmented transfer
-       // -> no variable part of header
-
-       // get index and subindex
-       uiIndex = AmiGetWordFromLe(&pAsySdoCom_p->m_le_abCommandData[0]);
-       uiSubindex = AmiGetByteFromLe(&pAsySdoCom_p->m_le_abCommandData[2]);
-
-       // check accesstype of entry
-       // existens of entry
-//#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDU)) != 0)
-       Ret = EplObduGetAccessType(uiIndex, uiSubindex, &AccessType);
-/*#else
-    Ret = kEplObdSubindexNotExist;
-    AccessType = 0;
-#endif*/
-       if (Ret == kEplObdSubindexNotExist) {   // subentry doesn't exist
-               dwAbortCode = EPL_SDOAC_SUB_INDEX_NOT_EXIST;
-               // send abort
-               pSdoComCon_p->m_pData = (u8 *) & dwAbortCode;
-               Ret = EplSdoComServerSendFrameIntern(pSdoComCon_p,
-                                                    uiIndex,
-                                                    uiSubindex,
-                                                    kEplSdoComSendTypeAbort);
-               goto Exit;
-       } else if (Ret != kEplSuccessful) {     // entry doesn't exist
-               dwAbortCode = EPL_SDOAC_OBJECT_NOT_EXIST;
-               // send abort
-               pSdoComCon_p->m_pData = (u8 *) & dwAbortCode;
-               Ret = EplSdoComServerSendFrameIntern(pSdoComCon_p,
-                                                    uiIndex,
-                                                    uiSubindex,
-                                                    kEplSdoComSendTypeAbort);
-               goto Exit;
-       }
-       // compare accesstype must be read or const
-       if (((AccessType & kEplObdAccRead) == 0)
-           && ((AccessType & kEplObdAccConst) == 0)) {
-
-               if ((AccessType & kEplObdAccWrite) != 0) {
-                       // entry read a write only object
-                       dwAbortCode = EPL_SDOAC_READ_TO_WRITE_ONLY_OBJ;
-               } else {
-                       dwAbortCode = EPL_SDOAC_UNSUPPORTED_ACCESS;
-               }
-               // send abort
-               pSdoComCon_p->m_pData = (u8 *) & dwAbortCode;
-               Ret = EplSdoComServerSendFrameIntern(pSdoComCon_p,
-                                                    uiIndex,
-                                                    uiSubindex,
-                                                    kEplSdoComSendTypeAbort);
-               goto Exit;
-       }
-       // save service
-       pSdoComCon_p->m_SdoServiceType = kEplSdoServiceReadByIndex;
-
-       // get size of object to see iof segmented or expedited transfer
-//#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDU)) != 0)
-       EntrySize = EplObduGetDataSize(uiIndex, uiSubindex);
-/*#else
-    EntrySize = 0;
-#endif*/
-       if (EntrySize > EPL_SDO_MAX_PAYLOAD) {  // segmented transfer
-               pSdoComCon_p->m_SdoTransType = kEplSdoTransSegmented;
-               // get pointer to object-entry data
-//#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDU)) != 0)
-               pSdoComCon_p->m_pData =
-                   EplObduGetObjectDataPtr(uiIndex, uiSubindex);
-//#endif
-       } else {                // expedited transfer
-               pSdoComCon_p->m_SdoTransType = kEplSdoTransExpedited;
-       }
-
-       pSdoComCon_p->m_uiTransSize = EntrySize;
-       pSdoComCon_p->m_uiTransferredByte = 0;
-
-       Ret = EplSdoComServerSendFrameIntern(pSdoComCon_p,
-                                            uiIndex,
-                                            uiSubindex, kEplSdoComSendTypeRes);
-       if (Ret != kEplSuccessful) {
-               // error -> abort
-               dwAbortCode = EPL_SDOAC_GENERAL_ERROR;
-               // send abort
-               pSdoComCon_p->m_pData = (u8 *) & dwAbortCode;
-               Ret = EplSdoComServerSendFrameIntern(pSdoComCon_p,
-                                                    uiIndex,
-                                                    uiSubindex,
-                                                    kEplSdoComSendTypeAbort);
-               goto Exit;
-       }
-
-      Exit:
-       return Ret;
-}
-#endif
-
-//---------------------------------------------------------------------------
-//
-// Function:        EplSdoComServerSendFrameIntern();
-//
-// Description:    function creats and send a frame for server
-//
-//
-//
-// Parameters:      pSdoComCon_p     = pointer to control structure of connection
-//                  uiIndex_p        = index to send if expedited transfer else 0
-//                  uiSubIndex_p     = subindex to send if expedited transfer else 0
-//                  SendType_p       = to of frame to send
-//
-// Returns:         tEplKernel  =  errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOS)) != 0)
-static tEplKernel EplSdoComServerSendFrameIntern(tEplSdoComCon * pSdoComCon_p,
-                                                unsigned int uiIndex_p,
-                                                unsigned int uiSubIndex_p,
-                                                tEplSdoComSendType SendType_p)
-{
-       tEplKernel Ret;
-       u8 abFrame[EPL_MAX_SDO_FRAME_SIZE];
-       tEplFrame *pFrame;
-       tEplAsySdoCom *pCommandFrame;
-       unsigned int uiSizeOfFrame;
-       u8 bFlag;
-
-       Ret = kEplSuccessful;
-
-       pFrame = (tEplFrame *) & abFrame[0];
-
-       EPL_MEMSET(&abFrame[0], 0x00, sizeof(abFrame));
-
-       // build generic part of frame
-       // get pointer to command layerpart of frame
-       pCommandFrame =
-           &pFrame->m_Data.m_Asnd.m_Payload.m_SdoSequenceFrame.
-           m_le_abSdoSeqPayload;
-       AmiSetByteToLe(&pCommandFrame->m_le_bCommandId,
-                      pSdoComCon_p->m_SdoServiceType);
-       AmiSetByteToLe(&pCommandFrame->m_le_bTransactionId,
-                      pSdoComCon_p->m_bTransactionId);
-
-       // set size to header size
-       uiSizeOfFrame = 8;
-
-       // check SendType
-       switch (SendType_p) {
-               // requestframe to send
-       case kEplSdoComSendTypeReq:
-               {
-                       // nothing to do for server
-                       //-> error
-                       Ret = kEplSdoComInvalidSendType;
-                       break;
-               }
-
-               // response without data to send
-       case kEplSdoComSendTypeAckRes:
-               {
-                       // set response flag
-                       AmiSetByteToLe(&pCommandFrame->m_le_bFlags, 0x80);
-
-                       // send frame
-                       Ret = EplSdoAsySeqSendData(pSdoComCon_p->m_SdoSeqConHdl,
-                                                  uiSizeOfFrame, pFrame);
-
-                       break;
-               }
-
-               // responsframe to send
-       case kEplSdoComSendTypeRes:
-               {
-                       // set response flag
-                       bFlag = AmiGetByteFromLe(&pCommandFrame->m_le_bFlags);
-                       bFlag |= 0x80;
-                       AmiSetByteToLe(&pCommandFrame->m_le_bFlags, bFlag);
-
-                       // check type of resonse
-                       if (pSdoComCon_p->m_SdoTransType == kEplSdoTransExpedited) {    // Expedited transfer
-                               // copy data in frame
-//#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDU)) != 0)
-                               Ret = EplObduReadEntryToLe(uiIndex_p,
-                                                          uiSubIndex_p,
-                                                          &pCommandFrame->
-                                                          m_le_abCommandData
-                                                          [0],
-                                                          (tEplObdSize *) &
-                                                          pSdoComCon_p->
-                                                          m_uiTransSize);
-                               if (Ret != kEplSuccessful) {
-                                       goto Exit;
-                               }
-//#endif
-
-                               // set size of frame
-                               AmiSetWordToLe(&pCommandFrame->
-                                              m_le_wSegmentSize,
-                                              (u16) pSdoComCon_p->
-                                              m_uiTransSize);
-
-                               // correct byte-counter
-                               uiSizeOfFrame += pSdoComCon_p->m_uiTransSize;
-                               pSdoComCon_p->m_uiTransferredByte +=
-                                   pSdoComCon_p->m_uiTransSize;
-                               pSdoComCon_p->m_uiTransSize = 0;
-
-                               // send frame
-                               uiSizeOfFrame += pSdoComCon_p->m_uiTransSize;
-                               Ret =
-                                   EplSdoAsySeqSendData(pSdoComCon_p->
-                                                        m_SdoSeqConHdl,
-                                                        uiSizeOfFrame, pFrame);
-                       } else if (pSdoComCon_p->m_SdoTransType == kEplSdoTransSegmented) {     // segmented transfer
-                               // distinguish between init, segment and complete
-                               if (pSdoComCon_p->m_uiTransferredByte == 0) {   // init
-                                       // set init flag
-                                       bFlag =
-                                           AmiGetByteFromLe(&pCommandFrame->
-                                                            m_le_bFlags);
-                                       bFlag |= 0x10;
-                                       AmiSetByteToLe(&pCommandFrame->
-                                                      m_le_bFlags, bFlag);
-                                       // init variable header
-                                       AmiSetDwordToLe(&pCommandFrame->
-                                                       m_le_abCommandData[0],
-                                                       pSdoComCon_p->
-                                                       m_uiTransSize);
-                                       // copy data in frame
-                                       EPL_MEMCPY(&pCommandFrame->
-                                                  m_le_abCommandData[4],
-                                                  pSdoComCon_p->m_pData,
-                                                  (EPL_SDO_MAX_PAYLOAD - 4));
-
-                                       // correct byte-counter
-                                       pSdoComCon_p->m_uiTransSize -=
-                                           (EPL_SDO_MAX_PAYLOAD - 4);
-                                       pSdoComCon_p->m_uiTransferredByte +=
-                                           (EPL_SDO_MAX_PAYLOAD - 4);
-                                       // move data pointer
-                                       pSdoComCon_p->m_pData +=
-                                           (EPL_SDO_MAX_PAYLOAD - 4);
-
-                                       // set segment size
-                                       AmiSetWordToLe(&pCommandFrame->
-                                                      m_le_wSegmentSize,
-                                                      (EPL_SDO_MAX_PAYLOAD -
-                                                       4));
-
-                                       // send frame
-                                       uiSizeOfFrame += EPL_SDO_MAX_PAYLOAD;
-                                       Ret =
-                                           EplSdoAsySeqSendData(pSdoComCon_p->
-                                                                m_SdoSeqConHdl,
-                                                                uiSizeOfFrame,
-                                                                pFrame);
-
-                               } else
-                                   if ((pSdoComCon_p->m_uiTransferredByte > 0)
-                                       && (pSdoComCon_p->m_uiTransSize > EPL_SDO_MAX_PAYLOAD)) {       // segment
-                                       // set segment flag
-                                       bFlag =
-                                           AmiGetByteFromLe(&pCommandFrame->
-                                                            m_le_bFlags);
-                                       bFlag |= 0x20;
-                                       AmiSetByteToLe(&pCommandFrame->
-                                                      m_le_bFlags, bFlag);
-
-                                       // copy data in frame
-                                       EPL_MEMCPY(&pCommandFrame->
-                                                  m_le_abCommandData[0],
-                                                  pSdoComCon_p->m_pData,
-                                                  EPL_SDO_MAX_PAYLOAD);
-
-                                       // correct byte-counter
-                                       pSdoComCon_p->m_uiTransSize -=
-                                           EPL_SDO_MAX_PAYLOAD;
-                                       pSdoComCon_p->m_uiTransferredByte +=
-                                           EPL_SDO_MAX_PAYLOAD;
-                                       // move data pointer
-                                       pSdoComCon_p->m_pData +=
-                                           EPL_SDO_MAX_PAYLOAD;
-
-                                       // set segment size
-                                       AmiSetWordToLe(&pCommandFrame->
-                                                      m_le_wSegmentSize,
-                                                      EPL_SDO_MAX_PAYLOAD);
-
-                                       // send frame
-                                       uiSizeOfFrame += EPL_SDO_MAX_PAYLOAD;
-                                       Ret =
-                                           EplSdoAsySeqSendData(pSdoComCon_p->
-                                                                m_SdoSeqConHdl,
-                                                                uiSizeOfFrame,
-                                                                pFrame);
-                               } else {
-                                       if ((pSdoComCon_p->m_uiTransSize == 0)
-                                           && (pSdoComCon_p->
-                                               m_SdoServiceType !=
-                                               kEplSdoServiceWriteByIndex)) {
-                                               goto Exit;
-                                       }
-                                       // complete
-                                       // set segment complete flag
-                                       bFlag =
-                                           AmiGetByteFromLe(&pCommandFrame->
-                                                            m_le_bFlags);
-                                       bFlag |= 0x30;
-                                       AmiSetByteToLe(&pCommandFrame->
-                                                      m_le_bFlags, bFlag);
-
-                                       // copy data in frame
-                                       EPL_MEMCPY(&pCommandFrame->
-                                                  m_le_abCommandData[0],
-                                                  pSdoComCon_p->m_pData,
-                                                  pSdoComCon_p->m_uiTransSize);
-
-                                       // correct byte-counter
-                                       pSdoComCon_p->m_uiTransferredByte +=
-                                           pSdoComCon_p->m_uiTransSize;
-
-                                       // move data pointer
-                                       pSdoComCon_p->m_pData +=
-                                           pSdoComCon_p->m_uiTransSize;
-
-                                       // set segment size
-                                       AmiSetWordToLe(&pCommandFrame->
-                                                      m_le_wSegmentSize,
-                                                      (u16) pSdoComCon_p->
-                                                      m_uiTransSize);
-
-                                       // send frame
-                                       uiSizeOfFrame +=
-                                           pSdoComCon_p->m_uiTransSize;
-                                       pSdoComCon_p->m_uiTransSize = 0;
-                                       Ret =
-                                           EplSdoAsySeqSendData(pSdoComCon_p->
-                                                                m_SdoSeqConHdl,
-                                                                uiSizeOfFrame,
-                                                                pFrame);
-                               }
-
-                       }
-                       break;
-               }
-               // abort to send
-       case kEplSdoComSendTypeAbort:
-               {
-                       // set response and abort flag
-                       bFlag = AmiGetByteFromLe(&pCommandFrame->m_le_bFlags);
-                       bFlag |= 0xC0;
-                       AmiSetByteToLe(&pCommandFrame->m_le_bFlags, bFlag);
-
-                       // copy abortcode to frame
-                       AmiSetDwordToLe(&pCommandFrame->m_le_abCommandData[0],
-                                       *((u32 *) pSdoComCon_p->m_pData));
-
-                       // set size of segment
-                       AmiSetWordToLe(&pCommandFrame->m_le_wSegmentSize,
-                                      sizeof(u32));
-
-                       // update counter
-                       pSdoComCon_p->m_uiTransferredByte = sizeof(u32);
-                       pSdoComCon_p->m_uiTransSize = 0;
-
-                       // calc framesize
-                       uiSizeOfFrame += sizeof(u32);
-                       Ret = EplSdoAsySeqSendData(pSdoComCon_p->m_SdoSeqConHdl,
-                                                  uiSizeOfFrame, pFrame);
-                       break;
-               }
-       }                       // end of switch(SendType_p)
-
-      Exit:
-       return Ret;
-}
-#endif
-//---------------------------------------------------------------------------
-//
-// Function:        EplSdoComServerInitWriteByIndex
-//
-// Description:    function start the processing of an write by index command
-//
-//
-//
-// Parameters:      pSdoComCon_p     = pointer to control structure of connection
-//                  pAsySdoCom_p     = pointer to received frame
-//
-// Returns:         tEplKernel  =  errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOS)) != 0)
-static tEplKernel EplSdoComServerInitWriteByIndex(tEplSdoComCon * pSdoComCon_p,
-                                                 tEplAsySdoCom * pAsySdoCom_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       unsigned int uiIndex;
-       unsigned int uiSubindex;
-       unsigned int uiBytesToTransfer;
-       tEplObdSize EntrySize;
-       tEplObdAccess AccessType;
-       u32 dwAbortCode;
-       u8 *pbSrcData;
-
-       dwAbortCode = 0;
-
-       // a init of a write
-       // -> variable part of header possible
-
-       // check if expedited or segmented transfer
-       if ((pAsySdoCom_p->m_le_bFlags & 0x30) == 0x10) {       // initiate segmented transfer
-               pSdoComCon_p->m_SdoTransType = kEplSdoTransSegmented;
-               // get index and subindex
-               uiIndex =
-                   AmiGetWordFromLe(&pAsySdoCom_p->m_le_abCommandData[4]);
-               uiSubindex =
-                   AmiGetByteFromLe(&pAsySdoCom_p->m_le_abCommandData[6]);
-               // get source-pointer for copy
-               pbSrcData = &pAsySdoCom_p->m_le_abCommandData[8];
-               // save size
-               pSdoComCon_p->m_uiTransSize =
-                   AmiGetDwordFromLe(&pAsySdoCom_p->m_le_abCommandData[0]);
-
-       } else if ((pAsySdoCom_p->m_le_bFlags & 0x30) == 0x00) {        // expedited transfer
-               pSdoComCon_p->m_SdoTransType = kEplSdoTransExpedited;
-               // get index and subindex
-               uiIndex =
-                   AmiGetWordFromLe(&pAsySdoCom_p->m_le_abCommandData[0]);
-               uiSubindex =
-                   AmiGetByteFromLe(&pAsySdoCom_p->m_le_abCommandData[2]);
-               // get source-pointer for copy
-               pbSrcData = &pAsySdoCom_p->m_le_abCommandData[4];
-               // save size
-               pSdoComCon_p->m_uiTransSize =
-                   AmiGetWordFromLe(&pAsySdoCom_p->m_le_wSegmentSize);
-               // subtract header
-               pSdoComCon_p->m_uiTransSize -= 4;
-
-       } else {
-               // just ignore any other transfer type
-               goto Exit;
-       }
-
-       // check accesstype of entry
-       // existens of entry
-//#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDU)) != 0)
-       Ret = EplObduGetAccessType(uiIndex, uiSubindex, &AccessType);
-/*#else
-    Ret = kEplObdSubindexNotExist;
-    AccessType = 0;
-#endif*/
-       if (Ret == kEplObdSubindexNotExist) {   // subentry doesn't exist
-               pSdoComCon_p->m_dwLastAbortCode = EPL_SDOAC_SUB_INDEX_NOT_EXIST;
-               // send abort
-               // d.k. This is wrong: k.t. not needed send abort on end of write
-               /*pSdoComCon_p->m_pData = (u8*)pSdoComCon_p->m_dwLastAbortCode;
-                  Ret = EplSdoComServerSendFrameIntern(pSdoComCon_p,
-                  uiIndex,
-                  uiSubindex,
-                  kEplSdoComSendTypeAbort); */
-               goto Abort;
-       } else if (Ret != kEplSuccessful) {     // entry doesn't exist
-               pSdoComCon_p->m_dwLastAbortCode = EPL_SDOAC_OBJECT_NOT_EXIST;
-               // send abort
-               // d.k. This is wrong: k.t. not needed send abort on end of write
-               /*
-                  pSdoComCon_p->m_pData = (u8*)&dwAbortCode;
-                  Ret = EplSdoComServerSendFrameIntern(pSdoComCon_p,
-                  uiIndex,
-                  uiSubindex,
-                  kEplSdoComSendTypeAbort); */
-               goto Abort;
-       }
-       // compare accesstype must be read
-       if ((AccessType & kEplObdAccWrite) == 0) {
-
-               if ((AccessType & kEplObdAccRead) != 0) {
-                       // entry write a read only object
-                       pSdoComCon_p->m_dwLastAbortCode =
-                           EPL_SDOAC_WRITE_TO_READ_ONLY_OBJ;
-               } else {
-                       pSdoComCon_p->m_dwLastAbortCode =
-                           EPL_SDOAC_UNSUPPORTED_ACCESS;
-               }
-               // send abort
-               // d.k. This is wrong: k.t. not needed send abort on end of write
-               /*pSdoComCon_p->m_pData = (u8*)&dwAbortCode;
-                  Ret = EplSdoComServerSendFrameIntern(pSdoComCon_p,
-                  uiIndex,
-                  uiSubindex,
-                  kEplSdoComSendTypeAbort); */
-               goto Abort;
-       }
-       // save service
-       pSdoComCon_p->m_SdoServiceType = kEplSdoServiceWriteByIndex;
-
-       pSdoComCon_p->m_uiTransferredByte = 0;
-
-       // write data to OD
-       if (pSdoComCon_p->m_SdoTransType == kEplSdoTransExpedited) {    // expedited transfer
-               // size checking is done by EplObduWriteEntryFromLe()
-
-//#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDU)) != 0)
-               Ret = EplObduWriteEntryFromLe(uiIndex,
-                                             uiSubindex,
-                                             pbSrcData,
-                                             pSdoComCon_p->m_uiTransSize);
-               switch (Ret) {
-               case kEplSuccessful:
-                       {
-                               break;
-                       }
-
-               case kEplObdAccessViolation:
-                       {
-                               pSdoComCon_p->m_dwLastAbortCode =
-                                   EPL_SDOAC_UNSUPPORTED_ACCESS;
-                               // send abort
-                               goto Abort;
-                       }
-
-               case kEplObdValueLengthError:
-                       {
-                               pSdoComCon_p->m_dwLastAbortCode =
-                                   EPL_SDOAC_DATA_TYPE_LENGTH_NOT_MATCH;
-                               // send abort
-                               goto Abort;
-                       }
-
-               case kEplObdValueTooHigh:
-                       {
-                               pSdoComCon_p->m_dwLastAbortCode =
-                                   EPL_SDOAC_VALUE_RANGE_TOO_HIGH;
-                               // send abort
-                               goto Abort;
-                       }
-
-               case kEplObdValueTooLow:
-                       {
-                               pSdoComCon_p->m_dwLastAbortCode =
-                                   EPL_SDOAC_VALUE_RANGE_TOO_LOW;
-                               // send abort
-                               goto Abort;
-                       }
-
-               default:
-                       {
-                               pSdoComCon_p->m_dwLastAbortCode =
-                                   EPL_SDOAC_GENERAL_ERROR;
-                               // send abort
-                               goto Abort;
-                       }
-               }
-//#endif
-               // send command acknowledge
-               Ret = EplSdoComServerSendFrameIntern(pSdoComCon_p,
-                                                    0,
-                                                    0,
-                                                    kEplSdoComSendTypeAckRes);
-
-               pSdoComCon_p->m_uiTransSize = 0;
-               goto Exit;
-       } else {
-               // get size of the object to check if it fits
-               // because we directly write to the destination memory
-               // d.k. no one calls the user OD callback function
-
-               //#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDU)) != 0)
-               EntrySize = EplObduGetDataSize(uiIndex, uiSubindex);
-               /*#else
-                  EntrySize = 0;
-                  #endif */
-               if (EntrySize < pSdoComCon_p->m_uiTransSize) {  // parameter too big
-                       pSdoComCon_p->m_dwLastAbortCode =
-                           EPL_SDOAC_DATA_TYPE_LENGTH_TOO_HIGH;
-                       // send abort
-                       // d.k. This is wrong: k.t. not needed send abort on end of write
-                       /*pSdoComCon_p->m_pData = (u8*)&dwAbortCode;
-                          Ret = EplSdoComServerSendFrameIntern(pSdoComCon_p,
-                          uiIndex,
-                          uiSubindex,
-                          kEplSdoComSendTypeAbort); */
-                       goto Abort;
-               }
-
-               uiBytesToTransfer =
-                   AmiGetWordFromLe(&pAsySdoCom_p->m_le_wSegmentSize);
-               // eleminate header (Command header (8) + variable part (4) + Command header (4))
-               uiBytesToTransfer -= 16;
-               // get pointer to object entry
-//#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDU)) != 0)
-               pSdoComCon_p->m_pData = EplObduGetObjectDataPtr(uiIndex,
-                                                               uiSubindex);
-//#endif
-               if (pSdoComCon_p->m_pData == NULL) {
-                       pSdoComCon_p->m_dwLastAbortCode =
-                           EPL_SDOAC_GENERAL_ERROR;
-                       // send abort
-                       // d.k. This is wrong: k.t. not needed send abort on end of write
-/*            pSdoComCon_p->m_pData = (u8*)&pSdoComCon_p->m_dwLastAbortCode;
-            Ret = EplSdoComServerSendFrameIntern(pSdoComCon_p,
-                                        uiIndex,
-                                        uiSubindex,
-                                        kEplSdoComSendTypeAbort);*/
-                       goto Abort;
-               }
-               // copy data
-               EPL_MEMCPY(pSdoComCon_p->m_pData, pbSrcData, uiBytesToTransfer);
-
-               // update internal counter
-               pSdoComCon_p->m_uiTransferredByte = uiBytesToTransfer;
-               pSdoComCon_p->m_uiTransSize -= uiBytesToTransfer;
-
-               // update target pointer
-               ( /*(u8*) */ pSdoComCon_p->m_pData) += uiBytesToTransfer;
-
-               // send acknowledge without any Command layer data
-               Ret = EplSdoAsySeqSendData(pSdoComCon_p->m_SdoSeqConHdl,
-                                          0, (tEplFrame *) NULL);
-               goto Exit;
-       }
-
-      Abort:
-       if (pSdoComCon_p->m_dwLastAbortCode != 0) {
-               // send abort
-               pSdoComCon_p->m_pData =
-                   (u8 *) & pSdoComCon_p->m_dwLastAbortCode;
-               Ret =
-                   EplSdoComServerSendFrameIntern(pSdoComCon_p, uiIndex,
-                                                  uiSubindex,
-                                                  kEplSdoComSendTypeAbort);
-
-               // reset abort code
-               pSdoComCon_p->m_dwLastAbortCode = 0;
-               pSdoComCon_p->m_uiTransSize = 0;
-               goto Exit;
-       }
-
-      Exit:
-       return Ret;
-}
-#endif
-
-//---------------------------------------------------------------------------
-//
-// Function:        EplSdoComClientSend
-//
-// Description:    function starts an sdo transfer an send all further frames
-//
-//
-//
-// Parameters:      pSdoComCon_p     = pointer to control structure of connection
-//
-// Returns:         tEplKernel  =  errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) != 0)
-static tEplKernel EplSdoComClientSend(tEplSdoComCon * pSdoComCon_p)
-{
-       tEplKernel Ret;
-       u8 abFrame[EPL_MAX_SDO_FRAME_SIZE];
-       tEplFrame *pFrame;
-       tEplAsySdoCom *pCommandFrame;
-       unsigned int uiSizeOfFrame;
-       u8 bFlags;
-       u8 *pbPayload;
-
-       Ret = kEplSuccessful;
-
-       pFrame = (tEplFrame *) & abFrame[0];
-
-       EPL_MEMSET(&abFrame[0], 0x00, sizeof(abFrame));
-
-       // build generic part of frame
-       // get pointer to command layerpart of frame
-       pCommandFrame =
-           &pFrame->m_Data.m_Asnd.m_Payload.m_SdoSequenceFrame.
-           m_le_abSdoSeqPayload;
-       AmiSetByteToLe(&pCommandFrame->m_le_bCommandId,
-                      pSdoComCon_p->m_SdoServiceType);
-       AmiSetByteToLe(&pCommandFrame->m_le_bTransactionId,
-                      pSdoComCon_p->m_bTransactionId);
-
-       // set size constant part of header
-       uiSizeOfFrame = 8;
-
-       // check if first frame to send -> command header needed
-       if (pSdoComCon_p->m_uiTransSize > 0) {
-               if (pSdoComCon_p->m_uiTransferredByte == 0) {   // start SDO transfer
-                       // check if segmented or expedited transfer
-                       // only for write commands
-                       switch (pSdoComCon_p->m_SdoServiceType) {
-                       case kEplSdoServiceReadByIndex:
-                               {       // first frame of read access always expedited
-                                       pSdoComCon_p->m_SdoTransType =
-                                           kEplSdoTransExpedited;
-                                       pbPayload =
-                                           &pCommandFrame->
-                                           m_le_abCommandData[0];
-                                       // fill rest of header
-                                       AmiSetWordToLe(&pCommandFrame->
-                                                      m_le_wSegmentSize, 4);
-
-                                       // create command header
-                                       AmiSetWordToLe(pbPayload,
-                                                      (u16) pSdoComCon_p->
-                                                      m_uiTargetIndex);
-                                       pbPayload += 2;
-                                       AmiSetByteToLe(pbPayload,
-                                                      (u8) pSdoComCon_p->
-                                                      m_uiTargetSubIndex);
-                                       // calc size
-                                       uiSizeOfFrame += 4;
-
-                                       // set pSdoComCon_p->m_uiTransferredByte to one
-                                       pSdoComCon_p->m_uiTransferredByte = 1;
-                                       break;
-                               }
-
-                       case kEplSdoServiceWriteByIndex:
-                               {
-                                       if (pSdoComCon_p->m_uiTransSize > EPL_SDO_MAX_PAYLOAD) {        // segmented transfer
-                                               // -> variable part of header needed
-                                               // save that transfer is segmented
-                                               pSdoComCon_p->m_SdoTransType =
-                                                   kEplSdoTransSegmented;
-                                               // fill variable part of header
-                                               AmiSetDwordToLe(&pCommandFrame->
-                                                               m_le_abCommandData
-                                                               [0],
-                                                               pSdoComCon_p->
-                                                               m_uiTransSize);
-                                               // set pointer to real payload
-                                               pbPayload =
-                                                   &pCommandFrame->
-                                                   m_le_abCommandData[4];
-                                               // fill rest of header
-                                               AmiSetWordToLe(&pCommandFrame->
-                                                              m_le_wSegmentSize,
-                                                              EPL_SDO_MAX_PAYLOAD);
-                                               bFlags = 0x10;
-                                               AmiSetByteToLe(&pCommandFrame->
-                                                              m_le_bFlags,
-                                                              bFlags);
-                                               // create command header
-                                               AmiSetWordToLe(pbPayload,
-                                                              (u16)
-                                                              pSdoComCon_p->
-                                                              m_uiTargetIndex);
-                                               pbPayload += 2;
-                                               AmiSetByteToLe(pbPayload,
-                                                              (u8)
-                                                              pSdoComCon_p->
-                                                              m_uiTargetSubIndex);
-                                               // on byte for reserved
-                                               pbPayload += 2;
-                                               // calc size
-                                               uiSizeOfFrame +=
-                                                   EPL_SDO_MAX_PAYLOAD;
-
-                                               // copy payload
-                                               EPL_MEMCPY(pbPayload,
-                                                          pSdoComCon_p->
-                                                          m_pData,
-                                                          (EPL_SDO_MAX_PAYLOAD
-                                                           - 8));
-                                               pSdoComCon_p->m_pData +=
-                                                   (EPL_SDO_MAX_PAYLOAD - 8);
-                                               // correct intern counter
-                                               pSdoComCon_p->m_uiTransSize -=
-                                                   (EPL_SDO_MAX_PAYLOAD - 8);
-                                               pSdoComCon_p->
-                                                   m_uiTransferredByte =
-                                                   (EPL_SDO_MAX_PAYLOAD - 8);
-
-                                       } else {        // expedited trandsfer
-                                               // save that transfer is expedited
-                                               pSdoComCon_p->m_SdoTransType =
-                                                   kEplSdoTransExpedited;
-                                               pbPayload =
-                                                   &pCommandFrame->
-                                                   m_le_abCommandData[0];
-
-                                               // create command header
-                                               AmiSetWordToLe(pbPayload,
-                                                              (u16)
-                                                              pSdoComCon_p->
-                                                              m_uiTargetIndex);
-                                               pbPayload += 2;
-                                               AmiSetByteToLe(pbPayload,
-                                                              (u8)
-                                                              pSdoComCon_p->
-                                                              m_uiTargetSubIndex);
-                                               // + 2 -> one byte for subindex and one byte reserved
-                                               pbPayload += 2;
-                                               // copy data
-                                               EPL_MEMCPY(pbPayload,
-                                                          pSdoComCon_p->
-                                                          m_pData,
-                                                          pSdoComCon_p->
-                                                          m_uiTransSize);
-                                               // calc size
-                                               uiSizeOfFrame +=
-                                                   (4 +
-                                                    pSdoComCon_p->
-                                                    m_uiTransSize);
-                                               // fill rest of header
-                                               AmiSetWordToLe(&pCommandFrame->
-                                                              m_le_wSegmentSize,
-                                                              (u16) (4 +
-                                                                      pSdoComCon_p->
-                                                                      m_uiTransSize));
-
-                                               pSdoComCon_p->
-                                                   m_uiTransferredByte =
-                                                   pSdoComCon_p->m_uiTransSize;
-                                               pSdoComCon_p->m_uiTransSize = 0;
-                                       }
-                                       break;
-                               }
-
-                       case kEplSdoServiceNIL:
-                       default:
-                               // invalid service requested
-                               Ret = kEplSdoComInvalidServiceType;
-                               goto Exit;
-                       }       // end of switch(pSdoComCon_p->m_SdoServiceType)
-               } else          // (pSdoComCon_p->m_uiTransferredByte > 0)
-               {               // continue SDO transfer
-                       switch (pSdoComCon_p->m_SdoServiceType) {
-                               // for expedited read is nothing to do
-                               // -> server sends data
-
-                       case kEplSdoServiceWriteByIndex:
-                               {       // send next frame
-                                       if (pSdoComCon_p->m_SdoTransType ==
-                                           kEplSdoTransSegmented) {
-                                               if (pSdoComCon_p->m_uiTransSize > EPL_SDO_MAX_PAYLOAD) {        // next segment
-                                                       pbPayload =
-                                                           &pCommandFrame->
-                                                           m_le_abCommandData
-                                                           [0];
-                                                       // fill rest of header
-                                                       AmiSetWordToLe
-                                                           (&pCommandFrame->
-                                                            m_le_wSegmentSize,
-                                                            EPL_SDO_MAX_PAYLOAD);
-                                                       bFlags = 0x20;
-                                                       AmiSetByteToLe
-                                                           (&pCommandFrame->
-                                                            m_le_bFlags,
-                                                            bFlags);
-                                                       // copy data
-                                                       EPL_MEMCPY(pbPayload,
-                                                                  pSdoComCon_p->
-                                                                  m_pData,
-                                                                  EPL_SDO_MAX_PAYLOAD);
-                                                       pSdoComCon_p->m_pData +=
-                                                           EPL_SDO_MAX_PAYLOAD;
-                                                       // correct intern counter
-                                                       pSdoComCon_p->
-                                                           m_uiTransSize -=
-                                                           EPL_SDO_MAX_PAYLOAD;
-                                                       pSdoComCon_p->
-                                                           m_uiTransferredByte
-                                                           =
-                                                           EPL_SDO_MAX_PAYLOAD;
-                                                       // calc size
-                                                       uiSizeOfFrame +=
-                                                           EPL_SDO_MAX_PAYLOAD;
-
-                                               } else {        // end of transfer
-                                                       pbPayload =
-                                                           &pCommandFrame->
-                                                           m_le_abCommandData
-                                                           [0];
-                                                       // fill rest of header
-                                                       AmiSetWordToLe
-                                                           (&pCommandFrame->
-                                                            m_le_wSegmentSize,
-                                                            (u16)
-                                                            pSdoComCon_p->
-                                                            m_uiTransSize);
-                                                       bFlags = 0x30;
-                                                       AmiSetByteToLe
-                                                           (&pCommandFrame->
-                                                            m_le_bFlags,
-                                                            bFlags);
-                                                       // copy data
-                                                       EPL_MEMCPY(pbPayload,
-                                                                  pSdoComCon_p->
-                                                                  m_pData,
-                                                                  pSdoComCon_p->
-                                                                  m_uiTransSize);
-                                                       pSdoComCon_p->m_pData +=
-                                                           pSdoComCon_p->
-                                                           m_uiTransSize;
-                                                       // calc size
-                                                       uiSizeOfFrame +=
-                                                           pSdoComCon_p->
-                                                           m_uiTransSize;
-                                                       // correct intern counter
-                                                       pSdoComCon_p->
-                                                           m_uiTransSize = 0;
-                                                       pSdoComCon_p->
-                                                           m_uiTransferredByte
-                                                           =
-                                                           pSdoComCon_p->
-                                                           m_uiTransSize;
-
-                                               }
-                                       } else {
-                                               goto Exit;
-                                       }
-                                       break;
-                               }
-                       default:
-                               {
-                                       goto Exit;
-                               }
-                       }       // end of switch(pSdoComCon_p->m_SdoServiceType)
-               }
-       } else {
-               goto Exit;
-       }
-
-       // call send function of lower layer
-       switch (pSdoComCon_p->m_SdoProtType) {
-       case kEplSdoTypeAsnd:
-       case kEplSdoTypeUdp:
-               {
-                       Ret = EplSdoAsySeqSendData(pSdoComCon_p->m_SdoSeqConHdl,
-                                                  uiSizeOfFrame, pFrame);
-                       break;
-               }
-
-       default:
-               {
-                       Ret = kEplSdoComUnsupportedProt;
-               }
-       }                       // end of switch(pSdoComCon_p->m_SdoProtType)
-
-      Exit:
-       return Ret;
-
-}
-#endif
-//---------------------------------------------------------------------------
-//
-// Function:        EplSdoComClientProcessFrame
-//
-// Description:    function process a received frame
-//
-//
-//
-// Parameters:      SdoComCon_p      = connection handle
-//                  pAsySdoCom_p     = pointer to frame to process
-//
-// Returns:         tEplKernel  =  errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) != 0)
-static tEplKernel EplSdoComClientProcessFrame(tEplSdoComConHdl SdoComCon_p,
-                                             tEplAsySdoCom * pAsySdoCom_p)
-{
-       tEplKernel Ret;
-       u8 bBuffer;
-       unsigned int uiBuffer;
-       unsigned int uiDataSize;
-       unsigned long ulBuffer;
-       tEplSdoComCon *pSdoComCon;
-
-       Ret = kEplSuccessful;
-
-       // get pointer to control structure
-       pSdoComCon = &SdoComInstance_g.m_SdoComCon[SdoComCon_p];
-
-       // check if transaction Id fit
-       bBuffer = AmiGetByteFromLe(&pAsySdoCom_p->m_le_bTransactionId);
-       if (pSdoComCon->m_bTransactionId != bBuffer) {
-               // incorrect transaction id
-
-               // if running transfer
-               if ((pSdoComCon->m_uiTransferredByte != 0)
-                   && (pSdoComCon->m_uiTransSize != 0)) {
-                       pSdoComCon->m_dwLastAbortCode = EPL_SDOAC_GENERAL_ERROR;
-                       // -> send abort
-                       EplSdoComClientSendAbort(pSdoComCon,
-                                                pSdoComCon->m_dwLastAbortCode);
-                       // call callback of application
-                       Ret =
-                           EplSdoComTransferFinished(SdoComCon_p, pSdoComCon,
-                                                     kEplSdoComTransferTxAborted);
-               }
-
-       } else {                // check if correct command
-               bBuffer = AmiGetByteFromLe(&pAsySdoCom_p->m_le_bCommandId);
-               if (pSdoComCon->m_SdoServiceType != bBuffer) {
-                       // incorrect command
-                       // if running transfer
-                       if ((pSdoComCon->m_uiTransferredByte != 0)
-                           && (pSdoComCon->m_uiTransSize != 0)) {
-                               pSdoComCon->m_dwLastAbortCode =
-                                   EPL_SDOAC_GENERAL_ERROR;
-                               // -> send abort
-                               EplSdoComClientSendAbort(pSdoComCon,
-                                                        pSdoComCon->
-                                                        m_dwLastAbortCode);
-                               // call callback of application
-                               Ret =
-                                   EplSdoComTransferFinished(SdoComCon_p,
-                                                             pSdoComCon,
-                                                             kEplSdoComTransferTxAborted);
-                       }
-
-               } else {        // switch on command
-                       switch (pSdoComCon->m_SdoServiceType) {
-                       case kEplSdoServiceWriteByIndex:
-                               {       // check if confirmation from server
-                                       // nothing more to do
-                                       break;
-                               }
-
-                       case kEplSdoServiceReadByIndex:
-                               {       // check if it is an segmented or an expedited transfer
-                                       bBuffer =
-                                           AmiGetByteFromLe(&pAsySdoCom_p->
-                                                            m_le_bFlags);
-                                       // mask uninteressting bits
-                                       bBuffer &= 0x30;
-                                       switch (bBuffer) {
-                                               // expedited transfer
-                                       case 0x00:
-                                               {
-                                                       // check size of buffer
-                                                       uiBuffer =
-                                                           AmiGetWordFromLe
-                                                           (&pAsySdoCom_p->
-                                                            m_le_wSegmentSize);
-                                                       if (uiBuffer > pSdoComCon->m_uiTransSize) {     // buffer provided by the application is to small
-                                                               // copy only a part
-                                                               uiDataSize =
-                                                                   pSdoComCon->
-                                                                   m_uiTransSize;
-                                                       } else {        // buffer fits
-                                                               uiDataSize =
-                                                                   uiBuffer;
-                                                       }
-
-                                                       // copy data
-                                                       EPL_MEMCPY(pSdoComCon->
-                                                                  m_pData,
-                                                                  &pAsySdoCom_p->
-                                                                  m_le_abCommandData
-                                                                  [0],
-                                                                  uiDataSize);
-
-                                                       // correct counter
-                                                       pSdoComCon->
-                                                           m_uiTransSize = 0;
-                                                       pSdoComCon->
-                                                           m_uiTransferredByte
-                                                           = uiDataSize;
-                                                       break;
-                                               }
-
-                                               // start of a segmented transfer
-                                       case 0x10:
-                                               {       // get total size of transfer
-                                                       ulBuffer =
-                                                           AmiGetDwordFromLe
-                                                           (&pAsySdoCom_p->
-                                                            m_le_abCommandData
-                                                            [0]);
-                                                       if (ulBuffer <= pSdoComCon->m_uiTransSize) {    // buffer fit
-                                                               pSdoComCon->
-                                                                   m_uiTransSize
-                                                                   =
-                                                                   (unsigned
-                                                                    int)
-                                                                   ulBuffer;
-                                                       } else {        // buffer to small
-                                                               // send abort
-                                                               pSdoComCon->
-                                                                   m_dwLastAbortCode
-                                                                   =
-                                                                   EPL_SDOAC_DATA_TYPE_LENGTH_TOO_HIGH;
-                                                               // -> send abort
-                                                               EplSdoComClientSendAbort
-                                                                   (pSdoComCon,
-                                                                    pSdoComCon->
-                                                                    m_dwLastAbortCode);
-                                                               // call callback of application
-                                                               Ret =
-                                                                   EplSdoComTransferFinished
-                                                                   (SdoComCon_p,
-                                                                    pSdoComCon,
-                                                                    kEplSdoComTransferRxAborted);
-                                                               goto Exit;
-                                                       }
-
-                                                       // get segment size
-                                                       // check size of buffer
-                                                       uiBuffer =
-                                                           AmiGetWordFromLe
-                                                           (&pAsySdoCom_p->
-                                                            m_le_wSegmentSize);
-                                                       // subtract size of vaiable header from datasize
-                                                       uiBuffer -= 4;
-                                                       // copy data
-                                                       EPL_MEMCPY(pSdoComCon->
-                                                                  m_pData,
-                                                                  &pAsySdoCom_p->
-                                                                  m_le_abCommandData
-                                                                  [4],
-                                                                  uiBuffer);
-
-                                                       // correct counter an pointer
-                                                       pSdoComCon->m_pData +=
-                                                           uiBuffer;
-                                                       pSdoComCon->
-                                                           m_uiTransferredByte
-                                                           += uiBuffer;
-                                                       pSdoComCon->
-                                                           m_uiTransSize -=
-                                                           uiBuffer;
-
-                                                       break;
-                                               }
-
-                                               // segment
-                                       case 0x20:
-                                               {
-                                                       // get segment size
-                                                       // check size of buffer
-                                                       uiBuffer =
-                                                           AmiGetWordFromLe
-                                                           (&pAsySdoCom_p->
-                                                            m_le_wSegmentSize);
-                                                       // check if data to copy fit to buffer
-                                                       if (uiBuffer >= pSdoComCon->m_uiTransSize) {    // to much data
-                                                               uiBuffer =
-                                                                   (pSdoComCon->
-                                                                    m_uiTransSize
-                                                                    - 1);
-                                                       }
-                                                       // copy data
-                                                       EPL_MEMCPY(pSdoComCon->
-                                                                  m_pData,
-                                                                  &pAsySdoCom_p->
-                                                                  m_le_abCommandData
-                                                                  [0],
-                                                                  uiBuffer);
-
-                                                       // correct counter an pointer
-                                                       pSdoComCon->m_pData +=
-                                                           uiBuffer;
-                                                       pSdoComCon->
-                                                           m_uiTransferredByte
-                                                           += uiBuffer;
-                                                       pSdoComCon->
-                                                           m_uiTransSize -=
-                                                           uiBuffer;
-                                                       break;
-                                               }
-
-                                               // last segment
-                                       case 0x30:
-                                               {
-                                                       // get segment size
-                                                       // check size of buffer
-                                                       uiBuffer =
-                                                           AmiGetWordFromLe
-                                                           (&pAsySdoCom_p->
-                                                            m_le_wSegmentSize);
-                                                       // check if data to copy fit to buffer
-                                                       if (uiBuffer > pSdoComCon->m_uiTransSize) {     // to much data
-                                                               uiBuffer =
-                                                                   (pSdoComCon->
-                                                                    m_uiTransSize
-                                                                    - 1);
-                                                       }
-                                                       // copy data
-                                                       EPL_MEMCPY(pSdoComCon->
-                                                                  m_pData,
-                                                                  &pAsySdoCom_p->
-                                                                  m_le_abCommandData
-                                                                  [0],
-                                                                  uiBuffer);
-
-                                                       // correct counter an pointer
-                                                       pSdoComCon->m_pData +=
-                                                           uiBuffer;
-                                                       pSdoComCon->
-                                                           m_uiTransferredByte
-                                                           += uiBuffer;
-                                                       pSdoComCon->
-                                                           m_uiTransSize = 0;
-
-                                                       break;
-                                               }
-                                       }       // end of switch(bBuffer & 0x30)
-
-                                       break;
-                               }
-
-                       case kEplSdoServiceNIL:
-                       default:
-                               // invalid service requested
-                               // $$$ d.k. What should we do?
-                               break;
-                       }       // end of switch(pSdoComCon->m_SdoServiceType)
-               }
-       }
-
-      Exit:
-       return Ret;
-}
-#endif
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoComClientSendAbort
-//
-// Description: function send a abort message
-//
-//
-//
-// Parameters:  pSdoComCon_p     = pointer to control structure of connection
-//              dwAbortCode_p    = Sdo abort code
-//
-// Returns:     tEplKernel  =  errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) != 0)
-static tEplKernel EplSdoComClientSendAbort(tEplSdoComCon * pSdoComCon_p,
-                                          u32 dwAbortCode_p)
-{
-       tEplKernel Ret;
-       u8 abFrame[EPL_MAX_SDO_FRAME_SIZE];
-       tEplFrame *pFrame;
-       tEplAsySdoCom *pCommandFrame;
-       unsigned int uiSizeOfFrame;
-
-       Ret = kEplSuccessful;
-
-       pFrame = (tEplFrame *) & abFrame[0];
-
-       EPL_MEMSET(&abFrame[0], 0x00, sizeof(abFrame));
-
-       // build generic part of frame
-       // get pointer to command layerpart of frame
-       pCommandFrame =
-           &pFrame->m_Data.m_Asnd.m_Payload.m_SdoSequenceFrame.
-           m_le_abSdoSeqPayload;
-       AmiSetByteToLe(&pCommandFrame->m_le_bCommandId,
-                      pSdoComCon_p->m_SdoServiceType);
-       AmiSetByteToLe(&pCommandFrame->m_le_bTransactionId,
-                      pSdoComCon_p->m_bTransactionId);
-
-       uiSizeOfFrame = 8;
-
-       // set response and abort flag
-       pCommandFrame->m_le_bFlags |= 0x40;
-
-       // copy abortcode to frame
-       AmiSetDwordToLe(&pCommandFrame->m_le_abCommandData[0], dwAbortCode_p);
-
-       // set size of segment
-       AmiSetWordToLe(&pCommandFrame->m_le_wSegmentSize, sizeof(u32));
-
-       // update counter
-       pSdoComCon_p->m_uiTransferredByte = sizeof(u32);
-       pSdoComCon_p->m_uiTransSize = 0;
-
-       // calc framesize
-       uiSizeOfFrame += sizeof(u32);
-
-       // save abort code
-       pSdoComCon_p->m_dwLastAbortCode = dwAbortCode_p;
-
-       // call send function of lower layer
-       switch (pSdoComCon_p->m_SdoProtType) {
-       case kEplSdoTypeAsnd:
-       case kEplSdoTypeUdp:
-               {
-                       Ret = EplSdoAsySeqSendData(pSdoComCon_p->m_SdoSeqConHdl,
-                                                  uiSizeOfFrame, pFrame);
-                       break;
-               }
-
-       default:
-               {
-                       Ret = kEplSdoComUnsupportedProt;
-               }
-       }                       // end of switch(pSdoComCon_p->m_SdoProtType)
-
-       return Ret;
-}
-#endif
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoComTransferFinished
-//
-// Description: calls callback function of application if available
-//              and clears entry in control structure
-//
-// Parameters:  pSdoComCon_p     = pointer to control structure of connection
-//              SdoComConState_p = state of SDO transfer
-//
-// Returns:     tEplKernel  =  errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-static tEplKernel EplSdoComTransferFinished(tEplSdoComConHdl SdoComCon_p,
-                                           tEplSdoComCon * pSdoComCon_p,
-                                           tEplSdoComConState SdoComConState_p)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-       if (pSdoComCon_p->m_pfnTransferFinished != NULL) {
-               tEplSdoFinishedCb pfnTransferFinished;
-               tEplSdoComFinished SdoComFinished;
-
-               SdoComFinished.m_pUserArg = pSdoComCon_p->m_pUserArg;
-               SdoComFinished.m_uiNodeId = pSdoComCon_p->m_uiNodeId;
-               SdoComFinished.m_uiTargetIndex = pSdoComCon_p->m_uiTargetIndex;
-               SdoComFinished.m_uiTargetSubIndex =
-                   pSdoComCon_p->m_uiTargetSubIndex;
-               SdoComFinished.m_uiTransferredByte =
-                   pSdoComCon_p->m_uiTransferredByte;
-               SdoComFinished.m_dwAbortCode = pSdoComCon_p->m_dwLastAbortCode;
-               SdoComFinished.m_SdoComConHdl = SdoComCon_p;
-               SdoComFinished.m_SdoComConState = SdoComConState_p;
-               if (pSdoComCon_p->m_SdoServiceType ==
-                   kEplSdoServiceWriteByIndex) {
-                       SdoComFinished.m_SdoAccessType = kEplSdoAccessTypeWrite;
-               } else {
-                       SdoComFinished.m_SdoAccessType = kEplSdoAccessTypeRead;
-               }
-
-               // reset transfer state so this handle is not busy anymore
-               pSdoComCon_p->m_uiTransferredByte = 0;
-               pSdoComCon_p->m_uiTransSize = 0;
-
-               pfnTransferFinished = pSdoComCon_p->m_pfnTransferFinished;
-               // delete function pointer to inform application only once for each transfer
-               pSdoComCon_p->m_pfnTransferFinished = NULL;
-
-               // call application's callback function
-               pfnTransferFinished(&SdoComFinished);
-
-       }
-
-       return Ret;
-}
-
-// EOF
diff --git a/drivers/staging/epl/EplSdoUdpu.c b/drivers/staging/epl/EplSdoUdpu.c
deleted file mode 100644 (file)
index c8e950f..0000000
+++ /dev/null
@@ -1,650 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for SDO/UDP-Protocolabstractionlayer module
-
-  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: EplSdoUdpu.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.8 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/26 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#include "user/EplSdoUdpu.h"
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_UDP)) != 0)
-
-#include "SocketLinuxKernel.h"
-#include <linux/completion.h>
-#include <linux/sched.h>
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-#ifndef EPL_SDO_MAX_CONNECTION_UDP
-#define EPL_SDO_MAX_CONNECTION_UDP  5
-#endif
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-typedef struct {
-       unsigned long m_ulIpAddr;       // in network byte order
-       unsigned int m_uiPort;  // in network byte order
-
-} tEplSdoUdpCon;
-
-// instance table
-typedef struct {
-       tEplSdoUdpCon m_aSdoAbsUdpConnection[EPL_SDO_MAX_CONNECTION_UDP];
-       tEplSequLayerReceiveCb m_fpSdoAsySeqCb;
-       SOCKET m_UdpSocket;
-
-       struct completion m_CompletionUdpThread;
-       int m_ThreadHandle;
-       int m_iTerminateThread;
-} tEplSdoUdpInstance;
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-static tEplSdoUdpInstance SdoUdpInstance_g;
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-static int EplSdoUdpThread(void *pArg_p);
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          C L A S S  <EPL-SDO-UDP-Layer>                                 */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-//
-// Description: Protocolabstraction layer for UDP
-//
-//
-/***************************************************************************/
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoUdpuInit
-//
-// Description: init first instance of the module
-//
-//
-//
-// Parameters:  pReceiveCb_p    =   functionpointer to Sdo-Sequence layer
-//                                  callback-function
-//
-//
-// Returns:     tEplKernel  = Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoUdpuInit(tEplSequLayerReceiveCb fpReceiveCb_p)
-{
-       tEplKernel Ret;
-
-       Ret = EplSdoUdpuAddInstance(fpReceiveCb_p);
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoUdpuAddInstance
-//
-// Description: init additional instance of the module
-//              Ã®nit socket and start Listen-Thread
-//
-//
-//
-// Parameters:  pReceiveCb_p    =   functionpointer to Sdo-Sequence layer
-//                                  callback-function
-//
-//
-// Returns:     tEplKernel  = Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoUdpuAddInstance(tEplSequLayerReceiveCb fpReceiveCb_p)
-{
-       tEplKernel Ret;
-
-       // set instance variables to 0
-       EPL_MEMSET(&SdoUdpInstance_g, 0x00, sizeof(SdoUdpInstance_g));
-
-       Ret = kEplSuccessful;
-
-       // save pointer to callback-function
-       if (fpReceiveCb_p != NULL) {
-               SdoUdpInstance_g.m_fpSdoAsySeqCb = fpReceiveCb_p;
-       } else {
-               Ret = kEplSdoUdpMissCb;
-               goto Exit;
-       }
-
-       init_completion(&SdoUdpInstance_g.m_CompletionUdpThread);
-       SdoUdpInstance_g.m_iTerminateThread = 0;
-       SdoUdpInstance_g.m_ThreadHandle = 0;
-       SdoUdpInstance_g.m_UdpSocket = INVALID_SOCKET;
-
-       Ret = EplSdoUdpuConfig(INADDR_ANY, 0);
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoUdpuDelInstance
-//
-// Description: del instance of the module
-//              del socket and del Listen-Thread
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:     tEplKernel  = Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoUdpuDelInstance(void)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-       if (SdoUdpInstance_g.m_ThreadHandle != 0) {     // listen thread was started
-               // close thread
-               SdoUdpInstance_g.m_iTerminateThread = 1;
-               /* kill_proc(SdoUdpInstance_g.m_ThreadHandle, SIGTERM, 1 ); */
-               send_sig(SIGTERM, SdoUdpInstance_g.m_ThreadHandle, 1);
-               wait_for_completion(&SdoUdpInstance_g.m_CompletionUdpThread);
-               SdoUdpInstance_g.m_ThreadHandle = 0;
-       }
-
-       if (SdoUdpInstance_g.m_UdpSocket != INVALID_SOCKET) {
-               // close socket
-               closesocket(SdoUdpInstance_g.m_UdpSocket);
-               SdoUdpInstance_g.m_UdpSocket = INVALID_SOCKET;
-       }
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoUdpuConfig
-//
-// Description: reconfigurate socket with new IP-Address
-//              -> needed for NMT ResetConfiguration
-//
-// Parameters:  ulIpAddr_p      = IpAddress in platform byte order
-//              uiPort_p        = port number in platform byte order
-//
-//
-// Returns:     tEplKernel  = Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoUdpuConfig(unsigned long ulIpAddr_p, unsigned int uiPort_p)
-{
-       tEplKernel Ret;
-       struct sockaddr_in Addr;
-       int iError;
-
-       Ret = kEplSuccessful;
-
-       if (uiPort_p == 0) {    // set UDP port to default port number
-               uiPort_p = EPL_C_SDO_EPL_PORT;
-       } else if (uiPort_p > 65535) {
-               Ret = kEplSdoUdpSocketError;
-               goto Exit;
-       }
-
-       if (SdoUdpInstance_g.m_ThreadHandle != 0) {     // listen thread was started
-
-               // close old thread
-               SdoUdpInstance_g.m_iTerminateThread = 1;
-               /* kill_proc(SdoUdpInstance_g.m_ThreadHandle, SIGTERM, 1 ); */
-               send_sig(SIGTERM, SdoUdpInstance_g.m_ThreadHandle, 1);
-               wait_for_completion(&SdoUdpInstance_g.m_CompletionUdpThread);
-               SdoUdpInstance_g.m_iTerminateThread = 0;
-               SdoUdpInstance_g.m_ThreadHandle = 0;
-       }
-
-       if (SdoUdpInstance_g.m_UdpSocket != INVALID_SOCKET) {
-               // close socket
-               iError = closesocket(SdoUdpInstance_g.m_UdpSocket);
-               SdoUdpInstance_g.m_UdpSocket = INVALID_SOCKET;
-               if (iError != 0) {
-                       Ret = kEplSdoUdpSocketError;
-                       goto Exit;
-               }
-       }
-       // create Socket
-       SdoUdpInstance_g.m_UdpSocket = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
-       if (SdoUdpInstance_g.m_UdpSocket == INVALID_SOCKET) {
-               Ret = kEplSdoUdpNoSocket;
-               EPL_DBGLVL_SDO_TRACE0("EplSdoUdpuConfig: socket() failed\n");
-               goto Exit;
-       }
-       // bind socket
-       Addr.sin_family = AF_INET;
-       Addr.sin_port = htons((unsigned short)uiPort_p);
-       Addr.sin_addr.s_addr = htonl(ulIpAddr_p);
-       iError =
-           bind(SdoUdpInstance_g.m_UdpSocket, (struct sockaddr *)&Addr,
-                sizeof(Addr));
-       if (iError < 0) {
-               //iError = WSAGetLastError();
-               EPL_DBGLVL_SDO_TRACE1
-                   ("EplSdoUdpuConfig: bind() finished with %i\n", iError);
-               Ret = kEplSdoUdpNoSocket;
-               goto Exit;
-       }
-       // create Listen-Thread
-       SdoUdpInstance_g.m_ThreadHandle =
-               kernel_thread(EplSdoUdpThread, &SdoUdpInstance_g,
-                               CLONE_FS | CLONE_FILES);
-       if (SdoUdpInstance_g.m_ThreadHandle == 0) {
-               Ret = kEplSdoUdpThreadError;
-               goto Exit;
-       }
-
-      Exit:
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoUdpuInitCon
-//
-// Description: init a new connect
-//
-//
-//
-// Parameters:  pSdoConHandle_p = pointer for the new connection handle
-//              uiTargetNodeId_p = NodeId of the target node
-//
-//
-// Returns:     tEplKernel  = Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoUdpuInitCon(tEplSdoConHdl *pSdoConHandle_p,
-                            unsigned int uiTargetNodeId_p)
-{
-       tEplKernel Ret;
-       unsigned int uiCount;
-       unsigned int uiFreeCon;
-       tEplSdoUdpCon *pSdoUdpCon;
-
-       Ret = kEplSuccessful;
-
-       // get free entry in control structure
-       uiCount = 0;
-       uiFreeCon = EPL_SDO_MAX_CONNECTION_UDP;
-       pSdoUdpCon = &SdoUdpInstance_g.m_aSdoAbsUdpConnection[0];
-       while (uiCount < EPL_SDO_MAX_CONNECTION_UDP) {
-               if ((pSdoUdpCon->m_ulIpAddr & htonl(0xFF)) == htonl(uiTargetNodeId_p)) {        // existing connection to target node found
-                       // set handle
-                       *pSdoConHandle_p = (uiCount | EPL_SDO_UDP_HANDLE);
-
-                       goto Exit;
-               } else if ((pSdoUdpCon->m_ulIpAddr == 0)
-                          && (pSdoUdpCon->m_uiPort == 0)) {
-                       uiFreeCon = uiCount;
-               }
-               uiCount++;
-               pSdoUdpCon++;
-       }
-
-       if (uiFreeCon == EPL_SDO_MAX_CONNECTION_UDP) {
-               // error no free handle
-               Ret = kEplSdoUdpNoFreeHandle;
-       } else {
-               pSdoUdpCon =
-                   &SdoUdpInstance_g.m_aSdoAbsUdpConnection[uiFreeCon];
-               // save infos for connection
-               pSdoUdpCon->m_uiPort = htons(EPL_C_SDO_EPL_PORT);
-               pSdoUdpCon->m_ulIpAddr = htonl(0xC0A86400 | uiTargetNodeId_p);  // 192.168.100.uiTargetNodeId_p
-
-               // set handle
-               *pSdoConHandle_p = (uiFreeCon | EPL_SDO_UDP_HANDLE);
-
-       }
-
-      Exit:
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoUdpuSendData
-//
-// Description: send data using exisiting connection
-//
-//
-//
-// Parameters:  SdoConHandle_p  = connection handle
-//              pSrcData_p      = pointer to data
-//              dwDataSize_p    = number of databyte
-//                                  -> without asend-header!!!
-//
-// Returns:     tEplKernel  = Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoUdpuSendData(tEplSdoConHdl SdoConHandle_p,
-                             tEplFrame *pSrcData_p, u32 dwDataSize_p)
-{
-       tEplKernel Ret;
-       int iError;
-       unsigned int uiArray;
-       struct sockaddr_in Addr;
-
-       Ret = kEplSuccessful;
-
-       uiArray = (SdoConHandle_p & ~EPL_SDO_ASY_HANDLE_MASK);
-       if (uiArray >= EPL_SDO_MAX_CONNECTION_UDP) {
-               Ret = kEplSdoUdpInvalidHdl;
-               goto Exit;
-       }
-       //set message type
-       AmiSetByteToLe(&pSrcData_p->m_le_bMessageType, 0x06);   // SDO
-       // target node id (for Udp = 0)
-       AmiSetByteToLe(&pSrcData_p->m_le_bDstNodeId, 0x00);
-       // set source-nodeid (for Udp = 0)
-       AmiSetByteToLe(&pSrcData_p->m_le_bSrcNodeId, 0x00);
-
-       // calc size
-       dwDataSize_p += EPL_ASND_HEADER_SIZE;
-
-       // call sendto
-       Addr.sin_family = AF_INET;
-       Addr.sin_port =
-           (unsigned short)SdoUdpInstance_g.m_aSdoAbsUdpConnection[uiArray].
-           m_uiPort;
-       Addr.sin_addr.s_addr =
-           SdoUdpInstance_g.m_aSdoAbsUdpConnection[uiArray].m_ulIpAddr;
-
-       iError = sendto(SdoUdpInstance_g.m_UdpSocket,   // sockethandle
-                       (const char *)&pSrcData_p->m_le_bMessageType,   // data to send
-                       dwDataSize_p,   // number of bytes to send
-                       0,      // flags
-                       (struct sockaddr *)&Addr,       // target
-                       sizeof(struct sockaddr_in));    // sizeof targetadress
-       if (iError < 0) {
-               EPL_DBGLVL_SDO_TRACE1
-                   ("EplSdoUdpuSendData: sendto() finished with %i\n", iError);
-               Ret = kEplSdoUdpSendError;
-               goto Exit;
-       }
-
-      Exit:
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplSdoUdpuDelCon
-//
-// Description: delete connection from intern structure
-//
-//
-//
-// Parameters:  SdoConHandle_p  = connection handle
-//
-// Returns:     tEplKernel  = Errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-tEplKernel EplSdoUdpuDelCon(tEplSdoConHdl SdoConHandle_p)
-{
-       tEplKernel Ret;
-       unsigned int uiArray;
-
-       uiArray = (SdoConHandle_p & ~EPL_SDO_ASY_HANDLE_MASK);
-
-       if (uiArray >= EPL_SDO_MAX_CONNECTION_UDP) {
-               Ret = kEplSdoUdpInvalidHdl;
-               goto Exit;
-       } else {
-               Ret = kEplSuccessful;
-       }
-
-       // delete connection
-       SdoUdpInstance_g.m_aSdoAbsUdpConnection[uiArray].m_ulIpAddr = 0;
-       SdoUdpInstance_g.m_aSdoAbsUdpConnection[uiArray].m_uiPort = 0;
-
-      Exit:
-       return Ret;
-}
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:        EplSdoUdpThread
-//
-// Description:     thread check socket for new data
-//
-//
-//
-// Parameters:      lpParameter = pointer to parameter type tEplSdoUdpThreadPara
-//
-//
-// Returns:         u32   =   errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-static int EplSdoUdpThread(void *pArg_p)
-{
-
-       tEplSdoUdpInstance *pInstance;
-       struct sockaddr_in RemoteAddr;
-       int iError;
-       int iCount;
-       int iFreeEntry;
-       u8 abBuffer[EPL_MAX_SDO_REC_FRAME_SIZE];
-       unsigned int uiSize;
-       tEplSdoConHdl SdoConHdl;
-
-       pInstance = (tEplSdoUdpInstance *) pArg_p;
-       daemonize("EplSdoUdpThread");
-       allow_signal(SIGTERM);
-
-       for (; pInstance->m_iTerminateThread == 0;)
-
-       {
-               // wait for data
-               uiSize = sizeof(struct sockaddr);
-               iError = recvfrom(pInstance->m_UdpSocket,       // Socket
-                                 (char *)&abBuffer[0], // buffer for data
-                                 sizeof(abBuffer),     // size of the buffer
-                                 0,    // flags
-                                 (struct sockaddr *)&RemoteAddr,
-                                 (int *)&uiSize);
-               if (iError == -ERESTARTSYS) {
-                       break;
-               }
-               if (iError > 0) {
-                       // get handle for higher layer
-                       iCount = 0;
-                       iFreeEntry = 0xFFFF;
-                       while (iCount < EPL_SDO_MAX_CONNECTION_UDP) {
-                               // check if this connection is already known
-                               if ((pInstance->m_aSdoAbsUdpConnection[iCount].
-                                    m_ulIpAddr == RemoteAddr.sin_addr.s_addr)
-                                   && (pInstance->
-                                       m_aSdoAbsUdpConnection[iCount].
-                                       m_uiPort == RemoteAddr.sin_port)) {
-                                       break;
-                               }
-
-                               if ((pInstance->m_aSdoAbsUdpConnection[iCount].
-                                    m_ulIpAddr == 0)
-                                   && (pInstance->
-                                       m_aSdoAbsUdpConnection[iCount].
-                                       m_uiPort == 0)
-                                   && (iFreeEntry == 0xFFFF))
-                               {
-                                       iFreeEntry = iCount;
-                               }
-
-                               iCount++;
-                       }
-
-                       if (iCount == EPL_SDO_MAX_CONNECTION_UDP) {
-                               // connection unknown
-                               // see if there is a free handle
-                               if (iFreeEntry != 0xFFFF) {
-                                       // save adress infos
-                                       pInstance->
-                                           m_aSdoAbsUdpConnection[iFreeEntry].
-                                           m_ulIpAddr =
-                                           RemoteAddr.sin_addr.s_addr;
-                                       pInstance->
-                                           m_aSdoAbsUdpConnection[iFreeEntry].
-                                           m_uiPort = RemoteAddr.sin_port;
-                                       // call callback
-                                       SdoConHdl = iFreeEntry;
-                                       SdoConHdl |= EPL_SDO_UDP_HANDLE;
-                                       // offset 4 -> start of SDO Sequence header
-                                       pInstance->m_fpSdoAsySeqCb(SdoConHdl,
-                                                                  (tEplAsySdoSeq
-                                                                   *) &
-                                                                  abBuffer[4],
-                                                                  (iError -
-                                                                   4));
-                               } else {
-                                       EPL_DBGLVL_SDO_TRACE0
-                                           ("Error in EplSdoUdpThread() no free handle\n");
-                               }
-
-                       } else {
-                               // known connection
-                               // call callback with correct handle
-                               SdoConHdl = iCount;
-                               SdoConHdl |= EPL_SDO_UDP_HANDLE;
-                               // offset 4 -> start of SDO Sequence header
-                               pInstance->m_fpSdoAsySeqCb(SdoConHdl,
-                                                          (tEplAsySdoSeq *) &
-                                                          abBuffer[4],
-                                                          (iError - 4));
-                       }
-               }               // end of  if(iError!=SOCKET_ERROR)
-       }                       // end of for(;;)
-
-       complete_and_exit(&SdoUdpInstance_g.m_CompletionUdpThread, 0);
-       return 0;
-}
-
-#endif // end of #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_UDP)) != 0)
-
-// EOF
diff --git a/drivers/staging/epl/EplStatusu.c b/drivers/staging/epl/EplStatusu.c
deleted file mode 100644 (file)
index b291399..0000000
+++ /dev/null
@@ -1,377 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for Statusu-Module
-
-  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: EplStatusu.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.5 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/11/15 d.k.:   start of the implementation
-
-****************************************************************************/
-
-#include "user/EplStatusu.h"
-#include "user/EplDlluCal.h"
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          C L A S S  <xxxxx>                                             */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-//
-// Description:
-//
-//
-/***************************************************************************/
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   D E F I N I T I O N S                          //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-typedef struct {
-       tEplStatusuCbResponse m_apfnCbResponse[254];
-
-} tEplStatusuInstance;
-
-//---------------------------------------------------------------------------
-// local vars
-//---------------------------------------------------------------------------
-
-static tEplStatusuInstance EplStatusuInstance_g;
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-static tEplKernel EplStatusuCbStatusResponse(tEplFrameInfo *pFrameInfo_p);
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplStatusuInit
-//
-// Description: init first instance of the module
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplStatusuInit(void)
-{
-       tEplKernel Ret;
-
-       Ret = EplStatusuAddInstance();
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplStatusuAddInstance
-//
-// Description: init other instances of the module
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplStatusuAddInstance(void)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-       // reset instance structure
-       EPL_MEMSET(&EplStatusuInstance_g, 0, sizeof(EplStatusuInstance_g));
-
-       // register StatusResponse callback function
-       Ret =
-           EplDlluCalRegAsndService(kEplDllAsndStatusResponse,
-                                    EplStatusuCbStatusResponse,
-                                    kEplDllAsndFilterAny);
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplStatusuDelInstance
-//
-// Description: delete instance
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplStatusuDelInstance(void)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-       // deregister StatusResponse callback function
-       Ret =
-           EplDlluCalRegAsndService(kEplDllAsndStatusResponse, NULL,
-                                    kEplDllAsndFilterNone);
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplStatusuReset
-//
-// Description: resets this instance
-//
-// Parameters:
-//
-// Returns:     tEplKernel  = errorcode
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplStatusuReset(void)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-       // reset instance structure
-       EPL_MEMSET(&EplStatusuInstance_g, 0, sizeof(EplStatusuInstance_g));
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplStatusuRequestStatusResponse
-//
-// Description: returns the StatusResponse for the specified node.
-//
-// Parameters:  uiNodeId_p                  = IN: node ID
-//              pfnCbResponse_p             = IN: function pointer to callback function
-//                                            which will be called if StatusResponse is received
-//
-// Return:      tEplKernel                  = error code
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplStatusuRequestStatusResponse(unsigned int uiNodeId_p,
-                                          tEplStatusuCbResponse pfnCbResponse_p)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-       // decrement node ID, because array is zero based
-       uiNodeId_p--;
-       if (uiNodeId_p < tabentries(EplStatusuInstance_g.m_apfnCbResponse)) {
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-               if (EplStatusuInstance_g.m_apfnCbResponse[uiNodeId_p] != NULL) {        // request already issued (maybe by someone else)
-                       Ret = kEplInvalidOperation;
-               } else {
-                       EplStatusuInstance_g.m_apfnCbResponse[uiNodeId_p] =
-                           pfnCbResponse_p;
-                       Ret =
-                           EplDlluCalIssueRequest(kEplDllReqServiceStatus,
-                                                  (uiNodeId_p + 1), 0xFF);
-               }
-#else
-               Ret = kEplInvalidOperation;
-#endif
-       } else {                // invalid node ID specified
-               Ret = kEplInvalidNodeId;
-       }
-
-       return Ret;
-
-}
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplStatusuCbStatusResponse
-//
-// Description: callback funktion for StatusResponse
-//
-//
-//
-// Parameters:  pFrameInfo_p            = Frame with the StatusResponse
-//
-//
-// Returns:     tEplKernel              = error code
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-static tEplKernel EplStatusuCbStatusResponse(tEplFrameInfo *pFrameInfo_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       unsigned int uiNodeId;
-       unsigned int uiIndex;
-       tEplStatusuCbResponse pfnCbResponse;
-
-       uiNodeId = AmiGetByteFromLe(&pFrameInfo_p->m_pFrame->m_le_bSrcNodeId);
-
-       uiIndex = uiNodeId - 1;
-
-       if (uiIndex < tabentries(EplStatusuInstance_g.m_apfnCbResponse)) {
-               // memorize pointer to callback function
-               pfnCbResponse = EplStatusuInstance_g.m_apfnCbResponse[uiIndex];
-               if (pfnCbResponse == NULL) {    // response was not requested
-                       goto Exit;
-               }
-               // reset callback function pointer so that caller may issue next request
-               EplStatusuInstance_g.m_apfnCbResponse[uiIndex] = NULL;
-
-               if (pFrameInfo_p->m_uiFrameSize < EPL_C_DLL_MINSIZE_STATUSRES) {        // StatusResponse not received or it has invalid size
-                       Ret = pfnCbResponse(uiNodeId, NULL);
-               } else {        // StatusResponse received
-                       Ret =
-                           pfnCbResponse(uiNodeId,
-                                         &pFrameInfo_p->m_pFrame->m_Data.
-                                         m_Asnd.m_Payload.m_StatusResponse);
-               }
-       }
-
-      Exit:
-       return Ret;
-}
-
-// EOF
diff --git a/drivers/staging/epl/EplTarget.h b/drivers/staging/epl/EplTarget.h
deleted file mode 100644 (file)
index e76d21f..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for target api function
-
-  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: EplTarget.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.5 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2005/12/05 -as:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#ifndef _EPLTARGET_H_
-#define _EPLTARGET_H_
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-// =========================================================================
-// macros for memory access (depends on target system)
-// =========================================================================
-
-// NOTE:
-// The following macros are used to combine standard library definitions. Some
-// applications needs to use one common library function (e.g. memcpy()). So
-// you can set (or change) it here.
-
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/errno.h>
-#include <linux/major.h>
-
-    //29.11.2004 f.j. sonst ist memcpy und memset unbekannt
-//    #include <string.h>
-
-#define EPL_MEMCPY(dst,src,siz)     memcpy((void*)(dst),(const void*)(src),(size_t)(siz));
-#define EPL_MEMSET(dst,val,siz)     memset((void*)(dst),(int)(val),(size_t)(siz));
-
-#define EPL_MALLOC(siz)             kmalloc((size_t)(siz), GFP_KERNEL)
-#define EPL_FREE(ptr)               kfree((void *)ptr)
-
-#ifndef PRINTF0
-#define PRINTF                      TRACE
-#define PRINTF0(arg)                TRACE0(arg)
-#define PRINTF1(arg,p1)             TRACE1(arg,p1)
-#define PRINTF2(arg,p1,p2)          TRACE2(arg,p1,p2)
-#define PRINTF3(arg,p1,p2,p3)       TRACE3(arg,p1,p2,p3)
-#define PRINTF4(arg,p1,p2,p3,p4)    TRACE4(arg,p1,p2,p3,p4)
-       //#define PRINTF                      printf
-       //#define PRINTF0(arg)                PRINTF(arg)
-       //#define PRINTF1(arg,p1)             PRINTF(arg,p1)
-       //#define PRINTF2(arg,p1,p2)          PRINTF(arg,p1,p2)
-       //#define PRINTF3(arg,p1,p2,p3)       PRINTF(arg,p1,p2,p3)
-       //#define PRINTF4(arg,p1,p2,p3,p4)    PRINTF(arg,p1,p2,p3,p4)
-#endif
-
-#define EPL_TGT_INTMASK_ETH     0x0001 // ethernet interrupt
-#define EPL_TGT_INTMASK_DMA     0x0002 // DMA interrupt
-
-//---------------------------------------------------------------------------
-// typedef
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// function prototypes
-//---------------------------------------------------------------------------
-
-// currently no Timer functions are needed by EPL stack
-// so they are not implemented yet
-//void  TgtTimerInit(void);
-//u32 TgtGetTickCount(void);
-//void TgtGetNetTime(tEplNetTime * pNetTime_p);
-
-// functions for ethernet driver
-tEplKernel TgtInitEthIsr(void);
-void TgtFreeEthIsr(void);
-void TgtEnableGlobalInterrupt(u8 fEnable_p);
-void TgtEnableEthInterrupt0(u8 fEnable_p, unsigned int uiInterruptMask_p);
-void TgtEnableEthInterrupt1(u8 fEnable_p, unsigned int uiInterruptMask_p);
-
-#endif // #ifndef _EPLTARGET_H_
diff --git a/drivers/staging/epl/EplTimer.h b/drivers/staging/epl/EplTimer.h
deleted file mode 100644 (file)
index d1a73ea..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for Epl Timer-Module
-
-  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: EplTimer.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.4 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/07/06 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#include "EplInc.h"
-#include "EplEvent.h"
-
-#ifndef _EPLTIMER_H_
-#define _EPLTIMER_H_
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// typedef
-//---------------------------------------------------------------------------
-
-// type for timer handle
-typedef unsigned long tEplTimerHdl;
-
-typedef struct {
-       tEplEventSink m_EventSink;
-       unsigned long m_ulArg;  // d.k.: converted to unsigned long because
-       // it is never accessed as a pointer by the
-       // timer module and the data the
-       // pointer points to is not saved in any way.
-       // It is just a value. The user is responsible
-       // to store the data statically and convert
-       // the pointer between address spaces.
-
-} tEplTimerArg;
-
-typedef struct {
-       tEplTimerHdl m_TimerHdl;
-       unsigned long m_ulArg;  // d.k.: converted to unsigned long because
-       // it is never accessed as a pointer by the
-       // timer module and the data the
-       // pointer points to is not saved in any way.
-       // It is just a value.
-
-} tEplTimerEventArg;
-
-typedef tEplKernel(* tEplTimerkCallback) (tEplTimerEventArg *pEventArg_p);
-
-//---------------------------------------------------------------------------
-// function prototypes
-//---------------------------------------------------------------------------
-
-#endif // #ifndef _EPLTIMER_H_
diff --git a/drivers/staging/epl/EplTimeruLinuxKernel.c b/drivers/staging/epl/EplTimeruLinuxKernel.c
deleted file mode 100644 (file)
index ff80fc8..0000000
+++ /dev/null
@@ -1,446 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  source file for EPL User Timermodule for Linux kernel module
-
-  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: EplTimeruLinuxKernel.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.6 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                KEIL uVision 2
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/09/12 d.k.:   start of the implementation
-
-****************************************************************************/
-
-#include "user/EplTimeru.h"
-#include <linux/timer.h>
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-typedef struct {
-       struct timer_list m_Timer;
-       tEplTimerArg TimerArgument;
-
-} tEplTimeruData;
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-static void EplTimeruCbMs(unsigned long ulParameter_p);
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          C L A S S  <Epl Userspace-Timermodule for Linux Kernel>              */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-//
-// Description: Epl Userspace-Timermodule for Linux Kernel
-//
-//
-/***************************************************************************/
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplTimeruInit
-//
-// Description: function inits first instance
-//
-// Parameters:  void
-//
-// Returns:     tEplKernel  = errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplTimeruInit(void)
-{
-       tEplKernel Ret;
-
-       Ret = EplTimeruAddInstance();
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplTimeruAddInstance
-//
-// Description: function inits additional instance
-//
-// Parameters:  void
-//
-// Returns:     tEplKernel  = errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplTimeruAddInstance(void)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplTimeruDelInstance
-//
-// Description: function deletes instance
-//              -> under Linux nothing to do
-//              -> no instance table needed
-//
-// Parameters:  void
-//
-// Returns:     tEplKernel  = errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplTimeruDelInstance(void)
-{
-       tEplKernel Ret;
-
-       Ret = kEplSuccessful;
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplTimeruSetTimerMs
-//
-// Description: function creates a timer and returns the corresponding handle
-//
-// Parameters:  pTimerHdl_p = pointer to a buffer to fill in the handle
-//              ulTime_p    = time for timer in ms
-//              Argument_p  = argument for timer
-//
-// Returns:     tEplKernel  = errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplTimeruSetTimerMs(tEplTimerHdl *pTimerHdl_p,
-                              unsigned long ulTime_p,
-                              tEplTimerArg Argument_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplTimeruData *pData;
-
-       // check pointer to handle
-       if (pTimerHdl_p == NULL) {
-               Ret = kEplTimerInvalidHandle;
-               goto Exit;
-       }
-
-       pData = (tEplTimeruData *) EPL_MALLOC(sizeof(tEplTimeruData));
-       if (pData == NULL) {
-               Ret = kEplNoResource;
-               goto Exit;
-       }
-
-       init_timer(&pData->m_Timer);
-       pData->m_Timer.function = EplTimeruCbMs;
-       pData->m_Timer.data = (unsigned long)pData;
-       pData->m_Timer.expires = jiffies + ulTime_p * HZ / 1000;
-
-       EPL_MEMCPY(&pData->TimerArgument, &Argument_p, sizeof(tEplTimerArg));
-
-       add_timer(&pData->m_Timer);
-
-       *pTimerHdl_p = (tEplTimerHdl) pData;
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplTimeruModifyTimerMs
-//
-// Description: function changes a timer and returns the corresponding handle
-//
-// Parameters:  pTimerHdl_p = pointer to a buffer to fill in the handle
-//              ulTime_p    = time for timer in ms
-//              Argument_p  = argument for timer
-//
-// Returns:     tEplKernel  = errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplTimeruModifyTimerMs(tEplTimerHdl *pTimerHdl_p,
-                                 unsigned long ulTime_p,
-                                 tEplTimerArg Argument_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplTimeruData *pData;
-
-       // check pointer to handle
-       if (pTimerHdl_p == NULL) {
-               Ret = kEplTimerInvalidHandle;
-               goto Exit;
-       }
-       // check handle itself, i.e. was the handle initialized before
-       if (*pTimerHdl_p == 0) {
-               Ret = EplTimeruSetTimerMs(pTimerHdl_p, ulTime_p, Argument_p);
-               goto Exit;
-       }
-       pData = (tEplTimeruData *) * pTimerHdl_p;
-       if ((tEplTimeruData *) pData->m_Timer.data != pData) {
-               Ret = kEplTimerInvalidHandle;
-               goto Exit;
-       }
-
-       mod_timer(&pData->m_Timer, (jiffies + ulTime_p * HZ / 1000));
-
-       // copy the TimerArg after the timer is restarted,
-       // so that a timer occured immediately before mod_timer
-       // won't use the new TimerArg and
-       // therefore the old timer cannot be distinguished from the new one.
-       // But if the new timer is too fast, it may get lost.
-       EPL_MEMCPY(&pData->TimerArgument, &Argument_p, sizeof(tEplTimerArg));
-
-       // check if timer is really running
-       if (timer_pending(&pData->m_Timer) == 0) {      // timer is not running
-               // retry starting it
-               add_timer(&pData->m_Timer);
-       }
-       // set handle to pointer of tEplTimeruData
-//    *pTimerHdl_p = (tEplTimerHdl) pData;
-
-      Exit:
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplTimeruDeleteTimer
-//
-// Description: function deletes a timer
-//
-// Parameters:  pTimerHdl_p = pointer to a buffer to fill in the handle
-//
-// Returns:     tEplKernel  = errorcode
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplTimeruDeleteTimer(tEplTimerHdl *pTimerHdl_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplTimeruData *pData;
-
-       // check pointer to handle
-       if (pTimerHdl_p == NULL) {
-               Ret = kEplTimerInvalidHandle;
-               goto Exit;
-       }
-       // check handle itself, i.e. was the handle initialized before
-       if (*pTimerHdl_p == 0) {
-               Ret = kEplSuccessful;
-               goto Exit;
-       }
-       pData = (tEplTimeruData *) * pTimerHdl_p;
-       if ((tEplTimeruData *) pData->m_Timer.data != pData) {
-               Ret = kEplTimerInvalidHandle;
-               goto Exit;
-       }
-
-/*    if (del_timer(&pData->m_Timer) == 1)
-    {
-        kfree(pData);
-    }
-*/
-       // try to delete the timer
-       del_timer(&pData->m_Timer);
-       // free memory in any case
-       kfree(pData);
-
-       // uninitialize handle
-       *pTimerHdl_p = 0;
-
-      Exit:
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplTimeruIsTimerActive
-//
-// Description: checks if the timer referenced by the handle is currently
-//              active.
-//
-// Parameters:  TimerHdl_p  = handle of the timer to check
-//
-// Returns:     BOOL        = TRUE, if active;
-//                            FALSE, otherwise
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-BOOL EplTimeruIsTimerActive(tEplTimerHdl TimerHdl_p)
-{
-       BOOL fActive = FALSE;
-       tEplTimeruData *pData;
-
-       // check handle itself, i.e. was the handle initialized before
-       if (TimerHdl_p == 0) {  // timer was not created yet, so it is not active
-               goto Exit;
-       }
-       pData = (tEplTimeruData *) TimerHdl_p;
-       if ((tEplTimeruData *) pData->m_Timer.data != pData) {  // invalid timer
-               goto Exit;
-       }
-       // check if timer is running
-       if (timer_pending(&pData->m_Timer) == 0) {      // timer is not running
-               goto Exit;
-       }
-
-       fActive = TRUE;
-
-      Exit:
-       return fActive;
-}
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplTimeruCbMs
-//
-// Description: function to process timer
-//
-//
-//
-// Parameters:  lpParameter = pointer to structur of type tEplTimeruData
-//
-//
-// Returns:     (none)
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-static void EplTimeruCbMs(unsigned long ulParameter_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplTimeruData *pData;
-       tEplEvent EplEvent;
-       tEplTimerEventArg TimerEventArg;
-
-       pData = (tEplTimeruData *) ulParameter_p;
-
-       // call event function
-       TimerEventArg.m_TimerHdl = (tEplTimerHdl) pData;
-       TimerEventArg.m_ulArg = pData->TimerArgument.m_ulArg;
-
-       EplEvent.m_EventSink = pData->TimerArgument.m_EventSink;
-       EplEvent.m_EventType = kEplEventTypeTimer;
-       EPL_MEMSET(&EplEvent.m_NetTime, 0x00, sizeof(tEplNetTime));
-       EplEvent.m_pArg = &TimerEventArg;
-       EplEvent.m_uiSize = sizeof(TimerEventArg);
-
-       Ret = EplEventuPost(&EplEvent);
-
-       // d.k. do not free memory, user has to call EplTimeruDeleteTimer()
-       //kfree(pData);
-
-}
-
-// EOF
diff --git a/drivers/staging/epl/EplVersion.h b/drivers/staging/epl/EplVersion.h
deleted file mode 100644 (file)
index 75570d5..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  This file defines the EPL version for the stack, as string
-                and for object 0x1018 within object dictionary.
-
-  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: EplVersion.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.6 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    all
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-****************************************************************************/
-
-#ifndef _EPL_VERSION_H_
-#define _EPL_VERSION_H_
-
-// NOTE:
-// All version macros should contain the same version number. But do not use
-// defines instead of the numbers. Because the macro EPL_STRING_VERSION() can not
-// convert a define to a string.
-//
-// Format: maj.min.build
-//         maj            = major version
-//             min        = minor version (will be set to 0 if major version will be incremented)
-//                 build  = current build (will be set to 0 if minor version will be incremented)
-//
-#define DEFINED_STACK_VERSION       EPL_STACK_VERSION   (1, 3, 0)
-#define DEFINED_OBJ1018_VERSION     EPL_OBJ1018_VERSION (1, 3, 0)
-#define DEFINED_STRING_VERSION      EPL_STRING_VERSION  (1, 3, 0)
-
-// -----------------------------------------------------------------------------
-#define EPL_PRODUCT_NAME            "EPL V2"
-#define EPL_PRODUCT_VERSION         DEFINED_STRING_VERSION
-#define EPL_PRODUCT_MANUFACTURER    "SYS TEC electronic GmbH"
-
-#define EPL_PRODUCT_KEY         "SO-1083"
-#define EPL_PRODUCT_DESCRIPTION "openPOWERLINK Protocol Stack Source"
-
-#endif // _EPL_VERSION_H_
-
-// Die letzte Zeile muß unbedingt eine leere Zeile sein, weil manche Compiler
-// damit ein Problem haben, wenn das nicht so ist (z.B. GNU oder Borland C++ Builder).
diff --git a/drivers/staging/epl/Kconfig b/drivers/staging/epl/Kconfig
deleted file mode 100644 (file)
index 9f939d5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-config EPL
-       tristate "openPOWERLINK protocol stack"
-       depends on NET && HIGH_RES_TIMERS && X86
-       default N
-       ---help---
-         Enable support for the openPOWERLINK network protocol stack.
diff --git a/drivers/staging/epl/Makefile b/drivers/staging/epl/Makefile
deleted file mode 100644 (file)
index a2c8241..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-obj-$(CONFIG_EPL)      += epl.o
-
-epl-objs :=    \
-       EplApiGeneric.o         \
-       EplApiLinuxKernel.o     \
-       EplApiProcessImage.o    \
-       EplDllk.o               \
-       EplDllkCal.o            \
-       EplDlluCal.o            \
-       EplErrorHandlerk.o      \
-       EplEventk.o             \
-       EplEventu.o             \
-       EplIdentu.o             \
-       EplNmtCnu.o             \
-       EplNmtk.o               \
-       EplNmtkCal.o            \
-       EplNmtMnu.o             \
-       EplNmtu.o               \
-       EplNmtuCal.o            \
-       EplObd.o                \
-       EplObdkCal.o            \
-       EplObdu.o               \
-       EplObduCal.o            \
-       EplPdok.o               \
-       EplPdokCal.o            \
-       EplPdou.o               \
-       EplSdoAsndu.o           \
-       EplSdoAsySequ.o         \
-       EplSdoComu.o            \
-       EplSdoUdpu.o            \
-       EplStatusu.o            \
-       EplTimeruLinuxKernel.o  \
-       amix86.o                \
-       SharedBuff.o            \
-       ShbIpc-LinuxKernel.o    \
-       TimerHighReskX86.o      \
-       VirtualEthernetLinux.o  \
-       SocketLinuxKernel.o     \
-       proc_fs.o               \
-       demo_main.o             \
-       Edrv8139.o              \
diff --git a/drivers/staging/epl/SharedBuff.c b/drivers/staging/epl/SharedBuff.c
deleted file mode 100644 (file)
index 2b10c37..0000000
+++ /dev/null
@@ -1,1762 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      Project independend shared buffer (linear + circular)
-
-  Description:  Implementation of platform independend part for the
-                shared buffer
-
-  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.
-
-  -------------------------------------------------------------------------
-
-  2006/06/27 -rs:   V 1.00 (initial version)
-
-****************************************************************************/
-
-#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
-
-#include "global.h"
-#include "SharedBuff.h"
-#include "ShbIpc.h"
-
-#include <linux/string.h>
-#include <linux/kernel.h>
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-//  Configuration
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-//  Constant definitions
-//---------------------------------------------------------------------------
-
-#define SBC_MAGIC_ID    0x53424323     // magic ID ("SBC#")
-#define SBL_MAGIC_ID    0x53424C23     // magic ID ("SBL#")
-
-//---------------------------------------------------------------------------
-//  Local types
-//---------------------------------------------------------------------------
-
-// structure to administrate circular shared buffer head
-typedef struct {
-       unsigned long m_ShbCirMagicID;  // magic ID ("SBC#")
-       unsigned long m_ulBufferTotalSize;      // over-all size of complete buffer
-       unsigned long m_ulBufferDataSize;       // size of complete data area
-       unsigned long m_ulWrIndex;      // current write index (set bevore write)
-       unsigned long m_ulRdIndex;      // current read index (set after read)
-       unsigned long m_ulNumOfWriteJobs;       // number of currently (parallel running) write operations
-       unsigned long m_ulDataInUse;    // currently used buffer size (incl. uncompleted write operations)
-       unsigned long m_ulDataApended;  // buffer size of complete new written but not yet readable data (in case of m_ulNumOfWriteJobs>1)
-       unsigned long m_ulBlocksApended;        // number of complete new written but not yet readable data blocks (in case of m_ulNumOfWriteJobs>1)
-       unsigned long m_ulDataReadable; // buffer size with readable (complete written) data
-       unsigned long m_ulBlocksReadable;       // number of readable (complete written) data blocks
-       tShbCirSigHndlrNewData m_pfnSigHndlrNewData;    // application handler to signal new data
-       unsigned int m_fBufferLocked;   // TRUE if buffer is locked (because of pending reset request)
-       tShbCirSigHndlrReset m_pfnSigHndlrReset;        // application handler to signal buffer reset is done
-       unsigned char m_Data;   // start of data area (the real data size is unknown at this time)
-
-} tShbCirBuff;
-
-// structure to administrate linear shared buffer head
-typedef struct {
-       unsigned int m_ShbLinMagicID;   // magic ID ("SBL#")
-       unsigned long m_ulBufferTotalSize;      // over-all size of complete buffer
-       unsigned long m_ulBufferDataSize;       // size of complete data area
-       unsigned char m_Data;   // start of data area (the real data size is unknown at this time)
-
-} tShbLinBuff;
-
-// type to save size of a single data block inside the circular shared buffer
-typedef struct {
-       unsigned int m_uiFullBlockSize:28;      // a single block must not exceed a length of 256MByte :-)
-       unsigned int m_uiAlignFillBytes:4;
-
-} tShbCirBlockSize;
-
-#define SBC_BLOCK_ALIGNMENT                  4 // alignment must *not* be lower than sizeof(tShbCirBlockSize)!
-#define SBC_MAX_BLOCK_SIZE         ((1<<28)-1) // = (2^28 - 1) = (256MByte - 1) -> should be enought for real life :-)
-
-#define SBL_BLOCK_ALIGNMENT                  4
-#define SBL_MAX_BLOCK_SIZE         ((1<<28)-1) // = (2^28 - 1) = (256MByte - 1) -> should be enought for real life :-)
-
-//---------------------------------------------------------------------------
-//  Global variables
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-//  Local variables
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-//  Prototypes of internal functions
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-//  Get pointer to Circular Shared Buffer
-//---------------------------------------------------------------------------
-
-tShbCirBuff *ShbCirGetBuffer(tShbInstance pShbInstance_p)
-{
-
-       tShbCirBuff *pShbCirBuff;
-
-       pShbCirBuff = (tShbCirBuff *) ShbIpcGetShMemPtr(pShbInstance_p);
-       ASSERT(pShbCirBuff->m_ShbCirMagicID == SBC_MAGIC_ID);
-
-       return (pShbCirBuff);
-
-}
-
-//---------------------------------------------------------------------------
-//  Get pointer to Linear Shared Buffer
-//---------------------------------------------------------------------------
-
-tShbLinBuff *ShbLinGetBuffer(tShbInstance pShbInstance_p)
-{
-
-       tShbLinBuff *pShbLinBuff;
-
-       pShbLinBuff = (tShbLinBuff *) ShbIpcGetShMemPtr(pShbInstance_p);
-       ASSERT(pShbLinBuff->m_ShbLinMagicID == SBL_MAGIC_ID);
-
-       return (pShbLinBuff);
-
-}
-
-// not inlined internal functions
-int ShbCirSignalHandlerNewData(tShbInstance pShbInstance_p);
-void ShbCirSignalHandlerReset(tShbInstance pShbInstance_p,
-                             unsigned int fTimeOut_p);
-
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-// not inlined external functions
-
-//---------------------------------------------------------------------------
-//  Initialize Shared Buffer Module
-//---------------------------------------------------------------------------
-
-tShbError ShbInit(void)
-{
-
-       tShbError ShbError;
-
-       ShbError = ShbIpcInit();
-
-       return (ShbError);
-
-}
-
-//---------------------------------------------------------------------------
-//  Deinitialize Shared Buffer Module
-//---------------------------------------------------------------------------
-
-tShbError ShbExit(void)
-{
-
-       tShbError ShbError;
-
-       ShbError = ShbIpcExit();
-
-       return (ShbError);
-
-}
-
-//-------------------------------------------------------------------------//
-//                                                                         //
-//          C i r c u l a r   S h a r e d   B u f f e r                    //
-//                                                                         //
-//-------------------------------------------------------------------------//
-
-//---------------------------------------------------------------------------
-//  Allocate Circular Shared Buffer
-//---------------------------------------------------------------------------
-
-tShbError ShbCirAllocBuffer(unsigned long ulBufferSize_p,
-                           const char *pszBufferID_p,
-                           tShbInstance * ppShbInstance_p,
-                           unsigned int *pfShbNewCreated_p)
-{
-
-       tShbInstance pShbInstance;
-       tShbCirBuff *pShbCirBuff;
-       unsigned int fShbNewCreated;
-       unsigned long ulBufferDataSize;
-       unsigned long ulBufferTotalSize;
-       tShbError ShbError;
-
-       // check arguments
-       if ((ulBufferSize_p == 0) || (ppShbInstance_p == NULL)) {
-               return (kShbInvalidArg);
-       }
-
-       // calculate length of memory to allocate
-       ulBufferDataSize =
-           (ulBufferSize_p +
-            (SBC_BLOCK_ALIGNMENT - 1)) & ~(SBC_BLOCK_ALIGNMENT - 1);
-       ulBufferTotalSize = ulBufferDataSize + sizeof(tShbCirBuff);
-
-       // allocate a new or open an existing shared buffer
-       ShbError = ShbIpcAllocBuffer(ulBufferTotalSize, pszBufferID_p,
-                                    &pShbInstance, &fShbNewCreated);
-       if (ShbError != kShbOk) {
-               goto Exit;
-       }
-
-       if (pShbInstance == NULL) {
-               ShbError = kShbOutOfMem;
-               goto Exit;
-       }
-
-       // get pointer to shared buffer
-       pShbCirBuff = (tShbCirBuff *) ShbIpcGetShMemPtr(pShbInstance);
-
-       // if the shared buffer was new created, than this process has
-       // to initialize it, otherwise the buffer is already in use
-       // and *must not* be reseted
-       if (fShbNewCreated) {
-#ifndef NDEBUG
-               {
-                       memset(pShbCirBuff, 0xCC, ulBufferTotalSize);
-               }
-#endif
-
-               pShbCirBuff->m_ShbCirMagicID = SBC_MAGIC_ID;
-               pShbCirBuff->m_ulBufferTotalSize = ulBufferTotalSize;
-               pShbCirBuff->m_ulBufferDataSize = ulBufferDataSize;
-               pShbCirBuff->m_ulWrIndex = 0;
-               pShbCirBuff->m_ulRdIndex = 0;
-               pShbCirBuff->m_ulNumOfWriteJobs = 0;
-               pShbCirBuff->m_ulDataInUse = 0;
-               pShbCirBuff->m_ulDataApended = 0;
-               pShbCirBuff->m_ulBlocksApended = 0;
-               pShbCirBuff->m_ulDataReadable = 0;
-               pShbCirBuff->m_ulBlocksReadable = 0;
-               pShbCirBuff->m_pfnSigHndlrNewData = NULL;
-               pShbCirBuff->m_fBufferLocked = FALSE;
-               pShbCirBuff->m_pfnSigHndlrReset = NULL;
-       } else {
-               if (pShbCirBuff->m_ShbCirMagicID != SBC_MAGIC_ID) {
-                       ShbError = kShbInvalidBufferType;
-                       goto Exit;
-               }
-       }
-
-      Exit:
-
-       *ppShbInstance_p = pShbInstance;
-       *pfShbNewCreated_p = fShbNewCreated;
-
-       return (ShbError);
-
-}
-
-//---------------------------------------------------------------------------
-//  Release Circular Shared Buffer
-//---------------------------------------------------------------------------
-
-tShbError ShbCirReleaseBuffer(tShbInstance pShbInstance_p)
-{
-
-       tShbError ShbError;
-
-       // check arguments
-       if (pShbInstance_p == NULL) {
-               ShbError = kShbOk;
-               goto Exit;
-       }
-
-       ShbError = ShbIpcReleaseBuffer(pShbInstance_p);
-
-      Exit:
-
-       return (ShbError);
-
-}
-
-//---------------------------------------------------------------------------
-//  Reset Circular Shared Buffer
-//---------------------------------------------------------------------------
-
-tShbError ShbCirResetBuffer(tShbInstance pShbInstance_p,
-                           unsigned long ulTimeOut_p,
-                           tShbCirSigHndlrReset pfnSignalHandlerReset_p)
-{
-
-       tShbCirBuff *pShbCirBuff;
-       unsigned long ulNumOfWriteJobs = 0;     // d.k. GCC complains about uninitialized variable otherwise
-       tShbError ShbError;
-
-       // check arguments
-       if (pShbInstance_p == NULL) {
-               ShbError = kShbInvalidArg;
-               goto Exit;
-       }
-
-       pShbCirBuff = ShbCirGetBuffer(pShbInstance_p);
-       ShbError = kShbOk;
-
-       if (pShbCirBuff->m_ShbCirMagicID != SBC_MAGIC_ID) {
-               ShbError = kShbInvalidBufferType;
-               goto Exit;
-       }
-
-       // start reset job by setting request request in buffer header
-       ShbIpcEnterAtomicSection(pShbInstance_p);
-       {
-               if (!pShbCirBuff->m_fBufferLocked) {
-                       ulNumOfWriteJobs = pShbCirBuff->m_ulNumOfWriteJobs;
-
-                       pShbCirBuff->m_fBufferLocked = TRUE;
-                       pShbCirBuff->m_pfnSigHndlrReset =
-                           pfnSignalHandlerReset_p;
-               } else {
-                       ShbError = kShbAlreadyReseting;
-               }
-       }
-       ShbIpcLeaveAtomicSection(pShbInstance_p);
-
-       if (ShbError != kShbOk) {
-               goto Exit;
-       }
-
-       // if there is currently no running write operation then reset buffer
-       // immediately, otherwise wait until the last write job is ready by
-       // starting a signal process
-       if (ulNumOfWriteJobs == 0) {
-               // there is currently no running write operation
-               // -> reset buffer immediately
-               ShbCirSignalHandlerReset(pShbInstance_p, FALSE);
-               ShbError = kShbOk;
-       } else {
-               // there is currently at least one running write operation
-               // -> starting signal process to wait until the last write job is ready
-               ShbError =
-                   ShbIpcStartSignalingJobReady(pShbInstance_p, ulTimeOut_p,
-                                                ShbCirSignalHandlerReset);
-       }
-
-      Exit:
-
-       return (ShbError);
-
-}
-
-//---------------------------------------------------------------------------
-//  Write data block to Circular Shared Buffer
-//---------------------------------------------------------------------------
-
-tShbError ShbCirWriteDataBlock(tShbInstance pShbInstance_p,
-                              const void *pSrcDataBlock_p,
-                              unsigned long ulDataBlockSize_p)
-{
-
-       tShbCirBuff *pShbCirBuff;
-       tShbCirBlockSize ShbCirBlockSize;
-       unsigned int uiFullBlockSize;
-       unsigned int uiAlignFillBytes;
-       unsigned char *pShbCirDataPtr;
-       unsigned char *pScrDataPtr;
-       unsigned long ulDataSize;
-       unsigned long ulChunkSize;
-       unsigned long ulWrIndex = 0;    // d.k. GCC complains about uninitialized variable otherwise
-       unsigned int fSignalNewData;
-       unsigned int fSignalReset;
-       tShbError ShbError;
-       tShbError ShbError2;
-       int fRes;
-
-       // check arguments
-       if (pShbInstance_p == NULL) {
-               ShbError = kShbInvalidArg;
-               goto Exit;
-       }
-
-       if ((pSrcDataBlock_p == NULL) || (ulDataBlockSize_p == 0)) {
-               // nothing to do here
-               ShbError = kShbOk;
-               goto Exit;
-       }
-
-       if (ulDataBlockSize_p > SBC_MAX_BLOCK_SIZE) {
-               ShbError = kShbExceedDataSizeLimit;
-               goto Exit;
-       }
-
-       pShbCirBuff = ShbCirGetBuffer(pShbInstance_p);
-       pScrDataPtr = (unsigned char *)pSrcDataBlock_p;
-       fSignalNewData = FALSE;
-       fSignalReset = FALSE;
-       ShbError = kShbOk;
-
-       if (pShbCirBuff->m_ShbCirMagicID != SBC_MAGIC_ID) {
-               ShbError = kShbInvalidBufferType;
-               goto Exit;
-       }
-
-       // calculate data block size in circular buffer
-       ulDataSize =
-           (ulDataBlockSize_p +
-            (SBC_BLOCK_ALIGNMENT - 1)) & ~(SBC_BLOCK_ALIGNMENT - 1);
-       uiFullBlockSize = ulDataSize + sizeof(tShbCirBlockSize);        // data size + header
-       uiAlignFillBytes = ulDataSize - ulDataBlockSize_p;
-
-       ShbCirBlockSize.m_uiFullBlockSize = uiFullBlockSize;
-       ShbCirBlockSize.m_uiAlignFillBytes = uiAlignFillBytes;
-
-       // reserve the needed memory for the write operation to do now
-       // and make necessary adjustments in the circular buffer header
-       ShbIpcEnterAtomicSection(pShbInstance_p);
-       {
-               // check if there is sufficient memory available to store
-               // the new data
-               fRes =
-                   uiFullBlockSize <=
-                   (pShbCirBuff->m_ulBufferDataSize -
-                    pShbCirBuff->m_ulDataInUse);
-               if (fRes) {
-                       // set write pointer for the write operation to do now
-                       // to the current write pointer of the circular buffer
-                       ulWrIndex = pShbCirBuff->m_ulWrIndex;
-
-                       // reserve the needed memory for the write operation to do now
-                       pShbCirBuff->m_ulDataInUse += uiFullBlockSize;
-
-                       // set new write pointer behind the reserved memory
-                       // for the write operation to do now
-                       pShbCirBuff->m_ulWrIndex += uiFullBlockSize;
-                       pShbCirBuff->m_ulWrIndex %=
-                           pShbCirBuff->m_ulBufferDataSize;
-
-                       // increment number of currently (parallel running)
-                       // write operations
-                       pShbCirBuff->m_ulNumOfWriteJobs++;
-               }
-       }
-       ShbIpcLeaveAtomicSection(pShbInstance_p);
-
-       if (!fRes) {
-               ShbError = kShbBufferFull;
-               goto Exit;
-       }
-
-       // copy the data to the circular buffer
-       // (the copy process itself will be done outside of any
-       // critical/locked section)
-       pShbCirDataPtr = &pShbCirBuff->m_Data;  // ptr to start of data area
-
-       // write real size of current block (incl. alignment fill bytes)
-       *(tShbCirBlockSize *) (pShbCirDataPtr + ulWrIndex) = ShbCirBlockSize;
-       ulWrIndex += sizeof(tShbCirBlockSize);
-       ulWrIndex %= pShbCirBuff->m_ulBufferDataSize;
-
-       if (ulWrIndex + ulDataBlockSize_p <= pShbCirBuff->m_ulBufferDataSize) {
-               // linear write operation
-               memcpy(pShbCirDataPtr + ulWrIndex, pScrDataPtr,
-                      ulDataBlockSize_p);
-       } else {
-               // wrap-around write operation
-               ulChunkSize = pShbCirBuff->m_ulBufferDataSize - ulWrIndex;
-               memcpy(pShbCirDataPtr + ulWrIndex, pScrDataPtr, ulChunkSize);
-               memcpy(pShbCirDataPtr, pScrDataPtr + ulChunkSize,
-                      ulDataBlockSize_p - ulChunkSize);
-       }
-
-       // adjust header information for circular buffer with properties
-       // of the wiritten data block
-       ShbIpcEnterAtomicSection(pShbInstance_p);
-       {
-               pShbCirBuff->m_ulDataApended += uiFullBlockSize;
-               pShbCirBuff->m_ulBlocksApended++;
-
-               // decrement number of currently (parallel running) write operations
-               if (!--pShbCirBuff->m_ulNumOfWriteJobs) {
-                       // if there is no other write process running then
-                       // set new size of readable (complete written) data and
-                       // adjust number of readable blocks
-                       pShbCirBuff->m_ulDataReadable +=
-                           pShbCirBuff->m_ulDataApended;
-                       pShbCirBuff->m_ulBlocksReadable +=
-                           pShbCirBuff->m_ulBlocksApended;
-
-                       pShbCirBuff->m_ulDataApended = 0;
-                       pShbCirBuff->m_ulBlocksApended = 0;
-
-                       fSignalNewData = TRUE;
-                       fSignalReset = pShbCirBuff->m_fBufferLocked;
-               }
-       }
-       ShbIpcLeaveAtomicSection(pShbInstance_p);
-
-       // signal new data event to a potentially reading application
-       if (fSignalNewData) {
-               ShbError2 = ShbIpcSignalNewData(pShbInstance_p);
-               if (ShbError == kShbOk) {
-                       ShbError = ShbError2;
-               }
-       }
-       // signal that the last write job has been finished to allow
-       // a waiting application to reset the buffer now
-       if (fSignalReset) {
-               ShbError2 = ShbIpcSignalJobReady(pShbInstance_p);
-               if (ShbError == kShbOk) {
-                       ShbError = ShbError2;
-               }
-       }
-
-      Exit:
-
-       return (ShbError);
-
-}
-
-//---------------------------------------------------------------------------
-//  Allocate block within the Circular Shared Buffer for chunk writing
-//---------------------------------------------------------------------------
-
-tShbError ShbCirAllocDataBlock(tShbInstance pShbInstance_p,
-                              tShbCirChunk * pShbCirChunk_p,
-                              unsigned long ulDataBufferSize_p)
-{
-
-       tShbCirBuff *pShbCirBuff;
-       tShbCirBlockSize ShbCirBlockSize;
-       unsigned int uiFullBlockSize;
-       unsigned int uiAlignFillBytes;
-       unsigned char *pShbCirDataPtr;
-       unsigned long ulDataSize;
-       unsigned long ulWrIndex = 0;    // d.k. GCC complains about uninitialized variable otherwise
-       tShbError ShbError;
-       int fRes;
-
-       // check arguments
-       if ((pShbInstance_p == NULL) || (pShbCirChunk_p == NULL)) {
-               ShbError = kShbInvalidArg;
-               goto Exit;
-       }
-
-       if (ulDataBufferSize_p == 0) {
-               ShbError = kShbInvalidArg;
-               goto Exit;
-       }
-
-       if (ulDataBufferSize_p > SBC_MAX_BLOCK_SIZE) {
-               ShbError = kShbExceedDataSizeLimit;
-               goto Exit;
-       }
-
-       pShbCirBuff = ShbCirGetBuffer(pShbInstance_p);
-       ShbError = kShbOk;
-
-       if (pShbCirBuff->m_ShbCirMagicID != SBC_MAGIC_ID) {
-               ShbError = kShbInvalidBufferType;
-               goto Exit;
-       }
-
-       // calculate data block size in circular buffer
-       ulDataSize =
-           (ulDataBufferSize_p +
-            (SBC_BLOCK_ALIGNMENT - 1)) & ~(SBC_BLOCK_ALIGNMENT - 1);
-       uiFullBlockSize = ulDataSize + sizeof(tShbCirBlockSize);        // data size + header
-       uiAlignFillBytes = ulDataSize - ulDataBufferSize_p;
-
-       ShbCirBlockSize.m_uiFullBlockSize = uiFullBlockSize;
-       ShbCirBlockSize.m_uiAlignFillBytes = uiAlignFillBytes;
-
-       // reserve the needed memory for the write operation to do now
-       // and make necessary adjustments in the circular buffer header
-       ShbIpcEnterAtomicSection(pShbInstance_p);
-       {
-               // check if there is sufficient memory available to store
-               // the new data
-               fRes =
-                   (uiFullBlockSize <=
-                    (pShbCirBuff->m_ulBufferDataSize -
-                     pShbCirBuff->m_ulDataInUse));
-               if (fRes) {
-                       // set write pointer for the write operation to do now
-                       // to the current write pointer of the circular buffer
-                       ulWrIndex = pShbCirBuff->m_ulWrIndex;
-
-                       // reserve the needed memory for the write operation to do now
-                       pShbCirBuff->m_ulDataInUse += uiFullBlockSize;
-
-                       // set new write pointer behind the reserved memory
-                       // for the write operation to do now
-                       pShbCirBuff->m_ulWrIndex += uiFullBlockSize;
-                       pShbCirBuff->m_ulWrIndex %=
-                           pShbCirBuff->m_ulBufferDataSize;
-
-                       // increment number of currently (parallel running)
-                       // write operations
-                       pShbCirBuff->m_ulNumOfWriteJobs++;
-               }
-       }
-       ShbIpcLeaveAtomicSection(pShbInstance_p);
-
-       if (!fRes) {
-               ShbError = kShbBufferFull;
-               goto Exit;
-       }
-
-       // setup header information for allocated buffer
-       pShbCirDataPtr = &pShbCirBuff->m_Data;  // ptr to start of data area
-
-       // write real size of current block (incl. alignment fill bytes)
-       *(tShbCirBlockSize *) (pShbCirDataPtr + ulWrIndex) = ShbCirBlockSize;
-       ulWrIndex += sizeof(tShbCirBlockSize);
-       ulWrIndex %= pShbCirBuff->m_ulBufferDataSize;
-
-       // setup chunk descriptor
-       pShbCirChunk_p->m_uiFullBlockSize = uiFullBlockSize;
-       pShbCirChunk_p->m_ulAvailableSize = ulDataBufferSize_p;
-       pShbCirChunk_p->m_ulWrIndex = ulWrIndex;
-       pShbCirChunk_p->m_fBufferCompleted = FALSE;
-
-      Exit:
-
-       return (ShbError);
-
-}
-
-//---------------------------------------------------------------------------
-//  Write data chunk into an allocated buffer of the Circular Shared Buffer
-//---------------------------------------------------------------------------
-
-tShbError ShbCirWriteDataChunk(tShbInstance pShbInstance_p,
-                              tShbCirChunk *pShbCirChunk_p,
-                              const void *pSrcDataChunk_p,
-                              unsigned long ulDataChunkSize_p,
-                              unsigned int *pfBufferCompleted_p)
-{
-
-       tShbCirBuff *pShbCirBuff;
-       unsigned char *pShbCirDataPtr;
-       unsigned char *pScrDataPtr;
-       unsigned long ulSubChunkSize;
-       unsigned long ulWrIndex;
-       unsigned int fBufferCompleted;
-       unsigned int fSignalNewData;
-       unsigned int fSignalReset;
-       tShbError ShbError;
-       tShbError ShbError2;
-
-       // check arguments
-       if ((pShbInstance_p == NULL) || (pShbCirChunk_p == NULL)
-           || (pfBufferCompleted_p == NULL)) {
-               ShbError = kShbInvalidArg;
-               goto Exit;
-       }
-
-       if ((pSrcDataChunk_p == NULL) || (ulDataChunkSize_p == 0)) {
-               // nothing to do here
-               ShbError = kShbOk;
-               goto Exit;
-       }
-
-       if (pShbCirChunk_p->m_fBufferCompleted) {
-               ShbError = kShbBufferAlreadyCompleted;
-               goto Exit;
-       }
-
-       if (ulDataChunkSize_p > pShbCirChunk_p->m_ulAvailableSize) {
-               ShbError = kShbExceedDataSizeLimit;
-               goto Exit;
-       }
-
-       pShbCirBuff = ShbCirGetBuffer(pShbInstance_p);
-       pScrDataPtr = (unsigned char *)pSrcDataChunk_p;
-       fSignalNewData = FALSE;
-       fSignalReset = FALSE;
-       ShbError = kShbOk;
-
-       if (pShbCirBuff->m_ShbCirMagicID != SBC_MAGIC_ID) {
-               ShbError = kShbInvalidBufferType;
-               goto Exit;
-       }
-
-       ulWrIndex = pShbCirChunk_p->m_ulWrIndex;
-
-       // copy the data to the circular buffer
-       // (the copy process itself will be done outside of any
-       // critical/locked section)
-       pShbCirDataPtr = &pShbCirBuff->m_Data;  // ptr to start of data area
-
-       if (ulWrIndex + ulDataChunkSize_p <= pShbCirBuff->m_ulBufferDataSize) {
-               // linear write operation
-               memcpy(pShbCirDataPtr + ulWrIndex, pScrDataPtr,
-                      ulDataChunkSize_p);
-       } else {
-               // wrap-around write operation
-               ulSubChunkSize = pShbCirBuff->m_ulBufferDataSize - ulWrIndex;
-               memcpy(pShbCirDataPtr + ulWrIndex, pScrDataPtr, ulSubChunkSize);
-               memcpy(pShbCirDataPtr, pScrDataPtr + ulSubChunkSize,
-                      ulDataChunkSize_p - ulSubChunkSize);
-       }
-
-       // adjust chunk descriptor
-       ulWrIndex += ulDataChunkSize_p;
-       ulWrIndex %= pShbCirBuff->m_ulBufferDataSize;
-
-       pShbCirChunk_p->m_ulAvailableSize -= ulDataChunkSize_p;
-       pShbCirChunk_p->m_ulWrIndex = ulWrIndex;
-
-       fBufferCompleted = (pShbCirChunk_p->m_ulAvailableSize == 0);
-       pShbCirChunk_p->m_fBufferCompleted = fBufferCompleted;
-
-       // if the complete allocated buffer is filled with data then
-       // adjust header information for circular buffer with properties
-       // of the wiritten data block
-       if (fBufferCompleted) {
-               ShbIpcEnterAtomicSection(pShbInstance_p);
-               {
-                       pShbCirBuff->m_ulDataApended +=
-                           pShbCirChunk_p->m_uiFullBlockSize;
-                       pShbCirBuff->m_ulBlocksApended++;
-
-                       // decrement number of currently (parallel running) write operations
-                       if (!--pShbCirBuff->m_ulNumOfWriteJobs) {
-                               // if there is no other write process running then
-                               // set new size of readable (complete written) data and
-                               // adjust number of readable blocks
-                               pShbCirBuff->m_ulDataReadable +=
-                                   pShbCirBuff->m_ulDataApended;
-                               pShbCirBuff->m_ulBlocksReadable +=
-                                   pShbCirBuff->m_ulBlocksApended;
-
-                               pShbCirBuff->m_ulDataApended = 0;
-                               pShbCirBuff->m_ulBlocksApended = 0;
-
-                               fSignalNewData = TRUE;
-                               fSignalReset = pShbCirBuff->m_fBufferLocked;
-                       }
-               }
-               ShbIpcLeaveAtomicSection(pShbInstance_p);
-       }
-
-       // signal new data event to a potentially reading application
-       if (fSignalNewData) {
-               ShbError2 = ShbIpcSignalNewData(pShbInstance_p);
-               if (ShbError == kShbOk) {
-                       ShbError = ShbError2;
-               }
-       }
-       // signal that the last write job has been finished to allow
-       // a waiting application to reset the buffer now
-       if (fSignalReset) {
-               ShbError2 = ShbIpcSignalJobReady(pShbInstance_p);
-               if (ShbError == kShbOk) {
-                       ShbError = ShbError2;
-               }
-       }
-
-       *pfBufferCompleted_p = fBufferCompleted;
-
-      Exit:
-
-       return (ShbError);
-
-}
-
-//---------------------------------------------------------------------------
-//  Read data block from Circular Shared Buffer
-//---------------------------------------------------------------------------
-
-tShbError ShbCirReadDataBlock(tShbInstance pShbInstance_p,
-                             void *pDstDataBlock_p,
-                             unsigned long ulRdBuffSize_p,
-                             unsigned long *pulDataBlockSize_p)
-{
-
-       tShbCirBuff *pShbCirBuff;
-       tShbCirBlockSize ShbCirBlockSize;
-       unsigned long ulDataReadable;
-       unsigned char *pShbCirDataPtr;
-       unsigned char *pDstDataPtr;
-       unsigned long ulDataSize = 0;   // d.k. GCC complains about uninitialized variable otherwise
-       unsigned long ulChunkSize;
-       unsigned long ulRdIndex;
-       tShbError ShbError;
-
-       // check arguments
-       if ((pShbInstance_p == NULL) || (pulDataBlockSize_p == NULL)) {
-               return (kShbInvalidArg);
-       }
-
-       if ((pDstDataBlock_p == NULL) || (ulRdBuffSize_p == 0)) {
-               // nothing to do here
-               ShbError = kShbOk;
-               goto Exit;
-       }
-
-       ShbError = kShbOk;
-       pShbCirBuff = ShbCirGetBuffer(pShbInstance_p);
-       pDstDataPtr = (unsigned char *)pDstDataBlock_p;
-       ulDataSize = 0;
-
-       if (pShbCirBuff->m_ShbCirMagicID != SBC_MAGIC_ID) {
-               ShbError = kShbInvalidBufferType;
-               goto Exit;
-       }
-
-       // get total number of readable bytes for the whole circular buffer
-       ShbIpcEnterAtomicSection(pShbInstance_p);
-       {
-               ulDataReadable = pShbCirBuff->m_ulDataReadable;
-       }
-       ShbIpcLeaveAtomicSection(pShbInstance_p);
-
-       // if there are readable data available, then there must be at least
-       // one complete readable data block
-       if (ulDataReadable > 0) {
-               // get pointer to start of data area and current read index
-               pShbCirDataPtr = &pShbCirBuff->m_Data;  // ptr to start of data area
-               ulRdIndex = pShbCirBuff->m_ulRdIndex;
-
-               // get real size of current block (incl. alignment fill bytes)
-               ShbCirBlockSize =
-                   *(tShbCirBlockSize *) (pShbCirDataPtr + ulRdIndex);
-               ulRdIndex += sizeof(tShbCirBlockSize);
-               ulRdIndex %= pShbCirBuff->m_ulBufferDataSize;
-
-               // get size of user data inside the current block
-               ulDataSize =
-                   ShbCirBlockSize.m_uiFullBlockSize -
-                   ShbCirBlockSize.m_uiAlignFillBytes;
-               ulDataSize -= sizeof(tShbCirBlockSize);
-       }
-
-       // ulDataSize = MIN(ulDataSize, ulRdBuffSize_p);
-       if (ulDataSize > ulRdBuffSize_p) {
-               ulDataSize = ulRdBuffSize_p;
-               ShbError = kShbDataTruncated;
-       }
-
-       if (ulDataSize == 0) {
-               // nothing to do here
-               ShbError = kShbNoReadableData;
-               goto Exit;
-       }
-
-       // copy the data from the circular buffer
-       // (the copy process itself will be done outside of any
-       // critical/locked section)
-       if (ulRdIndex + ulDataSize <= pShbCirBuff->m_ulBufferDataSize) {
-               // linear read operation
-               memcpy(pDstDataPtr, pShbCirDataPtr + ulRdIndex, ulDataSize);
-       } else {
-               // wrap-around read operation
-               ulChunkSize = pShbCirBuff->m_ulBufferDataSize - ulRdIndex;
-               memcpy(pDstDataPtr, pShbCirDataPtr + ulRdIndex, ulChunkSize);
-               memcpy(pDstDataPtr + ulChunkSize, pShbCirDataPtr,
-                      ulDataSize - ulChunkSize);
-       }
-
-#ifndef NDEBUG
-       {
-               tShbCirBlockSize ClrShbCirBlockSize;
-
-               if (ulRdIndex + ulDataSize <= pShbCirBuff->m_ulBufferDataSize) {
-                       // linear buffer
-                       memset(pShbCirDataPtr + ulRdIndex, 0xDD, ulDataSize);
-               } else {
-                       // wrap-around read operation
-                       ulChunkSize =
-                           pShbCirBuff->m_ulBufferDataSize - ulRdIndex;
-                       memset(pShbCirDataPtr + ulRdIndex, 0xDD, ulChunkSize);
-                       memset(pShbCirDataPtr, 0xDD, ulDataSize - ulChunkSize);
-               }
-
-               ClrShbCirBlockSize.m_uiFullBlockSize = /*(unsigned int) */ -1;  // -1 = xFFFFFFF
-               ClrShbCirBlockSize.m_uiAlignFillBytes = /*(unsigned int) */ -1; // -1 = Fxxxxxxx
-               *(tShbCirBlockSize *) (pShbCirDataPtr +
-                                      pShbCirBuff->m_ulRdIndex) =
-                   ClrShbCirBlockSize;
-       }
-#endif // #ifndef NDEBUG
-
-       // set new size of readable data, data in use, new read index
-       // and adjust number of readable blocks
-       ShbIpcEnterAtomicSection(pShbInstance_p);
-       {
-               pShbCirBuff->m_ulDataInUse -= ShbCirBlockSize.m_uiFullBlockSize;
-               pShbCirBuff->m_ulDataReadable -=
-                   ShbCirBlockSize.m_uiFullBlockSize;
-               pShbCirBuff->m_ulBlocksReadable--;
-
-               //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
-               if ((pShbCirBuff->m_ulDataInUse == 0)
-                   && (pShbCirBuff->m_ulDataReadable == 0)) {
-                       ASSERT(pShbCirBuff->m_ulBlocksReadable == 0);
-
-                       pShbCirBuff->m_ulWrIndex = 0;
-                       pShbCirBuff->m_ulRdIndex = 0;
-               } else
-                       //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
-               {
-                       pShbCirBuff->m_ulRdIndex +=
-                           ShbCirBlockSize.m_uiFullBlockSize;
-                       pShbCirBuff->m_ulRdIndex %=
-                           pShbCirBuff->m_ulBufferDataSize;
-               }
-       }
-       ShbIpcLeaveAtomicSection(pShbInstance_p);
-
-      Exit:
-
-       *pulDataBlockSize_p = ulDataSize;
-
-       return (ShbError);
-
-}
-
-//---------------------------------------------------------------------------
-//  Get data size of next readable block from Circular Shared Buffer
-//---------------------------------------------------------------------------
-
-tShbError ShbCirGetReadDataSize(tShbInstance pShbInstance_p,
-                               unsigned long *pulDataBlockSize_p)
-{
-
-       tShbCirBuff *pShbCirBuff;
-       unsigned long ulDataReadable;
-       unsigned char *pShbCirDataPtr;
-       tShbCirBlockSize ShbCirBlockSize;
-       unsigned long ulDataSize;
-       tShbError ShbError;
-
-       // check arguments
-       if ((pShbInstance_p == NULL) || (pulDataBlockSize_p == NULL)) {
-               return (kShbInvalidArg);
-       }
-
-       pShbCirBuff = ShbCirGetBuffer(pShbInstance_p);
-       ulDataSize = 0;
-       ShbError = kShbOk;
-
-       if (pShbCirBuff->m_ShbCirMagicID != SBC_MAGIC_ID) {
-               ShbError = kShbInvalidBufferType;
-               goto Exit;
-       }
-
-       // get total number of readable bytes for the whole circular buffer
-       ShbIpcEnterAtomicSection(pShbInstance_p);
-       {
-               ulDataReadable = pShbCirBuff->m_ulDataReadable;
-       }
-       ShbIpcLeaveAtomicSection(pShbInstance_p);
-
-       // if there are readable data available, then there must be at least
-       // one complete readable data block
-       if (ulDataReadable > 0) {
-               pShbCirDataPtr =
-                   &pShbCirBuff->m_Data + pShbCirBuff->m_ulRdIndex;
-
-               // get real size of current block (incl. alignment fill bytes)
-               ShbCirBlockSize = *(tShbCirBlockSize *) pShbCirDataPtr;
-
-               // get size of user data inside the current block
-               ulDataSize =
-                   ShbCirBlockSize.m_uiFullBlockSize -
-                   ShbCirBlockSize.m_uiAlignFillBytes;
-               ulDataSize -= sizeof(tShbCirBlockSize);
-       }
-
-      Exit:
-
-       *pulDataBlockSize_p = ulDataSize;
-
-       return (ShbError);
-
-}
-
-//---------------------------------------------------------------------------
-//  Get number of readable blocks from Circular Shared Buffer
-//---------------------------------------------------------------------------
-
-tShbError ShbCirGetReadBlockCount(tShbInstance pShbInstance_p,
-                                 unsigned long *pulDataBlockCount_p)
-{
-
-       tShbCirBuff *pShbCirBuff;
-       unsigned long ulBlockCount;
-       tShbError ShbError;
-
-       // check arguments
-       if ((pShbInstance_p == NULL) || (pulDataBlockCount_p == NULL)) {
-               ShbError = kShbInvalidArg;
-               goto Exit;
-       }
-
-       pShbCirBuff = ShbCirGetBuffer(pShbInstance_p);
-       ulBlockCount = 0;
-       ShbError = kShbOk;
-
-       if (pShbCirBuff->m_ShbCirMagicID != SBC_MAGIC_ID) {
-               ShbError = kShbInvalidBufferType;
-               goto Exit;
-       }
-
-       ShbIpcEnterAtomicSection(pShbInstance_p);
-       {
-               ulBlockCount = pShbCirBuff->m_ulBlocksReadable;
-       }
-       ShbIpcLeaveAtomicSection(pShbInstance_p);
-
-       *pulDataBlockCount_p = ulBlockCount;
-
-      Exit:
-
-       return (ShbError);
-
-}
-
-//---------------------------------------------------------------------------
-//  Set application handler to signal new data for Circular Shared Buffer
-//  d.k.: new parameter priority as enum
-//---------------------------------------------------------------------------
-
-tShbError ShbCirSetSignalHandlerNewData(tShbInstance pShbInstance_p,
-                                       tShbCirSigHndlrNewData pfnSignalHandlerNewData_p,
-                                       tShbPriority ShbPriority_p)
-{
-
-       tShbCirBuff *pShbCirBuff;
-       tShbError ShbError;
-
-       // check arguments
-       if (pShbInstance_p == NULL) {
-               ShbError = kShbInvalidArg;
-               goto Exit;
-       }
-
-       pShbCirBuff = ShbCirGetBuffer(pShbInstance_p);
-       ShbError = kShbOk;
-
-       if (pShbCirBuff->m_ShbCirMagicID != SBC_MAGIC_ID) {
-               ShbError = kShbInvalidBufferType;
-               goto Exit;
-       }
-
-       if (pfnSignalHandlerNewData_p != NULL) {
-               // set a new signal handler
-               if (pShbCirBuff->m_pfnSigHndlrNewData != NULL) {
-                       ShbError = kShbAlreadySignaling;
-                       goto Exit;
-               }
-
-               pShbCirBuff->m_pfnSigHndlrNewData = pfnSignalHandlerNewData_p;
-               ShbError =
-                   ShbIpcStartSignalingNewData(pShbInstance_p,
-                                               ShbCirSignalHandlerNewData,
-                                               ShbPriority_p);
-       } else {
-               // remove existing signal handler
-               ShbError = ShbIpcStopSignalingNewData(pShbInstance_p);
-               if (pShbCirBuff->m_pfnSigHndlrNewData != NULL) {
-                       pShbCirBuff->m_pfnSigHndlrNewData(pShbInstance_p, 0);
-               }
-               pShbCirBuff->m_pfnSigHndlrNewData = NULL;
-       }
-
-      Exit:
-
-       return (ShbError);
-
-}
-
-//---------------------------------------------------------------------------
-//  DEBUG: Trace Circular Shared Buffer
-//---------------------------------------------------------------------------
-
-#ifndef NDEBUG
-tShbError ShbCirTraceBuffer(tShbInstance pShbInstance_p)
-{
-
-       tShbCirBuff *pShbCirBuff;
-       char szMagigID[sizeof(SBC_MAGIC_ID) + 1];
-       tShbCirBlockSize ShbCirBlockSize;
-       unsigned long ulDataReadable;
-       unsigned char *pShbCirDataPtr;
-       unsigned long ulBlockIndex;
-       unsigned int nBlockCount;
-       unsigned long ulDataSize;
-       unsigned long ulChunkSize;
-       unsigned long ulRdIndex;
-       tShbError ShbError;
-
-       TRACE0("\n\n##### Circular Shared Buffer #####\n");
-
-       // check arguments
-       if (pShbInstance_p == NULL) {
-               TRACE1("\nERROR: invalid buffer address (0x%08lX)\n",
-                      (unsigned long)pShbInstance_p);
-               ShbError = kShbInvalidArg;
-               goto Exit;
-       }
-
-       pShbCirBuff = ShbCirGetBuffer(pShbInstance_p);
-       ShbError = kShbOk;
-
-       if (pShbCirBuff->m_ShbCirMagicID != SBC_MAGIC_ID) {
-               ShbError = kShbInvalidBufferType;
-               goto Exit;
-       }
-
-       *(unsigned long *)&szMagigID[0] = pShbCirBuff->m_ShbCirMagicID;
-       szMagigID[sizeof(SBC_MAGIC_ID)] = '\0';
-
-       ShbIpcEnterAtomicSection(pShbInstance_p);
-       {
-               TRACE1("\nBuffer Address:   0x%08lX\n",
-                      (unsigned long)pShbCirBuff);
-
-               TRACE0("\nHeader Info:");
-               TRACE2("\nMagigID:          '%s' (%08lX)", szMagigID,
-                      pShbCirBuff->m_ShbCirMagicID);
-               TRACE1("\nBufferTotalSize:  %4lu [Bytes]",
-                      pShbCirBuff->m_ulBufferTotalSize);
-               TRACE1("\nBufferDataSize:   %4lu [Bytes]",
-                      pShbCirBuff->m_ulBufferDataSize);
-               TRACE1("\nWrIndex:          %4lu", pShbCirBuff->m_ulWrIndex);
-               TRACE1("\nRdIndex:          %4lu", pShbCirBuff->m_ulRdIndex);
-               TRACE1("\nNumOfWriteJobs:   %4lu",
-                      pShbCirBuff->m_ulNumOfWriteJobs);
-               TRACE1("\nDataInUse:        %4lu [Bytes]",
-                      pShbCirBuff->m_ulDataInUse);
-               TRACE1("\nDataApended:      %4lu [Bytes]",
-                      pShbCirBuff->m_ulDataApended);
-               TRACE1("\nBlocksApended:    %4lu",
-                      pShbCirBuff->m_ulBlocksApended);
-               TRACE1("\nDataReadable:     %4lu [Bytes]",
-                      pShbCirBuff->m_ulDataReadable);
-               TRACE1("\nBlocksReadable:   %4lu",
-                      pShbCirBuff->m_ulBlocksReadable);
-               TRACE1("\nSigHndlrNewData:  %08lX",
-                      (unsigned long)pShbCirBuff->m_pfnSigHndlrNewData);
-               TRACE1("\nBufferLocked:     %d", pShbCirBuff->m_fBufferLocked);
-               TRACE1("\nSigHndlrReset:    %08lX",
-                      (unsigned long)pShbCirBuff->m_pfnSigHndlrReset);
-
-               ShbTraceDump(&pShbCirBuff->m_Data,
-                            pShbCirBuff->m_ulBufferDataSize, 0x00000000L,
-                            "\nData Area:");
-
-               ulDataReadable = pShbCirBuff->m_ulDataReadable;
-               nBlockCount = 1;
-               ulBlockIndex = pShbCirBuff->m_ulRdIndex;
-
-               while (ulDataReadable > 0) {
-                       TRACE1("\n\n--- Block #%u ---", nBlockCount);
-
-                       // get pointer to start of data area and current read index
-                       pShbCirDataPtr = &pShbCirBuff->m_Data;  // ptr to start of data area
-                       ulRdIndex = ulBlockIndex;
-
-                       // get real size of current block (incl. alignment fill bytes)
-                       ShbCirBlockSize =
-                           *(tShbCirBlockSize *) (pShbCirDataPtr + ulRdIndex);
-                       ulRdIndex += sizeof(tShbCirBlockSize);
-                       ulRdIndex %= pShbCirBuff->m_ulBufferDataSize;
-
-                       // get size of user data inside the current block
-                       ulDataSize =
-                           ShbCirBlockSize.m_uiFullBlockSize -
-                           ShbCirBlockSize.m_uiAlignFillBytes;
-                       ulDataSize -= sizeof(tShbCirBlockSize);
-
-                       TRACE1
-                           ("\nFull Data Size:       %4u [Bytes] (incl. header and alignment fill bytes)",
-                            ShbCirBlockSize.m_uiFullBlockSize);
-                       TRACE1("\nUser Data Size:       %4lu [Bytes]",
-                              ulDataSize);
-                       TRACE1("\nAlignment Fill Bytes: %4u [Bytes]",
-                              ShbCirBlockSize.m_uiAlignFillBytes);
-
-                       if (ulRdIndex + ulDataSize <=
-                           pShbCirBuff->m_ulBufferDataSize) {
-                               // linear data buffer
-                               ShbTraceDump(pShbCirDataPtr + ulRdIndex,
-                                            ulDataSize, 0x00000000L, NULL);
-                       } else {
-                               // wrap-around data buffer
-                               ulChunkSize =
-                                   pShbCirBuff->m_ulBufferDataSize - ulRdIndex;
-                               ShbTraceDump(pShbCirDataPtr + ulRdIndex,
-                                            ulChunkSize, 0x00000000L, NULL);
-                               ShbTraceDump(pShbCirDataPtr,
-                                            ulDataSize - ulChunkSize,
-                                            ulChunkSize, NULL);
-                       }
-
-                       nBlockCount++;
-
-                       ulBlockIndex += ShbCirBlockSize.m_uiFullBlockSize;
-                       ulBlockIndex %= pShbCirBuff->m_ulBufferDataSize;
-
-                       ulDataReadable -= ShbCirBlockSize.m_uiFullBlockSize;
-               }
-
-               ASSERT(pShbCirBuff->m_ulBlocksReadable == nBlockCount - 1);
-       }
-       ShbIpcLeaveAtomicSection(pShbInstance_p);
-
-      Exit:
-
-       return (ShbError);
-
-}
-#endif
-
-//-------------------------------------------------------------------------//
-//                                                                         //
-//          L i n e a r   S h a r e d   B u f f e r                        //
-//                                                                         //
-//-------------------------------------------------------------------------//
-
-//---------------------------------------------------------------------------
-//  Allocate Linear Shared Buffer
-//---------------------------------------------------------------------------
-
-tShbError ShbLinAllocBuffer(unsigned long ulBufferSize_p,
-                           const char *pszBufferID_p,
-                           tShbInstance * ppShbInstance_p,
-                           unsigned int *pfShbNewCreated_p)
-{
-
-       tShbInstance pShbInstance;
-       tShbLinBuff *pShbLinBuff;
-       unsigned int fShbNewCreated;
-       unsigned long ulBufferDataSize;
-       unsigned long ulBufferTotalSize;
-       tShbError ShbError;
-
-       // check arguments
-       if ((ulBufferSize_p == 0) || (ppShbInstance_p == NULL)) {
-               return (kShbInvalidArg);
-       }
-
-       // calculate length of memory to allocate
-       ulBufferDataSize =
-           (ulBufferSize_p +
-            (SBL_BLOCK_ALIGNMENT - 1)) & ~(SBL_BLOCK_ALIGNMENT - 1);
-       ulBufferTotalSize = ulBufferDataSize + sizeof(tShbLinBuff);
-
-       // allocate a new or open an existing shared buffer
-       ShbError = ShbIpcAllocBuffer(ulBufferTotalSize, pszBufferID_p,
-                                    &pShbInstance, &fShbNewCreated);
-       if (ShbError != kShbOk) {
-               goto Exit;
-       }
-
-       if (pShbInstance == NULL) {
-               ShbError = kShbOutOfMem;
-               goto Exit;
-       }
-
-       // get pointer to shared buffer
-       pShbLinBuff = (tShbLinBuff *) ShbIpcGetShMemPtr(pShbInstance);
-
-       // if the shared buffer was new created, than this process has
-       // to initialize it, otherwise the buffer is already in use
-       // and *must not* be reseted
-       if (fShbNewCreated) {
-#ifndef NDEBUG
-               {
-                       memset(pShbLinBuff, 0xCC, ulBufferTotalSize);
-               }
-#endif
-
-               pShbLinBuff->m_ShbLinMagicID = SBL_MAGIC_ID;
-               pShbLinBuff->m_ulBufferTotalSize = ulBufferTotalSize;
-               pShbLinBuff->m_ulBufferDataSize = ulBufferDataSize;
-       } else {
-               if (pShbLinBuff->m_ShbLinMagicID != SBL_MAGIC_ID) {
-                       ShbError = kShbInvalidBufferType;
-                       goto Exit;
-               }
-       }
-
-      Exit:
-
-       *ppShbInstance_p = pShbInstance;
-       *pfShbNewCreated_p = fShbNewCreated;
-
-       return (ShbError);
-
-}
-
-//---------------------------------------------------------------------------
-//  Release Linear Shared Buffer
-//---------------------------------------------------------------------------
-
-tShbError ShbLinReleaseBuffer(tShbInstance pShbInstance_p)
-{
-
-       tShbError ShbError;
-
-       // check arguments
-       if (pShbInstance_p == NULL) {
-               ShbError = kShbOk;
-               goto Exit;
-       }
-
-       ShbError = ShbIpcReleaseBuffer(pShbInstance_p);
-
-      Exit:
-
-       return (ShbError);
-
-}
-
-//---------------------------------------------------------------------------
-//  Write data block to Linear Shared Buffer
-//---------------------------------------------------------------------------
-tShbError ShbLinWriteDataBlock(tShbInstance pShbInstance_p,
-                              unsigned long ulDstBufferOffs_p,
-                              const void *pSrcDataBlock_p,
-                              unsigned long ulDataBlockSize_p)
-{
-
-       tShbLinBuff *pShbLinBuff;
-       unsigned char *pShbLinDataPtr;
-       unsigned char *pScrDataPtr;
-       unsigned long ulBufferDataSize;
-       tShbError ShbError;
-
-       // check arguments
-       if (pShbInstance_p == NULL) {
-               ShbError = kShbInvalidArg;
-               goto Exit;
-       }
-
-       if ((pSrcDataBlock_p == NULL) || (ulDataBlockSize_p == 0)) {
-               // nothing to do here
-               ShbError = kShbOk;
-               goto Exit;
-       }
-
-       if (ulDataBlockSize_p > SBL_MAX_BLOCK_SIZE) {
-               ShbError = kShbExceedDataSizeLimit;
-               goto Exit;
-       }
-
-       pShbLinBuff = ShbLinGetBuffer(pShbInstance_p);
-       pScrDataPtr = (unsigned char *)pSrcDataBlock_p;
-       ShbError = kShbOk;
-
-       if (pShbLinBuff->m_ShbLinMagicID != SBL_MAGIC_ID) {
-               ShbError = kShbInvalidBufferType;
-               goto Exit;
-       }
-
-       // check if offeset and size for the write operation matches with
-       // the size of the shared buffer
-       ulBufferDataSize = pShbLinBuff->m_ulBufferDataSize;
-       if ((ulDstBufferOffs_p > ulBufferDataSize) ||
-           (ulDataBlockSize_p > ulBufferDataSize) ||
-           ((ulDstBufferOffs_p + ulDataBlockSize_p) > ulBufferDataSize)) {
-               ShbError = kShbDataOutsideBufferArea;
-               goto Exit;
-       }
-
-       // copy the data to the linear buffer
-       // (the copy process will be done inside of any critical/locked section)
-       pShbLinDataPtr = &pShbLinBuff->m_Data;  // ptr to start of data area
-       pShbLinDataPtr += ulDstBufferOffs_p;
-
-       ShbIpcEnterAtomicSection(pShbInstance_p);
-       {
-               memcpy(pShbLinDataPtr, pScrDataPtr, ulDataBlockSize_p);
-       }
-       ShbIpcLeaveAtomicSection(pShbInstance_p);
-
-      Exit:
-
-       return (ShbError);
-
-}
-
-//---------------------------------------------------------------------------
-//  Read data block from Linear Shared Buffer
-//---------------------------------------------------------------------------
-tShbError ShbLinReadDataBlock(tShbInstance pShbInstance_p,
-                             void *pDstDataBlock_p,
-                             unsigned long ulSrcBufferOffs_p,
-                             unsigned long ulDataBlockSize_p)
-{
-
-       tShbLinBuff *pShbLinBuff;
-       unsigned char *pShbLinDataPtr;
-       unsigned char *pDstDataPtr;
-       unsigned long ulBufferDataSize;
-       tShbError ShbError;
-
-       // check arguments
-       if (pShbInstance_p == NULL) {
-               ShbError = kShbInvalidArg;
-               goto Exit;
-       }
-
-       if ((pDstDataBlock_p == NULL) || (ulDataBlockSize_p == 0)) {
-               // nothing to do here
-               ShbError = kShbOk;
-               goto Exit;
-       }
-
-       if (ulDataBlockSize_p > SBL_MAX_BLOCK_SIZE) {
-               ShbError = kShbExceedDataSizeLimit;
-               goto Exit;
-       }
-
-       pShbLinBuff = ShbLinGetBuffer(pShbInstance_p);
-       pDstDataPtr = (unsigned char *)pDstDataBlock_p;
-       ShbError = kShbOk;
-
-       if (pShbLinBuff->m_ShbLinMagicID != SBL_MAGIC_ID) {
-               ShbError = kShbInvalidBufferType;
-               goto Exit;
-       }
-
-       // check if offeset and size for the read operation matches with
-       // the size of the shared buffer
-       ulBufferDataSize = pShbLinBuff->m_ulBufferDataSize;
-       if ((ulSrcBufferOffs_p > ulBufferDataSize) ||
-           (ulDataBlockSize_p > ulBufferDataSize) ||
-           ((ulSrcBufferOffs_p + ulDataBlockSize_p) > ulBufferDataSize)) {
-               ShbError = kShbDataOutsideBufferArea;
-               goto Exit;
-       }
-
-       // copy the data to the linear buffer
-       // (the copy process will be done inside of any critical/locked section)
-       pShbLinDataPtr = &pShbLinBuff->m_Data;  // ptr to start of data area
-       pShbLinDataPtr += ulSrcBufferOffs_p;
-
-       ShbIpcEnterAtomicSection(pShbInstance_p);
-       {
-               memcpy(pDstDataPtr, pShbLinDataPtr, ulDataBlockSize_p);
-       }
-       ShbIpcLeaveAtomicSection(pShbInstance_p);
-
-      Exit:
-
-       return (ShbError);
-
-}
-
-//---------------------------------------------------------------------------
-//  DEBUG: Trace Linear Shared Buffer
-//---------------------------------------------------------------------------
-
-#ifndef NDEBUG
-tShbError ShbLinTraceBuffer(tShbInstance pShbInstance_p)
-{
-
-       tShbLinBuff *pShbLinBuff;
-       char szMagigID[sizeof(SBL_MAGIC_ID) + 1];
-       tShbError ShbError;
-
-       TRACE0("\n\n##### Linear Shared Buffer #####\n");
-
-       // check arguments
-       if (pShbInstance_p == NULL) {
-               TRACE1("\nERROR: invalid buffer address (0x%08lX)\n",
-                      (unsigned long)pShbInstance_p);
-               ShbError = kShbInvalidArg;
-               goto Exit;
-       }
-
-       pShbLinBuff = ShbLinGetBuffer(pShbInstance_p);
-       ShbError = kShbOk;
-
-       if (pShbLinBuff->m_ShbLinMagicID != SBL_MAGIC_ID) {
-               ShbError = kShbInvalidBufferType;
-               goto Exit;
-       }
-
-       *(unsigned int *)&szMagigID[0] = pShbLinBuff->m_ShbLinMagicID;
-       szMagigID[sizeof(SBL_MAGIC_ID)] = '\0';
-
-       ShbIpcEnterAtomicSection(pShbInstance_p);
-       {
-               TRACE1("\nBuffer Address:   0x%08lX\n",
-                      (unsigned long)pShbLinBuff);
-
-               TRACE0("\nHeader Info:");
-               TRACE2("\nMagigID:          '%s' (%08X)", szMagigID,
-                      pShbLinBuff->m_ShbLinMagicID);
-               TRACE1("\nBufferTotalSize:  %4lu [Bytes]",
-                      pShbLinBuff->m_ulBufferTotalSize);
-               TRACE1("\nBufferDataSize:   %4lu [Bytes]",
-                      pShbLinBuff->m_ulBufferDataSize);
-
-               ShbTraceDump(&pShbLinBuff->m_Data,
-                            pShbLinBuff->m_ulBufferDataSize, 0x00000000L,
-                            "\nData Area:");
-       }
-       ShbIpcLeaveAtomicSection(pShbInstance_p);
-
-      Exit:
-
-       return (ShbError);
-
-}
-#endif
-
-//---------------------------------------------------------------------------
-//  Dump buffer contents
-//---------------------------------------------------------------------------
-
-#ifndef NDEBUG
-tShbError ShbTraceDump(const unsigned char *pabStartAddr_p,
-                      unsigned long ulDataSize_p,
-                      unsigned long ulAddrOffset_p, const char *pszInfoText_p)
-{
-
-       const unsigned char *pabBuffData;
-       unsigned long ulBuffSize;
-       unsigned char bData;
-       int nRow;
-       int nCol;
-
-       // get pointer to buffer and length of buffer
-       pabBuffData = pabStartAddr_p;
-       ulBuffSize = ulDataSize_p;
-
-       if (pszInfoText_p != NULL) {
-               TRACE1("%s", pszInfoText_p);
-       }
-       // dump buffer contents
-       for (nRow = 0;; nRow++) {
-               TRACE1("\n%08lX:   ",
-                      (unsigned long)(nRow * 0x10) + ulAddrOffset_p);
-
-               for (nCol = 0; nCol < 16; nCol++) {
-                       if ((unsigned long)nCol < ulBuffSize) {
-                               TRACE1("%02X ",
-                                      (unsigned int)*(pabBuffData + nCol));
-                       } else {
-                               TRACE0("   ");
-                       }
-               }
-
-               TRACE0(" ");
-
-               for (nCol = 0; nCol < 16; nCol++) {
-                       bData = *pabBuffData++;
-                       if ((unsigned long)nCol < ulBuffSize) {
-                               if ((bData >= 0x20) && (bData < 0x7F)) {
-                                       TRACE1("%c", bData);
-                               } else {
-                                       TRACE0(".");
-                               }
-                       } else {
-                               TRACE0(" ");
-                       }
-               }
-
-               if (ulBuffSize > 16) {
-                       ulBuffSize -= 16;
-               } else {
-                       break;
-               }
-       }
-
-       return (kShbOk);
-
-}
-#endif // #ifndef NDEBUG
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//  Handler to signal new data event for Circular Shared Buffer
-//---------------------------------------------------------------------------
-
-int ShbCirSignalHandlerNewData(tShbInstance pShbInstance_p)
-{
-
-       tShbCirBuff *pShbCirBuff;
-       unsigned long ulDataSize;
-       unsigned long ulBlockCount;
-       tShbError ShbError;
-
-       // check arguments
-       if (pShbInstance_p == NULL) {
-               return FALSE;
-       }
-
-       pShbCirBuff = ShbCirGetBuffer(pShbInstance_p);
-       ShbError = kShbOk;
-
-       if (pShbCirBuff->m_ShbCirMagicID != SBC_MAGIC_ID) {
-               return FALSE;
-       }
-
-       // call application handler
-       if (pShbCirBuff->m_pfnSigHndlrNewData != NULL) {
-/*        do
-        {*/
-               ShbError = ShbCirGetReadDataSize(pShbInstance_p, &ulDataSize);
-               if ((ulDataSize > 0) && (ShbError == kShbOk)) {
-                       pShbCirBuff->m_pfnSigHndlrNewData(pShbInstance_p,
-                                                         ulDataSize);
-               }
-
-               ShbError =
-                   ShbCirGetReadBlockCount(pShbInstance_p, &ulBlockCount);
-/*        }
-        while ((ulBlockCount > 0) && (ShbError == kShbOk));*/
-       }
-       // Return TRUE if there are pending blocks.
-       // In that case ShbIpc tries to call this function again immediately if there
-       // is no other filled shared buffer with higher priority.
-       return ((ulBlockCount > 0) && (ShbError == kShbOk));
-
-}
-
-//---------------------------------------------------------------------------
-//  Handler to reset Circular Shared Buffer
-//---------------------------------------------------------------------------
-
-void ShbCirSignalHandlerReset(tShbInstance pShbInstance_p,
-                             unsigned int fTimeOut_p)
-{
-
-       tShbCirBuff *pShbCirBuff;
-
-       // check arguments
-       if (pShbInstance_p == NULL) {
-               return;
-       }
-
-       pShbCirBuff = ShbCirGetBuffer(pShbInstance_p);
-       if (pShbCirBuff->m_ShbCirMagicID != SBC_MAGIC_ID) {
-               return;
-       }
-
-       // reset buffer header
-       if (!fTimeOut_p) {
-               ShbIpcEnterAtomicSection(pShbInstance_p);
-               {
-                       pShbCirBuff->m_ulWrIndex = 0;
-                       pShbCirBuff->m_ulRdIndex = 0;
-                       pShbCirBuff->m_ulNumOfWriteJobs = 0;
-                       pShbCirBuff->m_ulDataInUse = 0;
-                       pShbCirBuff->m_ulDataApended = 0;
-                       pShbCirBuff->m_ulBlocksApended = 0;
-                       pShbCirBuff->m_ulDataReadable = 0;
-                       pShbCirBuff->m_ulBlocksReadable = 0;
-               }
-               ShbIpcLeaveAtomicSection(pShbInstance_p);
-
-#ifndef NDEBUG
-               {
-                       memset(&pShbCirBuff->m_Data, 0xCC,
-                              pShbCirBuff->m_ulBufferDataSize);
-               }
-#endif
-       }
-
-       // call application handler
-       if (pShbCirBuff->m_pfnSigHndlrReset != NULL) {
-               pShbCirBuff->m_pfnSigHndlrReset(pShbInstance_p, fTimeOut_p);
-       }
-
-       // unlock buffer
-       ShbIpcEnterAtomicSection(pShbInstance_p);
-       {
-               pShbCirBuff->m_fBufferLocked = FALSE;
-               pShbCirBuff->m_pfnSigHndlrReset = NULL;
-       }
-       ShbIpcLeaveAtomicSection(pShbInstance_p);
-
-       return;
-
-}
-
-// EOF
diff --git a/drivers/staging/epl/SharedBuff.h b/drivers/staging/epl/SharedBuff.h
deleted file mode 100644 (file)
index 4edbd0b..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      Project independend shared buffer (linear + circular)
-
-  Description:  Declaration of platform independend part for the
-                shared buffer
-
-  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.
-
-  -------------------------------------------------------------------------
-
-  2006/06/27 -rs:   V 1.00 (initial version)
-
-****************************************************************************/
-
-#ifndef _SHAREDBUFF_H_
-#define _SHAREDBUFF_H_
-
-//---------------------------------------------------------------------------
-//  Type definitions
-//---------------------------------------------------------------------------
-
-typedef enum {
-       kShbOk = 0,
-       kShbNoReadableData = 1,
-       kShbDataTruncated = 2,
-       kShbBufferFull = 3,
-       kShbDataOutsideBufferArea = 4,
-       kShbBufferAlreadyCompleted = 5,
-       kShbMemUsedByOtherProcs = 6,
-       kShbOpenMismatch = 7,
-       kShbInvalidBufferType = 8,
-       kShbInvalidArg = 9,
-       kShbBufferInvalid = 10,
-       kShbOutOfMem = 11,
-       kShbAlreadyReseting = 12,
-       kShbAlreadySignaling = 13,
-       kShbExceedDataSizeLimit = 14,
-
-} tShbError;
-
-// 2006/08/24 d.k.: Priority for threads (new data, job signaling)
-typedef enum {
-       kShbPriorityLow = 0,
-       kShbPriorityNormal = 1,
-       kshbPriorityHigh = 2
-} tShbPriority;
-
-typedef struct {
-       unsigned int m_uiFullBlockSize; // real size of allocated block (incl. alignment fill bytes)
-       unsigned long m_ulAvailableSize;        // still available size for data
-       unsigned long m_ulWrIndex;      // current write index
-       unsigned int m_fBufferCompleted;        // TRUE if allocated block is complete filled with data
-
-} tShbCirChunk;
-
-typedef void *tShbInstance;
-
-typedef void (*tShbCirSigHndlrNewData) (tShbInstance pShbInstance_p,
-                                       unsigned long ulDataBlockSize_p);
-typedef void (*tShbCirSigHndlrReset) (tShbInstance pShbInstance_p,
-                                     unsigned int fTimeOut_p);
-
-//---------------------------------------------------------------------------
-//  Prototypes
-//---------------------------------------------------------------------------
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-       tShbError ShbInit(void);
-       tShbError ShbExit(void);
-
-// Circular Shared Buffer
-       tShbError ShbCirAllocBuffer(unsigned long ulBufferSize_p,
-                                   const char *pszBufferID_p,
-                                   tShbInstance * ppShbInstance_p,
-                                   unsigned int *pfShbNewCreated_p);
-       tShbError ShbCirReleaseBuffer(tShbInstance pShbInstance_p);
-
-
-       tShbError ShbCirResetBuffer(tShbInstance pShbInstance_p,
-                                   unsigned long ulTimeOut_p,
-                                   tShbCirSigHndlrReset
-                                   pfnSignalHandlerReset_p);
-       tShbError ShbCirWriteDataBlock(tShbInstance pShbInstance_p,
-                                      const void *pSrcDataBlock_p,
-                                      unsigned long ulDataBlockSize_p);
-       tShbError ShbCirAllocDataBlock(tShbInstance pShbInstance_p,
-                                      tShbCirChunk * pShbCirChunk_p,
-                                      unsigned long ulDataBufferSize_p);
-       tShbError ShbCirWriteDataChunk(tShbInstance pShbInstance_p,
-                                      tShbCirChunk * pShbCirChunk_p,
-                                      const void *pSrcDataChunk_p,
-                                      unsigned long ulDataChunkSize_p,
-                                      unsigned int *pfBufferCompleted_p);
-       tShbError ShbCirReadDataBlock(tShbInstance pShbInstance_p,
-                                     void *pDstDataBlock_p,
-                                     unsigned long ulRdBuffSize_p,
-                                     unsigned long *pulDataBlockSize_p);
-       tShbError ShbCirGetReadDataSize(tShbInstance pShbInstance_p,
-                                       unsigned long *pulDataBlockSize_p);
-       tShbError ShbCirGetReadBlockCount(tShbInstance pShbInstance_p,
-                                         unsigned long *pulDataBlockCount_p);
-       tShbError ShbCirSetSignalHandlerNewData(tShbInstance pShbInstance_p,
-                                               tShbCirSigHndlrNewData
-                                               pfnShbSignalHandlerNewData_p,
-                                               tShbPriority ShbPriority_p);
-
-
-// Linear Shared Buffer
-       tShbError ShbLinAllocBuffer(unsigned long ulBufferSize_p,
-                                   const char *pszBufferID_p,
-                                   tShbInstance * ppShbInstance_p,
-                                   unsigned int *pfShbNewCreated_p);
-       tShbError ShbLinReleaseBuffer(tShbInstance pShbInstance_p);
-
-
-       tShbError ShbLinWriteDataBlock(tShbInstance pShbInstance_p,
-                                      unsigned long ulDstBufferOffs_p,
-                                      const void *pSrcDataBlock_p,
-                                      unsigned long ulDataBlockSize_p);
-       tShbError ShbLinReadDataBlock(tShbInstance pShbInstance_p,
-                                     void *pDstDataBlock_p,
-                                     unsigned long ulSrcBufferOffs_p,
-                                     unsigned long ulDataBlockSize_p);
-
-
-#ifndef NDEBUG
-       tShbError ShbCirTraceBuffer(tShbInstance pShbInstance_p);
-       tShbError ShbLinTraceBuffer(tShbInstance pShbInstance_p);
-       tShbError ShbTraceDump(const unsigned char *pabStartAddr_p,
-                              unsigned long ulDataSize_p,
-                              unsigned long ulAddrOffset_p,
-                              const char *pszInfoText_p);
-#else
-#define ShbCirTraceBuffer(p0)
-#define ShbLinTraceBuffer(p0)
-#define ShbTraceDump(p0, p1, p2, p3)
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif                         // #ifndef _SHAREDBUFF_H_
diff --git a/drivers/staging/epl/ShbIpc-LinuxKernel.c b/drivers/staging/epl/ShbIpc-LinuxKernel.c
deleted file mode 100644 (file)
index 12d1ecc..0000000
+++ /dev/null
@@ -1,944 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      Project independend shared buffer (linear + circular)
-
-  Description:  Implementation of platform specific part for the
-                shared buffer
-                (Implementation for Linux KernelSpace)
-
-  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.
-
-  -------------------------------------------------------------------------
-
-  2006/06/28 -rs:   V 1.00 (initial version)
-
-****************************************************************************/
-
-#include "global.h"
-#include "SharedBuff.h"
-#include "ShbIpc.h"
-#include "ShbLinuxKernel.h"
-#include "Debug.h"
-
-#include <linux/string.h>
-#include <linux/module.h>
-#include <asm/processor.h>
-//#include <linux/vmalloc.h>
-#include <linux/sched.h>
-#include <linux/param.h>
-#include <linux/spinlock.h>
-#include <linux/wait.h>
-#include <linux/completion.h>
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-//  Configuration
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-//  Constant definitions
-//---------------------------------------------------------------------------
-
-#define MAX_LEN_BUFFER_ID       256
-
-#define TIMEOUT_ENTER_ATOMIC    1000   // (ms) for debgging: INFINITE
-#define TIMEOUT_TERM_THREAD     1000
-#define INFINITE                3600
-
-#define SBI_MAGIC_ID            0x5342492B     // magic ID ("SBI+")
-#define SBH_MAGIC_ID            0x5342482A     // magic ID ("SBH*")
-
-#define INVALID_ID              -1
-
-#define TABLE_SIZE              10
-
-//---------------------------------------------------------------------------
-//  Local types
-//---------------------------------------------------------------------------
-
-// This structure is the common header for the shared memory region used
-// by all processes attached this shared memory. It includes common
-// information to administrate/manage the shared buffer from a couple of
-// separated processes (e.g. the refernce counter). This structure is
-// located at the start of the shared memory region itself and exists
-// consequently only one times per shared memory instance.
-typedef struct {
-
-       unsigned long m_ulShMemSize;
-       unsigned long m_ulRefCount;
-       int m_iBufferId;
-//    int                 m_iUserSpaceMem;           //0 for userspace mem   !=0 kernelspace mem
-       spinlock_t m_SpinlockBuffAccess;
-       BOOL m_fNewData;
-       BOOL m_fJobReady;
-       wait_queue_head_t m_WaitQueueNewData;
-       wait_queue_head_t m_WaitQueueJobReady;
-
-#ifndef NDEBUG
-       unsigned long m_ulOwnerProcID;
-#endif
-
-} tShbMemHeader;
-
-// This structure is the "external entry point" from a separate process
-// to get access to a shared buffer. This structure includes all platform
-// resp. target specific information to administrate/manage the shared
-// buffer from a separate process. Every process attached to the shared
-// buffer has its own runtime instance of this structure with its individual
-// runtime data (e.g. the scope of an event handle is limitted to the
-// owner process only). The structure member <m_pShbMemHeader> points
-// to the (process specific) start address of the shared memory region
-// itself.
-typedef struct {
-       unsigned long m_SbiMagicID;     // magic ID ("SBI+")
-//    void*               m_pSharedMem;
-       int m_tThreadNewDataId;
-       long m_lThreadNewDataNice;      // nice value of the new data thread
-       int m_tThreadJobReadyId;
-       unsigned long m_ulFlagsBuffAccess;      // d.k. moved from tShbMemHeader, because each
-       // process needs to store the interrupt flags separately
-       tSigHndlrNewData m_pfnSigHndlrNewData;
-       unsigned long m_ulTimeOutJobReady;
-       tSigHndlrJobReady m_pfnSigHndlrJobReady;
-       tShbMemHeader *m_pShbMemHeader;
-       int m_iThreadTermFlag;
-       struct completion m_CompletionNewData;
-/*
-    struct semaphore    *m_pSemBuffAccess;
-    struct semaphore    *m_pSemNewData;
-    struct semaphore    *m_pSemStopSignalingNewData;
-    struct semaphore    *m_pSemJobReady;
-*/
-#ifndef NDEBUG
-       unsigned long m_ulThreadIDNewData;
-       unsigned long m_ulThreadIDJobReady;
-#endif
-} tShbMemInst;
-
-//---------------------------------------------------------------------------
-//  Prototypes of internal functions
-//---------------------------------------------------------------------------
-
-//tShbMemInst*            ShbIpcGetShbMemInst         (tShbInstance pShbInstance_p);
-//tShbMemHeader*          ShbIpcGetShbMemHeader       (tShbMemInst* pShbMemInst_p);
-
-//---------------------------------------------------------------------------
-//  Get pointer to process local information structure
-//---------------------------------------------------------------------------
-
-static inline tShbMemInst *ShbIpcGetShbMemInst(tShbInstance pShbInstance_p)
-{
-
-       tShbMemInst *pShbMemInst;
-
-       pShbMemInst = (tShbMemInst *) pShbInstance_p;
-
-       return (pShbMemInst);
-
-}
-
-//---------------------------------------------------------------------------
-//  Get pointer to shared memory header
-//---------------------------------------------------------------------------
-
-static inline tShbMemHeader *ShbIpcGetShbMemHeader(tShbMemInst * pShbMemInst_p)
-{
-
-       tShbMemHeader *pShbMemHeader;
-
-       pShbMemHeader = pShbMemInst_p->m_pShbMemHeader;
-
-       return (pShbMemHeader);
-
-}
-
-//  Get pointer to process local information structure
-//#define ShbIpcGetShbMemInst(pShbInstance_p) ((tShbMemInst*)pShbInstance_p)
-
-//  Get pointer to shared memory header
-//#define ShbIpcGetShbMemHeader(pShbMemInst_p) (pShbMemInst_p->m_pShbMemHeader)
-
-// not inlined internal functions
-int ShbIpcThreadSignalNewData(void *pvThreadParam_p);
-int ShbIpcThreadSignalJobReady(void *pvThreadParam_p);
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-struct sShbMemTable *psMemTableElementFirst_g;
-
-static void *ShbIpcAllocPrivateMem(unsigned long ulMemSize_p);
-static int ShbIpcFindListElement(int iBufferId,
-                                struct sShbMemTable
-                                **ppsReturnMemTableElement);
-static void ShbIpcAppendListElement(struct sShbMemTable *sNewMemTableElement);
-static void ShbIpcDeleteListElement(int iBufferId);
-static void ShbIpcCrc32GenTable(unsigned long aulCrcTable[256]);
-static unsigned long ShbIpcCrc32GetCrc(const char *pcString,
-                                      unsigned long aulCrcTable[256]);
-
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-// not inlined external functions
-
-//---------------------------------------------------------------------------
-//  Initialize IPC for Shared Buffer Module
-//---------------------------------------------------------------------------
-
-tShbError ShbIpcInit(void)
-{
-       psMemTableElementFirst_g = NULL;
-       return (kShbOk);
-
-}
-
-//---------------------------------------------------------------------------
-//  Deinitialize IPC for Shared Buffer Module
-//---------------------------------------------------------------------------
-
-tShbError ShbIpcExit(void)
-{
-
-       return (kShbOk);
-
-}
-
-//---------------------------------------------------------------------------
-//  Allocate Shared Buffer
-//---------------------------------------------------------------------------
-
-tShbError ShbIpcAllocBuffer(unsigned long ulBufferSize_p,
-                           const char *pszBufferID_p,
-                           tShbInstance * ppShbInstance_p,
-                           unsigned int *pfShbNewCreated_p)
-{
-       tShbError ShbError;
-       int iBufferId = 0;
-       unsigned long ulCrc32 = 0;
-       unsigned int uiFirstProcess = 0;
-       unsigned long ulShMemSize;
-       tShbMemHeader *pShbMemHeader;
-       tShbMemInst *pShbMemInst = NULL;
-       tShbInstance pShbInstance;
-       unsigned int fShMemNewCreated = FALSE;
-       void *pSharedMem = NULL;
-       unsigned long aulCrcTable[256];
-       struct sShbMemTable *psMemTableElement;
-
-       DEBUG_LVL_29_TRACE0("ShbIpcAllocBuffer \n");
-       ulShMemSize = ulBufferSize_p + sizeof(tShbMemHeader);
-
-       //create Buffer ID
-       ShbIpcCrc32GenTable(aulCrcTable);
-       ulCrc32 = ShbIpcCrc32GetCrc(pszBufferID_p, aulCrcTable);
-       iBufferId = ulCrc32;
-       DEBUG_LVL_29_TRACE2
-           ("ShbIpcAllocBuffer BufferSize:%d sizeof(tShb..):%d\n",
-            ulBufferSize_p, sizeof(tShbMemHeader));
-       DEBUG_LVL_29_TRACE2("ShbIpcAllocBuffer BufferId:%d MemSize:%d\n",
-                           iBufferId, ulShMemSize);
-       //---------------------------------------------------------------
-       // (1) open an existing or create a new shared memory
-       //---------------------------------------------------------------
-       //test if buffer already exists
-       if (ShbIpcFindListElement(iBufferId, &psMemTableElement) == 0) {
-               //Buffer already exists
-               fShMemNewCreated = FALSE;
-               pSharedMem = psMemTableElement->m_pBuffer;
-               DEBUG_LVL_29_TRACE1
-                   ("ShbIpcAllocBuffer attach Buffer at:%p Id:%d\n",
-                    pSharedMem);
-               uiFirstProcess = 1;
-       } else {
-               //create new Buffer
-               fShMemNewCreated = TRUE;
-               uiFirstProcess = 0;
-               pSharedMem = kmalloc(ulShMemSize, GFP_KERNEL);
-               DEBUG_LVL_29_TRACE2
-                   ("ShbIpcAllocBuffer Create New Buffer at:%p Id:%d\n",
-                    pSharedMem, iBufferId);
-               if (pSharedMem == NULL) {
-                       //unable to create mem
-                       ShbError = kShbOutOfMem;
-                       goto Exit;
-               }
-               DEBUG_LVL_29_TRACE0("ShbIpcAllocBuffer create semas\n");
-               // append Element to Mem Table
-               psMemTableElement =
-                   kmalloc(sizeof(struct sShbMemTable), GFP_KERNEL);
-               psMemTableElement->m_iBufferId = iBufferId;
-               psMemTableElement->m_pBuffer = pSharedMem;
-               psMemTableElement->m_psNextMemTableElement = NULL;
-               ShbIpcAppendListElement(psMemTableElement);
-       }
-
-       DEBUG_LVL_29_TRACE0("ShbIpcAllocBuffer update header\n");
-       //update header
-       pShbMemHeader = (tShbMemHeader *) pSharedMem;
-       DEBUG_LVL_29_TRACE1
-           ("ShbIpcAllocBuffer 0 pShbMemHeader->m_ulShMemSize: %d\n",
-            pShbMemHeader->m_ulShMemSize);
-       // allocate a memory block from process specific mempool to save
-       // process local information to administrate/manage the shared buffer
-       DEBUG_LVL_29_TRACE0("ShbIpcAllocBuffer alloc private mem\n");
-       pShbMemInst =
-           (tShbMemInst *) ShbIpcAllocPrivateMem(sizeof(tShbMemInst));
-       if (pShbMemInst == NULL) {
-               ShbError = kShbOutOfMem;
-               goto Exit;
-       }
-       // reset complete header to default values
-       //pShbMemInst->m_SbiMagicID                             = SBI_MAGIC_ID;
-//    pShbMemInst->m_pSharedMem                               = pSharedMem;
-       pShbMemInst->m_tThreadNewDataId = INVALID_ID;
-       pShbMemInst->m_tThreadJobReadyId = INVALID_ID;
-       pShbMemInst->m_pfnSigHndlrNewData = NULL;
-       pShbMemInst->m_ulTimeOutJobReady = 0;
-       pShbMemInst->m_pfnSigHndlrJobReady = NULL;
-       pShbMemInst->m_pShbMemHeader = pShbMemHeader;
-       pShbMemInst->m_iThreadTermFlag = 0;
-
-       // initialize completion etc.
-       init_completion(&pShbMemInst->m_CompletionNewData);
-
-       ShbError = kShbOk;
-       if (fShMemNewCreated) {
-               // this process was the first who wanted to use the shared memory,
-               // so a new shared memory was created
-               // -> setup new header information inside the shared memory region
-               //    itself
-               pShbMemHeader->m_ulShMemSize = ulShMemSize;
-               pShbMemHeader->m_ulRefCount = 1;
-               pShbMemHeader->m_iBufferId = iBufferId;
-               // initialize spinlock
-               spin_lock_init(&pShbMemHeader->m_SpinlockBuffAccess);
-               // initialize wait queues
-               init_waitqueue_head(&pShbMemHeader->m_WaitQueueNewData);
-               init_waitqueue_head(&pShbMemHeader->m_WaitQueueJobReady);
-       } else {
-               // any other process has created the shared memory and this
-               // process only has to attach to it
-               // -> check and update existing header information inside the
-               //    shared memory region itself
-               if (pShbMemHeader->m_ulShMemSize != ulShMemSize) {
-                       ShbError = kShbOpenMismatch;
-                       goto Exit;
-               }
-               pShbMemHeader->m_ulRefCount++;
-       }
-
-      Exit:
-       pShbInstance = (tShbInstance *) pShbMemInst;
-       *pfShbNewCreated_p = fShMemNewCreated;
-       *ppShbInstance_p = pShbInstance;
-       return (ShbError);
-
-}
-
-//---------------------------------------------------------------------------
-//  Release Shared Buffer
-//---------------------------------------------------------------------------
-
-tShbError ShbIpcReleaseBuffer(tShbInstance pShbInstance_p)
-{
-       tShbMemInst *pShbMemInst;
-       tShbMemHeader *pShbMemHeader;
-       tShbError ShbError;
-       tShbError ShbError2;
-
-       DEBUG_LVL_26_TRACE1("ShbIpcReleaseBuffer(%p)\n", pShbInstance_p);
-       if (pShbInstance_p == NULL) {
-               return (kShbOk);
-       }
-       pShbMemInst = ShbIpcGetShbMemInst(pShbInstance_p);
-       pShbMemHeader = ShbIpcGetShbMemHeader(pShbMemInst);
-
-       // stop threads in any case, because they are bound to that specific instance
-       ShbError2 = ShbIpcStopSignalingNewData(pShbInstance_p);
-       // d.k.: Whats up with JobReady thread?
-       //       Just wake it up, but without setting the semaphore variable
-       wake_up_interruptible(&pShbMemHeader->m_WaitQueueJobReady);
-
-       if (!--pShbMemHeader->m_ulRefCount) {
-               ShbError = kShbOk;
-               // delete mem table element
-               ShbIpcDeleteListElement(pShbMemHeader->m_iBufferId);
-               // delete shared mem
-               kfree(pShbMemInst->m_pShbMemHeader);
-       } else {
-               ShbError = kShbMemUsedByOtherProcs;
-       }
-       //delete privat mem
-       kfree(pShbMemInst);
-       return (ShbError);
-}
-
-//---------------------------------------------------------------------------
-//  Enter atomic section for Shared Buffer access
-//---------------------------------------------------------------------------
-
-tShbError ShbIpcEnterAtomicSection(tShbInstance pShbInstance_p)
-{
-
-       tShbMemInst *pShbMemInst;
-       tShbMemHeader *pShbMemHeader;
-       tShbError ShbError = kShbOk;
-
-       if (pShbInstance_p == NULL) {
-               ShbError = kShbInvalidArg;
-               goto Exit;
-       }
-       DEBUG_LVL_29_TRACE0("enter atomic\n");
-       pShbMemInst = ShbIpcGetShbMemInst(pShbInstance_p);
-       pShbMemHeader = ShbIpcGetShbMemHeader(pShbMemInst);
-
-       // lock interrupts
-       spin_lock_irqsave(&pShbMemHeader->m_SpinlockBuffAccess,
-                         pShbMemInst->m_ulFlagsBuffAccess);
-
-      Exit:
-       return ShbError;
-
-}
-
-//---------------------------------------------------------------------------
-//  Leave atomic section for Shared Buffer access
-//---------------------------------------------------------------------------
-
-tShbError ShbIpcLeaveAtomicSection(tShbInstance pShbInstance_p)
-{
-
-       tShbMemInst *pShbMemInst;
-       tShbMemHeader *pShbMemHeader;
-       tShbError ShbError = kShbOk;
-
-       if (pShbInstance_p == NULL) {
-               ShbError = kShbInvalidArg;
-               goto Exit;
-       }
-       pShbMemInst = ShbIpcGetShbMemInst(pShbInstance_p);
-       pShbMemHeader = ShbIpcGetShbMemHeader(pShbMemInst);
-       // unlock interrupts
-       spin_unlock_irqrestore(&pShbMemHeader->m_SpinlockBuffAccess,
-                              pShbMemInst->m_ulFlagsBuffAccess);
-
-      Exit:
-       DEBUG_LVL_29_TRACE0("Leave Atomic \n");
-       return ShbError;
-
-}
-
-//---------------------------------------------------------------------------
-//  Start signaling of new data (called from reading process)
-//---------------------------------------------------------------------------
-
-tShbError ShbIpcStartSignalingNewData(tShbInstance pShbInstance_p,
-                                     tSigHndlrNewData pfnSignalHandlerNewData_p,
-                                     tShbPriority ShbPriority_p)
-{
-       tShbMemInst *pShbMemInst;
-       tShbMemHeader *pShbMemHeader;
-       tShbError ShbError;
-
-       DEBUG_LVL_29_TRACE0("------->ShbIpcStartSignalingNewData\n");
-       if ((pShbInstance_p == NULL) || (pfnSignalHandlerNewData_p == NULL)) {
-               return (kShbInvalidArg);
-       }
-
-       pShbMemInst = ShbIpcGetShbMemInst(pShbInstance_p);
-       pShbMemHeader = ShbIpcGetShbMemHeader(pShbMemInst);
-       ShbError = kShbOk;
-
-       if ((pShbMemInst->m_tThreadNewDataId != INVALID_ID)
-           || (pShbMemInst->m_pfnSigHndlrNewData != NULL)) {
-               ShbError = kShbAlreadySignaling;
-               goto Exit;
-       }
-       DEBUG_LVL_26_TRACE2
-           ("ShbIpcStartSignalingNewData(%p) m_pfnSigHndlrNewData = %p\n",
-            pShbInstance_p, pfnSignalHandlerNewData_p);
-       pShbMemInst->m_pfnSigHndlrNewData = pfnSignalHandlerNewData_p;
-       pShbMemHeader->m_fNewData = FALSE;
-       pShbMemInst->m_iThreadTermFlag = 0;
-
-       switch (ShbPriority_p) {
-       case kShbPriorityLow:
-               pShbMemInst->m_lThreadNewDataNice = -2;
-               break;
-
-       case kShbPriorityNormal:
-               pShbMemInst->m_lThreadNewDataNice = -9;
-               break;
-
-       case kshbPriorityHigh:
-               pShbMemInst->m_lThreadNewDataNice = -20;
-               break;
-
-       }
-
-       //create thread for signalling new data
-       pShbMemInst->m_tThreadNewDataId =
-               kernel_thread(ShbIpcThreadSignalNewData, pShbInstance_p,
-                               CLONE_FS | CLONE_FILES);
-
-      Exit:
-       return ShbError;
-
-}
-
-//---------------------------------------------------------------------------
-//  Stop signaling of new data (called from reading process)
-//---------------------------------------------------------------------------
-
-tShbError ShbIpcStopSignalingNewData(tShbInstance pShbInstance_p)
-{
-       tShbMemInst *pShbMemInst;
-       tShbMemHeader *pShbMemHeader;
-       tShbError ShbError;
-
-       DEBUG_LVL_29_TRACE0("------->ShbIpcStopSignalingNewData\n");
-       if (pShbInstance_p == NULL) {
-               return (kShbInvalidArg);
-       }
-       ShbError = kShbOk;
-       pShbMemInst = ShbIpcGetShbMemInst(pShbInstance_p);
-       pShbMemHeader = ShbIpcGetShbMemHeader(pShbMemInst);
-
-       DEBUG_LVL_26_TRACE2
-           ("ShbIpcStopSignalingNewData(%p) pfnSignHndlrNewData=%p\n",
-            pShbInstance_p, pShbMemInst->m_pfnSigHndlrNewData);
-       if (pShbMemInst->m_pfnSigHndlrNewData != NULL) {        // signal handler was set before
-               int iErr;
-               //set termination flag in mem header
-               pShbMemInst->m_iThreadTermFlag = 1;
-
-               // check if thread is still running at all by sending the null-signal to this thread
-               /* iErr = kill_proc(pShbMemInst->m_tThreadNewDataId, 0, 1); */
-               iErr = send_sig(0, pShbMemInst->m_tThreadNewDataId, 1);
-               if (iErr == 0) {
-                       // wake up thread, because it is still running
-                       wake_up_interruptible(&pShbMemHeader->
-                                             m_WaitQueueNewData);
-
-                       //wait for termination of thread
-                       wait_for_completion(&pShbMemInst->m_CompletionNewData);
-               }
-
-               pShbMemInst->m_pfnSigHndlrNewData = NULL;
-               pShbMemInst->m_tThreadNewDataId = INVALID_ID;
-       }
-
-       return ShbError;
-
-}
-
-//---------------------------------------------------------------------------
-//  Signal new data (called from writing process)
-//---------------------------------------------------------------------------
-
-tShbError ShbIpcSignalNewData(tShbInstance pShbInstance_p)
-{
-       tShbMemHeader *pShbMemHeader;
-
-       if (pShbInstance_p == NULL) {
-               return (kShbInvalidArg);
-       }
-       pShbMemHeader =
-           ShbIpcGetShbMemHeader(ShbIpcGetShbMemInst(pShbInstance_p));
-       //set semaphore
-       pShbMemHeader->m_fNewData = TRUE;
-       DEBUG_LVL_29_TRACE0("ShbIpcSignalNewData set Sem -> New Data\n");
-
-       wake_up_interruptible(&pShbMemHeader->m_WaitQueueNewData);
-       return (kShbOk);
-}
-
-//---------------------------------------------------------------------------
-//  Start signaling for job ready (called from waiting process)
-//---------------------------------------------------------------------------
-
-tShbError ShbIpcStartSignalingJobReady(tShbInstance pShbInstance_p,
-                                      unsigned long ulTimeOut_p,
-                                      tSigHndlrJobReady pfnSignalHandlerJobReady_p)
-{
-       tShbMemInst *pShbMemInst;
-       tShbMemHeader *pShbMemHeader;
-       tShbError ShbError;
-
-       if ((pShbInstance_p == NULL) || (pfnSignalHandlerJobReady_p == NULL)) {
-               return (kShbInvalidArg);
-       }
-       pShbMemInst = ShbIpcGetShbMemInst(pShbInstance_p);
-       pShbMemHeader = ShbIpcGetShbMemHeader(pShbMemInst);
-
-       ShbError = kShbOk;
-       if ((pShbMemInst->m_tThreadJobReadyId != INVALID_ID)
-           || (pShbMemInst->m_pfnSigHndlrJobReady != NULL)) {
-               ShbError = kShbAlreadySignaling;
-               goto Exit;
-       }
-       pShbMemInst->m_ulTimeOutJobReady = ulTimeOut_p;
-       pShbMemInst->m_pfnSigHndlrJobReady = pfnSignalHandlerJobReady_p;
-       pShbMemHeader->m_fJobReady = FALSE;
-       //create thread for signalling new data
-       pShbMemInst->m_tThreadJobReadyId =
-               kernel_thread(ShbIpcThreadSignalJobReady, pShbInstance_p,
-                               CLONE_FS | CLONE_FILES);
-      Exit:
-       return ShbError;
-}
-
-//---------------------------------------------------------------------------
-//  Signal job ready (called from executing process)
-//---------------------------------------------------------------------------
-
-tShbError ShbIpcSignalJobReady(tShbInstance pShbInstance_p)
-{
-       tShbMemHeader *pShbMemHeader;
-
-       DEBUG_LVL_29_TRACE0("ShbIpcSignalJobReady\n");
-       if (pShbInstance_p == NULL) {
-               return (kShbInvalidArg);
-       }
-       pShbMemHeader =
-           ShbIpcGetShbMemHeader(ShbIpcGetShbMemInst(pShbInstance_p));
-       //set semaphore
-       pShbMemHeader->m_fJobReady = TRUE;
-       DEBUG_LVL_29_TRACE0("ShbIpcSignalJobReady set Sem -> Job Ready \n");
-
-       wake_up_interruptible(&pShbMemHeader->m_WaitQueueJobReady);
-       return (kShbOk);
-}
-
-//---------------------------------------------------------------------------
-//  Get pointer to common used share memory area
-//---------------------------------------------------------------------------
-
-void *ShbIpcGetShMemPtr(tShbInstance pShbInstance_p)
-{
-
-       tShbMemHeader *pShbMemHeader;
-       void *pShbShMemPtr;
-
-       pShbMemHeader =
-           ShbIpcGetShbMemHeader(ShbIpcGetShbMemInst(pShbInstance_p));
-       if (pShbMemHeader != NULL) {
-               pShbShMemPtr = (u8 *) pShbMemHeader + sizeof(tShbMemHeader);
-       } else {
-               pShbShMemPtr = NULL;
-       }
-
-       return (pShbShMemPtr);
-
-}
-
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//  Get pointer to process local information structure
-//---------------------------------------------------------------------------
-
-/*tShbMemInst*  ShbIpcGetShbMemInst (
-    tShbInstance pShbInstance_p)
-{
-
-tShbMemInst*  pShbMemInst;
-
-    pShbMemInst = (tShbMemInst*)pShbInstance_p;
-
-    return (pShbMemInst);
-
-}
-*/
-
-//---------------------------------------------------------------------------
-//  Get pointer to shared memory header
-//---------------------------------------------------------------------------
-
-/*tShbMemHeader*  ShbIpcGetShbMemHeader (
-    tShbMemInst* pShbMemInst_p)
-{
-
-tShbMemHeader*  pShbMemHeader;
-
-    pShbMemHeader = pShbMemInst_p->m_pShbMemHeader;
-
-    return (pShbMemHeader);
-
-}
-*/
-
-//---------------------------------------------------------------------------
-//  Allocate a memory block from process specific mempool
-//---------------------------------------------------------------------------
-
-static void *ShbIpcAllocPrivateMem(unsigned long ulMemSize_p)
-{
-       tShbError ShbError;
-       void *pMem;
-
-       DEBUG_LVL_29_TRACE0("ShbIpcAllocPrivateMem \n");
-       //get private mem
-       pMem = kmalloc(ulMemSize_p, GFP_KERNEL);
-       if (pMem == NULL) {
-               //unable to create mem
-               ShbError = kShbOutOfMem;
-               goto Exit;
-       }
-      Exit:
-       return (pMem);
-
-}
-
-//---------------------------------------------------------------------------
-//  Thread for new data signaling
-//---------------------------------------------------------------------------
-
-int ShbIpcThreadSignalNewData(void *pvThreadParam_p)
-{
-       tShbInstance pShbInstance;
-       tShbMemInst *pShbMemInst;
-       tShbMemHeader *pShbMemHeader;
-       int iRetVal = -1;
-       int fCallAgain;
-
-       daemonize("ShbND%p", pvThreadParam_p);
-       allow_signal(SIGTERM);
-       pShbInstance = (tShbMemInst *) pvThreadParam_p;
-       pShbMemInst = ShbIpcGetShbMemInst(pShbInstance);
-       pShbMemHeader = ShbIpcGetShbMemHeader(pShbMemInst);
-
-       DEBUG_LVL_26_TRACE1("ShbIpcThreadSignalNewData(%p)\n", pvThreadParam_p);
-
-       set_user_nice(current, pShbMemInst->m_lThreadNewDataNice);
-
-//            DEBUG_LVL_29_TRACE1("ShbIpcThreadSignalNewData wait for New Data Sem %p\n",pShbMemInst->m_pSemNewData);
-       do {
-               iRetVal =
-                   wait_event_interruptible(pShbMemHeader->m_WaitQueueNewData,
-                                            (pShbMemInst->m_iThreadTermFlag !=
-                                             0)
-                                            || (pShbMemHeader->m_fNewData !=
-                                                FALSE));
-
-               if (iRetVal != 0) {     // signal pending
-                       break;
-               }
-
-               if (pShbMemHeader->m_fNewData != FALSE) {
-                       pShbMemHeader->m_fNewData = FALSE;
-                       do {
-                               fCallAgain =
-                                   pShbMemInst->
-                                   m_pfnSigHndlrNewData(pShbInstance);
-                               // call scheduler, which will execute any task with higher priority
-                               schedule();
-                       } while (fCallAgain != FALSE);
-               }
-       } while (pShbMemInst->m_iThreadTermFlag == 0);
-       DEBUG_LVL_29_TRACE0("ShbIpcThreadSignalNewData terminated \n");
-       //set thread completed
-       complete_and_exit(&pShbMemInst->m_CompletionNewData, 0);
-       return 0;
-}
-
-//---------------------------------------------------------------------------
-//  Thread for new data Job Ready signaling
-//---------------------------------------------------------------------------
-
-int ShbIpcThreadSignalJobReady(void *pvThreadParam_p)
-{
-       tShbInstance pShbInstance;
-       tShbMemInst *pShbMemInst;
-       tShbMemHeader *pShbMemHeader;
-       long lTimeOut;
-       int iRetVal = -1;
-
-       daemonize("ShbJR%p", pvThreadParam_p);
-       allow_signal(SIGTERM);
-       pShbInstance = (tShbMemInst *) pvThreadParam_p;
-       pShbMemInst = ShbIpcGetShbMemInst(pShbInstance);
-       pShbMemHeader = ShbIpcGetShbMemHeader(pShbMemInst);
-
-       DEBUG_LVL_29_TRACE0
-           ("ShbIpcThreadSignalJobReady wait for job ready Sem\n");
-       if (pShbMemInst->m_ulTimeOutJobReady != 0) {
-               lTimeOut = (long)pShbMemInst->m_ulTimeOutJobReady;
-               //wait for job ready semaphore
-               iRetVal =
-                   wait_event_interruptible_timeout(pShbMemHeader->
-                                                    m_WaitQueueJobReady,
-                                                    (pShbMemHeader->
-                                                     m_fJobReady != FALSE),
-                                                    lTimeOut);
-       } else {
-               //wait for job ready semaphore
-               iRetVal =
-                   wait_event_interruptible(pShbMemHeader->m_WaitQueueJobReady,
-                                            (pShbMemHeader->m_fJobReady !=
-                                             FALSE));
-       }
-
-       if (pShbMemInst->m_pfnSigHndlrJobReady != NULL) {
-               //call Handler
-               pShbMemInst->m_pfnSigHndlrJobReady(pShbInstance,
-                                                  !pShbMemHeader->m_fJobReady);
-       }
-
-       pShbMemInst->m_pfnSigHndlrJobReady = NULL;
-       return 0;
-}
-
-//Build the crc table
-static void ShbIpcCrc32GenTable(unsigned long aulCrcTable[256])
-{
-       unsigned long ulCrc, ulPoly;
-       int iIndexI, iIndexJ;
-
-       ulPoly = 0xEDB88320L;
-       for (iIndexI = 0; iIndexI < 256; iIndexI++) {
-               ulCrc = iIndexI;
-               for (iIndexJ = 8; iIndexJ > 0; iIndexJ--) {
-                       if (ulCrc & 1) {
-                               ulCrc = (ulCrc >> 1) ^ ulPoly;
-                       } else {
-                               ulCrc >>= 1;
-                       }
-               }
-               aulCrcTable[iIndexI] = ulCrc;
-       }
-}
-
-//Calculate the crc value
-static unsigned long ShbIpcCrc32GetCrc(const char *pcString,
-                                      unsigned long aulCrcTable[256])
-{
-       unsigned long ulCrc;
-       int iIndex;
-
-       ulCrc = 0xFFFFFFFF;
-       for (iIndex = 0; iIndex < strlen(pcString); iIndex++) {
-               ulCrc =
-                   ((ulCrc >> 8) & 0x00FFFFFF) ^
-                   aulCrcTable[(ulCrc ^ pcString[iIndex]) & 0xFF];
-       }
-       return (ulCrc ^ 0xFFFFFFFF);
-
-}
-
-static void ShbIpcAppendListElement(struct sShbMemTable *psNewMemTableElement)
-{
-       struct sShbMemTable *psMemTableElement = psMemTableElementFirst_g;
-       psNewMemTableElement->m_psNextMemTableElement = NULL;
-
-       if (psMemTableElementFirst_g != NULL) { /* sind Elemente vorhanden */
-               while (psMemTableElement->m_psNextMemTableElement != NULL) {    /* suche das letzte Element */
-                       psMemTableElement =
-                           psMemTableElement->m_psNextMemTableElement;
-               }
-               psMemTableElement->m_psNextMemTableElement = psNewMemTableElement;      /*  Haenge das Element hinten an */
-       } else {                /* wenn die liste leer ist, bin ich das erste Element */
-               psMemTableElementFirst_g = psNewMemTableElement;
-       }
-}
-
-static int ShbIpcFindListElement(int iBufferId,
-                                struct sShbMemTable **ppsReturnMemTableElement)
-{
-       struct sShbMemTable *psMemTableElement = psMemTableElementFirst_g;
-       while (psMemTableElement != NULL) {
-               if (psMemTableElement->m_iBufferId == iBufferId) {
-//printk("ShbIpcFindListElement Buffer at:%p Id:%d\n",psMemTableElement->m_pBuffer,psMemTableElement->m_iBufferId);
-                       *ppsReturnMemTableElement = psMemTableElement;
-//printk("ShbIpcFindListElement Buffer at:%p Id:%d\n",(*ppsReturnMemTableElement)->m_pBuffer,(*ppsReturnMemTableElement)->m_iBufferId);
-                       return 0;
-               }
-               psMemTableElement = psMemTableElement->m_psNextMemTableElement;
-       }
-       return -1;
-}
-
-static void ShbIpcDeleteListElement(int iBufferId)
-{
-       struct sShbMemTable *psMemTableElement = psMemTableElementFirst_g;
-       struct sShbMemTable *psMemTableElementOld = psMemTableElementFirst_g;
-       if (psMemTableElement != NULL) {
-               while ((psMemTableElement != NULL)
-                      && (psMemTableElement->m_iBufferId != iBufferId)) {
-                       psMemTableElementOld = psMemTableElement;
-                       psMemTableElement =
-                           psMemTableElement->m_psNextMemTableElement;
-               }
-               if (psMemTableElement != NULL) {
-                       if (psMemTableElement != psMemTableElementFirst_g) {
-                               psMemTableElementOld->m_psNextMemTableElement =
-                                   psMemTableElement->m_psNextMemTableElement;
-                               kfree(psMemTableElement);
-                       } else {
-                               kfree(psMemTableElement);
-                               psMemTableElementFirst_g = NULL;
-                       }
-
-               }
-       }
-
-}
-
diff --git a/drivers/staging/epl/ShbIpc.h b/drivers/staging/epl/ShbIpc.h
deleted file mode 100644 (file)
index 285f096..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      Project independend shared buffer (linear + circular)
-
-  Description:  Declaration of platform specific part for the
-                shared buffer
-
-  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.
-
-  -------------------------------------------------------------------------
-
-  2006/06/27 -rs:   V 1.00 (initial version)
-
-****************************************************************************/
-
-#ifndef _SHBIPC_H_
-#define _SHBIPC_H_
-
-//---------------------------------------------------------------------------
-//  Type definitions
-//---------------------------------------------------------------------------
-
-typedef int (*tSigHndlrNewData) (tShbInstance pShbInstance_p);
-typedef void (*tSigHndlrJobReady) (tShbInstance pShbInstance_p,
-                                  unsigned int fTimeOut_p);
-
-//---------------------------------------------------------------------------
-//  Prototypes
-//---------------------------------------------------------------------------
-
-tShbError ShbIpcInit(void);
-tShbError ShbIpcExit(void);
-
-tShbError ShbIpcAllocBuffer(unsigned long ulBufferSize_p,
-                           const char *pszBufferID_p,
-                           tShbInstance * ppShbInstance_p,
-                           unsigned int *pfShbNewCreated_p);
-tShbError ShbIpcReleaseBuffer(tShbInstance pShbInstance_p);
-
-tShbError ShbIpcEnterAtomicSection(tShbInstance pShbInstance_p);
-tShbError ShbIpcLeaveAtomicSection(tShbInstance pShbInstance_p);
-
-tShbError ShbIpcStartSignalingNewData(tShbInstance pShbInstance_p,
-                                     tSigHndlrNewData
-                                     pfnSignalHandlerNewData_p,
-                                     tShbPriority ShbPriority_p);
-tShbError ShbIpcStopSignalingNewData(tShbInstance pShbInstance_p);
-tShbError ShbIpcSignalNewData(tShbInstance pShbInstance_p);
-
-tShbError ShbIpcStartSignalingJobReady(tShbInstance pShbInstance_p,
-                                      unsigned long ulTimeOut_p,
-                                      tSigHndlrJobReady
-                                      pfnSignalHandlerJobReady_p);
-tShbError ShbIpcSignalJobReady(tShbInstance pShbInstance_p);
-
-void *ShbIpcGetShMemPtr(tShbInstance pShbInstance_p);
-
-#endif // #ifndef _SHBIPC_H_
diff --git a/drivers/staging/epl/ShbLinuxKernel.h b/drivers/staging/epl/ShbLinuxKernel.h
deleted file mode 100644 (file)
index 812702a..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      Project independend shared buffer (linear + circular)
-
-  Description:  Declaration of platform specific part for the
-                shared buffer
-
-  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.
-
-  -------------------------------------------------------------------------
-
-  2006/07/20 -rs:   V 1.00 (initial version)
-
-****************************************************************************/
-
-#ifndef _SHBLINUXKERNEL_H_
-#define _SHBLINUXKERNEL_H_
-
-struct sShbMemTable {
-       int m_iBufferId;
-       void *m_pBuffer;
-       struct sShbMemTable *m_psNextMemTableElement;
-};
-
-extern struct sShbMemTable *psMemTableElementFirst_g;
-
-#endif // _SHBLINUXKERNEL_H_
diff --git a/drivers/staging/epl/SocketLinuxKernel.c b/drivers/staging/epl/SocketLinuxKernel.c
deleted file mode 100644 (file)
index 562bc4a..0000000
+++ /dev/null
@@ -1,197 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  Wrapper for BSD socket API for Linux kernel
-
-  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: SocketLinuxKernel.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.3 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                Dev C++ and GNU-Compiler for m68k
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/08/25 d.k.:   start of implementation
-
-****************************************************************************/
-
-#include <linux/net.h>
-#include <linux/in.h>
-#include "SocketLinuxKernel.h"
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-//  Kernel Module specific Data Structures
-//---------------------------------------------------------------------------
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:
-//
-// Description:
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-SOCKET socket(int af, int type, int protocol)
-{
-       int rc;
-       SOCKET socket;
-
-       rc = sock_create_kern(af, type, protocol, &socket);
-       if (rc < 0) {
-               socket = NULL;
-               goto Exit;
-       }
-
-      Exit:
-       return socket;
-}
-
-int bind(SOCKET socket_p, const struct sockaddr *addr, int addrlen)
-{
-       int rc;
-
-       rc = socket_p->ops->bind(socket_p, (struct sockaddr *)addr, addrlen);
-
-       return rc;
-}
-
-int closesocket(SOCKET socket_p)
-{
-       sock_release(socket_p);
-
-       return 0;
-}
-
-int recvfrom(SOCKET socket_p, char *buf, int len, int flags,
-            struct sockaddr *from, int *fromlen)
-{
-       int rc;
-       struct msghdr msg;
-       struct kvec iov;
-
-       msg.msg_control = NULL;
-       msg.msg_controllen = 0;
-       msg.msg_name = from;    // will be struct sock_addr
-       msg.msg_namelen = *fromlen;
-       iov.iov_len = len;
-       iov.iov_base = buf;
-
-       rc = kernel_recvmsg(socket_p, &msg, &iov, 1, iov.iov_len, 0);
-
-       return rc;
-}
-
-int sendto(SOCKET socket_p, const char *buf, int len, int flags,
-          const struct sockaddr *to, int tolen)
-{
-       int rc;
-       struct msghdr msg;
-       struct kvec iov;
-
-       msg.msg_control = NULL;
-       msg.msg_controllen = 0;
-       msg.msg_name = (struct sockaddr *)to;   // will be struct sock_addr
-       msg.msg_namelen = tolen;
-       msg.msg_flags = 0;
-       iov.iov_len = len;
-       iov.iov_base = (char *)buf;
-
-       rc = kernel_sendmsg(socket_p, &msg, &iov, 1, len);
-
-       return rc;
-}
-
-// EOF
diff --git a/drivers/staging/epl/SocketLinuxKernel.h b/drivers/staging/epl/SocketLinuxKernel.h
deleted file mode 100644 (file)
index 6e1d619..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for BSD socket API for Linux kernel
-
-  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: SocketLinuxKernel.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.3 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                KEIL uVision 2
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/08/25 d.k.:   start of the implementation
-
-****************************************************************************/
-
-#ifndef _SOCKETLINUXKERNEL_H_
-#define _SOCKETLINUXKERNEL_H_
-
-#include <linux/net.h>
-#include <linux/in.h>
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-#define INVALID_SOCKET  0
-
-//---------------------------------------------------------------------------
-// typedef
-//---------------------------------------------------------------------------
-
-typedef struct socket *SOCKET;
-
-//---------------------------------------------------------------------------
-// function prototypes
-//---------------------------------------------------------------------------
-
-int bind(SOCKET s, const struct sockaddr *addr, int addrlen);
-
-int closesocket(SOCKET s);
-
-int recvfrom(SOCKET s, char *buf, int len, int flags, struct sockaddr *from,
-            int *fromlen);
-
-int sendto(SOCKET s, const char *buf, int len, int flags,
-          const struct sockaddr *to, int tolen);
-
-SOCKET socket(int af, int type, int protocol);
-
-#endif // #ifndef _SOCKETLINUXKERNEL_H_
diff --git a/drivers/staging/epl/TimerHighReskX86.c b/drivers/staging/epl/TimerHighReskX86.c
deleted file mode 100644 (file)
index d6897de..0000000
+++ /dev/null
@@ -1,510 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  target specific implementation of
-                high resolution timer module for X86 under Linux
-                The Linux kernel has to be compiled with high resolution
-                timers enabled. This is done by configuring the kernel
-                with CONFIG_HIGH_RES_TIMERS enabled.
-
-  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: TimerHighReskX86.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.4 $  $Date: 2008/04/17 21:38:01 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GNU
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-****************************************************************************/
-
-#include "EplInc.h"
-#include "kernel/EplTimerHighResk.h"
-#include "Benchmark.h"
-
-//#include <linux/config.h>
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/hrtimer.h>
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-#define TIMER_COUNT           2        /* max 15 timers selectable */
-#define TIMER_MIN_VAL_SINGLE  5000     /* min 5us */
-#define TIMER_MIN_VAL_CYCLE   100000   /* min 100us */
-
-#define PROVE_OVERRUN
-
-// TracePoint support for realtime-debugging
-#ifdef _DBG_TRACE_POINTS_
-void TgtDbgSignalTracePoint(u8 bTracePointNumber_p);
-void TgtDbgPostTraceValue(u32 dwTraceValue_p);
-#define TGT_DBG_SIGNAL_TRACE_POINT(p)   TgtDbgSignalTracePoint(p)
-#define TGT_DBG_POST_TRACE_VALUE(v)     TgtDbgPostTraceValue(v)
-#else
-#define TGT_DBG_SIGNAL_TRACE_POINT(p)
-#define TGT_DBG_POST_TRACE_VALUE(v)
-#endif
-#define HRT_DBG_POST_TRACE_VALUE(Event_p, uiNodeId_p, wErrorCode_p) \
-    TGT_DBG_POST_TRACE_VALUE((0xE << 28) | (Event_p << 24) \
-                             | (uiNodeId_p << 16) | wErrorCode_p)
-
-#define TIMERHDL_MASK         0x0FFFFFFF
-#define TIMERHDL_SHIFT        28
-#define HDL_TO_IDX(Hdl)       ((Hdl >> TIMERHDL_SHIFT) - 1)
-#define HDL_INIT(Idx)         ((Idx + 1) << TIMERHDL_SHIFT)
-#define HDL_INC(Hdl)          (((Hdl + 1) & TIMERHDL_MASK) \
-                               | (Hdl & ~TIMERHDL_MASK))
-
-//---------------------------------------------------------------------------
-// modul global types
-//---------------------------------------------------------------------------
-
-typedef struct {
-       tEplTimerEventArg m_EventArg;
-       tEplTimerkCallback m_pfnCallback;
-       struct hrtimer m_Timer;
-       BOOL m_fContinuously;
-       unsigned long long m_ullPeriod;
-
-} tEplTimerHighReskTimerInfo;
-
-typedef struct {
-       tEplTimerHighReskTimerInfo m_aTimerInfo[TIMER_COUNT];
-
-} tEplTimerHighReskInstance;
-
-//---------------------------------------------------------------------------
-// local vars
-//---------------------------------------------------------------------------
-
-static tEplTimerHighReskInstance EplTimerHighReskInstance_l;
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-enum hrtimer_restart EplTimerHighReskCallback(struct hrtimer *pTimer_p);
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplTimerHighReskInit()
-//
-// Description: initializes the high resolution timer module.
-//
-// Parameters:  void
-//
-// Return:      tEplKernel      = error code
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplTimerHighReskInit(void)
-{
-       tEplKernel Ret;
-
-       Ret = EplTimerHighReskAddInstance();
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplTimerHighReskAddInstance()
-//
-// Description: initializes the high resolution timer module.
-//
-// Parameters:  void
-//
-// Return:      tEplKernel      = error code
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplTimerHighReskAddInstance(void)
-{
-       tEplKernel Ret;
-       unsigned int uiIndex;
-
-       Ret = kEplSuccessful;
-
-       EPL_MEMSET(&EplTimerHighReskInstance_l, 0,
-                  sizeof(EplTimerHighReskInstance_l));
-
-       /*
-        * Initialize hrtimer structures for all usable timers.
-        */
-       for (uiIndex = 0; uiIndex < TIMER_COUNT; uiIndex++) {
-               tEplTimerHighReskTimerInfo *pTimerInfo;
-               struct hrtimer *pTimer;
-
-               pTimerInfo = &EplTimerHighReskInstance_l.m_aTimerInfo[uiIndex];
-               pTimer = &pTimerInfo->m_Timer;
-               hrtimer_init(pTimer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS);
-
-               pTimer->function = EplTimerHighReskCallback;
-       }
-
-       return Ret;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplTimerHighReskDelInstance()
-//
-// Description: shuts down the high resolution timer module.
-//
-// Parameters:  void
-//
-// Return:      tEplKernel      = error code
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplTimerHighReskDelInstance(void)
-{
-       tEplTimerHighReskTimerInfo *pTimerInfo;
-       tEplKernel Ret;
-       unsigned int uiIndex;
-
-       Ret = kEplSuccessful;
-
-       for (uiIndex = 0; uiIndex < TIMER_COUNT; uiIndex++) {
-               pTimerInfo = &EplTimerHighReskInstance_l.m_aTimerInfo[0];
-               pTimerInfo->m_pfnCallback = NULL;
-               pTimerInfo->m_EventArg.m_TimerHdl = 0;
-               /*
-                * In this case we can not just try to cancel the timer.
-                * We actually have to wait until its callback function
-                * has returned.
-                */
-               hrtimer_cancel(&pTimerInfo->m_Timer);
-       }
-
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplTimerHighReskModifyTimerNs()
-//
-// Description: modifies the timeout of the timer with the specified handle.
-//              If the handle the pointer points to is zero, the timer must
-//              be created first.
-//              If it is not possible to stop the old timer,
-//              this function always assures that the old timer does not
-//              trigger the callback function with the same handle as the new
-//              timer. That means the callback function must check the passed
-//              handle with the one returned by this function. If these are
-//              unequal, the call can be discarded.
-//
-// Parameters:  pTimerHdl_p     = pointer to timer handle
-//              ullTimeNs_p     = relative timeout in [ns]
-//              pfnCallback_p   = callback function, which is called mutual
-//                                exclusive with the Edrv callback functions
-//                                (Rx and Tx).
-//              ulArgument_p    = user-specific argument
-//              fContinuously_p = if TRUE, callback function will be called
-//                                continuously;
-//                                otherwise, it is a oneshot timer.
-//
-// Return:      tEplKernel      = error code
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplTimerHighReskModifyTimerNs(tEplTimerHdl *pTimerHdl_p,
-                                        unsigned long long ullTimeNs_p,
-                                        tEplTimerkCallback pfnCallback_p,
-                                        unsigned long ulArgument_p,
-                                        BOOL fContinuously_p)
-{
-       tEplKernel Ret;
-       unsigned int uiIndex;
-       tEplTimerHighReskTimerInfo *pTimerInfo;
-       ktime_t RelTime;
-
-       Ret = kEplSuccessful;
-
-       // check pointer to handle
-       if (pTimerHdl_p == NULL) {
-               Ret = kEplTimerInvalidHandle;
-               goto Exit;
-       }
-
-       if (*pTimerHdl_p == 0) {        // no timer created yet
-
-               // search free timer info structure
-               pTimerInfo = &EplTimerHighReskInstance_l.m_aTimerInfo[0];
-               for (uiIndex = 0; uiIndex < TIMER_COUNT;
-                    uiIndex++, pTimerInfo++) {
-                       if (pTimerInfo->m_EventArg.m_TimerHdl == 0) {   // free structure found
-                               break;
-                       }
-               }
-               if (uiIndex >= TIMER_COUNT) {   // no free structure found
-                       Ret = kEplTimerNoTimerCreated;
-                       goto Exit;
-               }
-
-               pTimerInfo->m_EventArg.m_TimerHdl = HDL_INIT(uiIndex);
-       } else {
-               uiIndex = HDL_TO_IDX(*pTimerHdl_p);
-               if (uiIndex >= TIMER_COUNT) {   // invalid handle
-                       Ret = kEplTimerInvalidHandle;
-                       goto Exit;
-               }
-
-               pTimerInfo = &EplTimerHighReskInstance_l.m_aTimerInfo[uiIndex];
-       }
-
-       /*
-        * increment timer handle
-        * (if timer expires right after this statement, the user
-        * would detect an unknown timer handle and discard it)
-        */
-       pTimerInfo->m_EventArg.m_TimerHdl =
-           HDL_INC(pTimerInfo->m_EventArg.m_TimerHdl);
-       *pTimerHdl_p = pTimerInfo->m_EventArg.m_TimerHdl;
-
-       // reject too small time values
-       if ((fContinuously_p && (ullTimeNs_p < TIMER_MIN_VAL_CYCLE))
-           || (!fContinuously_p && (ullTimeNs_p < TIMER_MIN_VAL_SINGLE))) {
-               Ret = kEplTimerNoTimerCreated;
-               goto Exit;
-       }
-
-       pTimerInfo->m_EventArg.m_ulArg = ulArgument_p;
-       pTimerInfo->m_pfnCallback = pfnCallback_p;
-       pTimerInfo->m_fContinuously = fContinuously_p;
-       pTimerInfo->m_ullPeriod = ullTimeNs_p;
-
-       /*
-        * HRTIMER_MODE_REL does not influence general handling of this timer.
-        * It only sets relative mode for this start operation.
-        * -> Expire time is calculated by: Now + RelTime
-        * hrtimer_start also skips pending timer events.
-        * The state HRTIMER_STATE_CALLBACK is ignored.
-        * We have to cope with that in our callback function.
-        */
-       RelTime = ktime_add_ns(ktime_set(0, 0), ullTimeNs_p);
-       hrtimer_start(&pTimerInfo->m_Timer, RelTime, HRTIMER_MODE_REL);
-
-      Exit:
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplTimerHighReskDeleteTimer()
-//
-// Description: deletes the timer with the specified handle. Afterward the
-//              handle is set to zero.
-//
-// Parameters:  pTimerHdl_p     = pointer to timer handle
-//
-// Return:      tEplKernel      = error code
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-
-tEplKernel EplTimerHighReskDeleteTimer(tEplTimerHdl *pTimerHdl_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       unsigned int uiIndex;
-       tEplTimerHighReskTimerInfo *pTimerInfo;
-
-       // check pointer to handle
-       if (pTimerHdl_p == NULL) {
-               Ret = kEplTimerInvalidHandle;
-               goto Exit;
-       }
-
-       if (*pTimerHdl_p == 0) {        // no timer created yet
-               goto Exit;
-       } else {
-               uiIndex = HDL_TO_IDX(*pTimerHdl_p);
-               if (uiIndex >= TIMER_COUNT) {   // invalid handle
-                       Ret = kEplTimerInvalidHandle;
-                       goto Exit;
-               }
-               pTimerInfo = &EplTimerHighReskInstance_l.m_aTimerInfo[uiIndex];
-               if (pTimerInfo->m_EventArg.m_TimerHdl != *pTimerHdl_p) {        // invalid handle
-                       goto Exit;
-               }
-       }
-
-       *pTimerHdl_p = 0;
-       pTimerInfo->m_EventArg.m_TimerHdl = 0;
-       pTimerInfo->m_pfnCallback = NULL;
-
-       /*
-        * Three return cases of hrtimer_try_to_cancel have to be tracked:
-        *  1 - timer has been removed
-        *  0 - timer was not active
-        *      We need not do anything. hrtimer timers just consist of
-        *      a hrtimer struct, which we might enqueue in the hrtimers
-        *      event list by calling hrtimer_start().
-        *      If a timer is not enqueued, it is not present in hrtimers.
-        * -1 - callback function is running
-        *      In this case we have to ensure that the timer is not
-        *      continuously restarted. This has been done by clearing
-        *      its handle.
-        */
-       hrtimer_try_to_cancel(&pTimerInfo->m_Timer);
-
-      Exit:
-       return Ret;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    EplTimerHighReskCallback()
-//
-// Description: Callback function commonly used for all timers.
-//
-// Parameters:  pTimer_p = pointer to hrtimer
-//
-// Return:
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-
-enum hrtimer_restart EplTimerHighReskCallback(struct hrtimer *pTimer_p)
-{
-       unsigned int uiIndex;
-       tEplTimerHighReskTimerInfo *pTimerInfo;
-       tEplTimerHdl OrgTimerHdl;
-       enum hrtimer_restart Ret;
-
-       BENCHMARK_MOD_24_SET(4);
-
-       Ret = HRTIMER_NORESTART;
-       pTimerInfo =
-           container_of(pTimer_p, tEplTimerHighReskTimerInfo, m_Timer);
-       uiIndex = HDL_TO_IDX(pTimerInfo->m_EventArg.m_TimerHdl);
-       if (uiIndex >= TIMER_COUNT) {   // invalid handle
-               goto Exit;
-       }
-
-       /*
-        * We store the timer handle before calling the callback function
-        * as the timer can be modified inside it.
-        */
-       OrgTimerHdl = pTimerInfo->m_EventArg.m_TimerHdl;
-
-       if (pTimerInfo->m_pfnCallback != NULL) {
-               pTimerInfo->m_pfnCallback(&pTimerInfo->m_EventArg);
-       }
-
-       if (pTimerInfo->m_fContinuously) {
-               ktime_t Interval;
-#ifdef PROVE_OVERRUN
-               ktime_t Now;
-               unsigned long Overruns;
-#endif
-
-               if (OrgTimerHdl != pTimerInfo->m_EventArg.m_TimerHdl) {
-                       /* modified timer has already been restarted */
-                       goto Exit;
-               }
-#ifdef PROVE_OVERRUN
-               Now = ktime_get();
-               Interval =
-                   ktime_add_ns(ktime_set(0, 0), pTimerInfo->m_ullPeriod);
-               Overruns = hrtimer_forward(pTimer_p, Now, Interval);
-               if (Overruns > 1) {
-                       printk
-                           ("EplTimerHighResk: Continuous timer (handle 0x%lX) had to skip %lu interval(s)!\n",
-                            pTimerInfo->m_EventArg.m_TimerHdl, Overruns - 1);
-               }
-#else
-               pTimer_p->expires = ktime_add_ns(pTimer_p->expires,
-                                                pTimerInfo->m_ullPeriod);
-#endif
-
-               Ret = HRTIMER_RESTART;
-       }
-
-      Exit:
-       BENCHMARK_MOD_24_RESET(4);
-       return Ret;
-}
diff --git a/drivers/staging/epl/VirtualEthernetLinux.c b/drivers/staging/epl/VirtualEthernetLinux.c
deleted file mode 100644 (file)
index 7b7cce1..0000000
+++ /dev/null
@@ -1,348 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  Virtual Ethernet Driver for Linux
-
-  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: VirtualEthernetLinux.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.8 $  $Date: 2008/11/20 17:06:51 $
-
-                $State: Exp $
-
-                Build Environment:
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/12 -ar:   start of the implementation, version 1.00
-
-  2006/09/18 d.k.:  integration into EPL DLLk module
-
-  ToDo:
-
-  void netif_carrier_off(struct net_device *dev);
-  void netif_carrier_on(struct net_device *dev);
-
-****************************************************************************/
-
-#include <linux/module.h>
-#include <linux/netdevice.h>
-#include <linux/etherdevice.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/if_arp.h>
-#include <net/arp.h>
-
-#include <net/protocol.h>
-#include <net/pkt_sched.h>
-#include <linux/if_ether.h>
-#include <linux/in.h>
-#include <linux/ip.h>
-#include <linux/udp.h>
-#include <linux/mm.h>
-#include <linux/types.h>
-#include <linux/skbuff.h>      /* for struct sk_buff */
-
-#include "kernel/VirtualEthernet.h"
-#include "kernel/EplDllkCal.h"
-#include "kernel/EplDllk.h"
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_VETH)) != 0)
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-#ifndef EPL_VETH_TX_TIMEOUT
-//#define EPL_VETH_TX_TIMEOUT (2*HZ)
-#define EPL_VETH_TX_TIMEOUT 0  // d.k.: we use no timeout
-#endif
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-static struct net_device *pVEthNetDevice_g = NULL;
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-static int VEthOpen(struct net_device *pNetDevice_p);
-static int VEthClose(struct net_device *pNetDevice_p);
-static int VEthXmit(struct sk_buff *pSkb_p, struct net_device *pNetDevice_p);
-static struct net_device_stats *VEthGetStats(struct net_device *pNetDevice_p);
-static void VEthTimeout(struct net_device *pNetDevice_p);
-static tEplKernel VEthRecvFrame(tEplFrameInfo * pFrameInfo_p);
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:
-//
-// Description:
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-static int VEthOpen(struct net_device *pNetDevice_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       //open the device
-//     struct net_device_stats* pStats = netdev_priv(pNetDevice_p);
-
-       //start the interface queue for the network subsystem
-       netif_start_queue(pNetDevice_p);
-
-       // register callback function in DLL
-       Ret = EplDllkRegAsyncHandler(VEthRecvFrame);
-
-       EPL_DBGLVL_VETH_TRACE1
-           ("VEthOpen: EplDllkRegAsyncHandler returned 0x%02X\n", Ret);
-
-       return 0;
-}
-
-static int VEthClose(struct net_device *pNetDevice_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       EPL_DBGLVL_VETH_TRACE0("VEthClose\n");
-
-       Ret = EplDllkDeregAsyncHandler(VEthRecvFrame);
-
-       //stop the interface queue for the network subsystem
-       netif_stop_queue(pNetDevice_p);
-       return 0;
-}
-
-static int VEthXmit(struct sk_buff *pSkb_p, struct net_device *pNetDevice_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       tEplFrameInfo FrameInfo;
-
-       //transmit function
-       struct net_device_stats *pStats = netdev_priv(pNetDevice_p);
-
-       //save timestemp
-       pNetDevice_p->trans_start = jiffies;
-
-       FrameInfo.m_pFrame = (tEplFrame *) pSkb_p->data;
-       FrameInfo.m_uiFrameSize = pSkb_p->len;
-
-       //call send fkt on DLL
-       Ret = EplDllkCalAsyncSend(&FrameInfo, kEplDllAsyncReqPrioGeneric);
-       if (Ret != kEplSuccessful) {
-               EPL_DBGLVL_VETH_TRACE1
-                   ("VEthXmit: EplDllkCalAsyncSend returned 0x%02X\n", Ret);
-               netif_stop_queue(pNetDevice_p);
-               goto Exit;
-       } else {
-               EPL_DBGLVL_VETH_TRACE0("VEthXmit: frame passed to DLL\n");
-               dev_kfree_skb(pSkb_p);
-
-               //set stats for the device
-               pStats->tx_packets++;
-               pStats->tx_bytes += FrameInfo.m_uiFrameSize;
-       }
-
-      Exit:
-       return NETDEV_TX_OK;
-
-}
-
-static struct net_device_stats *VEthGetStats(struct net_device *pNetDevice_p)
-{
-       EPL_DBGLVL_VETH_TRACE0("VEthGetStats\n");
-
-       return netdev_priv(pNetDevice_p);
-}
-
-static void VEthTimeout(struct net_device *pNetDevice_p)
-{
-       EPL_DBGLVL_VETH_TRACE0("VEthTimeout(\n");
-
-       // $$$ d.k.: move to extra function, which is called by DLL when new space is available in TxFifo
-       if (netif_queue_stopped(pNetDevice_p)) {
-               netif_wake_queue(pNetDevice_p);
-       }
-}
-
-static tEplKernel VEthRecvFrame(tEplFrameInfo * pFrameInfo_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-       struct net_device *pNetDevice = pVEthNetDevice_g;
-       struct net_device_stats *pStats = netdev_priv(pNetDevice);
-       struct sk_buff *pSkb;
-
-       EPL_DBGLVL_VETH_TRACE1("VEthRecvFrame: FrameSize=%u\n",
-                              pFrameInfo_p->m_uiFrameSize);
-
-       pSkb = dev_alloc_skb(pFrameInfo_p->m_uiFrameSize + 2);
-       if (pSkb == NULL) {
-               pStats->rx_dropped++;
-               goto Exit;
-       }
-       pSkb->dev = pNetDevice;
-
-       skb_reserve(pSkb, 2);
-
-       memcpy((void *)skb_put(pSkb, pFrameInfo_p->m_uiFrameSize),
-              pFrameInfo_p->m_pFrame, pFrameInfo_p->m_uiFrameSize);
-
-       pSkb->protocol = eth_type_trans(pSkb, pNetDevice);
-       pSkb->ip_summed = CHECKSUM_UNNECESSARY;
-
-       // call netif_rx with skb
-       netif_rx(pSkb);
-
-       EPL_DBGLVL_VETH_TRACE1("VEthRecvFrame: SrcMAC=0x%llx\n",
-                              AmiGetQword48FromBe(pFrameInfo_p->m_pFrame->
-                                                  m_be_abSrcMac));
-
-       // update receive statistics
-       pStats->rx_packets++;
-       pStats->rx_bytes += pFrameInfo_p->m_uiFrameSize;
-
-      Exit:
-       return Ret;
-}
-
-static const struct net_device_ops epl_netdev_ops = {
-       .ndo_open               = VEthOpen,
-       .ndo_stop               = VEthClose,
-       .ndo_get_stats          = VEthGetStats,
-       .ndo_start_xmit         = VEthXmit,
-       .ndo_tx_timeout         = VEthTimeout,
-       .ndo_change_mtu         = eth_change_mtu,
-       .ndo_set_mac_address    = eth_mac_addr,
-       .ndo_validate_addr      = eth_validate_addr,
-};
-
-tEplKernel VEthAddInstance(tEplDllkInitParam *pInitParam_p)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       // allocate net device structure with priv pointing to stats structure
-       pVEthNetDevice_g =
-           alloc_netdev(sizeof(struct net_device_stats), EPL_VETH_NAME,
-                        ether_setup);
-//    pVEthNetDevice_g = alloc_etherdev(sizeof (struct net_device_stats));
-
-       if (pVEthNetDevice_g == NULL) {
-               Ret = kEplNoResource;
-               goto Exit;
-       }
-
-       pVEthNetDevice_g->netdev_ops = &epl_netdev_ops;
-       pVEthNetDevice_g->watchdog_timeo = EPL_VETH_TX_TIMEOUT;
-       pVEthNetDevice_g->destructor = free_netdev;
-
-       // copy own MAC address to net device structure
-       memcpy(pVEthNetDevice_g->dev_addr, pInitParam_p->m_be_abSrcMac, 6);
-
-       //register VEth to the network subsystem
-       if (register_netdev(pVEthNetDevice_g)) {
-               EPL_DBGLVL_VETH_TRACE0
-                   ("VEthAddInstance: Could not register VEth...\n");
-       } else {
-               EPL_DBGLVL_VETH_TRACE0
-                   ("VEthAddInstance: Register VEth successfull...\n");
-       }
-
-      Exit:
-       return Ret;
-}
-
-tEplKernel VEthDelInstance(void)
-{
-       tEplKernel Ret = kEplSuccessful;
-
-       if (pVEthNetDevice_g != NULL) {
-               //unregister VEth from the network subsystem
-               unregister_netdev(pVEthNetDevice_g);
-               // destructor was set to free_netdev,
-               // so we do not need to call free_netdev here
-               pVEthNetDevice_g = NULL;
-       }
-
-       return Ret;
-}
-
-#endif // (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_VETH)) != 0)
diff --git a/drivers/staging/epl/amix86.c b/drivers/staging/epl/amix86.c
deleted file mode 100644 (file)
index d40ad91..0000000
+++ /dev/null
@@ -1,861 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  Abstract Memory Interface for x86 compatible
-
-  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: amix86.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.3 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    ...
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  r.s.: first implemetation
-
-  2006-06-13  d.k.: duplicate functions for little endian and big endian
-
-****************************************************************************/
-
-//#include "global.h"
-//#include "EplAmi.h"
-#include "EplInc.h"
-
-//---------------------------------------------------------------------------
-// typedef
-//---------------------------------------------------------------------------
-
-typedef struct {
-       u16 m_wWord;
-
-} twStruct;
-
-typedef struct {
-       u32 m_dwDword;
-
-} tdwStruct;
-
-typedef struct {
-       u64 m_qwQword;
-
-} tqwStruct;
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiSetXXXToBe()
-//
-// Description: writes the specified value to the absolute address in
-//              big endian
-//
-// Parameters:  pAddr_p                 = absolute address
-//              xXXXVal_p               = value
-//
-// Returns:     (none)
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-//------------< write u8 in big endian >--------------------------
-/*
-void AmiSetByteToBe (void *pAddr_p, u8 bByteVal_p)
-{
-
-       *(u8 *)pAddr_p = bByteVal_p;
-
-}
-*/
-
-//------------< write u16 in big endian >--------------------------
-
-void AmiSetWordToBe(void * pAddr_p, u16 wWordVal_p)
-{
-       twStruct *pwStruct;
-       twStruct wValue;
-
-       wValue.m_wWord = (u16) ((wWordVal_p & 0x00FF) << 8);    //LSB to MSB
-       wValue.m_wWord |= (u16) ((wWordVal_p & 0xFF00) >> 8);   //MSB to LSB
-
-       pwStruct = (twStruct *) pAddr_p;
-       pwStruct->m_wWord = wValue.m_wWord;
-
-}
-
-//------------< write u32 in big endian >-------------------------
-
-void AmiSetDwordToBe(void *pAddr_p, u32 dwDwordVal_p)
-{
-       tdwStruct *pdwStruct;
-       tdwStruct dwValue;
-
-       dwValue.m_dwDword = ((dwDwordVal_p & 0x000000FF) << 24);        //LSB to MSB
-       dwValue.m_dwDword |= ((dwDwordVal_p & 0x0000FF00) << 8);
-       dwValue.m_dwDword |= ((dwDwordVal_p & 0x00FF0000) >> 8);
-       dwValue.m_dwDword |= ((dwDwordVal_p & 0xFF000000) >> 24);       //MSB to LSB
-
-       pdwStruct = (tdwStruct *) pAddr_p;
-       pdwStruct->m_dwDword = dwValue.m_dwDword;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiSetXXXToLe()
-//
-// Description: writes the specified value to the absolute address in
-//              little endian
-//
-// Parameters:  pAddr_p                 = absolute address
-//              xXXXVal_p               = value
-//
-// Returns:     (none)
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-//------------< write u8 in little endian >--------------------------
-/*
-void AmiSetByteToLe (void *pAddr_p, u8 bByteVal_p)
-{
-
-       *(u8 *)pAddr_p = bByteVal_p;
-
-}
-*/
-
-//------------< write u16 in little endian >--------------------------
-
-void AmiSetWordToLe(void *pAddr_p, u16 wWordVal_p)
-{
-       twStruct *pwStruct;
-
-       pwStruct = (twStruct *) pAddr_p;
-       pwStruct->m_wWord = wWordVal_p;
-
-}
-
-//------------< write u32 in little endian >-------------------------
-
-void AmiSetDwordToLe(void *pAddr_p, u32 dwDwordVal_p)
-{
-       tdwStruct *pdwStruct;
-
-       pdwStruct = (tdwStruct *) pAddr_p;
-       pdwStruct->m_dwDword = dwDwordVal_p;
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiGetXXXFromBe()
-//
-// Description: reads the specified value from the absolute address in
-//              big endian
-//
-// Parameters:  pAddr_p                 = absolute address
-//
-// Returns:     XXX                     = value
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-//------------< read u8 in big endian >---------------------------
-/*
-u8 AmiGetByteFromBe (void *pAddr_p)
-{
-
-       return ( *(u8 *)pAddr_p );
-
-}
-*/
-
-//------------< read u16 in big endian >---------------------------
-
-u16 AmiGetWordFromBe(void *pAddr_p)
-{
-       twStruct *pwStruct;
-       twStruct wValue;
-
-       pwStruct = (twStruct *) pAddr_p;
-
-       wValue.m_wWord = (u16) ((pwStruct->m_wWord & 0x00FF) << 8);     //LSB to MSB
-       wValue.m_wWord |= (u16) ((pwStruct->m_wWord & 0xFF00) >> 8);    //MSB to LSB
-
-       return (wValue.m_wWord);
-
-}
-
-//------------< read u32 in big endian >--------------------------
-
-u32 AmiGetDwordFromBe(void *pAddr_p)
-{
-       tdwStruct *pdwStruct;
-       tdwStruct dwValue;
-
-       pdwStruct = (tdwStruct *) pAddr_p;
-
-       dwValue.m_dwDword = ((pdwStruct->m_dwDword & 0x000000FF) << 24);        //LSB to MSB
-       dwValue.m_dwDword |= ((pdwStruct->m_dwDword & 0x0000FF00) << 8);
-       dwValue.m_dwDword |= ((pdwStruct->m_dwDword & 0x00FF0000) >> 8);
-       dwValue.m_dwDword |= ((pdwStruct->m_dwDword & 0xFF000000) >> 24);       //MSB to LSB
-
-       return (dwValue.m_dwDword);
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiGetXXXFromLe()
-//
-// Description: reads the specified value from the absolute address in
-//              little endian
-//
-// Parameters:  pAddr_p                 = absolute address
-//
-// Returns:     XXX                     = value
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-//------------< read u8 in little endian >---------------------------
-/*
-u8 AmiGetByteFromLe (void *pAddr_p)
-{
-
-       return ( *(u8 *)pAddr_p );
-
-}
-*/
-
-//------------< read u16 in little endian >---------------------------
-
-u16 AmiGetWordFromLe(void *pAddr_p)
-{
-       twStruct *pwStruct;
-
-       pwStruct = (twStruct *) pAddr_p;
-       return (pwStruct->m_wWord);
-}
-
-//------------< read u32 in little endian >--------------------------
-
-u32 AmiGetDwordFromLe(void *pAddr_p)
-{
-       tdwStruct *pdwStruct;
-
-       pdwStruct = (tdwStruct *) pAddr_p;
-       return (pdwStruct->m_dwDword);
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiSetDword24ToBe()
-//
-// Description: sets a 24 bit value to a buffer in big endian
-//
-// Parameters:  pAddr_p         = pointer to destination buffer
-//              dwDwordVal_p    = value to set
-//
-// Return:      void
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-
-void AmiSetDword24ToBe(void *pAddr_p, u32 dwDwordVal_p)
-{
-       ((u8 *) pAddr_p)[0] = ((u8 *) & dwDwordVal_p)[2];
-       ((u8 *) pAddr_p)[1] = ((u8 *) & dwDwordVal_p)[1];
-       ((u8 *) pAddr_p)[2] = ((u8 *) & dwDwordVal_p)[0];
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiSetDword24ToLe()
-//
-// Description: sets a 24 bit value to a buffer in little endian
-//
-// Parameters:  pAddr_p         = pointer to destination buffer
-//              dwDwordVal_p    = value to set
-//
-// Return:      void
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-
-void AmiSetDword24ToLe(void *pAddr_p, u32 dwDwordVal_p)
-{
-       ((u8 *) pAddr_p)[0] = ((u8 *) & dwDwordVal_p)[0];
-       ((u8 *) pAddr_p)[1] = ((u8 *) & dwDwordVal_p)[1];
-       ((u8 *) pAddr_p)[2] = ((u8 *) & dwDwordVal_p)[2];
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiGetDword24FromBe()
-//
-// Description: reads a 24 bit value from a buffer in big endian
-//
-// Parameters:  pAddr_p         = pointer to source buffer
-//
-// Return:      u32           = read value
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-u32 AmiGetDword24FromBe(void *pAddr_p)
-{
-       tdwStruct dwStruct;
-
-       dwStruct.m_dwDword = AmiGetDwordFromBe(pAddr_p);
-       dwStruct.m_dwDword >>= 8;
-
-       return (dwStruct.m_dwDword);
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiGetDword24FromLe()
-//
-// Description: reads a 24 bit value from a buffer in little endian
-//
-// Parameters:  pAddr_p         = pointer to source buffer
-//
-// Return:      u32           = read value
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-u32 AmiGetDword24FromLe(void *pAddr_p)
-{
-       tdwStruct dwStruct;
-
-       dwStruct.m_dwDword = AmiGetDwordFromLe(pAddr_p);
-       dwStruct.m_dwDword &= 0x00FFFFFF;
-
-       return (dwStruct.m_dwDword);
-}
-
-//#ifdef USE_VAR64
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiSetQword64ToBe()
-//
-// Description: sets a 64 bit value to a buffer in big endian
-//
-// Parameters:  pAddr_p         = pointer to destination buffer
-//              qwQwordVal_p    = quadruple word value
-//
-// Return:      void
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-void AmiSetQword64ToBe(void *pAddr_p, u64 qwQwordVal_p)
-{
-       ((u8 *) pAddr_p)[0] = ((u8 *) & qwQwordVal_p)[7];
-       ((u8 *) pAddr_p)[1] = ((u8 *) & qwQwordVal_p)[6];
-       ((u8 *) pAddr_p)[2] = ((u8 *) & qwQwordVal_p)[5];
-       ((u8 *) pAddr_p)[3] = ((u8 *) & qwQwordVal_p)[4];
-       ((u8 *) pAddr_p)[4] = ((u8 *) & qwQwordVal_p)[3];
-       ((u8 *) pAddr_p)[5] = ((u8 *) & qwQwordVal_p)[2];
-       ((u8 *) pAddr_p)[6] = ((u8 *) & qwQwordVal_p)[1];
-       ((u8 *) pAddr_p)[7] = ((u8 *) & qwQwordVal_p)[0];
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiSetQword64ToLe()
-//
-// Description: sets a 64 bit value to a buffer in little endian
-//
-// Parameters:  pAddr_p         = pointer to destination buffer
-//              qwQwordVal_p    = quadruple word value
-//
-// Return:      void
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-void AmiSetQword64ToLe(void *pAddr_p, u64 qwQwordVal_p)
-{
-       u64 *pqwDst;
-
-       pqwDst = (u64 *) pAddr_p;
-       *pqwDst = qwQwordVal_p;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiGetQword64FromBe()
-//
-// Description: reads a 64 bit value from a buffer in big endian
-//
-// Parameters:  pAddr_p         = pointer to source buffer
-//
-// Return:      void
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-u64 AmiGetQword64FromBe(void *pAddr_p)
-{
-       tqwStruct qwStruct;
-
-       ((u8 *) & qwStruct.m_qwQword)[0] = ((u8 *) pAddr_p)[7];
-       ((u8 *) & qwStruct.m_qwQword)[1] = ((u8 *) pAddr_p)[6];
-       ((u8 *) & qwStruct.m_qwQword)[2] = ((u8 *) pAddr_p)[5];
-       ((u8 *) & qwStruct.m_qwQword)[3] = ((u8 *) pAddr_p)[4];
-       ((u8 *) & qwStruct.m_qwQword)[4] = ((u8 *) pAddr_p)[3];
-       ((u8 *) & qwStruct.m_qwQword)[5] = ((u8 *) pAddr_p)[2];
-       ((u8 *) & qwStruct.m_qwQword)[6] = ((u8 *) pAddr_p)[1];
-       ((u8 *) & qwStruct.m_qwQword)[7] = ((u8 *) pAddr_p)[0];
-
-       return (qwStruct.m_qwQword);
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiGetQword64FromLe()
-//
-// Description: reads a 64 bit value from a buffer in little endian
-//
-// Parameters:  pAddr_p         = pointer to source buffer
-//
-// Return:      void
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-u64 AmiGetQword64FromLe(void *pAddr_p)
-{
-       tqwStruct *pqwStruct;
-       tqwStruct qwStruct;
-
-       pqwStruct = (tqwStruct *) pAddr_p;
-       qwStruct.m_qwQword = pqwStruct->m_qwQword;
-
-       return (qwStruct.m_qwQword);
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiSetQword40ToBe()
-//
-// Description: sets a 40 bit value to a buffer in big endian
-//
-// Parameters:  pAddr_p         = pointer to destination buffer
-//              qwQwordVal_p    = quadruple word value
-//
-// Return:      void
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-
-void AmiSetQword40ToBe(void *pAddr_p, u64 qwQwordVal_p)
-{
-
-       ((u8 *) pAddr_p)[0] = ((u8 *) & qwQwordVal_p)[4];
-       ((u8 *) pAddr_p)[1] = ((u8 *) & qwQwordVal_p)[3];
-       ((u8 *) pAddr_p)[2] = ((u8 *) & qwQwordVal_p)[2];
-       ((u8 *) pAddr_p)[3] = ((u8 *) & qwQwordVal_p)[1];
-       ((u8 *) pAddr_p)[4] = ((u8 *) & qwQwordVal_p)[0];
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiSetQword40ToLe()
-//
-// Description: sets a 40 bit value to a buffer in little endian
-//
-// Parameters:  pAddr_p         = pointer to destination buffer
-//              qwQwordVal_p    = quadruple word value
-//
-// Return:      void
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-
-void AmiSetQword40ToLe(void *pAddr_p, u64 qwQwordVal_p)
-{
-
-       ((u32 *) pAddr_p)[0] = ((u32 *) & qwQwordVal_p)[0];
-       ((u8 *) pAddr_p)[4] = ((u8 *) & qwQwordVal_p)[4];
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiGetQword40FromBe()
-//
-// Description: reads a 40 bit value from a buffer in big endian
-//
-// Parameters:  pAddr_p         = pointer to source buffer
-//
-// Return:      u64
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-
-u64 AmiGetQword40FromBe(void *pAddr_p)
-{
-
-       tqwStruct qwStruct;
-
-       qwStruct.m_qwQword = AmiGetQword64FromBe(pAddr_p);
-       qwStruct.m_qwQword >>= 24;
-
-       return (qwStruct.m_qwQword);
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiGetQword40FromLe()
-//
-// Description: reads a 40 bit value from a buffer in little endian
-//
-// Parameters:  pAddr_p         = pointer to source buffer
-//
-// Return:      u64
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-
-u64 AmiGetQword40FromLe(void *pAddr_p)
-{
-
-       tqwStruct qwStruct;
-
-       qwStruct.m_qwQword = AmiGetQword64FromLe(pAddr_p);
-       qwStruct.m_qwQword &= 0x000000FFFFFFFFFFLL;
-
-       return (qwStruct.m_qwQword);
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiSetQword48ToBe()
-//
-// Description: sets a 48 bit value to a buffer in big endian
-//
-// Parameters:  pAddr_p         = pointer to destination buffer
-//              qwQwordVal_p    = quadruple word value
-//
-// Return:      void
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-
-void AmiSetQword48ToBe(void *pAddr_p, u64 qwQwordVal_p)
-{
-
-       ((u8 *) pAddr_p)[0] = ((u8 *) & qwQwordVal_p)[5];
-       ((u8 *) pAddr_p)[1] = ((u8 *) & qwQwordVal_p)[4];
-       ((u8 *) pAddr_p)[2] = ((u8 *) & qwQwordVal_p)[3];
-       ((u8 *) pAddr_p)[3] = ((u8 *) & qwQwordVal_p)[2];
-       ((u8 *) pAddr_p)[4] = ((u8 *) & qwQwordVal_p)[1];
-       ((u8 *) pAddr_p)[5] = ((u8 *) & qwQwordVal_p)[0];
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiSetQword48ToLe()
-//
-// Description: sets a 48 bit value to a buffer in little endian
-//
-// Parameters:  pAddr_p         = pointer to destination buffer
-//              qwQwordVal_p    = quadruple word value
-//
-// Return:      void
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-
-void AmiSetQword48ToLe(void *pAddr_p, u64 qwQwordVal_p)
-{
-
-       ((u32 *) pAddr_p)[0] = ((u32 *) & qwQwordVal_p)[0];
-       ((u16 *) pAddr_p)[2] = ((u16 *) & qwQwordVal_p)[2];
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiGetQword48FromBe()
-//
-// Description: reads a 48 bit value from a buffer in big endian
-//
-// Parameters:  pAddr_p         = pointer to source buffer
-//
-// Return:      u64
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-
-u64 AmiGetQword48FromBe(void *pAddr_p)
-{
-
-       tqwStruct qwStruct;
-
-       qwStruct.m_qwQword = AmiGetQword64FromBe(pAddr_p);
-       qwStruct.m_qwQword >>= 16;
-
-       return (qwStruct.m_qwQword);
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiGetQword48FromLe()
-//
-// Description: reads a 48 bit value from a buffer in little endian
-//
-// Parameters:  pAddr_p         = pointer to source buffer
-//
-// Return:      u64
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-
-u64 AmiGetQword48FromLe(void *pAddr_p)
-{
-
-       tqwStruct qwStruct;
-
-       qwStruct.m_qwQword = AmiGetQword64FromLe(pAddr_p);
-       qwStruct.m_qwQword &= 0x0000FFFFFFFFFFFFLL;
-
-       return (qwStruct.m_qwQword);
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiSetQword56ToBe()
-//
-// Description: sets a 56 bit value to a buffer in big endian
-//
-// Parameters:  pAddr_p         = pointer to destination buffer
-//              qwQwordVal_p    = quadruple word value
-//
-// Return:      void
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-
-void AmiSetQword56ToBe(void *pAddr_p, u64 qwQwordVal_p)
-{
-
-       ((u8 *) pAddr_p)[0] = ((u8 *) & qwQwordVal_p)[6];
-       ((u8 *) pAddr_p)[1] = ((u8 *) & qwQwordVal_p)[5];
-       ((u8 *) pAddr_p)[2] = ((u8 *) & qwQwordVal_p)[4];
-       ((u8 *) pAddr_p)[3] = ((u8 *) & qwQwordVal_p)[3];
-       ((u8 *) pAddr_p)[4] = ((u8 *) & qwQwordVal_p)[2];
-       ((u8 *) pAddr_p)[5] = ((u8 *) & qwQwordVal_p)[1];
-       ((u8 *) pAddr_p)[6] = ((u8 *) & qwQwordVal_p)[0];
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiSetQword56ToLe()
-//
-// Description: sets a 56 bit value to a buffer in little endian
-//
-// Parameters:  pAddr_p         = pointer to destination buffer
-//              qwQwordVal_p    = quadruple word value
-//
-// Return:      void
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-
-void AmiSetQword56ToLe(void *pAddr_p, u64 qwQwordVal_p)
-{
-
-       ((u32 *) pAddr_p)[0] = ((u32 *) & qwQwordVal_p)[0];
-       ((u16 *) pAddr_p)[2] = ((u16 *) & qwQwordVal_p)[2];
-       ((u8 *) pAddr_p)[6] = ((u8 *) & qwQwordVal_p)[6];
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiGetQword56FromBe()
-//
-// Description: reads a 56 bit value from a buffer in big endian
-//
-// Parameters:  pAddr_p         = pointer to source buffer
-//
-// Return:      u64
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-
-u64 AmiGetQword56FromBe(void *pAddr_p)
-{
-
-       tqwStruct qwStruct;
-
-       qwStruct.m_qwQword = AmiGetQword64FromBe(pAddr_p);
-       qwStruct.m_qwQword >>= 8;
-
-       return (qwStruct.m_qwQword);
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiGetQword56FromLe()
-//
-// Description: reads a 56 bit value from a buffer in little endian
-//
-// Parameters:  pAddr_p         = pointer to source buffer
-//
-// Return:      u64
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-
-u64 AmiGetQword56FromLe(void *pAddr_p)
-{
-
-       tqwStruct qwStruct;
-
-       qwStruct.m_qwQword = AmiGetQword64FromLe(pAddr_p);
-       qwStruct.m_qwQword &= 0x00FFFFFFFFFFFFFFLL;
-
-       return (qwStruct.m_qwQword);
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiSetTimeOfDay()
-//
-// Description: sets a TIME_OF_DAY (CANopen) value to a buffer
-//
-// Parameters:  pAddr_p         = pointer to destination buffer
-//              pTimeOfDay_p    = pointer to struct TIME_OF_DAY
-//
-// Return:      void
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-
-void AmiSetTimeOfDay(void *pAddr_p, tTimeOfDay *pTimeOfDay_p)
-{
-
-       AmiSetDwordToLe(((u8 *) pAddr_p), pTimeOfDay_p->m_dwMs & 0x0FFFFFFF);
-       AmiSetWordToLe(((u8 *) pAddr_p) + 4, pTimeOfDay_p->m_wDays);
-
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    AmiGetTimeOfDay()
-//
-// Description: reads a TIME_OF_DAY (CANopen) value from a buffer
-//
-// Parameters:  pAddr_p         = pointer to source buffer
-//              pTimeOfDay_p    = pointer to struct TIME_OF_DAY
-//
-// Return:      void
-//
-// State:       not tested
-//
-//---------------------------------------------------------------------------
-
-void AmiGetTimeOfDay(void *pAddr_p, tTimeOfDay *pTimeOfDay_p)
-{
-
-       pTimeOfDay_p->m_dwMs = AmiGetDwordFromLe(((u8 *) pAddr_p)) & 0x0FFFFFFF;
-       pTimeOfDay_p->m_wDays = AmiGetWordFromLe(((u8 *) pAddr_p) + 4);
-
-}
-
-// EOF
-
-// Die letzte Zeile muß unbedingt eine leere Zeile sein, weil manche Compiler
-// damit ein Problem haben, wenn das nicht so ist (z.B. GNU oder Borland C++ Builder).
diff --git a/drivers/staging/epl/demo_main.c b/drivers/staging/epl/demo_main.c
deleted file mode 100644 (file)
index 7ad10fc..0000000
+++ /dev/null
@@ -1,947 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  demoapplication for EPL MN (with SDO over UDP)
-                under Linux on X86 with RTL8139 Ethernet controller
-
-  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: demo_main.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.10 $  $Date: 2008/11/19 18:11:43 $
-
-                $State: Exp $
-
-                Build Environment:
-                GCC
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/09/01 d.k.:   start of implementation
-
-****************************************************************************/
-
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/errno.h>
-#include <linux/major.h>
-#include <asm/io.h>
-#include <asm/uaccess.h>
-#include <asm/atomic.h>
-#include <linux/sched.h>
-#include <linux/kmod.h>
-#include <linux/slab.h>
-#include <linux/pci.h>
-#include <linux/proc_fs.h>
-
-#include "Epl.h"
-#include "proc_fs.h"
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-// Metainformation
-MODULE_LICENSE("Dual BSD/GPL");
-#ifdef MODULE_AUTHOR
-MODULE_AUTHOR("Daniel.Krueger@SYSTEC-electronic.com");
-MODULE_DESCRIPTION("EPL MN demo");
-#endif
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-// TracePoint support for realtime-debugging
-#ifdef _DBG_TRACE_POINTS_
-void TgtDbgSignalTracePoint(u8 bTracePointNumber_p);
-#define TGT_DBG_SIGNAL_TRACE_POINT(p)   TgtDbgSignalTracePoint(p)
-#else
-#define TGT_DBG_SIGNAL_TRACE_POINT(p)
-#endif
-
-#define NODEID      0xF0       //=> MN
-#define CYCLE_LEN   5000       // [us]
-#define IP_ADDR     0xc0a86401 // 192.168.100.1
-#define SUBNET_MASK 0xFFFFFF00 // 255.255.255.0
-#define HOSTNAME    "SYS TEC electronic EPL Stack    "
-#define IF_ETH      EPL_VETH_NAME
-
-// LIGHT EFFECT
-#define DEFAULT_MAX_CYCLE_COUNT 20     // 6 is very fast
-#define APP_DEFAULT_MODE        0x01
-#define APP_LED_COUNT           5      // number of LEDs in one row
-#define APP_LED_MASK            ((1 << APP_LED_COUNT) - 1)
-#define APP_DOUBLE_LED_MASK     ((1 << (APP_LED_COUNT * 2)) - 1)
-#define APP_MODE_COUNT          5
-#define APP_MODE_MASK           ((1 << APP_MODE_COUNT) - 1)
-
-//---------------------------------------------------------------------------
-// local types
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// modul globale vars
-//---------------------------------------------------------------------------
-
-static const u8 abMacAddr[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
-
-static u8 bVarIn1_l;
-static u8 bVarOut1_l;
-static u8 bVarOut1Old_l;
-static u8 bModeSelect_l;               // state of the pushbuttons to select the mode
-static u8 bSpeedSelect_l;              // state of the pushbuttons to increase/decrease the speed
-static u8 bSpeedSelectOld_l;           // old state of the pushbuttons
-static u32 dwLeds_l;                   // current state of all LEDs
-static u8 bLedsRow1_l;         // current state of the LEDs in row 1
-static u8 bLedsRow2_l;         // current state of the LEDs in row 2
-static u8 abSelect_l[3];               // pushbuttons from CNs
-
-static u32 dwMode_l;                   // current mode
-static int iCurCycleCount_l;           // current cycle count
-static int iMaxCycleCount_l;           // maximum cycle count (i.e. number of cycles until next light movement step)
-static int iToggle;                    // indicates the light movement direction
-
-//static u8 abDomain_l[3000];
-
-static wait_queue_head_t WaitQueueShutdown_g;  // wait queue for tEplNmtEventSwitchOff
-static atomic_t AtomicShutdown_g = ATOMIC_INIT(FALSE);
-
-static u32 dw_le_CycleLen_g;
-
-static uint uiNodeId_g = EPL_C_ADR_INVALID;
-module_param_named(nodeid, uiNodeId_g, uint, 0);
-
-static uint uiCycleLen_g = CYCLE_LEN;
-module_param_named(cyclelen, uiCycleLen_g, uint, 0);
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-// This function is the entry point for your object dictionary. It is defined
-// in OBJDICT.C by define EPL_OBD_INIT_RAM_NAME. Use this function name to define
-// this function prototype here. If you want to use more than one Epl
-// instances then the function name of each object dictionary has to differ.
-
-tEplKernel EplObdInitRam(tEplObdInitParam *pInitParam_p);
-
-tEplKernel AppCbEvent(tEplApiEventType EventType_p,    // IN: event type (enum)
-                     tEplApiEventArg *pEventArg_p,     // IN: event argument (union)
-                     void *pUserArg_p);
-
-tEplKernel AppCbSync(void);
-
-
-//---------------------------------------------------------------------------
-//  Kernel Module specific Data Structures
-//---------------------------------------------------------------------------
-
-//module_init(EplLinInit);
-//module_exit(EplLinExit);
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:
-//
-// Description:
-//
-//
-//
-// Parameters:
-//
-//
-// Returns:
-//
-//
-// State:
-//
-//---------------------------------------------------------------------------
-#if 0
-static int __init EplLinInit(void)
-{
-       tEplKernel EplRet;
-       int iRet;
-       static tEplApiInitParam EplApiInitParam = { 0 };
-       char *sHostname = HOSTNAME;
-       char *argv[4], *envp[3];
-       char sBuffer[16];
-       unsigned int uiVarEntries;
-       tEplObdSize ObdSize;
-
-       atomic_set(&AtomicShutdown_g, TRUE);
-
-       // get node ID from insmod command line
-       EplApiInitParam.m_uiNodeId = uiNodeId_g;
-
-       if (EplApiInitParam.m_uiNodeId == EPL_C_ADR_INVALID) {  // invalid node ID set
-               // set default node ID
-               EplApiInitParam.m_uiNodeId = NODEID;
-       }
-
-       uiNodeId_g = EplApiInitParam.m_uiNodeId;
-
-       // calculate IP address
-       EplApiInitParam.m_dwIpAddress =
-           (0xFFFFFF00 & IP_ADDR) | EplApiInitParam.m_uiNodeId;
-
-       EplApiInitParam.m_fAsyncOnly = FALSE;
-
-       EplApiInitParam.m_uiSizeOfStruct = sizeof(EplApiInitParam);
-       EPL_MEMCPY(EplApiInitParam.m_abMacAddress, abMacAddr,
-                  sizeof(EplApiInitParam.m_abMacAddress));
-//     EplApiInitParam.m_abMacAddress[5] = (u8) EplApiInitParam.m_uiNodeId;
-       EplApiInitParam.m_dwFeatureFlags = -1;
-       EplApiInitParam.m_dwCycleLen = uiCycleLen_g;    // required for error detection
-       EplApiInitParam.m_uiIsochrTxMaxPayload = 100;   // const
-       EplApiInitParam.m_uiIsochrRxMaxPayload = 100;   // const
-       EplApiInitParam.m_dwPresMaxLatency = 50000;     // const; only required for IdentRes
-       EplApiInitParam.m_uiPreqActPayloadLimit = 36;   // required for initialisation (+28 bytes)
-       EplApiInitParam.m_uiPresActPayloadLimit = 36;   // required for initialisation of Pres frame (+28 bytes)
-       EplApiInitParam.m_dwAsndMaxLatency = 150000;    // const; only required for IdentRes
-       EplApiInitParam.m_uiMultiplCycleCnt = 0;        // required for error detection
-       EplApiInitParam.m_uiAsyncMtu = 1500;    // required to set up max frame size
-       EplApiInitParam.m_uiPrescaler = 2;      // required for sync
-       EplApiInitParam.m_dwLossOfFrameTolerance = 500000;
-       EplApiInitParam.m_dwAsyncSlotTimeout = 3000000;
-       EplApiInitParam.m_dwWaitSocPreq = 150000;
-       EplApiInitParam.m_dwDeviceType = -1;    // NMT_DeviceType_U32
-       EplApiInitParam.m_dwVendorId = -1;      // NMT_IdentityObject_REC.VendorId_U32
-       EplApiInitParam.m_dwProductCode = -1;   // NMT_IdentityObject_REC.ProductCode_U32
-       EplApiInitParam.m_dwRevisionNumber = -1;        // NMT_IdentityObject_REC.RevisionNo_U32
-       EplApiInitParam.m_dwSerialNumber = -1;  // NMT_IdentityObject_REC.SerialNo_U32
-       EplApiInitParam.m_dwSubnetMask = SUBNET_MASK;
-       EplApiInitParam.m_dwDefaultGateway = 0;
-       EPL_MEMCPY(EplApiInitParam.m_sHostname, sHostname,
-                  sizeof(EplApiInitParam.m_sHostname));
-
-       // currently unset parameters left at default value 0
-       //EplApiInitParam.m_qwVendorSpecificExt1;
-       //EplApiInitParam.m_dwVerifyConfigurationDate; // CFM_VerifyConfiguration_REC.ConfDate_U32
-       //EplApiInitParam.m_dwVerifyConfigurationTime; // CFM_VerifyConfiguration_REC.ConfTime_U32
-       //EplApiInitParam.m_dwApplicationSwDate;       // PDL_LocVerApplSw_REC.ApplSwDate_U32 on programmable device or date portion of NMT_ManufactSwVers_VS on non-programmable device
-       //EplApiInitParam.m_dwApplicationSwTime;       // PDL_LocVerApplSw_REC.ApplSwTime_U32 on programmable device or time portion of NMT_ManufactSwVers_VS on non-programmable device
-       //EplApiInitParam.m_abVendorSpecificExt2[48];
-
-       // set callback functions
-       EplApiInitParam.m_pfnCbEvent = AppCbEvent;
-       EplApiInitParam.m_pfnCbSync = AppCbSync;
-
-       printk
-           ("\n\n Hello, I'm a simple POWERLINK node running as %s!\n  (build: %s / %s)\n\n",
-            (uiNodeId_g ==
-             EPL_C_ADR_MN_DEF_NODE_ID ? "Managing Node" : "Controlled Node"),
-            __DATE__, __TIME__);
-
-       // initialize the Linux a wait queue for shutdown of this module
-       init_waitqueue_head(&WaitQueueShutdown_g);
-
-       // initialize the procfs device
-       EplRet = EplLinProcInit();
-       if (EplRet != kEplSuccessful) {
-               goto Exit;
-       }
-       // initialize POWERLINK stack
-       EplRet = EplApiInitialize(&EplApiInitParam);
-       if (EplRet != kEplSuccessful) {
-               goto Exit;
-       }
-       // link process variables used by CN to object dictionary
-       ObdSize = sizeof(bVarIn1_l);
-       uiVarEntries = 1;
-       EplRet =
-           EplApiLinkObject(0x6000, &bVarIn1_l, &uiVarEntries, &ObdSize, 0x01);
-       if (EplRet != kEplSuccessful) {
-               goto Exit;
-       }
-
-       ObdSize = sizeof(bVarOut1_l);
-       uiVarEntries = 1;
-       EplRet =
-           EplApiLinkObject(0x6200, &bVarOut1_l, &uiVarEntries, &ObdSize,
-                            0x01);
-       if (EplRet != kEplSuccessful) {
-               goto Exit;
-       }
-       // link process variables used by MN to object dictionary
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-       ObdSize = sizeof(bLedsRow1_l);
-       uiVarEntries = 1;
-       EplRet =
-           EplApiLinkObject(0x2000, &bLedsRow1_l, &uiVarEntries, &ObdSize,
-                            0x01);
-       if (EplRet != kEplSuccessful) {
-               goto Exit;
-       }
-
-       ObdSize = sizeof(bLedsRow2_l);
-       uiVarEntries = 1;
-       EplRet =
-           EplApiLinkObject(0x2000, &bLedsRow2_l, &uiVarEntries, &ObdSize,
-                            0x02);
-       if (EplRet != kEplSuccessful) {
-               goto Exit;
-       }
-
-       ObdSize = sizeof(bSpeedSelect_l);
-       uiVarEntries = 1;
-       EplRet =
-           EplApiLinkObject(0x2000, &bSpeedSelect_l, &uiVarEntries, &ObdSize,
-                            0x03);
-       if (EplRet != kEplSuccessful) {
-               goto Exit;
-       }
-
-       ObdSize = sizeof(bSpeedSelectOld_l);
-       uiVarEntries = 1;
-       EplRet =
-           EplApiLinkObject(0x2000, &bSpeedSelectOld_l, &uiVarEntries,
-                            &ObdSize, 0x04);
-       if (EplRet != kEplSuccessful) {
-               goto Exit;
-       }
-
-       ObdSize = sizeof(abSelect_l[0]);
-       uiVarEntries = sizeof(abSelect_l);
-       EplRet =
-           EplApiLinkObject(0x2200, &abSelect_l[0], &uiVarEntries, &ObdSize,
-                            0x01);
-       if (EplRet != kEplSuccessful) {
-               goto Exit;
-       }
-#endif
-
-       // link a DOMAIN to object 0x6100, but do not exit, if it is missing
-       ObdSize = sizeof(abDomain_l);
-       uiVarEntries = 1;
-       EplRet =
-           EplApiLinkObject(0x6100, &abDomain_l, &uiVarEntries, &ObdSize,
-                            0x00);
-       if (EplRet != kEplSuccessful) {
-               printk("EplApiLinkObject(0x6100): returns 0x%X\n", EplRet);
-       }
-       // reset old process variables
-       bVarOut1Old_l = 0;
-       bSpeedSelectOld_l = 0;
-       dwMode_l = APP_DEFAULT_MODE;
-       iMaxCycleCount_l = DEFAULT_MAX_CYCLE_COUNT;
-
-       // configure IP address of virtual network interface
-       // for TCP/IP communication over the POWERLINK network
-       sprintf(sBuffer, "%u.%u.%u.%u",
-               (EplApiInitParam.m_dwIpAddress >> 24),
-               ((EplApiInitParam.m_dwIpAddress >> 16) & 0xFF),
-               ((EplApiInitParam.m_dwIpAddress >> 8) & 0xFF),
-               (EplApiInitParam.m_dwIpAddress & 0xFF));
-       /* set up a minimal environment */
-       iRet = 0;
-       envp[iRet++] = "HOME=/";
-       envp[iRet++] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin";
-       envp[iRet] = NULL;
-
-       /* set up the argument list */
-       iRet = 0;
-       argv[iRet++] = "/sbin/ifconfig";
-       argv[iRet++] = IF_ETH;
-       argv[iRet++] = sBuffer;
-       argv[iRet] = NULL;
-
-       /* call ifconfig to configure the virtual network interface */
-       iRet = call_usermodehelper(argv[0], argv, envp, 1);
-       printk("ifconfig %s %s returned %d\n", argv[1], argv[2], iRet);
-
-       // start the NMT state machine
-       EplRet = EplApiExecNmtCommand(kEplNmtEventSwReset);
-       atomic_set(&AtomicShutdown_g, FALSE);
-
-      Exit:
-       printk("EplLinInit(): returns 0x%X\n", EplRet);
-       return EplRet;
-}
-
-static void __exit EplLinExit(void)
-{
-       tEplKernel EplRet;
-
-       // halt the NMT state machine
-       // so the processing of POWERLINK frames stops
-       EplRet = EplApiExecNmtCommand(kEplNmtEventSwitchOff);
-
-       // wait until NMT state machine is shut down
-       wait_event_interruptible(WaitQueueShutdown_g,
-                                (atomic_read(&AtomicShutdown_g) == TRUE));
-/*    if ((iErr != 0) || (atomic_read(&AtomicShutdown_g) == EVENT_STATE_IOCTL))
-    {   // waiting was interrupted by signal or application called wrong function
-        EplRet = kEplShutdown;
-    }*/
-       // delete instance for all modules
-       EplRet = EplApiShutdown();
-       printk("EplApiShutdown():  0x%X\n", EplRet);
-
-       // deinitialize proc fs
-       EplRet = EplLinProcFree();
-       printk("EplLinProcFree():        0x%X\n", EplRet);
-
-}
-#endif
-//=========================================================================//
-//                                                                         //
-//          P R I V A T E   F U N C T I O N S                              //
-//                                                                         //
-//=========================================================================//
-
-//---------------------------------------------------------------------------
-//
-// Function:    AppCbEvent
-//
-// Description: event callback function called by EPL API layer within
-//              user part (low priority).
-//
-// Parameters:  EventType_p     = event type
-//              pEventArg_p     = pointer to union, which describes
-//                                the event in detail
-//              pUserArg_p      = user specific argument
-//
-// Returns:     tEplKernel      = error code,
-//                                kEplSuccessful = no error
-//                                kEplReject = reject further processing
-//                                otherwise = post error event to API layer
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel AppCbEvent(tEplApiEventType EventType_p,    // IN: event type (enum)
-                     tEplApiEventArg *pEventArg_p,     // IN: event argument (union)
-                     void *pUserArg_p)
-{
-       tEplKernel EplRet = kEplSuccessful;
-
-       // check if NMT_GS_OFF is reached
-       switch (EventType_p) {
-       case kEplApiEventNmtStateChange:
-               {
-                       switch (pEventArg_p->m_NmtStateChange.m_NewNmtState) {
-                       case kEplNmtGsOff:
-                               {       // NMT state machine was shut down,
-                                       // because of user signal (CTRL-C) or critical EPL stack error
-                                       // -> also shut down EplApiProcess() and main()
-                                       EplRet = kEplShutdown;
-
-                                       printk
-                                           ("AppCbEvent(kEplNmtGsOff) originating event = 0x%X\n",
-                                            pEventArg_p->m_NmtStateChange.
-                                            m_NmtEvent);
-
-                                       // wake up EplLinExit()
-                                       atomic_set(&AtomicShutdown_g, TRUE);
-                                       wake_up_interruptible
-                                           (&WaitQueueShutdown_g);
-                                       break;
-                               }
-
-                       case kEplNmtGsResetCommunication:
-                               {
-                                       u32 dwBuffer;
-
-                                       // configure OD for MN in state ResetComm after reseting the OD
-                                       // TODO: setup your own network configuration here
-                                       dwBuffer = (EPL_NODEASSIGN_NODE_IS_CN | EPL_NODEASSIGN_NODE_EXISTS);    // 0x00000003L
-                                       EplRet =
-                                           EplApiWriteLocalObject(0x1F81, 0x01,
-                                                                  &dwBuffer,
-                                                                  4);
-                                       EplRet =
-                                           EplApiWriteLocalObject(0x1F81, 0x02,
-                                                                  &dwBuffer,
-                                                                  4);
-                                       EplRet =
-                                           EplApiWriteLocalObject(0x1F81, 0x03,
-                                                                  &dwBuffer,
-                                                                  4);
-                                       EplRet =
-                                           EplApiWriteLocalObject(0x1F81, 0x04,
-                                                                  &dwBuffer,
-                                                                  4);
-                                       EplRet =
-                                           EplApiWriteLocalObject(0x1F81, 0x05,
-                                                                  &dwBuffer,
-                                                                  4);
-                                       EplRet =
-                                           EplApiWriteLocalObject(0x1F81, 0x06,
-                                                                  &dwBuffer,
-                                                                  4);
-                                       EplRet =
-                                           EplApiWriteLocalObject(0x1F81, 0x07,
-                                                                  &dwBuffer,
-                                                                  4);
-                                       EplRet =
-                                           EplApiWriteLocalObject(0x1F81, 0x08,
-                                                                  &dwBuffer,
-                                                                  4);
-                                       EplRet =
-                                           EplApiWriteLocalObject(0x1F81, 0x20,
-                                                                  &dwBuffer,
-                                                                  4);
-                                       EplRet =
-                                           EplApiWriteLocalObject(0x1F81, 0xFE,
-                                                                  &dwBuffer,
-                                                                  4);
-                                       EplRet =
-                                           EplApiWriteLocalObject(0x1F81, 0x6E,
-                                                                  &dwBuffer,
-                                                                  4);
-
-//                    dwBuffer |= EPL_NODEASSIGN_MANDATORY_CN;    // 0x0000000BL
-//                    EplRet = EplApiWriteLocalObject(0x1F81, 0x6E, &dwBuffer, 4);
-                                       dwBuffer = (EPL_NODEASSIGN_MN_PRES | EPL_NODEASSIGN_NODE_EXISTS);       // 0x00010001L
-                                       EplRet =
-                                           EplApiWriteLocalObject(0x1F81, 0xF0,
-                                                                  &dwBuffer,
-                                                                  4);
-
-                                       // continue
-                               }
-
-                       case kEplNmtGsResetConfiguration:
-                               {
-                                       unsigned int uiSize;
-
-                                       // fetch object 0x1006 NMT_CycleLen_U32 from local OD (in little endian byte order)
-                                       // for configuration of remote CN
-                                       uiSize = 4;
-                                       EplRet =
-                                           EplApiReadObject(NULL, 0, 0x1006,
-                                                            0x00,
-                                                            &dw_le_CycleLen_g,
-                                                            &uiSize,
-                                                            kEplSdoTypeAsnd,
-                                                            NULL);
-                                       if (EplRet != kEplSuccessful) { // local OD access failed
-                                               break;
-                                       }
-                                       // continue
-                               }
-
-                       case kEplNmtMsPreOperational1:
-                               {
-                                       printk
-                                           ("AppCbEvent(0x%X) originating event = 0x%X\n",
-                                            pEventArg_p->m_NmtStateChange.
-                                            m_NewNmtState,
-                                            pEventArg_p->m_NmtStateChange.
-                                            m_NmtEvent);
-
-                                       // continue
-                               }
-
-                       case kEplNmtGsInitialising:
-                       case kEplNmtGsResetApplication:
-                       case kEplNmtMsNotActive:
-                       case kEplNmtCsNotActive:
-                       case kEplNmtCsPreOperational1:
-                               {
-                                       break;
-                               }
-
-                       case kEplNmtCsOperational:
-                       case kEplNmtMsOperational:
-                               {
-                                       break;
-                               }
-
-                       default:
-                               {
-                                       break;
-                               }
-                       }
-
-/*
-            switch (pEventArg_p->m_NmtStateChange.m_NmtEvent)
-            {
-                case kEplNmtEventSwReset:
-                case kEplNmtEventResetNode:
-                case kEplNmtEventResetCom:
-                case kEplNmtEventResetConfig:
-                case kEplNmtEventInternComError:
-                case kEplNmtEventNmtCycleError:
-                {
-                    printk("AppCbEvent(0x%X) originating event = 0x%X\n",
-                           pEventArg_p->m_NmtStateChange.m_NewNmtState,
-                           pEventArg_p->m_NmtStateChange.m_NmtEvent);
-                    break;
-                }
-
-                default:
-                {
-                    break;
-                }
-            }
-*/
-                       break;
-               }
-
-       case kEplApiEventCriticalError:
-       case kEplApiEventWarning:
-               {               // error or warning occured within the stack or the application
-                       // on error the API layer stops the NMT state machine
-
-                       printk
-                           ("AppCbEvent(Err/Warn): Source=%02X EplError=0x%03X",
-                            pEventArg_p->m_InternalError.m_EventSource,
-                            pEventArg_p->m_InternalError.m_EplError);
-                       // check additional argument
-                       switch (pEventArg_p->m_InternalError.m_EventSource) {
-                       case kEplEventSourceEventk:
-                       case kEplEventSourceEventu:
-                               {       // error occured within event processing
-                                       // either in kernel or in user part
-                                       printk(" OrgSource=%02X\n",
-                                              pEventArg_p->m_InternalError.
-                                              m_Arg.m_EventSource);
-                                       break;
-                               }
-
-                       case kEplEventSourceDllk:
-                               {       // error occured within the data link layer (e.g. interrupt processing)
-                                       // the u32 argument contains the DLL state and the NMT event
-                                       printk(" val=%X\n",
-                                              pEventArg_p->m_InternalError.
-                                              m_Arg.m_dwArg);
-                                       break;
-                               }
-
-                       default:
-                               {
-                                       printk("\n");
-                                       break;
-                               }
-                       }
-                       break;
-               }
-
-       case kEplApiEventNode:
-               {
-//            printk("AppCbEvent(Node): Source=%02X EplError=0x%03X", pEventArg_p->m_InternalError.m_EventSource, pEventArg_p->m_InternalError.m_EplError);
-                       // check additional argument
-                       switch (pEventArg_p->m_Node.m_NodeEvent) {
-                       case kEplNmtNodeEventCheckConf:
-                               {
-                                       tEplSdoComConHdl SdoComConHdl;
-                                       // update object 0x1006 on CN
-                                       EplRet =
-                                           EplApiWriteObject(&SdoComConHdl,
-                                                             pEventArg_p->
-                                                             m_Node.m_uiNodeId,
-                                                             0x1006, 0x00,
-                                                             &dw_le_CycleLen_g,
-                                                             4,
-                                                             kEplSdoTypeAsnd,
-                                                             NULL);
-                                       if (EplRet == kEplApiTaskDeferred) {    // SDO transfer started
-                                               EplRet = kEplReject;
-                                       } else if (EplRet == kEplSuccessful) {  // local OD access (should not occur)
-                                               printk
-                                                   ("AppCbEvent(Node) write to local OD\n");
-                                       } else {        // error occured
-                                               TGT_DBG_SIGNAL_TRACE_POINT(1);
-
-                                               EplRet =
-                                                   EplApiFreeSdoChannel
-                                                   (SdoComConHdl);
-                                               SdoComConHdl = 0;
-
-                                               EplRet =
-                                                   EplApiWriteObject
-                                                   (&SdoComConHdl,
-                                                    pEventArg_p->m_Node.
-                                                    m_uiNodeId, 0x1006, 0x00,
-                                                    &dw_le_CycleLen_g, 4,
-                                                    kEplSdoTypeAsnd, NULL);
-                                               if (EplRet == kEplApiTaskDeferred) {    // SDO transfer started
-                                                       EplRet = kEplReject;
-                                               } else {
-                                                       printk
-                                                           ("AppCbEvent(Node): EplApiWriteObject() returned 0x%02X\n",
-                                                            EplRet);
-                                               }
-                                       }
-
-                                       break;
-                               }
-
-                       default:
-                               {
-                                       break;
-                               }
-                       }
-                       break;
-               }
-
-       case kEplApiEventSdo:
-               {               // SDO transfer finished
-                       EplRet =
-                           EplApiFreeSdoChannel(pEventArg_p->m_Sdo.
-                                                m_SdoComConHdl);
-                       if (EplRet != kEplSuccessful) {
-                               break;
-                       }
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-                       if (pEventArg_p->m_Sdo.m_SdoComConState == kEplSdoComTransferFinished) {        // continue boot-up of CN with NMT command Reset Configuration
-                               EplRet =
-                                   EplApiMnTriggerStateChange(pEventArg_p->
-                                                              m_Sdo.m_uiNodeId,
-                                                              kEplNmtNodeCommandConfReset);
-                       } else {        // indicate configuration error CN
-                               EplRet =
-                                   EplApiMnTriggerStateChange(pEventArg_p->
-                                                              m_Sdo.m_uiNodeId,
-                                                              kEplNmtNodeCommandConfErr);
-                       }
-#endif
-
-                       break;
-               }
-
-       default:
-               break;
-       }
-
-       return EplRet;
-}
-
-//---------------------------------------------------------------------------
-//
-// Function:    AppCbSync
-//
-// Description: sync event callback function called by event module within
-//              kernel part (high priority).
-//              This function sets the outputs, reads the inputs and runs
-//              the control loop.
-//
-// Parameters:  void
-//
-// Returns:     tEplKernel      = error code,
-//                                kEplSuccessful = no error
-//                                otherwise = post error event to API layer
-//
-// State:
-//
-//---------------------------------------------------------------------------
-
-tEplKernel AppCbSync(void)
-{
-       tEplKernel EplRet = kEplSuccessful;
-
-       if (bVarOut1Old_l != bVarOut1_l) {      // output variable has changed
-               bVarOut1Old_l = bVarOut1_l;
-               // set LEDs
-
-//        printk("bVarIn = 0x%02X bVarOut = 0x%02X\n", (u16) bVarIn_l, (u16) bVarOut_l);
-       }
-       if (uiNodeId_g != EPL_C_ADR_MN_DEF_NODE_ID) {
-               bVarIn1_l++;
-       }
-
-       if (uiNodeId_g == EPL_C_ADR_MN_DEF_NODE_ID) {   // we are the master and must run the control loop
-
-               // collect inputs from CNs and own input
-               bSpeedSelect_l = (bVarIn1_l | abSelect_l[0]) & 0x07;
-
-               bModeSelect_l = abSelect_l[1] | abSelect_l[2];
-
-               if ((bModeSelect_l & APP_MODE_MASK) != 0) {
-                       dwMode_l = bModeSelect_l & APP_MODE_MASK;
-               }
-
-               iCurCycleCount_l--;
-
-               if (iCurCycleCount_l <= 0) {
-                       if ((dwMode_l & 0x01) != 0) {   // fill-up
-                               if (iToggle) {
-                                       if ((dwLeds_l & APP_DOUBLE_LED_MASK) ==
-                                           0x00) {
-                                               dwLeds_l = 0x01;
-                                       } else {
-                                               dwLeds_l <<= 1;
-                                               dwLeds_l++;
-                                               if (dwLeds_l >=
-                                                   APP_DOUBLE_LED_MASK) {
-                                                       iToggle = 0;
-                                               }
-                                       }
-                               } else {
-                                       dwLeds_l <<= 1;
-                                       if ((dwLeds_l & APP_DOUBLE_LED_MASK) ==
-                                           0x00) {
-                                               iToggle = 1;
-                                       }
-                               }
-                               bLedsRow1_l =
-                                   (unsigned char)(dwLeds_l & APP_LED_MASK);
-                               bLedsRow2_l =
-                                   (unsigned char)((dwLeds_l >> APP_LED_COUNT)
-                                                   & APP_LED_MASK);
-                       }
-
-                       else if ((dwMode_l & 0x02) != 0) {      // running light forward
-                               dwLeds_l <<= 1;
-                               if ((dwLeds_l > APP_DOUBLE_LED_MASK)
-                                   || (dwLeds_l == 0x00000000L)) {
-                                       dwLeds_l = 0x01;
-                               }
-                               bLedsRow1_l =
-                                   (unsigned char)(dwLeds_l & APP_LED_MASK);
-                               bLedsRow2_l =
-                                   (unsigned char)((dwLeds_l >> APP_LED_COUNT)
-                                                   & APP_LED_MASK);
-                       }
-
-                       else if ((dwMode_l & 0x04) != 0) {      // running light backward
-                               dwLeds_l >>= 1;
-                               if ((dwLeds_l > APP_DOUBLE_LED_MASK)
-                                   || (dwLeds_l == 0x00000000L)) {
-                                       dwLeds_l = 1 << (APP_LED_COUNT * 2);
-                               }
-                               bLedsRow1_l =
-                                   (unsigned char)(dwLeds_l & APP_LED_MASK);
-                               bLedsRow2_l =
-                                   (unsigned char)((dwLeds_l >> APP_LED_COUNT)
-                                                   & APP_LED_MASK);
-                       }
-
-                       else if ((dwMode_l & 0x08) != 0) {      // Knightrider
-                               if (bLedsRow1_l == 0x00) {
-                                       bLedsRow1_l = 0x01;
-                                       iToggle = 1;
-                               } else if (iToggle) {
-                                       bLedsRow1_l <<= 1;
-                                       if (bLedsRow1_l >=
-                                           (1 << (APP_LED_COUNT - 1))) {
-                                               iToggle = 0;
-                                       }
-                               } else {
-                                       bLedsRow1_l >>= 1;
-                                       if (bLedsRow1_l <= 0x01) {
-                                               iToggle = 1;
-                                       }
-                               }
-                               bLedsRow2_l = bLedsRow1_l;
-                       }
-
-                       else if ((dwMode_l & 0x10) != 0) {      // Knightrider
-                               if ((bLedsRow1_l == 0x00)
-                                   || (bLedsRow2_l == 0x00)
-                                   || ((bLedsRow2_l & ~APP_LED_MASK) != 0)) {
-                                       bLedsRow1_l = 0x01;
-                                       bLedsRow2_l =
-                                           (1 << (APP_LED_COUNT - 1));
-                                       iToggle = 1;
-                               } else if (iToggle) {
-                                       bLedsRow1_l <<= 1;
-                                       bLedsRow2_l >>= 1;
-                                       if (bLedsRow1_l >=
-                                           (1 << (APP_LED_COUNT - 1))) {
-                                               iToggle = 0;
-                                       }
-                               } else {
-                                       bLedsRow1_l >>= 1;
-                                       bLedsRow2_l <<= 1;
-                                       if (bLedsRow1_l <= 0x01) {
-                                               iToggle = 1;
-                                       }
-                               }
-                       }
-                       // set own output
-                       bVarOut1_l = bLedsRow1_l;
-//            bVarOut1_l = (bLedsRow1_l & 0x03) | (bLedsRow2_l << 2);
-
-                       // restart cycle counter
-                       iCurCycleCount_l = iMaxCycleCount_l;
-               }
-
-               if (bSpeedSelectOld_l == 0) {
-                       if ((bSpeedSelect_l & 0x01) != 0) {
-                               if (iMaxCycleCount_l < 200) {
-                                       iMaxCycleCount_l++;
-                               }
-                               bSpeedSelectOld_l = bSpeedSelect_l;
-                       } else if ((bSpeedSelect_l & 0x02) != 0) {
-                               if (iMaxCycleCount_l > 1) {
-                                       iMaxCycleCount_l--;
-                               }
-                               bSpeedSelectOld_l = bSpeedSelect_l;
-                       } else if ((bSpeedSelect_l & 0x04) != 0) {
-                               iMaxCycleCount_l = DEFAULT_MAX_CYCLE_COUNT;
-                               bSpeedSelectOld_l = bSpeedSelect_l;
-                       }
-               } else if (bSpeedSelect_l == 0) {
-                       bSpeedSelectOld_l = 0;
-               }
-       }
-
-       TGT_DBG_SIGNAL_TRACE_POINT(1);
-
-       return EplRet;
-}
-
-// EOF
diff --git a/drivers/staging/epl/edrv.h b/drivers/staging/epl/edrv.h
deleted file mode 100644 (file)
index 62b4e77..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  interface for ethernetdriver
-
-  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: edrv.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.6 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                Dev C++ and GNU-Compiler for m68k
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2005/08/01 m.b.:   start of implementation
-
-****************************************************************************/
-
-#ifndef _EDRV_H_
-#define _EDRV_H_
-
-#include "EplInc.h"
-#include "EplFrame.h"
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-// --------------------------------------------------------------------------
-#define MAX_ETH_DATA_SIZE       1500
-#define MIN_ETH_DATA_SIZE         46
-
-#define ETH_HDR_OFFSET          0      // Ethernet header at the top of the frame
-#define ETH_HDR_SIZE   14      // size of Ethernet header
-#define MIN_ETH_SIZE     (MIN_ETH_DATA_SIZE + ETH_HDR_SIZE)    // without CRC
-
-#define ETH_CRC_SIZE    4      // size of Ethernet CRC, i.e. FCS
-
-//---------------------------------------------------------------------------
-// types
-//---------------------------------------------------------------------------
-
-// position of a buffer in an ethernet-frame
-typedef enum {
-       kEdrvBufferFirstInFrame = 0x01, // first data buffer in an ethernet frame
-       kEdrvBufferMiddleInFrame = 0x02,        // a middle data buffer in an ethernet frame
-       kEdrvBufferLastInFrame = 0x04   // last data buffer in an ethernet frame
-} tEdrvBufferInFrame;
-
-// format of a tx-buffer
-typedef struct _tEdrvTxBuffer {
-       tEplMsgType m_EplMsgType;       // IN: type of EPL message, set by calling function
-       unsigned int m_uiTxMsgLen;      // IN: length of message to be send (set for each transmit call)
-       // ----------------------
-       unsigned int m_uiBufferNumber;  // OUT: number of the buffer, set by ethernetdriver
-       u8 *m_pbBuffer; // OUT: pointer to the buffer, set by ethernetdriver
-       tEplNetTime m_NetTime;  // OUT: Timestamp of end of transmission, set by ethernetdriver
-       // ----------------------
-       unsigned int m_uiMaxBufferLen;  // IN/OUT: maximum length of the buffer
-} tEdrvTxBuffer;
-
-// format of a rx-buffer
-typedef struct _tEdrvRxBuffer {
-       tEdrvBufferInFrame m_BufferInFrame;     // OUT position of received buffer in an ethernet-frame
-       unsigned int m_uiRxMsgLen;      // OUT: length of received buffer (without CRC)
-       u8 *m_pbBuffer; // OUT: pointer to the buffer, set by ethernetdriver
-       tEplNetTime m_NetTime;  // OUT: Timestamp of end of receiption
-
-} tEdrvRxBuffer;
-
-//typedef void (*tEdrvRxHandler) (u8 bBufferInFrame_p, tBufferDescr * pbBuffer_p);
-//typedef void (*tEdrvRxHandler) (u8 bBufferInFrame_p, u8 * pbEthernetData_p, u16 wDataLen_p);
-typedef void (*tEdrvRxHandler) (tEdrvRxBuffer * pRxBuffer_p);
-typedef void (*tEdrvTxHandler) (tEdrvTxBuffer * pTxBuffer_p);
-
-// format of init structure
-typedef struct {
-       u8 m_abMyMacAddr[6];    // the own MAC address
-
-//    u8            m_bNoOfRxBuffDescr;     // number of entries in rx bufferdescriptor table
-//    tBufferDescr *  m_pRxBuffDescrTable;    // rx bufferdescriptor table
-//    u16            m_wRxBufferSize;        // size of the whole rx buffer
-
-       tEdrvRxHandler m_pfnRxHandler;
-       tEdrvTxHandler m_pfnTxHandler;
-
-} tEdrvInitParam;
-
-//---------------------------------------------------------------------------
-// function prototypes
-//---------------------------------------------------------------------------
-
-tEplKernel EdrvInit(tEdrvInitParam * pEdrvInitParam_p);
-
-tEplKernel EdrvShutdown(void);
-
-tEplKernel EdrvDefineRxMacAddrEntry(u8 * pbMacAddr_p);
-tEplKernel EdrvUndefineRxMacAddrEntry(u8 * pbMacAddr_p);
-
-//tEplKernel EdrvDefineUnicastEntry     (u8 * pbUCEntry_p);
-//tEplKernel EdrvUndfineUnicastEntry    (u8 * pbUCEntry_p);
-
-tEplKernel EdrvAllocTxMsgBuffer(tEdrvTxBuffer * pBuffer_p);
-tEplKernel EdrvReleaseTxMsgBuffer(tEdrvTxBuffer * pBuffer_p);
-
-//tEplKernel EdrvWriteMsg               (tBufferDescr * pbBuffer_p);
-tEplKernel EdrvSendTxMsg(tEdrvTxBuffer * pBuffer_p);
-tEplKernel EdrvTxMsgReady(tEdrvTxBuffer * pBuffer_p);
-tEplKernel EdrvTxMsgStart(tEdrvTxBuffer * pBuffer_p);
-
-//tEplKernel EdrvReadMsg                (void);
-
-// interrupt handler called by target specific interrupt handler
-void EdrvInterruptHandler(void);
-
-#endif // #ifndef _EDRV_H_
diff --git a/drivers/staging/epl/global.h b/drivers/staging/epl/global.h
deleted file mode 100644 (file)
index 8c52d97..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-/****************************************************************************
-
-    global project definition file
-
-    12.06.1998   -rs
-    11.02.2002   r.d. Erweiterungen, Ergaenzungen
-    20.08.2002   SYS TEC electronic -as
-                 Definition Schluesselwort 'GENERIC'
-                 fuer das Erzeugen von Generic Pointer
-    28.08.2002   r.d. erweiterter SYS TEC Debug Code
-    16.09.2002   r.d. komplette Uebersetzung in Englisch
-    11.04.2003   f.j. Ergaenzung fuer Mitsubishi NC30 Compiler
-    17.06.2003   -rs  Definition von Basistypen in <#ifndef _WINDEF_> gesetzt
-    16.04.2004   r.d. Ergaenzung fuer Borland C++ Builder
-    30.08.2004   -rs  TRACE5 eingefügt
-    23.12.2005   d.k. Definitions for IAR compiler
-
-    $Id: global.h,v 1.6 2008/11/07 13:55:56 D.Krueger Exp $
-
-****************************************************************************/
-
-#ifndef _GLOBAL_H_
-#define _GLOBAL_H_
-
-
-#define TRACE  printk
-
-// --- logic types ---
-#ifndef BOOL
-#define BOOL unsigned char
-#endif
-
-// --- alias types ---
-#ifndef TRUE
-#define TRUE  0xFF
-#endif
-#ifndef FALSE
-#define FALSE 0x00
-#endif
-#ifndef _TIME_OF_DAY_DEFINED_
-typedef struct {
-       unsigned long int m_dwMs;
-       unsigned short int m_wDays;
-
-} tTimeOfDay;
-
-#define _TIME_OF_DAY_DEFINED_
-
-#endif
-
-//---------------------------------------------------------------------------
-//  Definition von TRACE
-//---------------------------------------------------------------------------
-
-#ifndef NDEBUG
-
-#ifndef TRACE0
-#define TRACE0(p0)                      TRACE(p0)
-#endif
-
-#ifndef TRACE1
-#define TRACE1(p0, p1)                  TRACE(p0, p1)
-#endif
-
-#ifndef TRACE2
-#define TRACE2(p0, p1, p2)              TRACE(p0, p1, p2)
-#endif
-
-#ifndef TRACE3
-#define TRACE3(p0, p1, p2, p3)          TRACE(p0, p1, p2, p3)
-#endif
-
-#ifndef TRACE4
-#define TRACE4(p0, p1, p2, p3, p4)      TRACE(p0, p1, p2, p3, p4)
-#endif
-
-#ifndef TRACE5
-#define TRACE5(p0, p1, p2, p3, p4, p5)  TRACE(p0, p1, p2, p3, p4, p5)
-#endif
-
-#ifndef TRACE6
-#define TRACE6(p0, p1, p2, p3, p4, p5, p6)  TRACE(p0, p1, p2, p3, p4, p5, p6)
-#endif
-
-#else
-
-#ifndef TRACE0
-#define TRACE0(p0)
-#endif
-
-#ifndef TRACE1
-#define TRACE1(p0, p1)
-#endif
-
-#ifndef TRACE2
-#define TRACE2(p0, p1, p2)
-#endif
-
-#ifndef TRACE3
-#define TRACE3(p0, p1, p2, p3)
-#endif
-
-#ifndef TRACE4
-#define TRACE4(p0, p1, p2, p3, p4)
-#endif
-
-#ifndef TRACE5
-#define TRACE5(p0, p1, p2, p3, p4, p5)
-#endif
-
-#ifndef TRACE6
-#define TRACE6(p0, p1, p2, p3, p4, p5, p6)
-#endif
-
-#endif
-
-//---------------------------------------------------------------------------
-//  definition of ASSERT
-//---------------------------------------------------------------------------
-
-#ifndef ASSERT
-#define ASSERT(p)
-#endif
-
-//---------------------------------------------------------------------------
-//  SYS TEC extensions
-//---------------------------------------------------------------------------
-
-// This macro doesn't print out C-file and line number of the failed assertion
-// but a string, which exactly names the mistake.
-#ifndef NDEBUG
-
-#define ASSERTMSG(expr,string)  if (!(expr)) {\
-                                        PRINTF0 ("Assertion failed: " string );\
-                                        while (1);}
-#else
-#define ASSERTMSG(expr,string)
-#endif
-
-//---------------------------------------------------------------------------
-
-#endif // #ifndef _GLOBAL_H_
-
-// Please keep an empty line at the end of this file.
diff --git a/drivers/staging/epl/kernel/EplDllk.h b/drivers/staging/epl/kernel/EplDllk.h
deleted file mode 100644 (file)
index a97920a..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for kernelspace DLL module
-
-  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: EplDllk.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.6 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/08 d.k.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#ifndef _EPL_DLLK_H_
-#define _EPL_DLLK_H_
-
-#include "../EplDll.h"
-#include "../EplEvent.h"
-
-typedef tEplKernel(*tEplDllkCbAsync) (tEplFrameInfo * pFrameInfo_p);
-
-typedef struct {
-       u8 m_be_abSrcMac[6];
-
-} tEplDllkInitParam;
-
-// forward declaration
-struct _tEdrvTxBuffer;
-
-struct _tEplDllkNodeInfo {
-       struct _tEplDllkNodeInfo *m_pNextNodeInfo;
-       struct _tEdrvTxBuffer *m_pPreqTxBuffer;
-       unsigned int m_uiNodeId;
-       u32 m_dwPresTimeout;
-       unsigned long m_ulDllErrorEvents;
-       tEplNmtState m_NmtState;
-       u16 m_wPresPayloadLimit;
-       u8 m_be_abMacAddr[6];
-       u8 m_bSoaFlag1;
-       BOOL m_fSoftDelete;     // delete node after error and ignore error
-
-};
-
-typedef struct _tEplDllkNodeInfo tEplDllkNodeInfo;
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLK)) != 0)
-
-tEplKernel EplDllkAddInstance(tEplDllkInitParam * pInitParam_p);
-
-tEplKernel EplDllkDelInstance(void);
-
-// called before NMT_GS_COMMUNICATING will be entered to configure fixed parameters
-tEplKernel EplDllkConfig(tEplDllConfigParam * pDllConfigParam_p);
-
-// set identity of local node (may be at any time, e.g. in case of hostname change)
-tEplKernel EplDllkSetIdentity(tEplDllIdentParam * pDllIdentParam_p);
-
-// process internal events and do work that cannot be done in interrupt-context
-tEplKernel EplDllkProcess(tEplEvent * pEvent_p);
-
-// registers handler for non-EPL frames
-tEplKernel EplDllkRegAsyncHandler(tEplDllkCbAsync pfnDllkCbAsync_p);
-
-// deregisters handler for non-EPL frames
-tEplKernel EplDllkDeregAsyncHandler(tEplDllkCbAsync pfnDllkCbAsync_p);
-
-// register C_DLL_MULTICAST_ASND in ethernet driver if any AsndServiceId is registered
-tEplKernel EplDllkSetAsndServiceIdFilter(tEplDllAsndServiceId ServiceId_p,
-                                        tEplDllAsndFilter Filter_p);
-
-// creates the buffer for a Tx frame and registers it to the ethernet driver
-tEplKernel EplDllkCreateTxFrame(unsigned int *puiHandle_p,
-                               tEplFrame ** ppFrame_p,
-                               unsigned int *puiFrameSize_p,
-                               tEplMsgType MsgType_p,
-                               tEplDllAsndServiceId ServiceId_p);
-
-tEplKernel EplDllkDeleteTxFrame(unsigned int uiHandle_p);
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-
-tEplKernel EplDllkAddNode(tEplDllNodeInfo * pNodeInfo_p);
-
-tEplKernel EplDllkDeleteNode(unsigned int uiNodeId_p);
-
-tEplKernel EplDllkSoftDeleteNode(unsigned int uiNodeId_p);
-
-tEplKernel EplDllkSetFlag1OfNode(unsigned int uiNodeId_p, u8 bSoaFlag1_p);
-
-tEplKernel EplDllkGetFirstNodeInfo(tEplDllkNodeInfo ** ppNodeInfo_p);
-
-#endif //(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-
-#endif // #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLK)) != 0)
-
-#endif // #ifndef _EPL_DLLK_H_
diff --git a/drivers/staging/epl/kernel/EplDllkCal.h b/drivers/staging/epl/kernel/EplDllkCal.h
deleted file mode 100644 (file)
index ddec1d5..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for kernelspace DLL Communication Abstraction Layer module
-
-  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: EplDllkCal.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.6 $  $Date: 2008/11/13 17:13:09 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/13 d.k.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#ifndef _EPL_DLLKCAL_H_
-#define _EPL_DLLKCAL_H_
-
-#include "../EplDll.h"
-#include "../EplEvent.h"
-
-typedef struct {
-       unsigned long m_ulCurTxFrameCountGen;
-       unsigned long m_ulCurTxFrameCountNmt;
-       unsigned long m_ulCurRxFrameCount;
-       unsigned long m_ulMaxTxFrameCountGen;
-       unsigned long m_ulMaxTxFrameCountNmt;
-       unsigned long m_ulMaxRxFrameCount;
-
-} tEplDllkCalStatistics;
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLK)) != 0)
-
-tEplKernel EplDllkCalAddInstance(void);
-
-tEplKernel EplDllkCalDelInstance(void);
-
-tEplKernel EplDllkCalAsyncGetTxCount(tEplDllAsyncReqPriority * pPriority_p,
-                                    unsigned int *puiCount_p);
-tEplKernel EplDllkCalAsyncGetTxFrame(void *pFrame_p,
-                                    unsigned int *puiFrameSize_p,
-                                    tEplDllAsyncReqPriority Priority_p);
-// only frames with registered AsndServiceIds are passed to CAL
-tEplKernel EplDllkCalAsyncFrameReceived(tEplFrameInfo * pFrameInfo_p);
-
-tEplKernel EplDllkCalAsyncSend(tEplFrameInfo * pFrameInfo_p,
-                              tEplDllAsyncReqPriority Priority_p);
-
-tEplKernel EplDllkCalAsyncClearBuffer(void);
-
-tEplKernel EplDllkCalGetStatistics(tEplDllkCalStatistics ** ppStatistics);
-
-tEplKernel EplDllkCalProcess(tEplEvent * pEvent_p);
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-
-tEplKernel EplDllkCalAsyncClearQueues(void);
-
-tEplKernel EplDllkCalIssueRequest(tEplDllReqServiceId Service_p,
-                                 unsigned int uiNodeId_p, u8 bSoaFlag1_p);
-
-tEplKernel EplDllkCalAsyncGetSoaRequest(tEplDllReqServiceId * pReqServiceId_p,
-                                       unsigned int *puiNodeId_p);
-
-tEplKernel EplDllkCalAsyncSetPendingRequests(unsigned int uiNodeId_p,
-                                            tEplDllAsyncReqPriority
-                                            AsyncReqPrio_p,
-                                            unsigned int uiCount_p);
-
-#endif //(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-
-#endif // #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLK)) != 0)
-
-#endif // #ifndef _EPL_DLLKCAL_H_
diff --git a/drivers/staging/epl/kernel/EplErrorHandlerk.h b/drivers/staging/epl/kernel/EplErrorHandlerk.h
deleted file mode 100644 (file)
index 185b597..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for kernel error handler module
-
-  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: EplErrorHandlerk.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.4 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/10/02 d.k.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#ifndef _EPL_ERRORHANDLERK_H_
-#define _EPL_ERRORHANDLERK_H_
-
-#include "../EplEvent.h"
-
-// init function
-tEplKernel EplErrorHandlerkInit(void);
-
-// add instance
-tEplKernel EplErrorHandlerkAddInstance(void);
-
-// delete instance
-tEplKernel EplErrorHandlerkDelInstance(void);
-
-// processes error events
-tEplKernel EplErrorHandlerkProcess(tEplEvent *pEvent_p);
-
-#endif // #ifndef _EPL_ERRORHANDLERK_H_
diff --git a/drivers/staging/epl/kernel/EplEventk.h b/drivers/staging/epl/kernel/EplEventk.h
deleted file mode 100644 (file)
index 0c2a60f..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for kernel event module
-
-  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: EplEventk.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.4 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/12 d.k.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#ifndef _EPL_EVENTK_H_
-#define _EPL_EVENTK_H_
-
-#include "../EplEvent.h"
-
-// init function
-tEplKernel EplEventkInit(tEplSyncCb fpSyncCb);
-
-// add instance
-tEplKernel EplEventkAddInstance(tEplSyncCb fpSyncCb);
-
-// delete instance
-tEplKernel EplEventkDelInstance(void);
-
-// Kernelthread that dispatches events in kernelspace
-tEplKernel EplEventkProcess(tEplEvent *pEvent_p);
-
-// post events from kernelspace
-tEplKernel EplEventkPost(tEplEvent *pEvent_p);
-
-// post errorevents from kernelspace
-tEplKernel EplEventkPostError(tEplEventSource EventSource_p,
-                             tEplKernel EplError_p,
-                             unsigned int uiArgSize_p, void *pArg_p);
-
-#endif // #ifndef _EPL_EVENTK_H_
diff --git a/drivers/staging/epl/kernel/EplNmtk.h b/drivers/staging/epl/kernel/EplNmtk.h
deleted file mode 100644 (file)
index 5dc8a37..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for NMT-Kernelspace-Module
-
-  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: EplNmtk.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.5 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/09 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#ifndef _EPLNMTK_H_
-#define _EPLNMTK_H_
-
-#include "../EplNmt.h"
-#include "EplEventk.h"
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTK)) != 0)
-tEplKernel EplNmtkInit(EPL_MCO_DECL_PTR_INSTANCE_PTR);
-
-tEplKernel EplNmtkAddInstance(EPL_MCO_DECL_PTR_INSTANCE_PTR);
-
-tEplKernel EplNmtkDelInstance(EPL_MCO_DECL_PTR_INSTANCE_PTR);
-
-tEplKernel EplNmtkProcess(EPL_MCO_DECL_PTR_INSTANCE_PTR_ tEplEvent *pEvent_p);
-
-tEplNmtState EplNmtkGetNmtState(EPL_MCO_DECL_PTR_INSTANCE_PTR);
-
-#endif // #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTK)) != 0)
-
-#endif // #ifndef _EPLNMTK_H_
diff --git a/drivers/staging/epl/kernel/EplObdk.h b/drivers/staging/epl/kernel/EplObdk.h
deleted file mode 100644 (file)
index 78c4d96..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for Epl-Obd-Kernel-Modul
-
-  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: EplObdk.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.8 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/19 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#ifndef _EPLOBDK_H_
-#define _EPLOBDK_H_
-
-#include "../EplObd.h"
-
-extern u8 abEplObdTrashObject_g[8];
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDK)) != 0)
-// ---------------------------------------------------------------------
-tEplKernel EplObdInit(EPL_MCO_DECL_PTR_INSTANCE_PTR_ tEplObdInitParam *pInitParam_p);
-
-// ---------------------------------------------------------------------
-tEplKernel EplObdAddInstance(EPL_MCO_DECL_PTR_INSTANCE_PTR_ tEplObdInitParam *pInitParam_p);
-
-// ---------------------------------------------------------------------
-tEplKernel EplObdDeleteInstance(EPL_MCO_DECL_INSTANCE_PTR);
-
-// ---------------------------------------------------------------------
-tEplKernel EplObdWriteEntry(EPL_MCO_DECL_INSTANCE_PTR_ unsigned int uiIndex_p,
-                           unsigned int uiSubIndex_p,
-                           void *pSrcData_p, tEplObdSize Size_p);
-
-// ---------------------------------------------------------------------
-tEplKernel EplObdReadEntry(EPL_MCO_DECL_INSTANCE_PTR_ unsigned int uiIndex_p,
-                          unsigned int uiSubIndex_p,
-                          void *pDstData_p, tEplObdSize *pSize_p);
-
-// ---------------------------------------------------------------------
-tEplKernel EplObdSetStoreLoadObjCallback(EPL_MCO_DECL_INSTANCE_PTR_ tEplObdStoreLoadObjCallback fpCallback_p);
-
-// ---------------------------------------------------------------------
-tEplKernel EplObdAccessOdPart(EPL_MCO_DECL_INSTANCE_PTR_ tEplObdPart ObdPart_p,
-                             tEplObdDir Direction_p);
-
-// ---------------------------------------------------------------------
-tEplKernel EplObdDefineVar(EPL_MCO_DECL_INSTANCE_PTR_ tEplVarParam *pVarParam_p);
-
-// ---------------------------------------------------------------------
-void *EplObdGetObjectDataPtr(EPL_MCO_DECL_INSTANCE_PTR_ unsigned int uiIndex_p,
-                            unsigned int uiSubIndex_p);
-// ---------------------------------------------------------------------
-tEplKernel EplObdRegisterUserOd(EPL_MCO_DECL_INSTANCE_PTR_ tEplObdEntryPtr pUserOd_p);
-
-// ---------------------------------------------------------------------
-void EplObdInitVarEntry(EPL_MCO_DECL_INSTANCE_PTR_ tEplObdVarEntry *pVarEntry_p,
-                       tEplObdType Type_p, tEplObdSize ObdSize_p);
-
-// ---------------------------------------------------------------------
-tEplObdSize EplObdGetDataSize(EPL_MCO_DECL_INSTANCE_PTR_ unsigned int uiIndex_p,
-                             unsigned int uiSubIndex_p);
-
-// ---------------------------------------------------------------------
-unsigned int EplObdGetNodeId(EPL_MCO_DECL_INSTANCE_PTR);
-
-// ---------------------------------------------------------------------
-tEplKernel EplObdSetNodeId(EPL_MCO_DECL_INSTANCE_PTR_ unsigned int uiNodeId_p,
-                          tEplObdNodeIdType NodeIdType_p);
-
-// ---------------------------------------------------------------------
-tEplKernel EplObdIsNumerical(EPL_MCO_DECL_INSTANCE_PTR_ unsigned int uiIndex_p,
-                            unsigned int uiSubIndex_p, BOOL *pfEntryNumerical);
-// ---------------------------------------------------------------------
-tEplKernel EplObdWriteEntryFromLe(EPL_MCO_DECL_INSTANCE_PTR_ unsigned int uiIndex_p,
-                                 unsigned int uiSubIndex_p,
-                                 void *pSrcData_p,
-                                 tEplObdSize Size_p);
-
-// ---------------------------------------------------------------------
-tEplKernel EplObdReadEntryToLe(EPL_MCO_DECL_INSTANCE_PTR_ unsigned int uiIndex_p,
-                              unsigned int uiSubIndex_p,
-                              void *pDstData_p,
-                              tEplObdSize *pSize_p);
-
-// ---------------------------------------------------------------------
-tEplKernel EplObdGetAccessType(EPL_MCO_DECL_INSTANCE_PTR_ unsigned int uiIndex_p,
-                              unsigned int uiSubIndex_p,
-                              tEplObdAccess *pAccessTyp_p);
-
-// ---------------------------------------------------------------------
-tEplKernel EplObdSearchVarEntry(EPL_MCO_DECL_INSTANCE_PTR_ unsigned int uiIndex_p,
-                               unsigned int uiSubindex_p,
-                               tEplObdVarEntry **ppVarEntry_p);
-
-#endif // end of #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDK)) != 0)
-
-#endif // #ifndef _EPLOBDK_H_
diff --git a/drivers/staging/epl/kernel/EplPdok.h b/drivers/staging/epl/kernel/EplPdok.h
deleted file mode 100644 (file)
index 24bfc3f..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for kernel PDO module
-
-  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: EplPdok.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.5 $  $Date: 2008/06/23 14:56:33 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/05/22 d.k.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#ifndef _EPL_PDOK_H_
-#define _EPL_PDOK_H_
-
-#include "../EplPdo.h"
-#include "../EplEvent.h"
-#include "../EplDll.h"
-
-// process events from queue (PDOs/frames and SoA for synchronization)
-tEplKernel EplPdokProcess(tEplEvent * pEvent_p);
-
-// copies RPDO to event queue for processing
-// is called by DLL in NMT_CS_READY_TO_OPERATE and NMT_CS_OPERATIONAL
-// PDO needs not to be valid
-tEplKernel EplPdokCbPdoReceived(tEplFrameInfo * pFrameInfo_p);
-
-// posts pointer and size of TPDO to event queue
-// is called by DLL in NMT_CS_PRE_OPERATIONAL_2,
-//     NMT_CS_READY_TO_OPERATE and NMT_CS_OPERATIONAL
-tEplKernel EplPdokCbPdoTransmitted(tEplFrameInfo * pFrameInfo_p);
-
-// posts SoA event to queue
-tEplKernel EplPdokCbSoa(tEplFrameInfo * pFrameInfo_p);
-
-tEplKernel EplPdokAddInstance(void);
-
-tEplKernel EplPdokDelInstance(void);
-
-#endif // #ifndef _EPL_PDOK_H_
diff --git a/drivers/staging/epl/kernel/EplPdokCal.h b/drivers/staging/epl/kernel/EplPdokCal.h
deleted file mode 100644 (file)
index 8a31edf..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for kernel PDO Communication Abstraction Layer module
-
-  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: EplPdokCal.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.4 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/26 d.k.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#ifndef _EPL_PDOKCAL_H_
-#define _EPL_PDOKCAL_H_
-
-#include "../EplInc.h"
-
-tEplKernel EplPdokCalAddInstance(void);
-
-tEplKernel EplPdokCalDelInstance(void);
-
-// sets flag for validity of TPDOs in shared memory
-tEplKernel EplPdokCalSetTpdosValid(BOOL fValid_p);
-
-// gets flag for validity of TPDOs from shared memory
-tEplKernel EplPdokCalAreTpdosValid(BOOL * pfValid_p);
-
-#endif // #ifndef _EPL_PDOKCAL_H_
diff --git a/drivers/staging/epl/kernel/EplTimerHighResk.h b/drivers/staging/epl/kernel/EplTimerHighResk.h
deleted file mode 100644 (file)
index a2124ee..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for EPL high resolution Timermodule
-
-  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: EplTimerHighResk.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.3 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/09/29 d.k.:   start of the implementation
-
-****************************************************************************/
-
-#ifndef _EPLTIMERHIGHRESK_H_
-#define _EPLTIMERHIGHRESK_H_
-
-#include "../EplTimer.h"
-
-tEplKernel EplTimerHighReskInit(void);
-
-tEplKernel EplTimerHighReskAddInstance(void);
-
-tEplKernel EplTimerHighReskDelInstance(void);
-
-tEplKernel EplTimerHighReskSetTimerNs(tEplTimerHdl *pTimerHdl_p,
-                                     unsigned long long ullTimeNs_p,
-                                     tEplTimerkCallback pfnCallback_p,
-                                     unsigned long ulArgument_p,
-                                     BOOL fContinuously_p);
-
-tEplKernel EplTimerHighReskModifyTimerNs(tEplTimerHdl *pTimerHdl_p,
-                                        unsigned long long ullTimeNs_p,
-                                        tEplTimerkCallback pfnCallback_p,
-                                        unsigned long ulArgument_p,
-                                        BOOL fContinuously_p);
-
-tEplKernel EplTimerHighReskDeleteTimer(tEplTimerHdl *pTimerHdl_p);
-
-#endif // #ifndef _EPLTIMERHIGHRESK_H_
diff --git a/drivers/staging/epl/kernel/EplTimerk.h b/drivers/staging/epl/kernel/EplTimerk.h
deleted file mode 100644 (file)
index 47c5f47..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for EPL Kernel-Timermodule
-
-  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: EplTimerk.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.4 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/07/06 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#ifndef _EPLTIMERK_H_
-#define _EPLTIMERK_H_
-
-#include "../EplTimer.h"
-#include "../user/EplEventu.h"
-
-#if EPL_TIMER_USE_USER != FALSE
-#include "../user/EplTimeru.h"
-#endif
-
-
-#if EPL_TIMER_USE_USER != FALSE
-#define EplTimerkInit           EplTimeruInit
-#define EplTimerkAddInstance    EplTimeruAddInstance
-#define EplTimerkDelInstance    EplTimeruDelInstance
-#define EplTimerkSetTimerMs     EplTimeruSetTimerMs
-#define EplTimerkModifyTimerMs  EplTimeruModifyTimerMs
-#define EplTimerkDeleteTimer    EplTimeruDeleteTimer
-#endif
-
-#if EPL_TIMER_USE_USER == FALSE
-tEplKernel EplTimerkInit(void);
-
-tEplKernel EplTimerkAddInstance(void);
-
-tEplKernel EplTimerkDelInstance(void);
-
-tEplKernel EplTimerkSetTimerMs(tEplTimerHdl *pTimerHdl_p,
-                              unsigned long ulTime_p,
-                              tEplTimerArg Argument_p);
-
-tEplKernel EplTimerkModifyTimerMs(tEplTimerHdl *pTimerHdl_p,
-                                 unsigned long ulTime_p,
-                                 tEplTimerArg Argument_p);
-
-tEplKernel EplTimerkDeleteTimer(tEplTimerHdl *pTimerHdl_p);
-#endif
-#endif // #ifndef _EPLTIMERK_H_
diff --git a/drivers/staging/epl/kernel/VirtualEthernet.h b/drivers/staging/epl/kernel/VirtualEthernet.h
deleted file mode 100644 (file)
index 4a42cce..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for virtual ethernet driver module
-
-  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: VirtualEthernet.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.4 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                KEIL uVision 2
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/09/19 d.k.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#ifndef _EPL_VETH_H_
-#define _EPL_VETH_H_
-
-#include "EplDllk.h"
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_VETH)) != 0)
-
-tEplKernel VEthAddInstance(tEplDllkInitParam *pInitParam_p);
-
-tEplKernel VEthDelInstance(void);
-
-#endif // #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_VETH)) != 0)
-
-#endif // #ifndef _EPL_VETH_H_
diff --git a/drivers/staging/epl/proc_fs.c b/drivers/staging/epl/proc_fs.c
deleted file mode 100644 (file)
index e48949d..0000000
+++ /dev/null
@@ -1,410 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  proc fs entry with diagnostic information under Linux
-
-  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: proc_fs.c,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.13 $  $Date: 2008/11/07 13:55:56 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GNU
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/07/31 d.k.:   start of implementation
-
-****************************************************************************/
-
-#include "kernel/EplNmtk.h"
-#include "user/EplNmtu.h"
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-#include "user/EplNmtMnu.h"
-#endif
-
-#include "kernel/EplDllkCal.h"
-
-//#include <linux/config.h>
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/errno.h>
-#include <linux/major.h>
-#include <asm/io.h>
-#include <asm/uaccess.h>
-#include <asm/atomic.h>
-#include <linux/proc_fs.h>
-#include <linux/spinlock.h>
-
-#ifdef CONFIG_COLDFIRE
-#include <asm/coldfire.h>
-#include "fec.h"
-#endif
-
-#include "proc_fs.h"
-
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/*          G L O B A L   D E F I N I T I O N S                            */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-#ifndef EPL_PROC_DEV_NAME
-#define EPL_PROC_DEV_NAME    "epl"
-#endif
-
-#ifndef DBG_TRACE_POINTS
-#define DBG_TRACE_POINTS    23 // # of supported debug trace points
-#endif
-
-#ifndef DBG_TRACE_VALUES
-#define DBG_TRACE_VALUES    24 // # of supported debug trace values (size of circular buffer)
-#endif
-
-//---------------------------------------------------------------------------
-// modul global types
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// local vars
-//---------------------------------------------------------------------------
-
-#ifdef _DBG_TRACE_POINTS_
-atomic_t aatmDbgTracePoint_l[DBG_TRACE_POINTS];
-u32 adwDbgTraceValue_l[DBG_TRACE_VALUES];
-u32 dwDbgTraceValueOld_l;
-unsigned int uiDbgTraceValuePos_l;
-spinlock_t spinlockDbgTraceValue_l;
-unsigned long ulDbTraceValueFlags_l;
-#endif
-
-//---------------------------------------------------------------------------
-// local function prototypes
-//---------------------------------------------------------------------------
-
-static int EplLinProcRead(char *pcBuffer_p, char **ppcStart_p, off_t Offset_p,
-                         int nBufferSize_p, int *pEof_p, void *pData_p);
-static int EplLinProcWrite(struct file *file, const char __user * buffer,
-                          unsigned long count, void *data);
-
-void TgtDbgSignalTracePoint(u8 bTracePointNumber_p);
-void TgtDbgPostTraceValue(u32 dwTraceValue_p);
-
-extern u32 EplIdentuGetRunningRequests(void);
-
-//=========================================================================//
-//                                                                         //
-//          P U B L I C   F U N C T I O N S                                //
-//                                                                         //
-//=========================================================================//
-
-tEplKernel EplLinProcInit(void)
-{
-       struct proc_dir_entry *pProcDirEntry;
-       pProcDirEntry = create_proc_entry(EPL_PROC_DEV_NAME, S_IRUGO, NULL);
-       if (pProcDirEntry != NULL) {
-               pProcDirEntry->read_proc = EplLinProcRead;
-               pProcDirEntry->write_proc = EplLinProcWrite;
-               pProcDirEntry->data = NULL;     // device number or something else
-
-       } else {
-               return kEplNoResource;
-       }
-
-#ifdef _DBG_TRACE_POINTS_
-       // initialize spinlock and circular buffer position
-       spin_lock_init(&spinlockDbgTraceValue_l);
-       uiDbgTraceValuePos_l = 0;
-       dwDbgTraceValueOld_l = 0;
-#endif
-
-       return kEplSuccessful;
-}
-
-tEplKernel EplLinProcFree(void)
-{
-       remove_proc_entry(EPL_PROC_DEV_NAME, NULL);
-
-       return kEplSuccessful;
-}
-
-//---------------------------------------------------------------------------
-//  Target specific event signaling (FEC Tx-/Rx-Interrupt, used by Edrv)
-//---------------------------------------------------------------------------
-
-#ifdef _DBG_TRACE_POINTS_
-void TgtDbgSignalTracePoint(u8 bTracePointNumber_p)
-{
-
-       if (bTracePointNumber_p >=
-           ARRAY_SIZE(aatmDbgTracePoint_l)) {
-               goto Exit;
-       }
-
-       atomic_inc(&aatmDbgTracePoint_l[bTracePointNumber_p]);
-
-      Exit:
-
-       return;
-
-}
-
-void TgtDbgPostTraceValue(u32 dwTraceValue_p)
-{
-
-       spin_lock_irqsave(&spinlockDbgTraceValue_l, ulDbTraceValueFlags_l);
-       if (dwDbgTraceValueOld_l != dwTraceValue_p) {
-               adwDbgTraceValue_l[uiDbgTraceValuePos_l] = dwTraceValue_p;
-               uiDbgTraceValuePos_l =
-                   (uiDbgTraceValuePos_l + 1) % DBG_TRACE_VALUES;
-               dwDbgTraceValueOld_l = dwTraceValue_p;
-       }
-       spin_unlock_irqrestore(&spinlockDbgTraceValue_l, ulDbTraceValueFlags_l);
-
-       return;
-
-}
-#endif
-
-//---------------------------------------------------------------------------
-//  Read function for PROC-FS read access
-//---------------------------------------------------------------------------
-
-static int EplLinProcRead(char *pcBuffer_p,
-                         char **ppcStart_p,
-                         off_t Offset_p,
-                         int nBufferSize_p, int *pEof_p, void *pData_p)
-{
-
-       int nSize;
-       int Eof;
-       tEplDllkCalStatistics *pDllkCalStats;
-
-       nSize = 0;
-       Eof = 0;
-
-       // count calls of this function
-#ifdef _DBG_TRACE_POINTS_
-       TgtDbgSignalTracePoint(0);
-#endif
-
-       //---------------------------------------------------------------
-       // generate static information
-       //---------------------------------------------------------------
-
-       // ---- Driver information ----
-       nSize += snprintf(pcBuffer_p + nSize, nBufferSize_p - nSize,
-                         "%s    %s    (c) 2006 %s\n",
-                         EPL_PRODUCT_NAME, EPL_PRODUCT_VERSION,
-                         EPL_PRODUCT_MANUFACTURER);
-
-       //---------------------------------------------------------------
-       // generate process information
-       //---------------------------------------------------------------
-
-       // ---- EPL state ----
-       nSize += snprintf(pcBuffer_p + nSize, nBufferSize_p - nSize,
-                         "NMT state:                  0x%04X\n",
-                         (u16) EplNmtkGetNmtState());
-
-       EplDllkCalGetStatistics(&pDllkCalStats);
-
-       nSize += snprintf(pcBuffer_p + nSize, nBufferSize_p - nSize,
-                         "CurAsyncTxGen=%lu CurAsyncTxNmt=%lu CurAsyncRx=%lu\nMaxAsyncTxGen=%lu MaxAsyncTxNmt=%lu MaxAsyncRx=%lu\n",
-                         pDllkCalStats->m_ulCurTxFrameCountGen,
-                         pDllkCalStats->m_ulCurTxFrameCountNmt,
-                         pDllkCalStats->m_ulCurRxFrameCount,
-                         pDllkCalStats->m_ulMaxTxFrameCountGen,
-                         pDllkCalStats->m_ulMaxTxFrameCountNmt,
-                         pDllkCalStats->m_ulMaxRxFrameCount);
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-       // fetch running IdentRequests
-       nSize += snprintf(pcBuffer_p + nSize, nBufferSize_p - nSize,
-                         "running IdentRequests:      0x%08X\n",
-                         EplIdentuGetRunningRequests());
-
-       // fetch state of NmtMnu module
-       {
-               unsigned int uiMandatorySlaveCount;
-               unsigned int uiSignalSlaveCount;
-               u16 wFlags;
-
-               EplNmtMnuGetDiagnosticInfo(&uiMandatorySlaveCount,
-                                          &uiSignalSlaveCount, &wFlags);
-
-               nSize += snprintf(pcBuffer_p + nSize, nBufferSize_p - nSize,
-                                 "MN  MandSlaveCount: %u  SigSlaveCount: %u  Flags: 0x%X\n",
-                                 uiMandatorySlaveCount, uiSignalSlaveCount,
-                                 wFlags);
-
-       }
-#endif
-
-       // ---- FEC state ----
-#ifdef CONFIG_COLDFIRE
-       {
-               // Receive the base address
-               unsigned long base_addr;
-#if (EDRV_USED_ETH_CTRL == 0)
-               // Set the base address of FEC0
-               base_addr = FEC_BASE_ADDR_FEC0;
-#else
-               // Set the base address of FEC1
-               base_addr = FEC_BASE_ADDR_FEC1;
-#endif
-
-               nSize += snprintf(pcBuffer_p + nSize, nBufferSize_p - nSize,
-                                 "FEC_ECR = 0x%08X FEC_EIR = 0x%08X FEC_EIMR = 0x%08X\nFEC_TCR = 0x%08X FECTFSR = 0x%08X FECRFSR = 0x%08X\n",
-                                 FEC_ECR(base_addr), FEC_EIR(base_addr),
-                                 FEC_EIMR(base_addr), FEC_TCR(base_addr),
-                                 FEC_FECTFSR(base_addr),
-                                 FEC_FECRFSR(base_addr));
-       }
-#endif
-
-       // ---- DBG: TracePoints ----
-#ifdef _DBG_TRACE_POINTS_
-       {
-               int nNum;
-
-               nSize += snprintf(pcBuffer_p + nSize, nBufferSize_p - nSize,
-                                 "DbgTracePoints:\n");
-               for (nNum = 0;
-                    nNum < ARRAY_SIZE(aatmDbgTracePoint_l);
-                    nNum++) {
-                       nSize +=
-                           snprintf(pcBuffer_p + nSize, nBufferSize_p - nSize,
-                                    " TracePoint[%2d]: %d\n", (int)nNum,
-                                    atomic_read(&aatmDbgTracePoint_l[nNum]));
-               }
-
-               nSize += snprintf(pcBuffer_p + nSize, nBufferSize_p - nSize,
-                                 "DbgTraceValues:\n");
-               for (nNum = 0; nNum < DBG_TRACE_VALUES; nNum++) {
-                       if (nNum == uiDbgTraceValuePos_l) {     // next value will be stored at that position
-                               nSize +=
-                                   snprintf(pcBuffer_p + nSize,
-                                            nBufferSize_p - nSize, "*%08lX",
-                                            adwDbgTraceValue_l[nNum]);
-                       } else {
-                               nSize +=
-                                   snprintf(pcBuffer_p + nSize,
-                                            nBufferSize_p - nSize, " %08lX",
-                                            adwDbgTraceValue_l[nNum]);
-                       }
-                       if ((nNum & 0x00000007) == 0x00000007) {        // 8 values printed -> end of line reached
-                               nSize +=
-                                   snprintf(pcBuffer_p + nSize,
-                                            nBufferSize_p - nSize, "\n");
-                       }
-               }
-               if ((nNum & 0x00000007) != 0x00000007) {        // number of values printed is not a multiple of 8 -> print new line
-                       nSize +=
-                           snprintf(pcBuffer_p + nSize, nBufferSize_p - nSize,
-                                    "\n");
-               }
-       }
-#endif
-
-       Eof = 1;
-       goto Exit;
-
-      Exit:
-
-       *pEof_p = Eof;
-
-       return (nSize);
-
-}
-
-//---------------------------------------------------------------------------
-//  Write function for PROC-FS write access
-//---------------------------------------------------------------------------
-
-static int EplLinProcWrite(struct file *file, const char __user * buffer,
-                          unsigned long count, void *data)
-{
-       char abBuffer[count + 1];
-       int iErr;
-       int iVal = 0;
-       tEplNmtEvent NmtEvent;
-
-       if (count > 0) {
-               iErr = copy_from_user(abBuffer, buffer, count);
-               if (iErr != 0) {
-                       return count;
-               }
-               abBuffer[count] = '\0';
-
-               iErr = sscanf(abBuffer, "%i", &iVal);
-       }
-       if ((iVal <= 0) || (iVal > 0x2F)) {
-               NmtEvent = kEplNmtEventSwReset;
-       } else {
-               NmtEvent = (tEplNmtEvent) iVal;
-       }
-       // execute specified NMT command on write access of /proc/epl
-       EplNmtuNmtEvent(NmtEvent);
-
-       return count;
-}
diff --git a/drivers/staging/epl/proc_fs.h b/drivers/staging/epl/proc_fs.h
deleted file mode 100644 (file)
index 0586f49..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  interface for proc fs entry under Linux
-
-  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: proc_fs.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.3 $  $Date: 2008/04/17 21:36:33 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GNU
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/07/31 d.k.:   start of implementation
-
-****************************************************************************/
-
-#ifndef _EPLPROCFS_H_
-#define _EPLPROCFS_H_
-
-//---------------------------------------------------------------------------
-// const defines
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// types
-//---------------------------------------------------------------------------
-
-//---------------------------------------------------------------------------
-// function prototypes
-//---------------------------------------------------------------------------
-
-tEplKernel EplLinProcInit(void);
-tEplKernel EplLinProcFree(void);
-
-#endif // #ifndef _EPLPROCFS_H_
diff --git a/drivers/staging/epl/user/EplCfgMau.h b/drivers/staging/epl/user/EplCfgMau.h
deleted file mode 100644 (file)
index 4ac770f..0000000
+++ /dev/null
@@ -1,276 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for Epl Configuration Manager Module
-
-  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: EplCfgMau.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.4 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                VC7
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/07/14 k.t.:   start of the implementation
-                     -> based on CANopen CfgMa-Modul (CANopen version 5.34)
-
-****************************************************************************/
-
-#ifndef _EPLCFGMA_H_
-#define _EPLCFGMA_H_
-
-#include "../EplInc.h"
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_CFGMA)) != 0)
-
-#include "EplObdu.h"
-#include "EplSdoComu.h"
-
-//define max number of timeouts for configuration of 1 device
-#define EPL_CFGMA_MAX_TIMEOUT   3
-
-//callbackfunction, called if configuration is finished
-typedef void (* tfpEplCfgMaCb)(unsigned int uiNodeId_p,
-                              tEplKernel Errorstate_p);
-
-//State for configuartion manager Statemachine
-typedef enum {
-       // general states
-       kEplCfgMaIdle = 0x0000, // Configurationsprocess
-       // is idle
-       kEplCfgMaWaitForSdocEvent = 0x0001,     // wait until the last
-       // SDOC is finisched
-       kEplCfgMaSkipMappingSub0 = 0x0002,      // write Sub0 of mapping
-       // parameter with 0
-
-       kEplCfgMaFinished = 0x0004      // configuartion is finished
-} tEplCfgState;
-
-typedef enum {
-       kEplCfgMaDcfTypSystecSeg = 0x00,
-       kEplCfgMaDcfTypConDcf = 0x01,
-       kEplCfgMaDcfTypDcf = 0x02,      // not supported
-       kEplCfgMaDcfTypXdc = 0x03       // not supported
-} tEplCfgMaDcfTyp;
-
-typedef enum {
-       kEplCfgMaCommon = 0,    // all other index
-       kEplCfgMaPdoComm = 1,   // communication index
-       kEplCfgMaPdoMapp = 2,   // mapping index
-       kEplCfgMaPdoCommAfterMapp = 3,  // write PDO Cob-Id after mapping subindex 0(set PDO valid)
-
-} tEplCfgMaIndexType;
-
-//bitcoded answer about the last sdo transfer saved in m_SdocState
-// also used to singal start of the State Maschine
-typedef enum {
-       kEplCfgMaSdocBusy = 0x00,       // SDOC activ
-       kEplCfgMaSdocReady = 0x01,      // SDOC finished
-       kEplCfgMaSdocTimeout = 0x02,    // SDOC Timeout
-       kEplCfgMaSdocAbortReceived = 0x04,      // SDOC Abort, see Abortcode
-       kEplCfgMaSdocStart = 0x08       // start State Mschine
-} tEplSdocState;
-
-//internal structure (instancetable for modul configuration manager)
-typedef struct {
-       tEplCfgState m_CfgState;        // state of the configuration state maschine
-       tEplSdoComConHdl m_SdoComConHdl;        // handle for sdo connection
-       u32 m_dwLastAbortCode;
-       unsigned int m_uiLastIndex;     // last index of configuration, to compair with actual index
-       u8 *m_pbConcise;        // Ptr to concise DCF
-       u8 *m_pbActualIndex;    // Ptr to actual index in the DCF segment
-       tfpEplCfgMaCb m_pfnCfgMaCb;     // Ptr to CfgMa Callback, is call if configuration finished
-       tEplKernel m_EplKernelError;    // errorcode
-       u32 m_dwNumValueCopy;   // numeric values are copied in this variable
-       unsigned int m_uiPdoNodeId;     // buffer for PDO node id
-       u8 m_bNrOfMappedObject; // number of mapped objects
-       unsigned int m_uiNodeId;        // Epl node addresse
-       tEplSdocState m_SdocState;      // bitcoded state of the SDO transfer
-       unsigned int m_uiLastSubIndex;  // last subindex of configuration
-       BOOL m_fOneTranferOk;   // atleased one transfer was successful
-       u8 m_bEventFlag;        // for Eventsignaling to the State Maschine
-       u32 m_dwCntObjectInDcf; // number of Objects in DCF
-       tEplCfgMaIndexType m_SkipCfg;   // TRUE if a adsitional Configurationprocess
-       // have to insert e.g. PDO-mapping
-       u16 m_wTimeOutCnt;      // Timeout Counter, break configuration is
-       // m_wTimeOutCnt == CFGMA_MAX_TIMEOUT
-
-} tEplCfgMaNode;
-
-//---------------------------------------------------------------------------
-// Function:    EplCfgMaInit()
-//
-// Description: Function creates first instance of Configuration Manager
-//
-// Parameters:
-//
-// Returns:     tEplKernel              = error code
-//---------------------------------------------------------------------------
-tEplKernel EplCfgMaInit(void);
-
-//---------------------------------------------------------------------------
-// Function:    EplCfgMaAddInstance()
-//
-// Description: Function creates additional instance of Configuration Manager
-//
-// Parameters:
-//
-// Returns:     tEplKernel              = error code
-//---------------------------------------------------------------------------
-tEplKernel EplCfgMaAddInstance(void);
-
-//---------------------------------------------------------------------------
-// Function:    EplCfgMaDelInstance()
-//
-// Description: Function delete instance of Configuration Manager
-//
-// Parameters:
-//
-// Returns:     tEplKernel              = error code
-//---------------------------------------------------------------------------
-tEplKernel plCfgMaDelInstance(void);
-
-//---------------------------------------------------------------------------
-// Function:    EplCfgMaStartConfig()
-//
-// Description: Function starts the configuration process
-//              initialization the statemachine for CfgMa- process
-//
-// Parameters:  uiNodeId_p              = NodeId of the node to configure
-//              pbConcise_p             = pointer to DCF
-//              fpCfgMaCb_p             = pointer to callback function (should not be NULL)
-//              SizeOfConcise_p         = size of DCF in u8 -> for future use
-//              DcfType_p               = type of the DCF
-//
-// Returns:     tCopKernel              = error code
-//---------------------------------------------------------------------------
-tEplKernel EplCfgMaStartConfig(unsigned int uiNodeId_p,
-                              u8 * pbConcise_p,
-                              tfpEplCfgMaCb fpCfgMaCb_p,
-                              tEplObdSize SizeOfConcise_p,
-                              tEplCfgMaDcfTyp DcfType_p);
-
-//---------------------------------------------------------------------------
-// Function:    CfgMaStartConfigurationNode()
-//
-// Description: Function started the configuration process
-//              with the DCF from according OD-entry Subindex == bNodeId_p
-//
-// Parameters:  uiNodeId_p              = NodeId of the node to configure
-//              fpCfgMaCb_p             = pointer to callback function (should not be NULL)
-//              DcfType_p               = type of the DCF
-//
-// Returns:     tCopKernel              = error code
-//---------------------------------------------------------------------------
-tEplKernel EplCfgMaStartConfigNode(unsigned int uiNodeId_p,
-                                  tfpEplCfgMaCb fpCfgMaCb_p,
-                                  tEplCfgMaDcfTyp DcfType_p);
-
-//---------------------------------------------------------------------------
-// Function:    EplCfgMaStartConfigNodeDcf()
-//
-// Description: Function starts the configuration process
-//              and links the configuration data to the OD
-//
-// Parameters:  uiNodeId_p              = NodeId of the node to configure
-//              pbConcise_p             = pointer to DCF
-//              fpCfgMaCb_p             = pointer to callback function (should not be NULL)
-//              SizeOfConcise_p         = size of DCF in u8 -> for future use
-//              DcfType_p               = type of the DCF
-//
-// Returns:     tCopKernel              = error code
-//---------------------------------------------------------------------------
-tEplKernel EplCfgMaStartConfigNodeDcf(unsigned int uiNodeId_p,
-                                     u8 * pbConcise_p,
-                                     tfpEplCfgMaCb fpCfgMaCb_p,
-                                     tEplObdSize SizeOfConcise_p,
-                                     tEplCfgMaDcfTyp DcfType_p);
-
-//---------------------------------------------------------------------------
-// Function:    EplCfgMaLinkDcf()
-//
-// Description: Function links the configuration data to the OD
-//
-// Parameters:  uiNodeId_p              = NodeId of the node to configure
-//              pbConcise_p             = pointer to DCF
-//              SizeOfConcise_p        = size of DCF in u8 -> for future use
-//              DcfType_p               = type of the DCF
-//
-// Returns:     tCopKernel              = error code
-//---------------------------------------------------------------------------
-tEplKernel EplCfgMaLinkDcf(unsigned int uiNodeId_p,
-                          u8 * pbConcise_p,
-                          tEplObdSize SizeOfConcise_p,
-                          tEplCfgMaDcfTyp DcfType_p);
-
-//---------------------------------------------------------------------------
-// Function:    EplCfgMaCheckDcf()
-//
-// Description: Function check if there is allready a configuration file linked
-//              to the OD (type is given by DcfType_p)
-//
-// Parameters:  uiNodeId_p              = NodeId
-//              DcfType_p               = type of the DCF
-//
-// Returns:     tCopKernel              = error code
-//---------------------------------------------------------------------------
-tEplKernel EplCfgMaCheckDcf(unsigned int uiNodeId_p, tEplCfgMaDcfTyp DcfType_p);
-
-#endif // #if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_CFGMA)) != 0)
-
-#endif // _EPLCFGMA_H_
-
-// EOF
diff --git a/drivers/staging/epl/user/EplDllu.h b/drivers/staging/epl/user/EplDllu.h
deleted file mode 100644 (file)
index 890f837..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for userspace DLL module for asynchronous communication
-
-  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: EplDllu.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.5 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/20 d.k.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#ifndef _EPL_DLLU_H_
-#define _EPL_DLLU_H_
-
-#include "../EplDll.h"
-
-typedef tEplKernel(* tEplDlluCbAsnd) (tEplFrameInfo * pFrameInfo_p);
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLU)) != 0)
-
-tEplKernel EplDlluAddInstance(void);
-
-tEplKernel EplDlluDelInstance(void);
-
-tEplKernel EplDlluRegAsndService(tEplDllAsndServiceId ServiceId_p,
-                                tEplDlluCbAsnd pfnDlluCbAsnd_p,
-                                tEplDllAsndFilter Filter_p);
-
-tEplKernel EplDlluAsyncSend(tEplFrameInfo * pFrameInfo_p,
-                           tEplDllAsyncReqPriority Priority_p);
-
-// processes asynch frames
-tEplKernel EplDlluProcess(tEplFrameInfo * pFrameInfo_p);
-
-#endif // #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_DLLU)) != 0)
-
-#endif // #ifndef _EPL_DLLU_H_
diff --git a/drivers/staging/epl/user/EplDlluCal.h b/drivers/staging/epl/user/EplDlluCal.h
deleted file mode 100644 (file)
index bc9126b..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for DLL Communication Abstraction Layer module in EPL user part
-
-  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: EplDlluCal.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.5 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/20 d.k.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#ifndef _EPL_DLLUCAL_H_
-#define _EPL_DLLUCAL_H_
-
-#include "../EplDll.h"
-#include "../EplEvent.h"
-
-
-typedef tEplKernel(* tEplDlluCbAsnd) (tEplFrameInfo * pFrameInfo_p);
-
-tEplKernel EplDlluCalAddInstance(void);
-
-tEplKernel EplDlluCalDelInstance(void);
-
-tEplKernel EplDlluCalRegAsndService(tEplDllAsndServiceId ServiceId_p,
-                                   tEplDlluCbAsnd pfnDlluCbAsnd_p,
-                                   tEplDllAsndFilter Filter_p);
-
-tEplKernel EplDlluCalAsyncSend(tEplFrameInfo * pFrameInfo,
-                              tEplDllAsyncReqPriority Priority_p);
-
-tEplKernel EplDlluCalProcess(tEplEvent * pEvent_p);
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-
-tEplKernel EplDlluCalAddNode(tEplDllNodeInfo * pNodeInfo_p);
-
-tEplKernel EplDlluCalDeleteNode(unsigned int uiNodeId_p);
-
-tEplKernel EplDlluCalSoftDeleteNode(unsigned int uiNodeId_p);
-
-tEplKernel EplDlluCalIssueRequest(tEplDllReqServiceId Service_p,
-                                 unsigned int uiNodeId_p, u8 bSoaFlag1_p);
-
-#endif
-
-#endif // #ifndef _EPL_DLLUCAL_H_
diff --git a/drivers/staging/epl/user/EplEventu.h b/drivers/staging/epl/user/EplEventu.h
deleted file mode 100644 (file)
index ab85205..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for kernel event module
-
-  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: EplEventu.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.4 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/12 d.k.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#ifndef _EPL_EVENTU_H_
-#define _EPL_EVENTU_H_
-
-#include "../EplEvent.h"
-
-// init function
-tEplKernel EplEventuInit(tEplProcessEventCb pfnApiProcessEventCb_p);
-
-// add instance
-tEplKernel EplEventuAddInstance(tEplProcessEventCb pfnApiProcessEventCb_p);
-
-// delete instance
-tEplKernel EplEventuDelInstance(void);
-
-// Task that dispatches events in userspace
-tEplKernel EplEventuProcess(tEplEvent * pEvent_p);
-
-// post events from userspace
-tEplKernel EplEventuPost(tEplEvent * pEvent_p);
-
-// post errorevents from userspace
-tEplKernel EplEventuPostError(tEplEventSource EventSource_p,
-                             tEplKernel EplError_p,
-                             unsigned int uiArgSize_p, void *pArg_p);
-
-#endif // #ifndef _EPL_EVENTU_H_
diff --git a/drivers/staging/epl/user/EplIdentu.h b/drivers/staging/epl/user/EplIdentu.h
deleted file mode 100644 (file)
index 057c902..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for Identu-Module
-
-  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: EplIdentu.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.3 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/11/15 d.k.:   start of the implementation
-
-****************************************************************************/
-
-#ifndef _EPLIDENTU_H_
-#define _EPLIDENTU_H_
-
-#include "../EplDll.h"
-
-typedef tEplKernel(* tEplIdentuCbResponse) (unsigned int uiNodeId_p,
-                                                  tEplIdentResponse *
-                                                  pIdentResponse_p);
-
-tEplKernel EplIdentuInit(void);
-
-tEplKernel EplIdentuAddInstance(void);
-
-tEplKernel EplIdentuDelInstance(void);
-
-tEplKernel EplIdentuReset(void);
-
-tEplKernel EplIdentuGetIdentResponse(unsigned int uiNodeId_p,
-                                    tEplIdentResponse **ppIdentResponse_p);
-
-tEplKernel EplIdentuRequestIdentResponse(unsigned int uiNodeId_p,
-                                        tEplIdentuCbResponse pfnCbResponse_p);
-
-#endif // #ifndef _EPLIDENTU_H_
diff --git a/drivers/staging/epl/user/EplLedu.h b/drivers/staging/epl/user/EplLedu.h
deleted file mode 100644 (file)
index ca9eb43..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for status and error LED user part module
-
-  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: EplLedu.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.1 $  $Date: 2008/11/17 16:40:39 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2008/11/17 d.k.:   start of the implementation
-
-****************************************************************************/
-
-#ifndef _EPLLEDU_H_
-#define _EPLLEDU_H_
-
-#include "../EplLed.h"
-#include "../EplNmt.h"
-#include "EplEventu.h"
-
-typedef tEplKernel(* tEplLeduStateChangeCallback) (tEplLedType LedType_p,
-                                                         BOOL fOn_p);
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_LEDU)) != 0)
-
-tEplKernel EplLeduInit(tEplLeduStateChangeCallback pfnCbStateChange_p);
-
-tEplKernel EplLeduAddInstance(tEplLeduStateChangeCallback pfnCbStateChange_p);
-
-tEplKernel EplLeduDelInstance(void);
-
-tEplKernel EplLeduCbNmtStateChange(tEplEventNmtStateChange NmtStateChange_p);
-
-tEplKernel EplLeduProcessEvent(tEplEvent * pEplEvent_p);
-
-#endif // #if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_LEDU)) != 0)
-
-#endif // #ifndef _EPLLEDU_H_
diff --git a/drivers/staging/epl/user/EplNmtCnu.h b/drivers/staging/epl/user/EplNmtCnu.h
deleted file mode 100644 (file)
index 7d23029..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for NMT-CN-Userspace-Module
-
-  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: EplNmtCnu.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.5 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/09 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#ifndef _EPLNMTCNU_H_
-#define _EPLNMTCNU_H_
-
-#include "EplNmtu.h"
-#include "../EplDll.h"
-#include "../EplFrame.h"
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_CN)) != 0)
-
-tEplKernel EplNmtCnuInit(unsigned int uiNodeId_p);
-
-tEplKernel EplNmtCnuAddInstance(unsigned int uiNodeId_p);
-
-tEplKernel EplNmtCnuDelInstance(void);
-
-tEplKernel EplNmtCnuSendNmtRequest(unsigned int uiNodeId_p, tEplNmtCommand NmtCommand_p);
-
-tEplKernel EplNmtCnuRegisterCheckEventCb(tEplNmtuCheckEventCallback pfnEplNmtCheckEventCb_p);
-
-#endif // #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_CN)) != 0)
-
-#endif // #ifndef _EPLNMTCNU_H_
diff --git a/drivers/staging/epl/user/EplNmtMnu.h b/drivers/staging/epl/user/EplNmtMnu.h
deleted file mode 100644 (file)
index 5e5e0cd..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for NMT-MN-Userspace-Module
-
-  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: EplNmtMnu.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.6 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/09 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#ifndef _EPLNMTMNU_H_
-#define _EPLNMTMNU_H_
-
-#include "EplNmtu.h"
-
-typedef tEplKernel(* tEplNmtMnuCbNodeEvent) (unsigned int uiNodeId_p,
-                                            tEplNmtNodeEvent NodeEvent_p,
-                                            tEplNmtState NmtState_p,
-                                            u16 wErrorCode_p,
-                                            BOOL fMandatory_p);
-
-typedef tEplKernel(* tEplNmtMnuCbBootEvent) (tEplNmtBootEvent BootEvent_p,
-                                            tEplNmtState NmtState_p,
-                                            u16 wErrorCode_p);
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMT_MN)) != 0)
-
-tEplKernel EplNmtMnuInit(tEplNmtMnuCbNodeEvent pfnCbNodeEvent_p,
-                        tEplNmtMnuCbBootEvent pfnCbBootEvent_p);
-
-tEplKernel EplNmtMnuAddInstance(tEplNmtMnuCbNodeEvent pfnCbNodeEvent_p,
-                               tEplNmtMnuCbBootEvent pfnCbBootEvent_p);
-
-tEplKernel EplNmtMnuDelInstance(void);
-
-tEplKernel EplNmtMnuProcessEvent(tEplEvent *pEvent_p);
-
-tEplKernel EplNmtMnuSendNmtCommand(unsigned int uiNodeId_p,
-                                  tEplNmtCommand NmtCommand_p);
-
-tEplKernel EplNmtMnuTriggerStateChange(unsigned int uiNodeId_p,
-                                      tEplNmtNodeCommand NodeCommand_p);
-
-tEplKernel EplNmtMnuCbNmtStateChange(tEplEventNmtStateChange
-                                           NmtStateChange_p);
-
-tEplKernel EplNmtMnuCbCheckEvent(tEplNmtEvent NmtEvent_p);
-
-tEplKernel EplNmtMnuGetDiagnosticInfo(unsigned int
-                                            *puiMandatorySlaveCount_p,
-                                            unsigned int
-                                            *puiSignalSlaveCount_p,
-                                            u16 * pwFlags_p);
-
-#endif
-
-#endif // #ifndef _EPLNMTMNU_H_
diff --git a/drivers/staging/epl/user/EplNmtu.h b/drivers/staging/epl/user/EplNmtu.h
deleted file mode 100644 (file)
index c1fca80..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for NMT-Userspace-Module
-
-  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: EplNmtu.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.5 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/09 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#ifndef _EPLNMTU_H_
-#define _EPLNMTU_H_
-
-#include "../EplNmt.h"
-#include "EplEventu.h"
-
-// nmt commands
-typedef enum {
-       // requestable ASnd ServiceIds    0x01..0x1F
-       kEplNmtCmdIdentResponse = 0x01,
-       kEplNmtCmdStatusResponse = 0x02,
-       // plain NMT state commands       0x20..0x3F
-       kEplNmtCmdStartNode = 0x21,
-       kEplNmtCmdStopNode = 0x22,
-       kEplNmtCmdEnterPreOperational2 = 0x23,
-       kEplNmtCmdEnableReadyToOperate = 0x24,
-       kEplNmtCmdResetNode = 0x28,
-       kEplNmtCmdResetCommunication = 0x29,
-       kEplNmtCmdResetConfiguration = 0x2A,
-       kEplNmtCmdSwReset = 0x2B,
-       // extended NMT state commands    0x40..0x5F
-       kEplNmtCmdStartNodeEx = 0x41,
-       kEplNmtCmdStopNodeEx = 0x42,
-       kEplNmtCmdEnterPreOperational2Ex = 0x43,
-       kEplNmtCmdEnableReadyToOperateEx = 0x44,
-       kEplNmtCmdResetNodeEx = 0x48,
-       kEplNmtCmdResetCommunicationEx = 0x49,
-       kEplNmtCmdResetConfigurationEx = 0x4A,
-       kEplNmtCmdSwResetEx = 0x4B,
-       // NMT managing commands          0x60..0x7F
-       kEplNmtCmdNetHostNameSet = 0x62,
-       kEplNmtCmdFlushArpEntry = 0x63,
-       // NMT info services              0x80..0xBF
-       kEplNmtCmdPublishConfiguredCN = 0x80,
-       kEplNmtCmdPublishActiveCN = 0x90,
-       kEplNmtCmdPublishPreOperational1 = 0x91,
-       kEplNmtCmdPublishPreOperational2 = 0x92,
-       kEplNmtCmdPublishReadyToOperate = 0x93,
-       kEplNmtCmdPublishOperational = 0x94,
-       kEplNmtCmdPublishStopped = 0x95,
-       kEplNmtCmdPublishEmergencyNew = 0xA0,
-       kEplNmtCmdPublishTime = 0xB0,
-
-       kEplNmtCmdInvalidService = 0xFF
-} tEplNmtCommand;
-
-typedef tEplKernel(* tEplNmtuStateChangeCallback) (tEplEventNmtStateChange NmtStateChange_p);
-
-typedef tEplKernel(* tEplNmtuCheckEventCallback) (tEplNmtEvent NmtEvent_p);
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTU)) != 0)
-
-tEplKernel EplNmtuInit(void);
-
-tEplKernel EplNmtuAddInstance(void);
-
-tEplKernel EplNmtuDelInstance(void);
-
-tEplKernel EplNmtuNmtEvent(tEplNmtEvent NmtEvent_p);
-
-tEplNmtState EplNmtuGetNmtState(void);
-
-tEplKernel EplNmtuProcessEvent(tEplEvent *pEplEvent_p);
-
-tEplKernel EplNmtuRegisterStateChangeCb(tEplNmtuStateChangeCallback pfnEplNmtStateChangeCb_p);
-
-#endif // #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_NMTU)) != 0)
-
-#endif // #ifndef _EPLNMTU_H_
diff --git a/drivers/staging/epl/user/EplNmtuCal.h b/drivers/staging/epl/user/EplNmtuCal.h
deleted file mode 100644 (file)
index b985037..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for communication abstraction layer of the
-                NMT-Userspace-Module
-
-  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: EplNmtuCal.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.4 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/16 -k.t.:   start of the implementation
-
-****************************************************************************/
-
-#ifndef _EPLNMTUCAL_H_
-#define _EPLNMTUCAL_H_
-
-#include "EplNmtu.h"
-#include "../kernel/EplNmtk.h"
-
-tEplNmtState EplNmtkCalGetNmtState(void);
-
-#endif // #ifndef _EPLNMTUCAL_H_
diff --git a/drivers/staging/epl/user/EplObdu.h b/drivers/staging/epl/user/EplObdu.h
deleted file mode 100644 (file)
index 0863712..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for Epl-Obd-Userspace-module
-
-  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: EplObdu.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.6 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/19 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#ifndef _EPLOBDU_H_
-#define _EPLOBDU_H_
-
-#include "../EplObd.h"
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDU)) != 0)
-
-#if EPL_OBD_USE_KERNEL != FALSE
-#error "EPL OBDu module enabled, but OBD_USE_KERNEL == TRUE"
-#endif
-
-tEplKernel EplObduWriteEntry(unsigned int uiIndex_p, unsigned int uiSubIndex_p,
-                            void *pSrcData_p, tEplObdSize Size_p);
-
-// ---------------------------------------------------------------------
-tEplKernel EplObduReadEntry(unsigned int uiIndex_p, unsigned int uiSubIndex_p,
-                           void *pDstData_p, tEplObdSize *pSize_p);
-
-// ---------------------------------------------------------------------
-tEplKernel EplObduAccessOdPart(tEplObdPart ObdPart_p, tEplObdDir Direction_p);
-
-// ---------------------------------------------------------------------
-tEplKernel EplObduDefineVar(tEplVarParam *pVarParam_p);
-
-// ---------------------------------------------------------------------
-void *EplObduGetObjectDataPtr(unsigned int uiIndex_p, unsigned int uiSubIndex_p);
-
-// ---------------------------------------------------------------------
-tEplKernel EplObduRegisterUserOd(tEplObdEntryPtr pUserOd_p);
-
-// ---------------------------------------------------------------------
-void EplObduInitVarEntry(tEplObdVarEntry *pVarEntry_p, u8 bType_p,
-                        tEplObdSize ObdSize_p);
-
-// ---------------------------------------------------------------------
-tEplObdSize EplObduGetDataSize(unsigned int uiIndex_p,
-                              unsigned int uiSubIndex_p);
-
-// ---------------------------------------------------------------------
-unsigned int EplObduGetNodeId(void);
-
-// ---------------------------------------------------------------------
-tEplKernel EplObduSetNodeId(unsigned int uiNodeId_p,
-                           tEplObdNodeIdType NodeIdType_p);
-
-// ---------------------------------------------------------------------
-tEplKernel EplObduGetAccessType(unsigned int uiIndex_p,
-                               unsigned int uiSubIndex_p,
-                               tEplObdAccess *pAccessTyp_p);
-// ---------------------------------------------------------------------
-tEplKernel EplObduReadEntryToLe(unsigned int uiIndex_p,
-                               unsigned int uiSubIndex_p,
-                               void *pDstData_p, tEplObdSize *pSize_p);
-// ---------------------------------------------------------------------
-tEplKernel EplObduWriteEntryFromLe(unsigned int uiIndex_p,
-                                  unsigned int uiSubIndex_p,
-                                  void *pSrcData_p, tEplObdSize Size_p);
-
-// ---------------------------------------------------------------------
-tEplKernel EplObduSearchVarEntry(EPL_MCO_DECL_INSTANCE_PTR_ unsigned int uiIndex_p,
-                                unsigned int uiSubindex_p,
-                                tEplObdVarEntry **ppVarEntry_p);
-
-#elif EPL_OBD_USE_KERNEL != FALSE
-#include "../kernel/EplObdk.h"
-
-#define EplObduWriteEntry       EplObdWriteEntry
-
-#define EplObduReadEntry        EplObdReadEntry
-
-#define EplObduAccessOdPart     EplObdAccessOdPart
-
-#define EplObduDefineVar        EplObdDefineVar
-
-#define EplObduGetObjectDataPtr EplObdGetObjectDataPtr
-
-#define EplObduRegisterUserOd   EplObdRegisterUserOd
-
-#define EplObduInitVarEntry     EplObdInitVarEntry
-
-#define EplObduGetDataSize      EplObdGetDataSize
-
-#define EplObduGetNodeId        EplObdGetNodeId
-
-#define EplObduSetNodeId        EplObdSetNodeId
-
-#define EplObduGetAccessType    EplObdGetAccessType
-
-#define EplObduReadEntryToLe    EplObdReadEntryToLe
-
-#define EplObduWriteEntryFromLe EplObdWriteEntryFromLe
-
-#define EplObduSearchVarEntry   EplObdSearchVarEntry
-
-#define EplObduIsNumerical      EplObdIsNumerical
-
-#endif // #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_OBDU)) != 0)
-
-#endif // #ifndef _EPLOBDU_H_
diff --git a/drivers/staging/epl/user/EplObduCal.h b/drivers/staging/epl/user/EplObduCal.h
deleted file mode 100644 (file)
index 0727777..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for communication abstraction layer
-                for the Epl-Obd-Userspace-Modul
-
-  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: EplObduCal.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.4 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/19 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#ifndef _EPLOBDUCAL_H_
-#define _EPLOBDUCAL_H_
-
-#include "../EplObd.h"
-
-tEplKernel EplObduCalWriteEntry(unsigned int uiIndex_p,
-                               unsigned int uiSubIndex_p,
-                               void *pSrcData_p,
-                               tEplObdSize Size_p);
-//---------------------------------------------------------------------------
-tEplKernel EplObduCalReadEntry(unsigned int uiIndex_p,
-                              unsigned int uiSubIndex_p,
-                              void *pDstData_p,
-                              tEplObdSize *pSize_p);
-//---------------------------------------------------------------------------
-tEplKernel EplObduCalAccessOdPart(tEplObdPart ObdPart_p,
-                                 tEplObdDir Direction_p);
-//---------------------------------------------------------------------------
-tEplKernel EplObduCalDefineVar(tEplVarParam *pVarParam_p);
-//---------------------------------------------------------------------------
-void *EplObduCalGetObjectDataPtr(unsigned int uiIndex_p,
-                                unsigned int uiSubIndex_p);
-//---------------------------------------------------------------------------
-tEplKernel EplObduCalRegisterUserOd(tEplObdEntryPtr pUserOd_p);
-//---------------------------------------------------------------------------
-void EplObduCalInitVarEntry(tEplObdVarEntry *pVarEntry_p,
-                           u8 bType_p, tEplObdSize ObdSize_p);
-//---------------------------------------------------------------------------
-tEplObdSize EplObduCalGetDataSize(unsigned int uiIndex_p,
-                                 unsigned int uiSubIndex_p);
-//---------------------------------------------------------------------------
-unsigned int EplObduCalGetNodeId(void);
-//---------------------------------------------------------------------------
-tEplKernel EplObduCalSetNodeId(unsigned int uiNodeId_p,
-                              tEplObdNodeIdType NodeIdType_p);
-//---------------------------------------------------------------------------
-tEplKernel EplObduCalGetAccessType(unsigned int uiIndex_p,
-                                  unsigned int uiSubIndex_p,
-                                  tEplObdAccess *pAccessTyp_p);
-//---------------------------------------------------------------------------
-tEplKernel EplObduCalReadEntryToLe(unsigned int uiIndex_p,
-                                  unsigned int uiSubIndex_p,
-                                  void *pDstData_p,
-                                  tEplObdSize *pSize_p);
-//---------------------------------------------------------------------------
-tEplKernel EplObduCalWriteEntryFromLe(unsigned int uiIndex_p,
-                                     unsigned int uiSubIndex_p,
-                                     void *pSrcData_p,
-                                     tEplObdSize Size_p);
-//---------------------------------------------------------------------------
-tEplKernel EplObduCalSearchVarEntry(EPL_MCO_DECL_INSTANCE_PTR_ unsigned int uiIndex_p,
-                                   unsigned int uiSubindex_p,
-                                   tEplObdVarEntry **ppVarEntry_p);
-
-#endif // #ifndef _EPLOBDUCAL_H_
diff --git a/drivers/staging/epl/user/EplPdou.h b/drivers/staging/epl/user/EplPdou.h
deleted file mode 100644 (file)
index b8c832b..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for userspace PDO module
-
-  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: EplPdou.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.5 $  $Date: 2008/11/19 17:14:38 $
-
-                $State: Exp $
-
-                Build Environment:
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/05/22 d.k.:   start of the implementation, version 1.00
-
-****************************************************************************/
-
-#ifndef _EPL_PDOU_H_
-#define _EPL_PDOU_H_
-
-#include "../EplPdo.h"
-
-tEplKernel EplPdouAddInstance(void);
-
-tEplKernel EplPdouDelInstance(void);
-
-#if (((EPL_MODULE_INTEGRATION) & (EPL_MODULE_PDOU)) != 0)
-tEplKernel EplPdouCbObdAccess(tEplObdCbParam *pParam_p);
-#else
-#define EplPdouCbObdAccess             NULL
-#endif
-
-// returns error if bPdoId_p is already valid
-/*
-tEplKernel EplPdouSetMapping(
-    u8 bPdoId_p, BOOL fTxRx_p, u8 bNodeId, u8 bMappingVersion,
-    tEplPdoMapping * pMapping_p, u8 bMaxEntries_p);
-
-tEplKernel EplPdouGetMapping(
-    u8 bPdoId_p, BOOL fTxRx_p, u8 * pbNodeId, u8 * pbMappingVersion,
-    tEplPdoMapping * pMapping_p, u8 * pbMaxEntries_p);
-*/
-
-#endif // #ifndef _EPL_PDOU_H_
diff --git a/drivers/staging/epl/user/EplSdoAsndu.h b/drivers/staging/epl/user/EplSdoAsndu.h
deleted file mode 100644 (file)
index a62d4c9..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for SDO/Asnd-Protocolabstractionlayer module
-
-  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: EplSdoAsndu.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.6 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/07/07 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#ifndef _EPLSDOASNDU_H_
-#define _EPLSDOASNDU_H_
-
-#include "../EplSdo.h"
-#include "../EplDll.h"
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_ASND)) != 0)
-
-tEplKernel EplSdoAsnduInit(tEplSequLayerReceiveCb fpReceiveCb_p);
-
-tEplKernel EplSdoAsnduAddInstance(tEplSequLayerReceiveCb fpReceiveCb_p);
-
-tEplKernel EplSdoAsnduDelInstance(void);
-
-tEplKernel EplSdoAsnduInitCon(tEplSdoConHdl *pSdoConHandle_p,
-                             unsigned int uiTargetNodeId_p);
-
-tEplKernel EplSdoAsnduSendData(tEplSdoConHdl SdoConHandle_p,
-                              tEplFrame *pSrcData_p,
-                              u32 dwDataSize_p);
-
-tEplKernel EplSdoAsnduDelCon(tEplSdoConHdl SdoConHandle_p);
-
-#endif // end of #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_ASND)) != 0)
-
-#endif // #ifndef _EPLSDOASNDU_H_
diff --git a/drivers/staging/epl/user/EplSdoAsySequ.h b/drivers/staging/epl/user/EplSdoAsySequ.h
deleted file mode 100644 (file)
index cc862de..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for asychrionus SDO Sequence Layer module
-
-  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: EplSdoAsySequ.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.4 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/26 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#ifndef _EPLSDOASYSEQU_H_
-#define _EPLSDOASYSEQU_H_
-
-#include "../EplSdo.h"
-#include "EplSdoUdpu.h"
-#include "EplSdoAsndu.h"
-#include "../EplEvent.h"
-#include "EplTimeru.h"
-
-tEplKernel EplSdoAsySeqInit(tEplSdoComReceiveCb fpSdoComCb_p,
-                           tEplSdoComConCb fpSdoComConCb_p);
-
-tEplKernel EplSdoAsySeqAddInstance(tEplSdoComReceiveCb fpSdoComCb_p,
-                                  tEplSdoComConCb fpSdoComConCb_p);
-
-tEplKernel EplSdoAsySeqDelInstance(void);
-
-tEplKernel EplSdoAsySeqInitCon(tEplSdoSeqConHdl *pSdoSeqConHdl_p,
-                              unsigned int uiNodeId_p,
-                              tEplSdoType SdoType);
-
-tEplKernel EplSdoAsySeqSendData(tEplSdoSeqConHdl SdoSeqConHdl_p,
-                               unsigned int uiDataSize_p,
-                               tEplFrame *pData_p);
-
-tEplKernel EplSdoAsySeqProcessEvent(tEplEvent *pEvent_p);
-
-tEplKernel EplSdoAsySeqDelCon(tEplSdoSeqConHdl SdoSeqConHdl_p);
-
-#endif // #ifndef _EPLSDOASYSEQU_H_
diff --git a/drivers/staging/epl/user/EplSdoComu.h b/drivers/staging/epl/user/EplSdoComu.h
deleted file mode 100644 (file)
index 4eee6fa..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for SDO Command Layer module
-
-  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: EplSdoComu.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.5 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/26 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#ifndef _EPLSDOCOMU_H_
-#define _EPLSDOCOMU_H_
-
-#include "../EplSdo.h"
-#include "../EplObd.h"
-#include "../EplSdoAc.h"
-#include "EplObdu.h"
-#include "EplSdoAsySequ.h"
-
-tEplKernel EplSdoComInit(void);
-
-tEplKernel EplSdoComAddInstance(void);
-
-tEplKernel EplSdoComDelInstance(void);
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDOC)) != 0)
-
-tEplKernel EplSdoComDefineCon(tEplSdoComConHdl *pSdoComConHdl_p,
-                             unsigned int uiTargetNodeId_p,
-                             tEplSdoType ProtType_p);
-
-tEplKernel EplSdoComInitTransferByIndex(tEplSdoComTransParamByIndex *pSdoComTransParam_p);
-
-tEplKernel EplSdoComUndefineCon(tEplSdoComConHdl SdoComConHdl_p);
-
-tEplKernel EplSdoComGetState(tEplSdoComConHdl SdoComConHdl_p,
-                            tEplSdoComFinished *pSdoComFinished_p);
-
-tEplKernel EplSdoComSdoAbort(tEplSdoComConHdl SdoComConHdl_p,
-                            u32 dwAbortCode_p);
-
-#endif
-
-// for future extention
-/*
-tEplKernel EplSdoComInitTransferAllByIndex(tEplSdoComTransParamAllByIndex* pSdoComTransParam_p);
-
-tEplKernel EplSdoComInitTransferByName(tEplSdoComTransParamByName* pSdoComTransParam_p);
-
-tEplKernel EplSdoComInitTransferFile(tEplSdoComTransParamFile* pSdoComTransParam_p);
-
-*/
-
-#endif // #ifndef _EPLSDOCOMU_H_
diff --git a/drivers/staging/epl/user/EplSdoUdpu.h b/drivers/staging/epl/user/EplSdoUdpu.h
deleted file mode 100644 (file)
index 13e2a27..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for SDO/UDP-Protocollabstractionlayer module
-
-  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: EplSdoUdpu.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.5 $  $Date: 2008/10/17 15:32:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/06/26 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#ifndef _EPLSDOUDPU_H_
-#define _EPLSDOUDPU_H_
-
-#include "../EplSdo.h"
-
-#if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_UDP)) != 0)
-
-tEplKernel EplSdoUdpuInit(tEplSequLayerReceiveCb fpReceiveCb_p);
-
-tEplKernel EplSdoUdpuAddInstance(tEplSequLayerReceiveCb fpReceiveCb_p);
-
-tEplKernel EplSdoUdpuDelInstance(void);
-
-tEplKernel EplSdoUdpuConfig(unsigned long ulIpAddr_p,
-                           unsigned int uiPort_p);
-
-tEplKernel EplSdoUdpuInitCon(tEplSdoConHdl *pSdoConHandle_p,
-                            unsigned int uiTargetNodeId_p);
-
-tEplKernel EplSdoUdpuSendData(tEplSdoConHdl SdoConHandle_p,
-                             tEplFrame *pSrcData_p, u32 dwDataSize_p);
-
-tEplKernel EplSdoUdpuDelCon(tEplSdoConHdl SdoConHandle_p);
-
-#endif // end of #if(((EPL_MODULE_INTEGRATION) & (EPL_MODULE_SDO_UDP)) != 0)
-
-#endif // #ifndef _EPLSDOUDPU_H_
diff --git a/drivers/staging/epl/user/EplStatusu.h b/drivers/staging/epl/user/EplStatusu.h
deleted file mode 100644 (file)
index 0fd3ebb..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for Statusu-Module
-
-  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: EplStatusu.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.3 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/11/15 d.k.:   start of the implementation
-
-****************************************************************************/
-
-#ifndef _EPLSTATUSU_H_
-#define _EPLSTATUSU_H_
-
-#include "../EplDll.h"
-
-typedef tEplKernel(* tEplStatusuCbResponse) (unsigned int uiNodeId_p,
-                                            tEplStatusResponse *pStatusResponse_p);
-
-tEplKernel EplStatusuInit(void);
-
-tEplKernel EplStatusuAddInstance(void);
-
-tEplKernel EplStatusuDelInstance(void);
-
-tEplKernel EplStatusuReset(void);
-
-tEplKernel EplStatusuRequestStatusResponse(unsigned int uiNodeId_p,
-                                          tEplStatusuCbResponse pfnCbResponse_p);
-
-#endif // #ifndef _EPLSTATUSU_H_
diff --git a/drivers/staging/epl/user/EplTimeru.h b/drivers/staging/epl/user/EplTimeru.h
deleted file mode 100644 (file)
index 5c44748..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-/****************************************************************************
-
-  (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
-      www.systec-electronic.com
-
-  Project:      openPOWERLINK
-
-  Description:  include file for Epl Userspace-Timermodule
-
-  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: EplTimeru.h,v $
-
-                $Author: D.Krueger $
-
-                $Revision: 1.5 $  $Date: 2008/04/17 21:36:32 $
-
-                $State: Exp $
-
-                Build Environment:
-                    GCC V3.4
-
-  -------------------------------------------------------------------------
-
-  Revision History:
-
-  2006/07/06 k.t.:   start of the implementation
-
-****************************************************************************/
-
-#ifndef _EPLTIMERU_H_
-#define _EPLTIMERU_H_
-
-#include "../EplTimer.h"
-#include "EplEventu.h"
-
-tEplKernel EplTimeruInit(void);
-
-tEplKernel EplTimeruAddInstance(void);
-
-tEplKernel EplTimeruDelInstance(void);
-
-tEplKernel EplTimeruSetTimerMs(tEplTimerHdl *pTimerHdl_p,
-                              unsigned long ulTime_p,
-                              tEplTimerArg Argument_p);
-
-tEplKernel EplTimeruModifyTimerMs(tEplTimerHdl *pTimerHdl_p,
-                                 unsigned long ulTime_p,
-                                 tEplTimerArg Argument_p);
-
-tEplKernel EplTimeruDeleteTimer(tEplTimerHdl *pTimerHdl_p);
-
-BOOL EplTimeruIsTimerActive(tEplTimerHdl TimerHdl_p);
-
-#endif // #ifndef _EPLTIMERU_H_