From d6e9c78497e8d27cdb5bf471ff146ea10dbf8c5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noah=20Piqu=C3=A9?= Date: Thu, 20 Jan 2022 16:01:04 +0100 Subject: [PATCH] New Can protocol implemented --- Core/Application/MAIN_MainApplication.c | 78 ++++++++++--------------- Core/Application/VARH_VariableHandler.c | 39 +++++-------- Core/Application/VARH_VariableHandler.h | 3 + Core/Drivers/CAND_CanDriver.c | 6 +- Core/Drivers/CAND_CanDriver.h | 2 +- 5 files changed, 54 insertions(+), 74 deletions(-) diff --git a/Core/Application/MAIN_MainApplication.c b/Core/Application/MAIN_MainApplication.c index 737883a..2a35e5d 100644 --- a/Core/Application/MAIN_MainApplication.c +++ b/Core/Application/MAIN_MainApplication.c @@ -68,6 +68,10 @@ #define MESSAGE_TYPE_WRITE 1 #define MESSAGE_TYPE_COMMAND 2 +#define COMMAND_NONE 0 +#define COMMAND_ON 1 +#define COMMAND_OFF 2 + //================================================================================================= // Section: MACROS // Description: Definition of local macros (visible by this module only). @@ -229,58 +233,36 @@ PRIVATE VOID vTask( PVOID arg ) U8 u8Register = stMessage.au8Data[0]; U8 u8Typ = stMessage.au8Data[1]; - VARH_UVariable uData; - UTIL_vMemCopy(&stMessage.au8Data[2], &uData, 4); if( u8Typ == MESSAGE_TYPE_READ ){ + VARH_UVariable uVariable = VARH_uGetVariableData(u8Register); + + au8Buffer[0] = u8Register; + au8Buffer[1] = u8Typ; + UTIL_vMemCopy(&uVariable, &au8Buffer[2], 4); + + CAND_boSendMessage( au8Buffer, 6 ); + } else if( u8Typ == MESSAGE_TYPE_WRITE ){ + VARH_UVariable uData; + UTIL_vMemCopy(&stMessage.au8Data[2], &uData, 4); + + VARH_vSetVariableData(u8Register, uData); + } else if( u8Typ == MESSAGE_TYPE_COMMAND ){ + + switch (u8Register) + { + case COMMAND_ON: + PECO_Enable( TRUE ); + break; + + case COMMAND_OFF: + PECO_Enable( FALSE ); + break; + default: + break; + } } - - if( u8Register == 0x12 ){ - - S16 s16Voltage = stMessage.au8Data[0] << 8; - s16Voltage |= stMessage.au8Data[1]; - VARH_vSetVariableDataFloat( VARH_eControlVoltage, (FLOAT)s16Voltage / 1000 ); - - } else if( u8Register == 0x13 ){ - - S16 SupplyVoltage24V = (S16) ( VARH_flGetVariableData( VARH_eSupply_U ) * 1000 ); - S16 SupplyCurrent24V = (S16) ( VARH_flGetVariableData( VARH_eSupply_I ) * 1000 ); - S16 OutputVoltage = (S16) ( VARH_flGetVariableData( VARH_ePeltier_U ) * 1000 ); - S16 OutputCurrent = (S16) ( VARH_flGetVariableData( VARH_ePeltier_I ) * 1000 ); - - au8Buffer[0] = ( SupplyVoltage24V & 0xFF00 ) >> 8; - au8Buffer[1] = SupplyVoltage24V & 0xFF; - au8Buffer[2] = ( SupplyCurrent24V & 0xFF00 ) >> 8; - au8Buffer[3] = SupplyCurrent24V & 0xFF; - au8Buffer[4] = ( OutputVoltage & 0xFF00 ) >> 8; - au8Buffer[5] = OutputVoltage & 0xff; - au8Buffer[6] = ( OutputCurrent & 0xFF00 ) >> 8; - au8Buffer[7] = OutputCurrent & 0xFF; - - CAND_boSendMessage( 0x14, 8, au8Buffer ); - - } else if( u8Register == 0x15 ){ - - S16 Cold = (S16) ( VARH_flGetVariableData( VARH_eTemp_C ) * 100 ); - S16 Hot = (S16) ( VARH_flGetVariableData( VARH_eTemp_H ) * 100 ); - - au8Buffer[0] = ( Cold & 0xFF00 ) >> 8; - au8Buffer[1] = ( Cold & 0x00FF ); - au8Buffer[2] = ( Hot & 0xFF00 ) >> 8; - au8Buffer[3] = ( Hot & 0x00FF ); - - CAND_boSendMessage( 0x16, 4, au8Buffer ); - - } else if( u8Register == 0x17 ){ - - PECO_Enable( TRUE ); - - } else if( u8Register == 0x18 ){ - - PECO_Enable( FALSE ); - - } } if( u32Flags & EVENT_TIMER_UPDATE ) diff --git a/Core/Application/VARH_VariableHandler.c b/Core/Application/VARH_VariableHandler.c index 4f3acba..ef098b3 100644 --- a/Core/Application/VARH_VariableHandler.c +++ b/Core/Application/VARH_VariableHandler.c @@ -118,11 +118,6 @@ PRIVATE BOOL boU32VarCheck( U8 u8Variable, U32 u32NewValue ); PRIVATE BOOL boS32VarCheck( U8 u8Variable, S32 s32NewValue ); PRIVATE BOOL boFloatVarCheck( U8 u8Variable, FLOAT flNewValue ); -PRIVATE VOID vSetVariableData( U8 u8Variable, VARH_UVariable uData ); -PRIVATE VOID vSetVariableDataFromSystem( U8 u8Variable, VARH_UVariable uData ); -PRIVATE VARH_UVariable uGetVariableData( U8 u8Variable ); - - //================================================================================================= // Section: EXTERNAL FUNCTIONS // Description: Definition of external (global) functions. @@ -156,13 +151,13 @@ BOOL VARH_boInitializeModule( VOID ) } //------------------------------------------------------------------------------------------------- -// Function: vSetVariableData +// Function: VARH_vSetVariableData // Description: Sets the Variable Data and checks the parameters (Readonly and Min/Max) // Parameters: U8 u8Variable // VARH_UVariable uData // Returns: None //------------------------------------------------------------------------------------------------- -VOID vSetVariableData( U8 u8Variable, VARH_UVariable uData ) +VOID VARH_vSetVariableData( U8 u8Variable, VARH_UVariable uData ) { // check parameters if( m_astVarInfo[u8Variable].u8Flags & VARH_FLAGINFO_READONLY ) @@ -184,7 +179,7 @@ VOID vSetVariableData( U8 u8Variable, VARH_UVariable uData ) //------------------------------------------------------------------------------------------------- VOID VARH_vSetVariableDataU32( U8 u8Variable, U32 u32Data ) { - vSetVariableData( u8Variable, (VARH_UVariable)u32Data ); + VARH_vSetVariableData( u8Variable, (VARH_UVariable)u32Data ); } //------------------------------------------------------------------------------------------------- @@ -196,7 +191,7 @@ VOID VARH_vSetVariableDataU32( U8 u8Variable, U32 u32Data ) //------------------------------------------------------------------------------------------------- VOID VARH_vSetVariableDataS32( U8 u8Variable, S32 s32Data ) { - vSetVariableData( u8Variable, (VARH_UVariable)s32Data ); + VARH_vSetVariableData( u8Variable, (VARH_UVariable)s32Data ); } //------------------------------------------------------------------------------------------------- @@ -208,19 +203,19 @@ VOID VARH_vSetVariableDataS32( U8 u8Variable, S32 s32Data ) //------------------------------------------------------------------------------------------------- VOID VARH_vSetVariableDataFloat( U8 u8Variable, FLOAT flData ) { - vSetVariableData( u8Variable, (VARH_UVariable)flData ); + VARH_vSetVariableData( u8Variable, (VARH_UVariable)flData ); } //------------------------------------------------------------------------------------------------- -// Function: vSetVariableDataFromSystem +// Function: VARH_vSetVariableDataFromSystem // Description: Sets the Variable Data from System // Use only internal, not for User! // Parameters: U8 u8Variable // VARH_UVariable uData // Returns: None //------------------------------------------------------------------------------------------------- -VOID vSetVariableDataFromSystem( U8 u8Variable, VARH_UVariable uData ) +VOID VARH_vSetVariableDataFromSystem( U8 u8Variable, VARH_UVariable uData ) { osMutexAcquire( m_pstMutexID, osWaitForever ); // aquire mutex if( boCheckRange( u8Variable, uData ) ) @@ -241,7 +236,7 @@ VOID vSetVariableDataFromSystem( U8 u8Variable, VARH_UVariable uData ) //------------------------------------------------------------------------------------------------- VOID VARH_vSetVariableDataFromSystemU32( U8 u8Variable, U32 u32Data ) { - vSetVariableDataFromSystem( u8Variable, (VARH_UVariable)u32Data ); + VARH_vSetVariableDataFromSystem( u8Variable, (VARH_UVariable)u32Data ); } //------------------------------------------------------------------------------------------------- @@ -254,7 +249,7 @@ VOID VARH_vSetVariableDataFromSystemU32( U8 u8Variable, U32 u32Data ) //------------------------------------------------------------------------------------------------- VOID VARH_vSetVariableDataFromSystemS32( U8 u8Variable, S32 s32Data ) { - vSetVariableDataFromSystem( u8Variable, (VARH_UVariable)s32Data ); + VARH_vSetVariableDataFromSystem( u8Variable, (VARH_UVariable)s32Data ); } //------------------------------------------------------------------------------------------------- @@ -267,16 +262,16 @@ VOID VARH_vSetVariableDataFromSystemS32( U8 u8Variable, S32 s32Data ) //------------------------------------------------------------------------------------------------- VOID VARH_vSetVariableDataFromSystemFloat( U8 u8Variable, FLOAT flData ) { - vSetVariableDataFromSystem( u8Variable, (VARH_UVariable)flData ); + VARH_vSetVariableDataFromSystem( u8Variable, (VARH_UVariable)flData ); } //------------------------------------------------------------------------------------------------- -// Function: uGetVariableData +// Function: VARH_uGetVariableData // Description: Gets the Variable Data // Parameters: U8 u8Variable // Returns: VARH_UVariable //------------------------------------------------------------------------------------------------- -VARH_UVariable uGetVariableData( U8 u8Variable ) +VARH_UVariable VARH_uGetVariableData( U8 u8Variable ) { osMutexAcquire( m_pstMutexID, osWaitForever ); // aquire mutex VARH_UVariable uVar = m_auVariable[u8Variable].uData; @@ -292,7 +287,7 @@ VARH_UVariable uGetVariableData( U8 u8Variable ) //------------------------------------------------------------------------------------------------- U32 VARH_u32GetVariableData( U8 u8Variable ) { - return uGetVariableData( u8Variable ).u32Val; + return VARH_uGetVariableData( u8Variable ).u32Val; } //------------------------------------------------------------------------------------------------- @@ -303,7 +298,7 @@ U32 VARH_u32GetVariableData( U8 u8Variable ) //------------------------------------------------------------------------------------------------- S32 VARH_s32GetVariableData( U8 u8Variable ) { - return uGetVariableData( u8Variable ).s32Val; + return VARH_uGetVariableData( u8Variable ).s32Val; } //------------------------------------------------------------------------------------------------- @@ -314,7 +309,7 @@ S32 VARH_s32GetVariableData( U8 u8Variable ) //------------------------------------------------------------------------------------------------- FLOAT VARH_flGetVariableData( U8 u8Variable ) { - return uGetVariableData( u8Variable ).flVal; + return VARH_uGetVariableData( u8Variable ).flVal; } //------------------------------------------------------------------------------------------------- @@ -339,9 +334,7 @@ U8 VARH_uGetVariableFlags( U8 u8Variable ) //------------------------------------------------------------------------------------------------- VOID VARH_vSetVariableToInitData( U8 u8Variable ) { - osMutexAcquire( m_pstMutexID, osWaitForever ); // aquire mutex - vSetVariableDataFromSystem( u8Variable, m_astVarInfo[u8Variable].uInitData ); - osMutexRelease( m_pstMutexID ); // release mutex + VARH_vSetVariableDataFromSystem( u8Variable, m_astVarInfo[u8Variable].uInitData ); } //------------------------------------------------------------------------------------------------- diff --git a/Core/Application/VARH_VariableHandler.h b/Core/Application/VARH_VariableHandler.h index 220989b..8c2b0cd 100644 --- a/Core/Application/VARH_VariableHandler.h +++ b/Core/Application/VARH_VariableHandler.h @@ -142,16 +142,19 @@ typedef struct 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 ); diff --git a/Core/Drivers/CAND_CanDriver.c b/Core/Drivers/CAND_CanDriver.c index 4148438..6752fa9 100644 --- a/Core/Drivers/CAND_CanDriver.c +++ b/Core/Drivers/CAND_CanDriver.c @@ -55,6 +55,8 @@ #define CAND_PRIVATE 1 #define CAND_PUBLIC 0 +#define MASTER_ID ((CAND_SHIFT<<6) | 0x0000) + //================================================================================================= // Section: MACROS // Description: Definition of local macros (visible by this module only). @@ -161,13 +163,13 @@ BOOL CAND_boInitializeModule( VOID ) // PU8 Data Buffer // Returns: Boolean, TRUE if successful //------------------------------------------------------------------------------------------------- -BOOL CAND_boSendMessage( U8 u8Id, U8 u8Len, PU8 pu8Buffer ){ +BOOL CAND_boSendMessage( PU8 pu8Buffer, U8 u8Len ){ BOOL boOK = TRUE; if( u8Len > 8 ) return FALSE; CAN_TxHeaderTypeDef header = { - u8Id, + MASTER_ID, 0, CAN_ID_STD, CAN_RTR_DATA, diff --git a/Core/Drivers/CAND_CanDriver.h b/Core/Drivers/CAND_CanDriver.h index 49d13e3..24219be 100644 --- a/Core/Drivers/CAND_CanDriver.h +++ b/Core/Drivers/CAND_CanDriver.h @@ -89,7 +89,7 @@ typedef VOID (*CAND_pfnRxCallback)( CAND_Message stMessage ); //================================================================================================= BOOL CAND_boInitializeModule( VOID ); -BOOL CAND_boSendMessage( U8 u8Id, U8 u8Len, PU8 pu8Buffer ); +BOOL CAND_boSendMessage( PU8 pu8Buffer, U8 u8Len ); VOID CAND_vSetRxCallback( CAND_pfnRxCallback pfnRxCallback ); #ifdef __cplusplus