add first rev of eeprom

and ref voltage in varhandler
This commit is contained in:
2022-12-13 14:30:40 +01:00
parent bf7cde9730
commit 7cadcdbc28
47 changed files with 30486 additions and 1377 deletions

View File

@ -57,7 +57,7 @@
//=================================================================================================
/* Software Version */
#define SW_VERSION 1
#define SW_VERSION 2
#define MSG_QUEUE_SIZE 8
@ -74,7 +74,8 @@
#define COMMAND_ALARM 4
#define COMMAND_CLEAR_ERROR 5
#define COMMAND_GET_SW_VERSION 6
#define COMMAND_SET_REF_VOLTAGE 7
#define COMMAND_SAVE_VARIABLES 7
#define COMMAND_LOAD_VARIABLES 8
#define COMMAND_REBOOT 255
@ -199,7 +200,7 @@ LOCAL CONST osTimerAttr_t stWatchdogTimerAttribute =
// Returns: Boolean TRUE if successful
//-------------------------------------------------------------------------------------------------
BOOL MAIN_boInitializeModule( VOID )
BOOL MAIN_boInitializeModule( VOID )
{
BOOL boOK = TRUE;
@ -274,7 +275,6 @@ PRIVATE VOID vTask( PVOID arg )
case COMMAND_ON:
PECO_Enable( TRUE );
break;
case COMMAND_OFF:
PECO_Enable( FALSE );
break;
@ -293,11 +293,13 @@ PRIVATE VOID vTask( PVOID arg )
au8Buffer[1] = SW_VERSION;
CAND_boSendMessage( au8Buffer, 2, stMessage.boIsPrivate, stMessage.u8Type );
break;
case COMMAND_SET_REF_VOLTAGE:
VARH_UVariable uData;
UTIL_vMemCopy(&stMessage.au8Data[1], &uData, 4);
ANPI_vSetRefVoltage(uData.flVal);
ANPO_boSetVoltage(uData.flVal);
case COMMAND_SAVE_VARIABLES:
au8Buffer[0] = COMMAND_SAVE_VARIABLES;
au8Buffer[1] = VARH_vSaveVariablestoFlash() ? 0xFF : 0x00;
CAND_boSendMessage( au8Buffer, 2, stMessage.boIsPrivate, stMessage.u8Type );
break;
case COMMAND_LOAD_VARIABLES:
VARH_vLoadVariablesfromFlash();
break;
default:
break;

View File

@ -30,6 +30,8 @@
#include "VARH_VariableHandler.h"
#include "USFL_UserFlash.h"
// Toolbox
#include "../Toolbox/UTIL_Utility.h"
@ -69,6 +71,11 @@ LOCAL osMutexId_t m_pstMutexID = NULL;
// Description: Definition of local constants (visible by this module only).
//=================================================================================================
/*
If you set the VARH_FLAGINFO_FLASH, don't forget to update the Number of variables saved into Flash!!!
Middlewares\ST\EEPROM_Emul\Core\eeprom_emul_conf.h
*/
LOCAL CONST VARH_StVarInfo m_astVarInfo[VARH_eNumberOfVariables] =
{
{ VARH_FLAGINFO_NONE, (VARH_UVariable)(U32)1, (VARH_UVariable)(U32)0, (VARH_UVariable)(U32)1}, // VARH_eMode
@ -97,6 +104,7 @@ LOCAL CONST VARH_StVarInfo m_astVarInfo[VARH_eNumberOfVariables] =
{ VARH_FLAGINFO_READONLY, (VARH_UVariable)(U32)0, (VARH_UVariable)(U32)0, (VARH_UVariable)(U32)1 }, // VARH_ePowerState
{ VARH_FLAGINFO_READONLY, (VARH_UVariable)(U32)0, (VARH_UVariable)(U32)0, (VARH_UVariable)(U32)0xFFFFFFFF }, // VARH_eError
{ VARH_FLAGINFO_FLASH | VARH_FLAGINFO_FLOAT, (VARH_UVariable)3.3f, (VARH_UVariable)(U32)2.0f, (VARH_UVariable)4.0f }, // VARH_eRef_U
};
LOCAL CONST osMutexAttr_t m_stMutexAttr =
@ -353,6 +361,56 @@ VOID VARH_vSetAllVariablesToInitData( VOID )
}
}
//-------------------------------------------------------------------------------------------------
// Function: VARH_vSaveVariablestoFlash
// Description: Saves all Variables with Flag VARH_FLAGINFO_FLASH to Flash
// Parameters: None
// Returns: TRUE if successful
//-------------------------------------------------------------------------------------------------
BOOL VARH_vSaveVariablestoFlash( VOID )
{
BOOL boOK = TRUE;
USFL_vUnlock();
for( U8 u8Var = 0; u8Var < VARH_eNumberOfVariables; u8Var++ )
{
if( (m_astVarInfo[u8Var].u8Flags & VARH_FLAGINFO_FLASH) == VARH_FLAGINFO_FLASH ){
boOK &= USFL_boSetVariable(u8Var, VARH_u32GetVariableData(u8Var));
}
}
USFL_vLock();
return boOK;
}
//-------------------------------------------------------------------------------------------------
// Function: VARH_vSaveVariablestoFlash
// Description: Saves all Variables with Flag VARH_FLAGINFO_FLASH to Flash
// Parameters: None
// Returns: None
//-------------------------------------------------------------------------------------------------
VOID VARH_vLoadVariablesfromFlash( VOID )
{
BOOL boOK = TRUE;
for( U8 u8Var = 0; u8Var < VARH_eNumberOfVariables; u8Var++ )
{
if( (m_astVarInfo[u8Var].u8Flags & VARH_FLAGINFO_FLASH) == VARH_FLAGINFO_FLASH ){
U32 u32Data;
boOK &= USFL_boGetVariable(u8Var, &u32Data);
if( boOK ) VARH_vSetVariableDataFromSystemU32(u8Var, u32Data);
}
}
if( !boOK ){
for( U8 u8Var = 0; u8Var < VARH_eNumberOfVariables; u8Var++ )
{
if( (m_astVarInfo[u8Var].u8Flags & VARH_FLAGINFO_FLASH) == VARH_FLAGINFO_FLASH ){
VARH_vSetVariableToInitData( u8Var );
}
}
}
}
//=================================================================================================
// Section: LOCAL FUNCTIONS
// Descriptionn: Definition (implementation) of local functions.

View File

@ -91,6 +91,7 @@ typedef enum
VARH_ePowerState,
VARH_eError,
VARH_eRef_U,
VARH_eNumberOfVariables, // Must be last entry
} VARH_EnVariables;
@ -167,6 +168,9 @@ U8 VARH_uGetVariableFlags( U8 u8Variable );
VOID VARH_vSetVariableToInitData( U8 u8Variable );
VOID VARH_vSetAllVariablesToInitData( VOID );
BOOL VARH_vSaveVariablestoFlash( VOID );
VOID VARH_vLoadVariablesfromFlash( VOID );
#ifdef __cplusplus
}
#endif