diff --git a/Inc/InternalFlashPage.h b/Inc/InternalFlashPage.h index a2bf743..4bf192a 100644 --- a/Inc/InternalFlashPage.h +++ b/Inc/InternalFlashPage.h @@ -10,7 +10,9 @@ #include "stddef.h" bool D_bInternalFlashPage_Clear( - uint32_t pageAddress + uint32_t pageAddress, + void *wdTriggerFct, + void *wdTriggerFct_env ); size_t D_sInternalFlashPage_Write( @@ -35,7 +37,9 @@ size_t D_sInternalFlashPage_Read( bool D_bInternalFlashPage_ClearRange( uint32_t firstPageAddr, - uint32_t totalSize + uint32_t totalSize, + void *wdTriggerFct, + void *wdTriggerFct_env ); bool D_bInternalFlashPage_WriteFromRam(uint32_t beginPageAddr, void *sourceRamAddr, uint32_t size); @@ -43,7 +47,9 @@ bool D_bInternalFlashPage_WriteFromRam(uint32_t beginPageAddr, void *sourceRamAd bool D_bInternalFlashPage_CopyRange( uint32_t targetPageAddr, uint32_t sourcePageAddr, - uint32_t totalCopySize + uint32_t totalCopySize, + void *wdTriggerFct, + void *wdTriggerFct_env ); uint32_t D_iInternalFlashPage_ReadWord(uint32_t addressOnFlash); @@ -86,7 +92,9 @@ size_t P_sInternalFlashPage_Read( bool P_bInternalFlashPage_ClearRange( uint32_t firstPageAddr, - uint32_t totalSize + uint32_t totalSize, + void *wdTriggerFct, + void *wdTriggerFct_env ); bool P_bInternalFlashPage_WriteFromRam(uint32_t beginPageAddr, void *sourceRamAddr, uint32_t size); @@ -94,7 +102,9 @@ bool P_bInternalFlashPage_WriteFromRam(uint32_t beginPageAddr, void *sourceRamAd bool P_bInternalFlashPage_CopyRange( uint32_t targetPageAddr, uint32_t sourcePageAddr, - uint32_t totalCopySize + uint32_t totalCopySize, + void *wdTriggerFct, + void *wdTriggerFct_env ); uint32_t P_iInternalFlashPage_ReadWord(uint32_t addressOnFlash); diff --git a/Src/InternalFlashPage_DFlash.c b/Src/InternalFlashPage_DFlash.c index 1d05bbf..86f1f63 100644 --- a/Src/InternalFlashPage_DFlash.c +++ b/Src/InternalFlashPage_DFlash.c @@ -42,12 +42,14 @@ size_t D_sInternalFlashPage_Read( } bool D_bInternalFlashPage_Clear( - uint32_t pageAddress + uint32_t pageAddress, + void *wdTriggerFct, + void *wdTriggerFct_env ) { FLASHDRIVER_Init(); - FLASH_DRIVER_ParamType tFlashParam = {.pData = NULL, - .wdTriggerFct = (void *) 0 + FLASH_DRIVER_ParamType tFlashParam = {.pData = wdTriggerFct, + .wdTriggerFct = wdTriggerFct_env }; tFlashParam.u32Address = pageAddress; @@ -75,7 +77,9 @@ bool D_bInternalFlashPage_Clear( bool D_bInternalFlashPage_ClearRange( uint32_t firstPageAddr, - uint32_t totalSize + uint32_t totalSize, + void *wdTriggerFct, + void *wdTriggerFct_env ) { if (totalSize % FLASH_PAGE_SIZE) { return false; @@ -83,7 +87,7 @@ bool D_bInternalFlashPage_ClearRange( uint32_t endAddr = firstPageAddr + totalSize; for (; firstPageAddr < endAddr; firstPageAddr += FLASH_PAGE_SIZE) { - if (!D_bInternalFlashPage_Clear(firstPageAddr)) { + if (!D_bInternalFlashPage_Clear(firstPageAddr, wdTriggerFct, wdTriggerFct_env)) { return false; } } @@ -94,9 +98,11 @@ bool D_bInternalFlashPage_ClearRange( bool D_bInternalFlashPage_CopyRange( uint32_t targetPageAddr, uint32_t sourcePageAddr, - uint32_t size + uint32_t size, + void *wdTriggerFct, + void *wdTriggerFct_env ) { - if (!D_bInternalFlashPage_ClearRange(targetPageAddr, size)) { + if (!D_bInternalFlashPage_ClearRange(targetPageAddr, size, wdTriggerFct, wdTriggerFct_env)) { return false; } @@ -172,7 +178,7 @@ size_t D_bInternalFlashPage_DumpFromRam( ) { size_t alignedSize = ((size / FLASH_PAGE_SIZE) + (size % FLASH_PAGE_SIZE ? 1 : 0)) * FLASH_PAGE_SIZE; - if (!D_bInternalFlashPage_ClearRange(beginPageAddr, alignedSize)) { + if (!D_bInternalFlashPage_ClearRange(beginPageAddr, alignedSize,NULL, 0)) { return 0; } diff --git a/Src/InternalFlashPage_PFlash.c b/Src/InternalFlashPage_PFlash.c index 5b1a09e..3d6ef3b 100644 --- a/Src/InternalFlashPage_PFlash.c +++ b/Src/InternalFlashPage_PFlash.c @@ -76,7 +76,9 @@ bool P_bInternalFlashPage_Clear( bool P_bInternalFlashPage_ClearRange( uint32_t firstPageAddr, - uint32_t totalSize + uint32_t totalSize, + void *wdTriggerFct, + void *wdTriggerFct_env ) { if (totalSize % FLASH_PAGE_SIZE) { return false; @@ -85,8 +87,9 @@ bool P_bInternalFlashPage_ClearRange( FLASHDRIVER_Init(); FLASH_DRIVER_ParamType tFlashParam = { - .pData = NULL, - .wdTriggerFct = (void *)0, + .pData = 0, + .wdTriggerFct = wdTriggerFct, + .wdTriggerFct_env = wdTriggerFct_env, .u32Address = firstPageAddr, .u32Length = totalSize }; @@ -115,9 +118,11 @@ bool P_bInternalFlashPage_ClearRange( bool P_bInternalFlashPage_CopyRange( uint32_t targetPageAddr, uint32_t sourcePageAddr, - uint32_t size + uint32_t size, + void *wdTriggerFct, + void *wdTriggerFct_env ) { - if (!P_bInternalFlashPage_ClearRange(targetPageAddr, size)) { + if (!P_bInternalFlashPage_ClearRange(targetPageAddr, size, wdTriggerFct, wdTriggerFct_env)) { return false; } @@ -193,7 +198,7 @@ size_t P_bInternalFlashPage_DumpFromRam( ) { size_t alignedSize = ((size / FLASH_PAGE_SIZE) + (size % FLASH_PAGE_SIZE ? 1 : 0)) * FLASH_PAGE_SIZE; - if (!P_bInternalFlashPage_ClearRange(beginPageAddr, alignedSize)) { + if (!P_bInternalFlashPage_ClearRange(beginPageAddr, alignedSize, NULL, 0)) { return 0; }