FLEX-FORD-OBC-BM/Source/include/bm_ap.h

204 lines
11 KiB
C
Raw Normal View History

2026-03-19 11:49:16 +01:00
/***********************************************************************************************************************
* FILE DESCRIPTION
* ------------------------------------------------------------------------------------------------------------------*/
/** \file
* \brief Application dependent routines
*
* \note Please note, that this file contains a collection of callback functions to be used with the
* Flash Bootloader. These functions may influence the behavior of the bootloader in principle.
* Therefore, great care must be taken to verify the correctness of the implementation.
* The contents of the originally delivered files are only examples resp. implementation proposals.
* With regard to the fact that these functions are meant for demonstration purposes only, Vector
* Informatik's liability shall be expressly excluded in cases of ordinary negligence, to the extent
* admissible by law or statute.
*
* --------------------------------------------------------------------------------------------------------------------
* COPYRIGHT
* --------------------------------------------------------------------------------------------------------------------
* \par Copyright
* \verbatim
* Copyright (c) 2025 by Vector Informatik GmbH. All rights reserved.
*
* This software is copyright protected and proprietary to Vector Informatik GmbH.
* Vector Informatik GmbH grants to you only those rights as set out in the license conditions.
* All other rights remain with Vector Informatik GmbH.
* \endverbatim
*/
/**********************************************************************************************************************/
/***********************************************************************************************************************
* REVISION HISTORY
* --------------------------------------------------------------------------------------------------------------------
* Version Date Author Change Id Description
* --------------------------------------------------------------------------------------------------------------------
* 01.00.00 2019-01-28 visrie - Initial version
* 01.01.00 2019-02-18 vismvi ESCAN00102171 No changes
* visrie ESCAN00102310 Added callout to check reprogramming flag
* 01.01.01 2019-03-07 visrie ESCAN00102386 No changes
* ESCAN00102399 No changes
* 02.00.00 2019-05-02 visrie ESCAN00102518 No changes
* ESCAN00102761 No changes
* ESCAN00103026 Provide BmHeader instead of StartAddress to ApplFblBmStartSoftware
* 03.00.00 2019-07-17 visrie ESCAN00103750 Removed target order list configuration
* 03.01.00 2019-08-14 visrie FBL-487 Exclude callouts if overwritten by OEM/HW layer
* 03.01.01 2019-09-04 visrcn ESCAN00103607 Memory qualifier mismatch
* 04.00.00 2019-12-04 visrie FBL-456 No changes
* ESCAN00105135 No changes
* 04.01.00 2020-01-16 visrie FBL-524 Added support for vHsm SecBoot library
* 05.00.00 2020-04-09 visrie FBL-1016 No changes
* 05.01.00 2020-04-29 vistmo FBL-1584 No changes
* 05.02.00 2020-08-13 vistmo FBL-1489 No changes
* 05.02.01 2021-03-17 vishor ESCAN00108386 No changes
* FBL-3018 Added/adapted MemMap sections
* 05.03.00 2021-08-11 visrie FBL-3394 Move default implementation of CheckReprogFlag into FblBm_Ap
* 05.04.00 2021-09-17 visjdn FBL-3865 No changes
* 05.04.01 2022-04-06 vismix FBL-4773 No changes
* 05.05.00 2022-04-07 vishor FBL-4822 No changes
* 05.05.01 2022-06-23 vismix ESCAN00111879 No changes
* 05.06.00 2022-07-13 vismix FBL-5391 Add callout for missing optional dependency
* 05.06.01 2022-11-29 vishor ESCAN00112986 Compiler error: Undefined symbols
* ApplFblPreMemDriver/ApplFblPostMemDriver
* 05.07.00 2023-06-29 vistbe FBL-7052 No changes
* 05.07.01 2023-12-18 visrie ESCAN00104829 No changes
* ESCAN00111036 No changes
* ESCAN00115752 No changes
* 05.08.00 2024-05-16 vishor FBL-8602 Add support for OEM updater solution
* 05.09.00 2025-05-23 dganesh FBL-9715 Extend presence pattern to connect validity information
**********************************************************************************************************************/
#ifndef BM_AP_H
#define BM_AP_H
/***********************************************************************************************************************
* VERSION
**********************************************************************************************************************/
/* ##V_CFG_MANAGEMENT ##CQProject : FblBm_Ap CQComponent : Implementation */
#define FBLBM_AP_VERSION 0x0509u
#define FBLBM_AP_RELEASE_VERSION 0x00u
/* Interface version */
/** Major interface version identifies incompatible changes */
#define FBLBM_AP_API_VERSION_MAJOR 0x03u
/** Minor interface version identifies backward compatible changes */
#define FBLBM_AP_API_VERSION_MINOR 0x00u
/** Release interface version identifies cosmetic changes */
#define FBLBM_AP_API_VERSION_RELEASE 0x00u
/***********************************************************************************************************************
* INCLUDES
**********************************************************************************************************************/
#include "FblBm_Cfg.h"
#include "bm_types.h"
#include "bm_hdr.h"
#include "fbl_inc.h"
/***********************************************************************************************************************
* DEFINES
**********************************************************************************************************************/
#if defined( FBLBM_ENABLE_STANDALONE_MODE )
# define FblRealTimeSupport() FblLookForWatchdog()
#endif
/***********************************************************************************************************************
* FUNCTION PROTOTYPES
**********************************************************************************************************************/
#define FBLBMAP_START_SEC_CODE
#include "MemMap.h" /* PRQA S 5087 */ /* MD_MSR_MemMap */
void ApplFblBmPowerOnPre(void);
void ApplFblBmPowerOnPost(void);
void ApplFblBmInitPre(void);
void ApplFblBmInitPost(void);
#if defined( FBLBM_AP_CALLOUT_RESET )
void ApplFblBmReset(void);
#endif /* FBLBM_AP_CALLOUT_RESET */
#if defined( FBLBM_AP_CALLOUT_CHECK_TARGET_VALIDITY )
tFblResult ApplFblBmCheckTargetValidity(tFblBmHdrTargetHandle targetHandle);
#endif /* FBLBM_AP_CALLOUT_CHECK_TARGET_VALIDITY */
#if defined( FBLBM_AP_CALLOUT_IS_VALIDBLOCK )
tFblResult ApplFblBmIsValidBlock(tFblBmHdrTargetHandle targetHandle,
const V_MEMRAM1 tBlockDescriptor V_MEMRAM2 V_MEMRAM3 * pLogicalBlock);
#endif /* FBLBM_AP_CALLOUT_IS_VALIDBLOCK */
#if defined( FBLBM_AP_CALLOUT_IS_OPTIONALBLOCK )
void ApplFblBmIsOptionalBlock(tFblBmHdrTargetHandle targetHandle,
const V_MEMRAM1 tBlockDescriptor V_MEMRAM2 V_MEMRAM3 * pLogicalBlock);
#endif /* FBLBM_AP_CALLOUT_IS_OPTIONALBLOCK */
#if defined( FBLBM_AP_CALLOUT_START_SOFTWARE )
void ApplFblBmStartSoftware(const V_MEMRAM1 tFblBmHdrHeader V_MEMRAM2 V_MEMRAM3 * bmHeader);
#endif /* FBLBM_AP_CALLOUT_START_SOFTWARE* */
#if defined( FBLBM_AP_CALLOUT_FAILSAFE_UPDATER_USER_CHECK ) && defined( FBLBM_ENABLE_UPDATER_FAILSAFE_USER )
tFblResult ApplFblBmFailsafeUpdaterUserCheck(V_MEMRAM1 tFblBmHdrHeader V_MEMRAM2 V_MEMRAM3 * bmHeader);
#endif
#if defined( FBLBM_ENABLE_SECURE_BOOT )
# if defined( FBLBM_ENABLE_SECBOOT_FBL_INIT_KEY )
# if defined( FBLBM_AP_CALLOUT_GET_KEYEMPTY )
tFblBmKeyEmptyResult ApplFblBmGetKeyEmpty( void );
# endif /* FBLBM_AP_CALLOUT_GET_KEYEMPTY */
# endif /* FBLBM_ENABLE_SECBOOT_FBL_INIT_KEY */
# if defined( FBLBM_ENABLE_SECBOOT_FBL_INIT_MAC )
# if defined( FBLBM_AP_CALLOUT_GET_FBL_CMACERASED )
tFblBmMacEmptyResult ApplFblBmGetFblCmacErased( const tFblBmBlockInfo * fblBlockInfo );
# endif /* FBLBM_AP_CALLOUT_GET_FBL_CMACERASED */
# endif /* FBLBM_ENABLE_SECBOOT_FBL_INIT_MAC */
#endif /* FBLBM_ENABLE_SECURE_BOOT */
#if defined( FBLBM_AP_CALLOUT_CHECKREPROGFLAG )
tFblResult ApplFblBmCheckReprogFlag( void );
#endif /* FBLBM_AP_CALLOUT_CHECKREPROGFLAG */
#if defined( FBLBM_ENABLE_UPDATER_FAILSAFE )
# if defined( FBLBM_AP_CALLOUT_SEARCH_FAILSAFE_UPDATER_INIT )
tFblResult ApplFblBmSearchUpdaterHeaderInit(void);
# endif /* FBLBM_AP_CALLOUT_SEARCH_FAILSAFE_UPDATER_INIT */
# if defined( FBLBM_AP_CALLOUT_SEARCH_FAILSAFE_UPDATER_HEADER_ADDRESS )
tFblResult ApplFblBmSearchUpdaterHeaderAddress(vuint32 * headerAddress);
# endif /* FBLBM_AP_CALLOUT_SEARCH_FAILSAFE_UPDATER_HEADER_ADDRESS */
# if defined( FBLBM_AP_CALLOUT_SEARCH_FAILSAFE_UPDATER_NEXT )
tFblResult ApplFblBmSearchUpdaterHeaderNext(void);
# endif /* FBLBM_AP_CALLOUT_SEARCH_FAILSAFE_UPDATER_NEXT */
#endif /* FBLBM_ENABLE_UPDATER_FAILSAFE */
#if defined( FBLBM_AP_CALLOUT_FATAL_ERROR )
void ApplFblBmFatalError(tFblBmError error);
#endif /* FBLBM_AP_CALLOUT_FATAL_ERROR */
#if defined( FBLNVPATTERN_ENABLE_SIGN_PRESENCE_PATTERN )
# if defined( FBLBM_AP_CALLOUT_GET_PP_SIGN_KEYEMPTY )
tFblBmKeyEmptyResult ApplFblBmGetPresPattSignInitStatus( void );
# endif /* FBLBM_AP_CALLOUT_GET_PP_SIGN_KEYEMPTY */
# if defined( FBLBM_AP_CALLOUT_IS_VALIDPATTERN )
tFblResult ApplFblBmCheckPresencePattern(tFblBmHdrTargetHandle targetHandle,
const V_MEMRAM1 tBlockDescriptor V_MEMRAM2 V_MEMRAM3 * pLogicalBlock);
# endif /* FBLBM_AP_CALLOUT_IS_VALIDPATTERN */
#endif
/*-- Other callout functions -----------------------------------------------------------------------------------------*/
#if defined( FBLBM_ENABLE_STANDALONE_MODE )
# if defined( FBL_ENABLE_ASSERTION )
void ApplFblFatalError( FBL_DECL_ASSERT_EXTENDED_INFO(vuint8 errorCode) );
# endif /* FBL_ENABLE_ASSERTION */
# if defined( FBL_MIO_ENABLE_HOOKS )
void ApplFblPreMemDriver( vuint8 device, vuint8 function );
void ApplFblPostMemDriver( vuint8 device, vuint8 function );
# endif /* FBL_MIO_ENABLE_HOOKS */
#endif /* FBLBM_ENABLE_STANDALONE_MODE */
#define FBLBMAP_STOP_SEC_CODE
#include "MemMap.h" /* PRQA S 5087 */ /* MD_MSR_MemMap */
#endif /* BM_AP_H */
/***********************************************************************************************************************
* END OF FILE: BM_AP.H
**********************************************************************************************************************/