diff options
Diffstat (limited to 'Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/STM32_WPAN/App/app_ble.c')
-rw-r--r-- | Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/STM32_WPAN/App/app_ble.c | 59 |
1 files changed, 23 insertions, 36 deletions
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/STM32_WPAN/App/app_ble.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/STM32_WPAN/App/app_ble.c index 8a3f9bf49..40fde8b7d 100644 --- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/STM32_WPAN/App/app_ble.c +++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_Ota/STM32_WPAN/App/app_ble.c @@ -36,13 +36,15 @@ #include "ota_sbsfu.h" #endif /* OTA_SBSFU */ +#include "flash_driver.h" + /* Private typedef -----------------------------------------------------------*/ /* Private defines -----------------------------------------------------------*/ #define APPBLE_GAP_DEVICE_NAME_LENGTH 7 #define BD_ADDR_SIZE_LOCAL 6 - + /* Private macros ------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ PLACE_IN_SECTION("MB_MEM1") ALIGN(4) static TL_CmdPacket_t BleCmdBuffer; @@ -393,10 +395,10 @@ static void Ble_Hci_Gap_Gatt_Init(void){ static void Adv_Request(void){ aci_gap_set_discoverable(ADV_IND, - CFG_FAST_CONN_ADV_INTERVAL_MIN, - CFG_FAST_CONN_ADV_INTERVAL_MAX, - PUBLIC_ADDR, - NO_WHITE_LIST_USE, sizeof(local_name), (uint8_t*) &local_name, 0, 0, 0, 0); + CFG_FAST_CONN_ADV_INTERVAL_MIN, + CFG_FAST_CONN_ADV_INTERVAL_MAX, + PUBLIC_ADDR, + NO_WHITE_LIST_USE, sizeof(local_name), (uint8_t*) &local_name, 0, 0, 0, 0); /* Send Advertising data */ aci_gap_update_adv_data(sizeof(manuf_data), (uint8_t*) manuf_data); @@ -406,25 +408,17 @@ static void Delete_Sectors( void ) { #ifdef OTA_SBSFU - uint32_t page_error; - FLASH_EraseInitTypeDef p_erase_init; + uint32_t NbrOfSectorToBeErased; - p_erase_init.TypeErase = FLASH_TYPEERASE_PAGES; - p_erase_init.Page = (SLOT_ACTIVE_1_START&0x00FFF000)>>12; - p_erase_init.NbPages = (((SLOT_ACTIVE_1_END-SLOT_ACTIVE_1_START)&0x00FFF000)>>12)+1; - - HAL_FLASH_Unlock(); - HAL_FLASHEx_Erase(&p_erase_init, &page_error); - HAL_FLASH_Lock(); + NbrOfSectorToBeErased = (((SLOT_ACTIVE_1_END-SLOT_ACTIVE_1_START)&0x00FFF000)>>12)+1; + + FD_EraseSectors((SLOT_ACTIVE_1_START&0x00FFF000)>>12, + NbrOfSectorToBeErased); - p_erase_init.TypeErase = FLASH_TYPEERASE_PAGES; - p_erase_init.Page = (SLOT_DWL_1_START&0x00FFF000)>>12; - p_erase_init.NbPages = (((SLOT_DWL_1_END-SLOT_DWL_1_START)&0x00FFF000)>>12)+1; - - HAL_FLASH_Unlock(); - HAL_FLASHEx_Erase(&p_erase_init, &page_error); - HAL_FLASH_Lock(); + NbrOfSectorToBeErased = (((SLOT_DWL_1_END-SLOT_DWL_1_START)&0x00FFF000)>>12)+1; + FD_EraseSectors((SLOT_DWL_1_START&0x00FFF000)>>12, + NbrOfSectorToBeErased); return; #else /** @@ -433,16 +427,12 @@ static void Delete_Sectors( void ) * The limit can be read from the SFSA option byte which provides the first secured sector address. */ - uint32_t page_error; - FLASH_EraseInitTypeDef p_erase_init; uint32_t first_secure_sector_idx; + uint32_t NbrOfSectorToBeErased; first_secure_sector_idx = (READ_BIT(FLASH->SFR, FLASH_SFR_SFSA) >> FLASH_SFR_SFSA_Pos); - p_erase_init.TypeErase = FLASH_TYPEERASE_PAGES; - - p_erase_init.Page = CFG_OTA_START_SECTOR_IDX_VAL_MSG; - if(p_erase_init.Page < (CFG_APP_START_SECTOR_INDEX - 1)) + if(CFG_OTA_START_SECTOR_IDX_VAL_MSG < (CFG_APP_START_SECTOR_INDEX - 1)) { /** * Something has been wrong as there is no case we should delete the BLE_Ota application @@ -451,19 +441,16 @@ static void Delete_Sectors( void ) CFG_OTA_REBOOT_VAL_MSG = CFG_REBOOT_ON_FW_APP; NVIC_SystemReset(); /* it waits until reset */ } - p_erase_init.NbPages = CFG_OTA_NBR_OF_SECTOR_VAL_MSG; - if ((p_erase_init.Page + p_erase_init.NbPages) > first_secure_sector_idx) + NbrOfSectorToBeErased = CFG_OTA_NBR_OF_SECTOR_VAL_MSG; + + if ((CFG_OTA_START_SECTOR_IDX_VAL_MSG + NbrOfSectorToBeErased) > first_secure_sector_idx) { - p_erase_init.NbPages = first_secure_sector_idx - p_erase_init.Page; + NbrOfSectorToBeErased = first_secure_sector_idx - CFG_OTA_START_SECTOR_IDX_VAL_MSG; } - HAL_FLASH_Unlock(); - - HAL_FLASHEx_Erase(&p_erase_init, &page_error); - - HAL_FLASH_Lock(); - + FD_EraseSectors(CFG_OTA_START_SECTOR_IDX_VAL_MSG, + NbrOfSectorToBeErased); return; #endif /* OTA_SBSFU */ } |