TECware/Core/Application/VARH_VariableHandler.h

172 lines
6.5 KiB
C

//=================================================================================================
//
// Company: Paul Scherrer Institut
// 5232 Villigen PSI
// Switzerland
//
//-------------------------------------------------------------------------------------------------
//
// Project: Peltier Controller V2
// Author: Noah Piqué (noah.pique@psi.ch)
//
//-------------------------------------------------------------------------------------------------
//
// Module: Variable Handler
// Filename: VARH_VariableHandler.h
// Date: Handled by Subversion (version control system)
// Revision: Handled by Subversion (version control system)
// History: Handled by Subversion (version control system)
//
//-------------------------------------------------------------------------------------------------
#ifndef VARH_VARIABLEHANDLER_H
#define VARH_VARIABLEHANDLER_H
#ifdef __cplusplus
extern "C" {
#endif
//=================================================================================================
// Section: INCLUDES
// Description: List of required include files (visible by all modules).
//=================================================================================================
#include "../SDEF_StandardDefinitions.h"
//=================================================================================================
// Section: DEFINITIONS
// Description: Definition of global constants (visible by all modules).
//=================================================================================================
// Flags for variable
#define VARH_FLAG_VALID (1<<0) // is data valid
#define VARH_FLAG_OUTOFRANGE (1<<1) // is data out of range
#define VARH_FLAG_MODIFIED (1<<2) // is variable modified (compared to flash)
#define VARH_FLAG_FLASHCORRUPT (1<<3) // data from flash is corrupted
// Flags for variable infos
#define VARH_FLAGINFO_NONE 0 // no flag
#define VARH_FLAGINFO_FLOAT (1<<0) // variable in floating point format
#define VARH_FLAGINFO_SIGNED (1<<1) // variable is signed integer
#define VARH_FLAGINFO_BOOL (1<<2) // variable is boolean
#define VARH_FLAGINFO_READONLY (1<<3) // variable is readonly, master can not set variable
#define VARH_FLAGINFO_FLASH (1<<4) // variable is stored in flash
//=================================================================================================
// Section: MACROS
// Description: Definition of global macros (visible by all modules).
//=================================================================================================
//=================================================================================================
// Section: ENUMERATIONS
// Description: Definition of global enumerations (visible by all modules).
//=================================================================================================
// variables
typedef enum
{
VARH_eMode,
VARH_eControlVoltage,
VARH_ePID_kp,
VARH_ePID_ki,
VARH_ePID_kd,
VARH_ePID_Temp,
VARH_ePID_Max,
VARH_ePID_Min,
VARH_eTemp_H,
VARH_eTemp_C,
VARH_eTemp_Diff,
VARH_ePeltier_U,
VARH_ePeltier_I,
VARH_ePeltier_R,
VARH_ePeltier_P,
VARH_eSupply_U,
VARH_eSupply_I,
VARH_eSupply_P,
VARH_eNumberOfVariables, // Must be last entry
} VARH_EnVariables;
//=================================================================================================
// Section: STRUCTURES
// Description: Definition of global Structures (visible by all modules).
//=================================================================================================
#pragma pack(4)
typedef union {
FLOAT flVal;
U32 u32Val;
S32 s32Val;
} VARH_UVariable;
#pragma pack()
typedef struct
{
U8 u8Flags; // flags
VARH_UVariable uInitData; // initial Data (data is always 32 bit)
VARH_UVariable uMinData; // min Value for Data
VARH_UVariable uMaxData; // max Value for Data
} VARH_StVarInfo;
typedef struct
{
VARH_UVariable uData; // Data (data is always 32 bit)
U8 u8Flags; // flags
} VARH_StVar;
//=================================================================================================
// 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: FUNCTION TYPES
// Description: Definition of functions
//=================================================================================================
//=================================================================================================
// Section: GLOBAL FUNCTIONS (PROTOTYPES)
// Description: Definition of global functions (visible by all modules).
//=================================================================================================
BOOL VARH_boInitializeModule( VOID );
// set data
VOID VARH_vSetVariableData( U8 u8Variable, VARH_UVariable uData );
VOID VARH_vSetVariableDataU32( U8 u8Variable, U32 u32Data );
VOID VARH_vSetVariableDataS32( U8 u8Variable, S32 s32Data );
VOID VARH_vSetVariableDataFloat( U8 u8Variable, FLOAT flData );
// set data from system
VOID VARH_vSetVariableDataFromSystem( U8 u8Variable, VARH_UVariable uData );
VOID VARH_vSetVariableDataFromSystemU32( U8 u8Variable, U32 u32Data );
VOID VARH_vSetVariableDataFromSystemS32( U8 u8Variable, S32 s32Data );
VOID VARH_vSetVariableDataFromSystemFloat( U8 u8Variable, FLOAT flData );
// get data
VARH_UVariable VARH_uGetVariableData( U8 u8Variable );
U32 VARH_u32GetVariableData( U8 u8Variable );
S32 VARH_s32GetVariableData( U8 u8Variable );
FLOAT VARH_flGetVariableData( U8 u8Variable );
U8 VARH_uGetVariableFlags( U8 u8Variable );
// reset data
VOID VARH_vSetVariableToInitData( U8 u8Variable );
VOID VARH_vSetAllVariablesToInitData( VOID );
#ifdef __cplusplus
}
#endif
#endif