//================================================================================================= // // Company: Paul Scherrer Institut // 5232 Villigen PSI // Switzerland // //------------------------------------------------------------------------------------------------- // // Project: Peltier Controller V2 // Author: Noah Piqu� (noah.pique@psi.ch) // //------------------------------------------------------------------------------------------------- // // Module: Standard definitions (data types, structures etc.) // Filename: SDEF_StandardDefinitions.h // Date: Handled by Subversion (version control system) // Revision: Handled by Subversion (version control system) // History: Handled by Subversion (version control system) // //------------------------------------------------------------------------------------------------- // // Description: This header file contains the data type definitions. These definitions must be // used by all modules. Furthermore all global definitions, structures, // enumerations, etc. are collected inside this file // //================================================================================================= #ifndef STANDARD_DEFINITIONS_H_INCLUDED #define STANDARD_DEFINITIONS_H_INCLUDED #ifdef __cplusplus extern "C" { #endif //================================================================================================= // Section: INCLUDES // Description: List of required include files (visible by all modules). //================================================================================================= //================================================================================================= // Section: DEFINITIONS // Description: Definition of global constants (visible by all modules). //================================================================================================= #define SDEF_S32MAX ((S32)(2147483647)) // Max S32 value #define SDEF_S32MIN ((S32)(-2147483647 - 1) // Min S32 value #define SDEF_U32MAX ((U32)(0xFFFFFFFF)) // Max U32 value #define SDEF_S16MAX ((S16)(32767)) // Max U16 value #define SDEF_S16MIN ((S16)(-32767 - 1)) // Min S16 value #define SDEF_U16MAX ((U16)(0xFFFF)) // Max S16 value //================================================================================================= // DATA TYPES: Definition of standard data types to be used by all modules. // // Prefixes: Each data type has its own prefix (see data type definitions below). // Other definitions are: // XXXX_ Module identifer and file name. Example: "RTCK_RealtimeClock.c". The // identifer is also used for global (public) definitions inside the module. // g_ Global scope (variables). Example: "g_u32ElapsedTime". // m_ Module scope (variables). Example: "m_u32ElapsedTime". // a Array. // p Pointer. // pfn Pointer to function. // St Definition of a structure. // st Instance of a structure. Example: // typedef struct // { // S32 s32CurrentMainsL1; // S32 s32CurrentMainsL2; // S32 s32CurrentMainsL3; // } StMainsCurrent; // StMainsCurrent m_stMainsCurrent; // En Definition of an enumneration. // e Member of an enumeration. // en Instance of an enumeration. Example: // typedef enum // { // eDeviceIdle = 0, // eDeviceActive, // } EnDeviceState; // EnDeviceState m_enDeviceState = eDeviceIdle; // // Example: module scope, array of enums: // m_aenInputs[] = [ eInput1, eInput2, eInput3]; //================================================================================================= // Allow direct access to variables and functions while unit testing using GCC. This makes // writing the test script much easier. The definition of the datatypes makes the code protable. #define LOCAL static // m_ Local data type and visible within the // actual file only #define PRIVATE static // Private function and visible within the // actual file only #define INLINE __inline // force the compiler to inline the function #define EXTERN extern // Defined at external level #define CONST const // Constant data definition #define VOLATILE volatile // Not to be placed in register #define VOID void // v Void type typedef VOID* PVOID; // pv Pointer to void type typedef char CHAR; // c Character typedef CHAR* PCHAR; // pc Pointer to character typedef CHAR* PSZ; // psz Pointer to zero terminated string typedef CONST CHAR* PSZC; // psz Pointer to constant zero terminated string typedef unsigned char U8; // u8 Unsigned byte (DSP is 16 bit anyway) typedef U8* PU8; // pu8 Pointer to unsigned byte typedef signed char S8; // s8 Signed byte (DSP is 16 bit anyway) typedef S8* PS8; // ps8 Pointer to signed byte typedef unsigned short int U16; // u16 Unsigned short integer typedef U16* PU16; // pu16 Pointer to unsigned short integer typedef signed short int S16; // s16 Signed short integer typedef S16* PS16; // ps16 Pointer to signed short integer typedef long unsigned int U32; // u32 Unsigned integer typedef U32* PU32; // pu32 Pointer to unsigned int integer typedef long signed int S32; // s32 Signed integer typedef S32* PS32; // ps32 Pointer to signed integer typedef unsigned long long U64; // u64 Unsigned long long integer typedef U64* PU64; // pu64 Pointer to unsigned long long integer typedef signed long long S64; // s64 Signed long long integer typedef S64* PS64; // ps64 Pointer to signed long long integer typedef float FLOAT; // fl Float data type (32 bit) typedef FLOAT* PFLOAT; // pfl Pointer to float typedef double DOUBLE; // db Double data type (64 bit) typedef DOUBLE* PDOUBLE; // pdb Pointer to double typedef U32 BOOL; // bo Boolean typedef BOOL* PBOOL; // pbo Pointer to bool data type #ifndef FALSE #define FALSE 0 // False --> must be zero, #endif #ifndef TRUE #define TRUE 1 // True --> must be one #endif #ifndef NULL #define NULL ((VOID *) 0) #endif #define __NORETURN __attribute__((noreturn)) // funciton attribute, function does not return typedef enum { SDEF_eNormalByteOrder = 0, SDEF_eReverseByteOrder = 1, } SDEF_EnByteOrder; //================================================================================================= // Section: MACROS // Description: Definition of global macros (visible by all modules). //================================================================================================= //================================================================================================= // Section: ENUMERATIONS // Description: Definition of global enumerations (visible by all modules). //================================================================================================= //================================================================================================= // Section: STRUCTURES // Description: Definition of global Structures (visible by all modules). //================================================================================================= //================================================================================================= // Section: GLOBAL VARIABLES // Description: Definition of global variables (visible by all modules). //================================================================================================= //================================================================================================= // Section: GLOBAL CONSTANTS // Description: Definition of global constants (visible by all modules). //================================================================================================= //================================================================================================= // Section: GLOBAL FUNCTIONS (PROTOTYPES) // Description: Definition of global functions (visible by all modules). //================================================================================================= #ifdef __cplusplus } #endif #endif