diff options
author | Daniel Krueger <daniel.krueger@systec-electronic.com> | 2008-12-19 11:41:57 -0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-01-06 13:52:36 -0800 |
commit | 9d7164cfdb611c2f864d535ae5794f23db3d84f7 (patch) | |
tree | 046847f7d6432f1f3dc8236f62492503f4c9ebdc /drivers/staging/epl/EplObjDef.h | |
parent | 37bcd24b845abbfd85c838ee9ce07c2b254d3a05 (diff) |
Staging: add epl stack
This is the openPOWERLINK network stack from systec electronic.
It's a bit messed up as there is a driver mixed into the
middle of it, lots of work needs to be done to unwind the
different portions to make it sane.
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>
Diffstat (limited to 'drivers/staging/epl/EplObjDef.h')
-rw-r--r-- | drivers/staging/epl/EplObjDef.h | 220 |
1 files changed, 220 insertions, 0 deletions
diff --git a/drivers/staging/epl/EplObjDef.h b/drivers/staging/epl/EplObjDef.h new file mode 100644 index 000000000000..5823c14de19f --- /dev/null +++ b/drivers/staging/epl/EplObjDef.h @@ -0,0 +1,220 @@ +/**************************************************************************** + + (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29 + www.systec-electronic.com + + Project: openPOWERLINK + + Description: defines objdict 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: EplObjDef.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/06 k.t.: take ObjDef.h from CANopen and modify for EPL + +****************************************************************************/ + +#ifndef _EPLOBJDEF_H_ +#define _EPLOBJDEF_H_ + + +//--------------------------------------------------------------------------- +// security checks +//--------------------------------------------------------------------------- + + +//--------------------------------------------------------------------------- +// macros to help building OD +//--------------------------------------------------------------------------- + + +//--------------------------------------------------------------------------- +#if (defined (EPL_OBD_USE_VARIABLE_SUBINDEX_TAB) && (EPL_OBD_USE_VARIABLE_SUBINDEX_TAB != FALSE)) + + #define CCM_SUBINDEX_RAM_ONLY(a) a; + #define CCM_SUBINDEX_RAM_ONEOF(a,b) a + +#else + + #define CCM_SUBINDEX_RAM_ONLY(a) + #define CCM_SUBINDEX_RAM_ONEOF(a,b) b + +#endif + + +//--------------------------------------------------------------------------- +// To prevent unused memory in subindex tables we need this macro. +// But not all compilers support to preset the last struct value followed by a comma. +// Compilers which does not support a comma after last struct value has to place in a dummy subindex. +#if ((DEV_SYSTEM & _DEV_COMMA_EXT_) != 0) + + #define EPL_OBD_END_SUBINDEX() + #define EPL_OBD_MAX_ARRAY_SUBENTRIES 2 + +#else + + #define EPL_OBD_END_SUBINDEX() {0,0,0,NULL,NULL} + #define EPL_OBD_MAX_ARRAY_SUBENTRIES 3 + +#endif + + +//--------------------------------------------------------------------------- +//--------------------------------------------------------------------------- +// globale vars +//--------------------------------------------------------------------------- +//--------------------------------------------------------------------------- + +// ------------------------------------------------------------------------- +// creation of data in ROM memory +// ------------------------------------------------------------------------- +#define EPL_OBD_CREATE_ROM_DATA + #include "objdict.h" +#undef EPL_OBD_CREATE_ROM_DATA + + +// ------------------------------------------------------------------------- +// creation of data in RAM memory +// ------------------------------------------------------------------------- + +#define EPL_OBD_CREATE_RAM_DATA + #include "objdict.h" +#undef EPL_OBD_CREATE_RAM_DATA + + +// ------------------------------------------------------------------------- +// creation of subindex tables in ROM and RAM +// ------------------------------------------------------------------------- + +#define EPL_OBD_CREATE_SUBINDEX_TAB + #include "objdict.h" +#undef EPL_OBD_CREATE_SUBINDEX_TAB + + +// ------------------------------------------------------------------------- +// creation of index tables for generic, manufacturer and device part +// ------------------------------------------------------------------------- + +#define EPL_OBD_CREATE_INDEX_TAB + #include "objdict.h" +#undef EPL_OBD_CREATE_INDEX_TAB + + +//=========================================================================// +// // +// P U B L I C F U N C T I O N S // +// // +//=========================================================================// + +// ---------------------------------------------------------------------------- +// +// Function: EPL_OBD_INIT_RAM_NAME() +// +// Description: function to initialize object dictionary +// +// Parameters: pInitParam_p = pointer to init param struct of Epl +// +// Returns: tEplKernel = error code +// +// State: +// +// ---------------------------------------------------------------------------- + +EPLDLLEXPORT tEplKernel PUBLIC EPL_OBD_INIT_RAM_NAME (tEplObdInitParam MEM* pInitParam_p) +{ + +tEplObdInitParam MEM* pInitParam = pInitParam_p; + + // check if pointer to parameter structure is valid + // if not then only copy subindex tables below + if (pInitParam != NULL) + { + // at first delete all parameters (all pointers will be set zu NULL) + EPL_MEMSET (pInitParam, 0, sizeof (tEplObdInitParam)); + + #define EPL_OBD_CREATE_INIT_FUNCTION + { + // inserts code to init pointer to index tables + #include "objdict.h" + } + #undef EPL_OBD_CREATE_INIT_FUNCTION + + #if (defined (EPL_OBD_USER_OD) && (EPL_OBD_USER_OD != FALSE)) + { + // to begin no user OD is defined + pInitParam_p->m_pUserPart = NULL; + } + #endif + } + + #define EPL_OBD_CREATE_INIT_SUBINDEX + { + // inserts code to copy subindex tables + #include "objdict.h" + } + #undef EPL_OBD_CREATE_INIT_SUBINDEX + + return kEplSuccessful; + +} + + +#endif // _EPLOBJDEF_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). + |