test/tlv_test: add tlv re-init of full bank

This commit is contained in:
Matthias Ringwald 2023-04-28 21:22:30 +02:00
parent e195acfc18
commit a469758c05

View File

@ -17,9 +17,15 @@
#ifdef ENABLE_TLV_FLASH_EXPLICIT_DELETE_FIELD
// Provide additional bytes for 3 x delete fields (in both banks)
#define HAL_FLASH_BANK_MEMORY_STORAGE_SIZE (256 + 24)
#define TAG_OVERHEAD 16
#else
#define HAL_FLASH_BANK_MEMORY_STORAGE_SIZE (256)
#define TAG_OVERHEAD 8
#endif
#define HAL_FLASH_BANK_MEMORY_BANK_SIZE (HAL_FLASH_BANK_MEMORY_STORAGE_SIZE / 2)
static uint8_t hal_flash_bank_memory_storage[HAL_FLASH_BANK_MEMORY_STORAGE_SIZE];
static void CHECK_EQUAL_ARRAY(uint8_t * expected, uint8_t * actual, int size){
@ -245,6 +251,44 @@ TEST(BSTACK_TLV, TestWriteResetRead){
CHECK_EQUAL(buffer, data);
}
TEST(BSTACK_TLV, TestFullBank){
btstack_tlv_impl = btstack_tlv_flash_bank_init_instance(&btstack_tlv_context, hal_flash_bank_impl, &hal_flash_bank_context);
// fill-up flash bank
uint32_t tag = 'abcd';
uint8_t blob[HAL_FLASH_BANK_MEMORY_BANK_SIZE - 8 - TAG_OVERHEAD];
btstack_tlv_impl->store_tag(&btstack_tlv_context, tag, (uint8_t *) &blob, sizeof(blob));
CHECK_EQUAL(0, btstack_tlv_context.current_bank);
CHECK_EQUAL(HAL_FLASH_BANK_MEMORY_BANK_SIZE, btstack_tlv_context.write_offset);
// check
btstack_tlv_impl = btstack_tlv_flash_bank_init_instance(&btstack_tlv_context, hal_flash_bank_impl, &hal_flash_bank_context);
CHECK_EQUAL(0, btstack_tlv_context.current_bank);
CHECK_EQUAL(HAL_FLASH_BANK_MEMORY_BANK_SIZE, btstack_tlv_context.write_offset);
}
TEST(BSTACK_TLV, TestFullBankPlusMigrate){
btstack_tlv_impl = btstack_tlv_flash_bank_init_instance(&btstack_tlv_context, hal_flash_bank_impl, &hal_flash_bank_context);
// fill-up flash bank
uint32_t tag = 'abcd';
uint8_t blob[((HAL_FLASH_BANK_MEMORY_BANK_SIZE - 8) / 2) - TAG_OVERHEAD];
btstack_tlv_impl->store_tag(&btstack_tlv_context, tag, (uint8_t *) &blob, sizeof(blob));
btstack_tlv_impl->store_tag(&btstack_tlv_context, tag, (uint8_t *) &blob, sizeof(blob));
CHECK_EQUAL(0, btstack_tlv_context.current_bank);
CHECK_EQUAL(HAL_FLASH_BANK_MEMORY_BANK_SIZE, btstack_tlv_context.write_offset);
// check
btstack_tlv_impl = btstack_tlv_flash_bank_init_instance(&btstack_tlv_context, hal_flash_bank_impl, &hal_flash_bank_context);
CHECK_EQUAL(0, btstack_tlv_context.current_bank);
CHECK_EQUAL(HAL_FLASH_BANK_MEMORY_BANK_SIZE, btstack_tlv_context.write_offset);
// store one more -> trigger migration
btstack_tlv_impl->store_tag(&btstack_tlv_context, tag, (uint8_t *) &blob, sizeof(blob));
CHECK_EQUAL(1, btstack_tlv_context.current_bank);
CHECK_EQUAL(8 + 2 * (TAG_OVERHEAD + sizeof(blob)), btstack_tlv_context.write_offset);
}
//
TEST_GROUP(LINK_KEY_DB){
const hal_flash_bank_t * hal_flash_bank_impl;