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

308 lines
14 KiB
C

/***********************************************************************************************************************
* 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 No changes
* 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 No changes
* 04.00.00 2019-12-04 visrie FBL-456 No changes
* ESCAN00105135 No changes
* 04.01.00 2020-01-16 visrie FBL-524 No changes
* 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 No changes
* 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 No changes
* 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_CFG_H
#define BM_AP_CFG_H
/***********************************************************************************************************************
* DEFINES
**********************************************************************************************************************/
/*-- Processing hook functions ---------------------------------------------------------------------------------------*/
/*-- Callout functions -----------------------------------------------------------------------------------------------*/
/* Callout implementation is mandatory, but could be overwritten by OEM- or platform-specific variant */
/** HW specific initialization callout */
#if !defined( FBLBM_CALLOUT_POWER_ON_PRE_HW)
# define FBLBM_CALLOUT_POWER_ON_PRE_HW()
#endif /* FBLBM_CALLOUT_POWER_ON_PRE_HW */
/** OEM specific initialization callout */
#if !defined( FBLBM_CALLOUT_POWER_ON_PRE_OEM )
# define FBLBM_CALLOUT_POWER_ON_PRE_OEM()
#endif /* FBLBM_CALLOUT_POWER_ON_PRE_OEM */
/** Initialization callout */
#if !defined( FBLBM_CALLOUT_POWER_ON_PRE )
# define FBLBM_CALLOUT_POWER_ON_PRE ApplFblBmPowerOnPre
#endif /* FBLBM_CALLOUT_POWER_ON_PRE */
/** HW specific initialization callout */
#if !defined( FBLBM_CALLOUT_POWER_ON_POST_HW )
# define FBLBM_CALLOUT_POWER_ON_POST_HW()
#endif /* FBLBM_CALLOUT_POWER_ON_POST_HW */
/** OEM specific initialization callout */
#if !defined( FBLBM_CALLOUT_POWER_ON_POST_OEM )
# define FBLBM_CALLOUT_POWER_ON_POST_OEM()
#endif /* FBLBM_CALLOUT_POWER_ON_POST_OEM */
/** Initialization callout */
#if !defined( FBLBM_CALLOUT_POWER_ON_POST )
# define FBLBM_CALLOUT_POWER_ON_POST ApplFblBmPowerOnPost
#endif /* FBLBM_CALLOUT_POWER_ON_POST */
/** HW specific initialization callout */
#if !defined( FBLBM_CALLOUT_INIT_PRE_HW )
# define FBLBM_CALLOUT_INIT_PRE_HW()
#endif /* FBLBM_CALLOUT_INIT_PRE_HW */
/** OEM specific initialization callout */
#if !defined( FBLBM_CALLOUT_INIT_PRE_OEM )
# define FBLBM_CALLOUT_INIT_PRE_OEM()
#endif /* FBLBM_CALLOUT_INIT_PRE_OEM */
/** Initialization callout */
#if !defined( FBLBM_CALLOUT_INIT_PRE )
# define FBLBM_CALLOUT_INIT_PRE ApplFblBmInitPre
#endif /* FBLBM_CALLOUT_INIT_PRE */
/** HW specific initialization callout */
#if !defined( FBLBM_CALLOUT_INIT_POST_HW )
# define FBLBM_CALLOUT_INIT_POST_HW()
#endif /* FBLBM_CALLOUT_INIT_POST_HW */
/** OEM specific initialization callout */
#if !defined( FBLBM_CALLOUT_INIT_POST_OEM )
# define FBLBM_CALLOUT_INIT_POST_OEM()
#endif /* FBLBM_CALLOUT_INIT_POST_OEM */
/** Initialization callout */
#if !defined( FBLBM_CALLOUT_INIT_POST )
# define FBLBM_CALLOUT_INIT_POST ApplFblBmInitPost
#endif /* FBLBM_CALLOUT_INIT_POST */
/** HW specific deinitialization callout */
#if !defined( FBLBM_CALLOUT_DEINIT_PRE_HW )
# define FBLBM_CALLOUT_DEINIT_PRE_HW()
#endif /* FBLBM_CALLOUT_DEINIT_PRE_HW */
/** OEM specific deinitialization callout */
#if !defined( FBLBM_CALLOUT_DEINIT_PRE_OEM )
# define FBLBM_CALLOUT_DEINIT_PRE_OEM()
#endif /* FBLBM_CALLOUT_DEINIT_PRE_OEM */
/** Denitialization callout */
#if !defined( FBLBM_CALLOUT_DEINIT_PRE )
# define FBLBM_CALLOUT_DEINIT_PRE()
#endif /* FBLBM_CALLOUT_DEINIT_PRE */
/** HW specific deinitialization callout */
#if !defined( FBLBM_CALLOUT_DEINIT_POST_HW )
# define FBLBM_CALLOUT_DEINIT_POST_HW()
#endif /* FBLBM_CALLOUT_DEINIT_HW */
/** OEM specific deinitialization callout */
#if !defined( FBLBM_CALLOUT_DEINIT_POST_OEM )
# define FBLBM_CALLOUT_DEINIT_POST_OEM()
#endif /* FBLBM_CALLOUT_DEINIT_POST_OEM */
/** Denitialization callout */
#if !defined( FBLBM_CALLOUT_DEINIT_POST )
# define FBLBM_CALLOUT_DEINIT_POST()
#endif /* FBLBM_CALLOUT_DEINIT_POST */
/** Callout to perform reset */
#if !defined( FBLBM_CALLOUT_RESET )
# define FBLBM_CALLOUT_RESET ApplFblBmReset
# define FBLBM_AP_CALLOUT_RESET
#endif /* FBLBM_CALLOUT_RESET */
/** Check appl validity callout */
#if !defined( FBLBM_CALLOUT_CHECK_TARGET_VALIDITY )
# define FBLBM_CALLOUT_CHECK_TARGET_VALIDITY ApplFblBmCheckTargetValidity
# define FBLBM_AP_CALLOUT_CHECK_TARGET_VALIDITY
#endif /* FBLBM_CALLOUT_CHECK_TARGET_VALIDITY */
/** Checks if the block is valid callout */
#if !defined( FBLBM_CALLOUT_IS_VALIDBLOCK )
# define FBLBM_CALLOUT_IS_VALIDBLOCK ApplFblBmIsValidBlock
# define FBLBM_AP_CALLOUT_IS_VALIDBLOCK
#endif /* FBLBM_CALLOUT_IS_VALIDBLOCK */
/** Callout when the block is optional */
#if !defined( FBLBM_CALLOUT_IS_OPTIONALBLOCK )
# define FBLBM_CALLOUT_IS_OPTIONALBLOCK ApplFblBmIsOptionalBlock
# define FBLBM_AP_CALLOUT_IS_OPTIONALBLOCK
#endif /* FBLBM_CALLOUT_IS_OPTIONALBLOCK */
/** Start the Application */
#if !defined( FBLBM_CALLOUT_CALL_TARGET )
# define FBLBM_CALLOUT_CALL_TARGET ApplFblBmStartSoftware
# if !defined( FBLBM_AP_CALLOUT_START_SOFTWARE )
# define FBLBM_AP_CALLOUT_START_SOFTWARE
# endif /* FBLBM_AP_CALLOUT_START_SOFTWARE */
#endif /* FBLBM_CALLOUT_CALL_TARGET */
/** Start the FBL */
#if !defined( FBLBM_CALLOUT_CALL_FBL )
# define FBLBM_CALLOUT_CALL_FBL ApplFblBmStartSoftware
# if !defined( FBLBM_AP_CALLOUT_START_SOFTWARE )
# define FBLBM_AP_CALLOUT_START_SOFTWARE
# endif /* FBLBM_AP_CALLOUT_START_SOFTWARE */
#endif /* FBLBM_CALLOUT_CALL_FBL */
/** Start the FBL to initialize the Key */
#if !defined( FBLBM_CALLOUT_CALL_FBL_INIT_KEYS )
# define FBLBM_CALLOUT_CALL_FBL_INIT_KEYS ApplFblBmStartSoftware
# if !defined( FBLBM_AP_CALLOUT_START_SOFTWARE )
# define FBLBM_AP_CALLOUT_START_SOFTWARE
# endif /* FBLBM_AP_CALLOUT_START_SOFTWARE */
#endif /* FBLBM_CALLOUT_CALL_FBL_INIT_KEYS */
/** Start the FBL to initialize its CMAC */
#if !defined( FBLBM_CALLOUT_CALL_FBL_INIT_CMAC )
# define FBLBM_CALLOUT_CALL_FBL_INIT_CMAC ApplFblBmStartSoftware
# if !defined( FBLBM_AP_CALLOUT_START_SOFTWARE )
# define FBLBM_AP_CALLOUT_START_SOFTWARE
# endif /* FBLBM_AP_CALLOUT_START_SOFTWARE */
#endif /* FBLBM_CALLOUT_CALL_FBL_INIT_CMAC */
/** Check if user updater is present */
#if !defined( FBLBM_CALLOUT_FAILSAFE_UPDATER_USER_CHECK )
# define FBLBM_CALLOUT_FAILSAFE_UPDATER_USER_CHECK(a) ApplFblBmFailsafeUpdaterUserCheck(a)
# define FBLBM_AP_CALLOUT_FAILSAFE_UPDATER_USER_CHECK
#endif /* FBLBM_CALLOUT_FAILSAFE_UPDATER_USER_CHECK */
/** Start the Updater */
#if !defined( FBLBM_CALLOUT_CALL_FAILSAFE_UPDATER )
# define FBLBM_CALLOUT_CALL_FAILSAFE_UPDATER ApplFblBmStartSoftware
# if !defined( FBLBM_AP_CALLOUT_START_SOFTWARE )
# define FBLBM_AP_CALLOUT_START_SOFTWARE
# endif /* FBLBM_AP_CALLOUT_START_SOFTWARE */
#endif /* FBLBM_CALLOUT_CALL_FAILSAFE_UPDATER */
/** Get information if Key is available for MAC verification */
#if !defined( FBLBM_CALLOUT_GET_KEYEMPTY )
# define FBLBM_CALLOUT_GET_KEYEMPTY ApplFblBmGetKeyEmpty
# define FBLBM_AP_CALLOUT_GET_KEYEMPTY
#endif /* FBLBM_CALLOUT_GET_KEYEMPTY */
/** Check if FBL MAC is available */
#if !defined( FBLBM_CALLOUT_GET_FBL_CMACERASED )
# define FBLBM_CALLOUT_GET_FBL_CMACERASED ApplFblBmGetFblCmacErased
# define FBLBM_AP_CALLOUT_GET_FBL_CMACERASED
#endif /* FBLBM_CALLOUT_GET_FBL_CMACERASED */
/** Check if the programming request flag is set */
#if !defined( FBLBM_CALLOUT_CHECKREPROGFLAG )
# define FBLBM_CALLOUT_CHECKREPROGFLAG ApplFblBmCheckReprogFlag
# define FBLBM_AP_CALLOUT_CHECKREPROGFLAG
#endif /* FBLBM_CALLOUT_CHECKREPROGFLAG */
/** Failsafe Updater */
#if !defined( FBLBM_CALLOUT_SEARCH_FAILSAFE_UPDATER_INIT )
#define FBLBM_CALLOUT_SEARCH_FAILSAFE_UPDATER_INIT ApplFblBmSearchUpdaterHeaderInit
# define FBLBM_AP_CALLOUT_SEARCH_FAILSAFE_UPDATER_INIT
#endif /* FBLBM_CALLOUT_SEARCH_FAILSAFE_UPDATER_INIT */
/** Failsafe Updater */
#if !defined( FBLBM_CALLOUT_SEARCH_FAILSAFE_UPDATER_HEADER_ADDRESS )
#define FBLBM_CALLOUT_SEARCH_FAILSAFE_UPDATER_HEADER_ADDRESS ApplFblBmSearchUpdaterHeaderAddress
# define FBLBM_AP_CALLOUT_SEARCH_FAILSAFE_UPDATER_HEADER_ADDRESS
#endif /* FBLBM_CALLOUT_SEARCH_FAILSAFE_UPDATER_HEADER_ADDRESS */
/** Failsafe Updater */
#if !defined( FBLBM_CALLOUT_SEARCH_FAILSAFE_UPDATER_NEXT )
#define FBLBM_CALLOUT_SEARCH_FAILSAFE_UPDATER_NEXT ApplFblBmSearchUpdaterHeaderNext
# define FBLBM_AP_CALLOUT_SEARCH_FAILSAFE_UPDATER_NEXT
#endif /* FBLBM_CALLOUT_SEARCH_FAILSAFE_UPDATER_NEXT */
/** Fatal error callout */
#if !defined( FBLBM_CALLOUT_FATAL_ERROR )
# define FBLBM_CALLOUT_FATAL_ERROR ApplFblBmFatalError
# define FBLBM_AP_CALLOUT_FATAL_ERROR
#endif /* FBLBM_CALLOUT_FATAL_ERROR */
/** Check if Signed Presence pattern is empty */
#if !defined( FBLBM_CALLOUT_GET_PP_SIGN_KEYEMPTY )
#define FBLBM_CALLOUT_GET_PP_SIGN_KEYEMPTY ApplFblBmGetPresPattSignInitStatus
# define FBLBM_AP_CALLOUT_GET_PP_SIGN_KEYEMPTY
#endif /* FBLBM_CALLOUT_GET_PP_SIGN_KEYEMPTY */
/** Call for Presence pattern validation */
#if !defined( FBLBM_CALLOUT_IS_VALIDPATTERN )
#define FBLBM_CALLOUT_IS_VALIDPATTERN ApplFblBmCheckPresencePattern
# define FBLBM_AP_CALLOUT_IS_VALIDPATTERN
#endif /* FBLBM_CALLOUT_IS_VALIDPATTERN */
/** Callout to update signed presence pattern */
#if !defined( FBLBM_CALLOUT_CALL_FBL_INIT_SIGNED_PRESENCEPATTERN )
#define FBLBM_CALLOUT_CALL_FBL_INIT_SIGNED_PRESENCEPATTERN ApplFblBmStartSoftware
# if !defined( FBLBM_AP_CALLOUT_START_SOFTWARE )
# define FBLBM_AP_CALLOUT_START_SOFTWARE
# endif /* FBLBM_AP_CALLOUT_START_SOFTWARE */
#endif /* FBLBM_CALLOUT_CALL_FBL_INIT_SIGNED_PRESENCEPATTERN */
#endif /* BM_AP_CFG_H */
/***********************************************************************************************************************
* END OF FILE: BM_AP_CFG.H
**********************************************************************************************************************/