2008-12-19 19:41:57 +00:00
/****************************************************************************
( c ) SYSTEC electronic GmbH , D - 07 973 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
2009-03-23 19:36:38 +00:00
are replaced by macros . For targets which assign u8 by
2008-12-19 19:41:57 +00:00
an 16 Bit 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
2008-12-20 01:09:38 +00:00
extern " C " {
2008-12-19 19:41:57 +00:00
# endif
//---------------------------------------------------------------------------
//
// write functions
//
// To save code space the function AmiSetByte is replaced by
// an macro.
2009-03-23 19:36:38 +00:00
// void AmiSetByte (void * pAddr_p, u8 bByteVal_p);
2008-12-19 19:41:57 +00:00
2009-03-23 19:36:38 +00:00
# define AmiSetByteToBe(pAddr_p, bByteVal_p) {*(u8 *)(pAddr_p) = (bByteVal_p);}
# define AmiSetByteToLe(pAddr_p, bByteVal_p) {*(u8 *)(pAddr_p) = (bByteVal_p);}
2008-12-19 19:41:57 +00:00
2009-03-23 19:57:39 +00:00
void AmiSetWordToBe ( void * pAddr_p , u16 wWordVal_p ) ;
2009-03-23 19:51:37 +00:00
void AmiSetDwordToBe ( void * pAddr_p , u32 dwDwordVal_p ) ;
2009-03-23 19:57:39 +00:00
void AmiSetWordToLe ( void * pAddr_p , u16 wWordVal_p ) ;
2009-03-23 19:51:37 +00:00
void AmiSetDwordToLe ( void * pAddr_p , u32 dwDwordVal_p ) ;
2008-12-19 19:41:57 +00:00
//---------------------------------------------------------------------------
//
// read functions
//
// To save code space the function AmiGetByte is replaced by
// an macro.
2009-03-23 19:36:38 +00:00
// u8 AmiGetByte (void * pAddr_p);
2008-12-19 19:41:57 +00:00
2009-03-23 19:36:38 +00:00
# define AmiGetByteFromBe(pAddr_p) (*(u8 *)(pAddr_p))
# define AmiGetByteFromLe(pAddr_p) (*(u8 *)(pAddr_p))
2008-12-19 19:41:57 +00:00
2009-03-23 19:57:39 +00:00
u16 AmiGetWordFromBe ( void * pAddr_p ) ;
2009-03-23 19:51:37 +00:00
u32 AmiGetDwordFromBe ( void * pAddr_p ) ;
2009-03-23 19:57:39 +00:00
u16 AmiGetWordFromLe ( void * pAddr_p ) ;
2009-03-23 19:51:37 +00:00
u32 AmiGetDwordFromLe ( void * pAddr_p ) ;
2008-12-19 19:41:57 +00:00
//---------------------------------------------------------------------------
//
// 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
//
//---------------------------------------------------------------------------
2009-03-23 19:51:37 +00:00
void AmiSetDword24ToBe ( void * pAddr_p , u32 dwDwordVal_p ) ;
void AmiSetDword24ToLe ( void * pAddr_p , u32 dwDwordVal_p ) ;
2008-12-19 19:41:57 +00:00
//---------------------------------------------------------------------------
//
// Function: AmiGetDword24()
//
// Description: reads a 24 bit value from a buffer
//
// Parameters: pAddr_p = pointer to source buffer
//
2009-03-23 19:51:37 +00:00
// Return: u32 = read value
2008-12-19 19:41:57 +00:00
//
//---------------------------------------------------------------------------
2009-03-23 19:51:37 +00:00
u32 AmiGetDword24FromBe ( void * pAddr_p ) ;
u32 AmiGetDword24FromLe ( void * pAddr_p ) ;
2008-12-19 19:41:57 +00:00
//#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
//
//---------------------------------------------------------------------------
2009-03-23 19:43:05 +00:00
void AmiSetQword40ToBe ( void * pAddr_p , u64 qwQwordVal_p ) ;
void AmiSetQword40ToLe ( void * pAddr_p , u64 qwQwordVal_p ) ;
2008-12-19 19:41:57 +00:00
//---------------------------------------------------------------------------
//
// Function: AmiGetQword40()
//
// Description: reads a 40 bit value from a buffer
//
// Parameters: pAddr_p = pointer to source buffer
//
2009-03-23 19:43:05 +00:00
// Return: u64
2008-12-19 19:41:57 +00:00
//
//---------------------------------------------------------------------------
2009-03-23 19:43:05 +00:00
u64 AmiGetQword40FromBe ( void * pAddr_p ) ;
u64 AmiGetQword40FromLe ( void * pAddr_p ) ;
2008-12-19 19:41:57 +00:00
//---------------------------------------------------------------------------
//
// 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
//
//---------------------------------------------------------------------------
2009-03-23 19:43:05 +00:00
void AmiSetQword48ToBe ( void * pAddr_p , u64 qwQwordVal_p ) ;
void AmiSetQword48ToLe ( void * pAddr_p , u64 qwQwordVal_p ) ;
2008-12-19 19:41:57 +00:00
//---------------------------------------------------------------------------
//
// Function: AmiGetQword48()
//
// Description: reads a 48 bit value from a buffer
//
// Parameters: pAddr_p = pointer to source buffer
//
2009-03-23 19:43:05 +00:00
// Return: u64
2008-12-19 19:41:57 +00:00
//
//---------------------------------------------------------------------------
2009-03-23 19:43:05 +00:00
u64 AmiGetQword48FromBe ( void * pAddr_p ) ;
u64 AmiGetQword48FromLe ( void * pAddr_p ) ;
2008-12-19 19:41:57 +00:00
//---------------------------------------------------------------------------
//
// 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
//
//---------------------------------------------------------------------------
2009-03-23 19:43:05 +00:00
void AmiSetQword56ToBe ( void * pAddr_p , u64 qwQwordVal_p ) ;
void AmiSetQword56ToLe ( void * pAddr_p , u64 qwQwordVal_p ) ;
2008-12-19 19:41:57 +00:00
//---------------------------------------------------------------------------
//
// Function: AmiGetQword56()
//
// Description: reads a 56 bit value from a buffer
//
// Parameters: pAddr_p = pointer to source buffer
//
2009-03-23 19:43:05 +00:00
// Return: u64
2008-12-19 19:41:57 +00:00
//
//---------------------------------------------------------------------------
2009-03-23 19:43:05 +00:00
u64 AmiGetQword56FromBe ( void * pAddr_p ) ;
u64 AmiGetQword56FromLe ( void * pAddr_p ) ;
2008-12-19 19:41:57 +00:00
//---------------------------------------------------------------------------
//
// 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
//
//---------------------------------------------------------------------------
2009-03-23 19:43:05 +00:00
void AmiSetQword64ToBe ( void * pAddr_p , u64 qwQwordVal_p ) ;
void AmiSetQword64ToLe ( void * pAddr_p , u64 qwQwordVal_p ) ;
2008-12-19 19:41:57 +00:00
//---------------------------------------------------------------------------
//
// Function: AmiGetQword64()
//
// Description: reads a 64 bit value from a buffer
//
// Parameters: pAddr_p = pointer to source buffer
//
// Return: void
//
//---------------------------------------------------------------------------
2009-03-23 19:43:05 +00:00
u64 AmiGetQword64FromBe ( void * pAddr_p ) ;
u64 AmiGetQword64FromLe ( void * pAddr_p ) ;
2008-12-19 19:41:57 +00:00
//---------------------------------------------------------------------------
//
// 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
//
//---------------------------------------------------------------------------
2009-03-23 18:44:31 +00:00
void AmiSetTimeOfDay ( void * pAddr_p , tTimeOfDay * pTimeOfDay_p ) ;
2008-12-19 19:41:57 +00:00
//---------------------------------------------------------------------------
//
// 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
//
//---------------------------------------------------------------------------
2009-03-23 18:44:31 +00:00
void AmiGetTimeOfDay ( void * pAddr_p , tTimeOfDay * pTimeOfDay_p ) ;
2008-12-19 19:41:57 +00:00
# ifdef __cplusplus
2008-12-20 01:09:38 +00:00
}
2008-12-19 19:41:57 +00:00
# endif
2008-12-20 01:09:38 +00:00
# endif // ifndef _EPLAMI_H_
// Die letzte Zeile mu<6D> unbedingt eine leere Zeile sein, weil manche Compiler// damit ein Problem haben, wenn das nicht so ist (z.B. GNU oder Borland C++ Builder).