cfstore flash integration changes for supporting storage flash sync/async mode configuration.

Simon Hughes 2016-06-17 10:23:49 +01:00
parent bd4bfce7a2
commit fec7b6694c
26 changed files with 379 additions and 294 deletions

View File

@ -20,18 +20,16 @@
#if defined __MBED__ && ! defined TOOLCHAIN_GCC_ARM
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include <mbed-drivers/mbed.h>
#endif
#include "mbed-drivers/mbed.h"
#include "cfstore_config.h"
#include "Driver_Common.h"
#include "cfstore_debug.h"
#include "cfstore_test.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
#ifdef YOTTA_CFG_CFSTORE_UVISOR
#include "uvisor-lib/uvisor-lib.h"
#include "cfstore_uvisor.h"
@ -77,15 +75,12 @@ int main()
#else
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "Driver_Common.h"
#include "cfstore_debug.h"
#include "cfstore_test.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -123,9 +118,12 @@ static cfstore_kv_data_t cfstore_add_del_test_07_data[] = {
/* report whether built/configured for flash sync or async mode */
static control_t cfstore_add_del_test_00(const size_t call_count)
{
int32_t ret = ARM_DRIVER_ERROR;
(void) call_count;
ARM_CFSTORE_CAPABILITIES caps = cfstore_driver.GetCapabilities();
CFSTORE_LOG("INITIALIZING: caps.asynchronous_ops=%lu\n", caps.asynchronous_ops);
ret = cfstore_test_startup();
CFSTORE_TEST_UTEST_MESSAGE(cfstore_add_del_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to perform test startup (ret=%d).\n", __func__, (int) ret);
TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_add_del_utest_msg_g);
return CaseNext;
}
@ -149,7 +147,6 @@ static control_t cfstore_add_del_test_01_end(const size_t call_count)
CFSTORE_FENTRYLOG("%s:entered\n", __func__);
(void) call_count;
CFSTORE_LOG("cfstore_add_del_test_07: Start%s", "\n");
memset(&kdesc, 0, sizeof(kdesc));
memset(&flags, 0, sizeof(flags));
@ -217,7 +214,6 @@ static control_t cfstore_add_del_test_02_end(const size_t call_count)
CFSTORE_FENTRYLOG("%s:entered\n", __func__);
(void) call_count;
CFSTORE_LOG("%s: Start\n", __func__);
memset(&kdesc, 0, sizeof(kdesc));
/* create */
@ -229,7 +225,8 @@ static control_t cfstore_add_del_test_02_end(const size_t call_count)
ret = cfstore_test_create(node->key_name, (char*) node->value, &len, &kdesc);
CFSTORE_TEST_UTEST_MESSAGE(cfstore_add_del_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to create kv (key_name=%s.\n", __func__, node->key_name);
TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_add_del_utest_msg_g);
CFSTORE_LOG("Created KV successfully (key_name=\"%s\", value=\"%s\")\n", node->key_name, node->value);
/* revert CFSTORE_LOG for more trace */
CFSTORE_DBGLOG("Created KV successfully (key_name=\"%s\", value=\"%s\")\n", node->key_name, node->value);
node++;
}
@ -245,7 +242,8 @@ static control_t cfstore_add_del_test_02_end(const size_t call_count)
ret = cfstore_test_kv_is_found(node->key_name, &bResult);
CFSTORE_TEST_UTEST_MESSAGE(cfstore_add_del_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: found key when should not be present.\n", __func__);
TEST_ASSERT_MESSAGE(ret == ARM_CFSTORE_DRIVER_ERROR_KEY_NOT_FOUND && bResult == false, cfstore_add_del_utest_msg_g);
CFSTORE_LOG("Found KV successfully (key_name=\"%s\")\n", node->key_name);
/* revert CFSTORE_LOG for more trace */
CFSTORE_DBGLOG("Found KV successfully (key_name=\"%s\")\n", node->key_name);
node++;
}
ret = drv->Uninitialize();
@ -286,7 +284,8 @@ static control_t cfstore_add_del_test_03_end(const size_t call_count)
cfstore_test_delete(node->key_name);
CFSTORE_TEST_UTEST_MESSAGE(cfstore_add_del_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error failed to delete a key (ret=%" PRId32 ").\n", __func__, ret);
TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_add_del_utest_msg_g);
CFSTORE_LOG("Deleted KV successfully (key_name=\"%s\")\n", node->key_name);
/* revert CFSTORE_LOG for more trace */
CFSTORE_DBGLOG("Deleted KV successfully (key_name=\"%s\")\n", node->key_name);
node++;
}
/* check the keys have been deleted */

View File

@ -21,15 +21,12 @@
#if defined __MBED__ && ! defined TOOLCHAIN_GCC_ARM
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "Driver_Common.h"
#include "cfstore_debug.h"
#include "cfstore_test.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -78,13 +75,10 @@ int main()
#else
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "Driver_Common.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "cfstore_test.h"
#include "cfstore_debug.h"
#include "utest/utest.h"
@ -120,9 +114,12 @@ static cfstore_kv_data_t cfstore_close_test_01_kv_data[] = {
/* report whether built/configured for flash sync or async mode */
static control_t cfstore_close_test_00(const size_t call_count)
{
int32_t ret = ARM_DRIVER_ERROR;
(void) call_count;
ARM_CFSTORE_CAPABILITIES caps = cfstore_driver.GetCapabilities();
CFSTORE_LOG("INITIALIZING: caps.asynchronous_ops=%lu\n", caps.asynchronous_ops);
ret = cfstore_test_startup();
CFSTORE_TEST_UTEST_MESSAGE(cfstore_close_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to perform test startup (ret=%d).\n", __func__, (int) ret);
TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_close_utest_msg_g);
return CaseNext;
}

View File

@ -20,15 +20,12 @@
#if defined __MBED__ && ! defined TOOLCHAIN_GCC_ARM
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "Driver_Common.h"
#include "cfstore_debug.h"
#include "cfstore_test.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -78,15 +75,12 @@ int main()
#else
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "cfstore_debug.h"
#include "cfstore_test.h"
#include "Driver_Common.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -314,8 +308,12 @@ out1:
/* report whether built/configured for flash sync or async mode */
static control_t cfstore_create_test_00(const size_t call_count)
{
int32_t ret = ARM_DRIVER_ERROR;
(void) call_count;
CFSTORE_LOG("INITIALIZING: caps.asynchronous_ops=%lu\n", cfstore_driver.GetCapabilities().asynchronous_ops);
ret = cfstore_test_startup();
CFSTORE_TEST_UTEST_MESSAGE(cfstore_create_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to perform test startup (ret=%d).\n", __func__, (int) ret);
TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_create_utest_msg_g);
return CaseNext;
}
@ -368,7 +366,8 @@ static control_t cfstore_create_test_01_end(const size_t call_count)
TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_create_utest_msg_g);
node++;
}
CFSTORE_LOG("KV successfully increased in size and other KVs remained unchanged.%s", "\n");
/* revert CFSTORE_LOG for more trace */
CFSTORE_DBGLOG("KV successfully increased in size and other KVs remained unchanged.%s", "\n");
/* Shrink the KV from KV MID_ENTRY_02 to MID_ENTRY_03 */
ret = cfstore_create_test_KV_change(&cfstore_create_test_01_data[1], &cfstore_create_test_01_data[2]);
CFSTORE_TEST_UTEST_MESSAGE(cfstore_create_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Failed to decrease size of KV (ret=%" PRId32 ").\n", __func__, ret);
@ -383,7 +382,8 @@ static control_t cfstore_create_test_01_end(const size_t call_count)
TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_create_utest_msg_g);
node++;
}
CFSTORE_LOG("KV successfully decreased in size and other KVs remained unchanged.%s", "\n");
/* revert CFSTORE_LOG for more trace */
CFSTORE_DBGLOG("KV successfully decreased in size and other KVs remained unchanged.%s", "\n");
/* Delete the KV */
ret = cfstore_test_delete(cfstore_create_test_01_data[2].key_name);
@ -486,7 +486,8 @@ static control_t cfstore_create_test_03_end(const size_t call_count)
ret = cfstore_create_test_02_core(call_count);
CFSTORE_TEST_UTEST_MESSAGE(cfstore_create_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: something went wrong (ret=%" PRId32 ").\n", __func__, ret);
TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_create_utest_msg_g);
CFSTORE_LOG("Successfully completed create/destroy loop %" PRId32 ".\n", i);
/* revert CFSTORE_LOG for more trace */
CFSTORE_DBGLOG("Successfully completed create/destroy loop %" PRId32 ".\n", i);
}
CFSTORE_TEST_UTEST_MESSAGE(cfstore_create_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: Uninitialize() call failed.\n", __func__);
TEST_ASSERT_MESSAGE(drv->Uninitialize() >= ARM_DRIVER_OK, cfstore_create_utest_msg_g);
@ -531,10 +532,11 @@ static control_t cfstore_create_test_04_end(const size_t call_count)
bytes_stored += kv_value_min_len/8 * (i+1); /* kv value blob */
bytes_stored += 8; /* kv overhead */
if(ret == ARM_CFSTORE_DRIVER_ERROR_OUT_OF_MEMORY){
CFSTORE_LOG("Out of memory on %" PRId32 "-th KV, trying to allocate memory totalling %" PRIu32 ".\n", i, bytes_stored);
CFSTORE_ERRLOG("Out of memory on %" PRId32 "-th KV, trying to allocate memory totalling %" PRIu32 ".\n", i, bytes_stored);
break;
}
CFSTORE_LOG("Successfully stored %" PRId32 "-th KV bytes, totalling %" PRIu32 ".\n", i, bytes_stored);
/* revert CFSTORE_LOG for more trace */
CFSTORE_DBGLOG("Successfully stored %" PRId32 "-th KV bytes, totalling %" PRIu32 ".\n", i, bytes_stored);
}
ret = cfstore_test_delete_all();
CFSTORE_TEST_UTEST_MESSAGE(cfstore_create_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to delete_all() attributes to clean up after test (ret=%" PRId32 ").\n", __func__, ret);
@ -585,10 +587,11 @@ static control_t cfstore_create_test_05_end(const size_t call_count)
bytes_stored += kv_value_min_len/64 * (i+1); /* kv value blob */
bytes_stored += 8; /* kv overhead */
if(ret == ARM_CFSTORE_DRIVER_ERROR_OUT_OF_MEMORY){
CFSTORE_LOG("Out of memory on %" PRId32 "-th KV, trying to allocate memory totalling %" PRIu32 ".\n", i, bytes_stored);
CFSTORE_ERRLOG("Out of memory on %" PRId32 "-th KV, trying to allocate memory totalling %" PRIu32 ".\n", i, bytes_stored);
break;
}
CFSTORE_LOG("Successfully stored %" PRId32 "-th KV bytes, totalling %" PRIu32 ".\n", i, bytes_stored);
/* revert CFSTORE_LOG for more trace */
CFSTORE_DBGLOG("Successfully stored %" PRId32 "-th KV bytes, totalling %" PRIu32 ".\n", i, bytes_stored);
}
ret = cfstore_test_delete_all();
CFSTORE_TEST_UTEST_MESSAGE(cfstore_create_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to delete_all() attributes to clean up after test.\n", __func__);

View File

@ -55,15 +55,12 @@
#if defined __MBED__ && ! defined TOOLCHAIN_GCC_ARM
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "Driver_Common.h"
#include "cfstore_debug.h"
#include "cfstore_test.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -112,14 +109,14 @@ int main()
#else
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#ifndef YOTTA_CONFIGURATION_STORE_EXAMPLE1_VERSION_STRING
/* when built as Configuration-Store example, include greentea support otherwise omit */
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
#else // YOTTA_CONFIGURATION_STORE_EXAMPLE1_VERSION_STRING
// map utest types for building as stand alone example
#define control_t void
@ -127,7 +124,14 @@ int main()
#endif // YOTTA_CONFIGURATION_STORE_EXAMPLE1_VERSION_STRING
#include "cfstore_config.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#ifdef CFSTORE_CONFIG_BACKEND_FLASH_ENABLED
#include "flash_journal_strategy_sequential.h"
#include "flash_journal.h"
#include "Driver_Common.h"
#endif /* CFSTORE_CONFIG_BACKEND_FLASH_ENABLED */
#ifdef YOTTA_CFG_CONFIG_UVISOR
#include "uvisor-lib/uvisor-lib.h"
#endif /* YOTTA_CFG_CONFIG_UVISOR */
@ -136,8 +140,6 @@ int main()
#include <stdlib.h>
#include <string.h>
#ifndef YOTTA_CONFIGURATION_STORE_EXAMPLE1_VERSION_STRING
using namespace utest::v1;
#endif
@ -254,6 +256,31 @@ ARM_CFSTORE_DRIVER *cfstore_drv = &cfstore_driver;
static void cfstore_ex_fms_update(cfstore_example1_ctx_t* ctx);
/* @brief test startup code to reset flash
*/
int32_t cfstore_test_startup(void)
{
ARM_CFSTORE_CAPABILITIES caps = cfstore_driver.GetCapabilities();
CFSTORE_EX1_LOG("INITIALIZING: caps.asynchronous_ops=%d\n", (int) caps.asynchronous_ops);
#ifdef CFSTORE_CONFIG_BACKEND_FLASH_ENABLED
int32_t ret = ARM_DRIVER_ERROR;
FlashJournal_t jrnl;
extern ARM_DRIVER_STORAGE ARM_Driver_Storage_(0);
const ARM_DRIVER_STORAGE *drv = &ARM_Driver_Storage_(0);
ret = FlashJournal_initialize(&jrnl, drv, &FLASH_JOURNAL_STRATEGY_SEQUENTIAL, NULL);
CFSTORE_EX1_TEST_ASSERT_MSG(ret >= JOURNAL_STATUS_OK, "%s:Error: FlashJournal_initialize() failed (ret=%d)\r\n", __func__, (int) ret);
ret = FlashJournal_reset(&jrnl);
CFSTORE_EX1_TEST_ASSERT_MSG(ret >= JOURNAL_STATUS_OK, "%s:Error: FlashJournal_reset() failed (ret=%d)\r\n", __func__, (int) ret);
#endif /* CFSTORE_CONFIG_BACKEND_FLASH_ENABLED */
return ARM_DRIVER_OK;
}
static void cfstore_ex_callback(int32_t status, ARM_CFSTORE_OPCODE cmd_code, void *client_context, ARM_CFSTORE_HANDLE handle)
{
(void) handle;
@ -768,6 +795,7 @@ static void cfstore_ex_fms_update(cfstore_example1_ctx_t* ctx)
static control_t cfstore_example1_app_start(const size_t call_count)
{
int32_t ret = ARM_DRIVER_ERROR;
cfstore_example1_ctx_t* ctx = &cfstore_example1_ctx_g;
(void) call_count;
@ -780,7 +808,6 @@ static control_t cfstore_example1_app_start(const size_t call_count)
ctx->callback_status = ARM_DRIVER_ERROR;
ctx->state = CFSTORE_EX_STATE_INITIALIZING;
ctx->caps = cfstore_drv->GetCapabilities();
CFSTORE_EX1_LOG("%s:INITIALIZING: caps.asynchronous_ops=%lu\n", __func__, ctx->caps.asynchronous_ops);
cfstore_ex_fms_update(ctx);
/* main application worker loop */
@ -809,8 +836,11 @@ static control_t cfstore_example1_app_start(const size_t call_count)
/* report whether built/configured for flash sync or async mode */
static control_t cfstore_example1_test_00(const size_t call_count)
{
int32_t ret = ARM_DRIVER_ERROR;
(void) call_count;
CFSTORE_EX1_LOG("INITIALIZING: caps.asynchronous_ops=%lu\n", cfstore_driver.GetCapabilities().asynchronous_ops);
ret = cfstore_test_startup();
CFSTORE_EX1_TEST_ASSERT_MSG(ret >= ARM_DRIVER_OK, "%s:Error: failed to perform test startup (ret=%d).\n", __func__, (int) ret);
return CaseNext;
}

View File

@ -35,15 +35,12 @@
#if defined __MBED__ && ! defined TOOLCHAIN_GCC_ARM
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "Driver_Common.h"
#include "cfstore_debug.h"
#include "cfstore_test.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -93,15 +90,12 @@ int main()
#else
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "cfstore_test.h"
#include "cfstore_debug.h"
#include "Driver_Common.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -126,8 +120,12 @@ static char cfstore_example2_utest_msg_g[CFSTORE_UTEST_MSG_BUF_SIZE];
/* report whether built/configured for flash sync or async mode */
static control_t cfstore_example2_test_00(const size_t call_count)
{
int32_t ret = ARM_DRIVER_ERROR;
(void) call_count;
CFSTORE_LOG("INITIALIZING: caps.asynchronous_ops=%lu\n", cfstore_driver.GetCapabilities().asynchronous_ops);
ret = cfstore_test_startup();
CFSTORE_TEST_UTEST_MESSAGE(cfstore_example2_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to perform test startup (ret=%d).\n", __func__, (int) ret);
TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_example2_utest_msg_g);
return CaseNext;
}

View File

@ -50,15 +50,12 @@
#if defined __MBED__ && ! defined TOOLCHAIN_GCC_ARM
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "Driver_Common.h"
#include "cfstore_debug.h"
#include "cfstore_test.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -108,9 +105,7 @@ int main()
#else
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#ifndef YOTTA_CONFIGURATION_STORE_EXAMPLE3_VERSION_STRING
/* when built as Configuration-Store example, include greentea support otherwise omit */
#include "utest/utest.h"
@ -123,7 +118,8 @@ int main()
#endif // YOTTA_CONFIGURATION_STORE_EXAMPLE3_VERSION_STRING
#include "cfstore_config.h"
#include "configuration-store/configuration_store.h"
#include "cfstore_test.h"
#include "configuration_store.h"
#ifdef YOTTA_CFG_CONFIG_UVISOR
#include "uvisor-lib/uvisor-lib.h"
@ -336,8 +332,11 @@ static control_t cfstore_example3_app_start(const size_t call_count)
/* report whether built/configured for flash sync or async mode */
static control_t cfstore_example3_test_00(const size_t call_count)
{
int32_t ret = ARM_DRIVER_ERROR;
(void) call_count;
CFSTORE_EX1_LOG("INITIALIZING: caps.asynchronous_ops=%lu\n", cfstore_driver.GetCapabilities().asynchronous_ops);
ret = cfstore_test_startup();
CFSTORE_EX1_TEST_ASSERT_MSG(ret >= ARM_DRIVER_OK, "%s:Error: failed to perform test startup (ret=%d).\n", __func__, (int) ret);
return CaseNext;
}

View File

@ -20,15 +20,12 @@
#if defined __MBED__ && ! defined TOOLCHAIN_GCC_ARM
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "Driver_Common.h"
#include "cfstore_debug.h"
#include "cfstore_test.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -78,15 +75,12 @@ int main()
#else
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "cfstore_test.h"
#include "cfstore_debug.h"
#include "Driver_Common.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -136,6 +130,7 @@ static const PvKeyValue_t testDataKeyValue[] = {
static control_t cfstore_example4_test_00(const size_t call_count)
{
int32_t ret = ARM_DRIVER_ERROR;
ARM_CFSTORE_CAPABILITIES caps;;
(void) call_count;
@ -149,6 +144,9 @@ static control_t cfstore_example4_test_00(const size_t call_count)
CFSTORE_LOG("*** Skipping test as binary built for flash journal async mode, and this test is sync-only%s", "\n");
return CaseNext;
}
ret = cfstore_test_startup();
CFSTORE_TEST_UTEST_MESSAGE(cfstore_example4_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to perform test startup (ret=%d).\n", __func__, (int) ret);
TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_example4_utest_msg_g);
return CaseNext;
}
@ -246,9 +244,9 @@ Case cases[] = {
/* 1 2 3 4 5 6 7 */
/* 1234567890123456789012345678901234567890123456789012345678901234567890 */
Case("EXAMPLE4_test_00", cfstore_example4_test_00),
#if defined YOTTA_CFG_CONFIG_HARDWARE_MTD_ASYNC_OPS && YOTTA_CFG_CONFIG_HARDWARE_MTD_ASYNC_OPS == 0
#if defined STORAGE_DRIVER_CONFIG_HARDWARE_MTD_ASYNC_OPS && STORAGE_DRIVER_CONFIG_HARDWARE_MTD_ASYNC_OPS==0
Case("EXAMPLE4_test_01", cfstore_example4_test_01),
#endif // YOTTA_CFG_CONFIG_HARDWARE_MTD_ASYNC_OPS
#endif // STORAGE_DRIVER_CONFIG_HARDWARE_MTD_ASYNC_OPS
};

View File

@ -49,15 +49,12 @@
#if defined __MBED__ && ! defined TOOLCHAIN_GCC_ARM
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "Driver_Common.h"
#include "cfstore_debug.h"
#include "cfstore_test.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -106,10 +103,7 @@ int main()
#else
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "Driver_Common.h"
#ifndef YOTTA_CONFIGURATION_STORE_EXAMPLE5_VERSION_STRING
@ -124,7 +118,13 @@ int main()
#endif // YOTTA_CONFIGURATION_STORE_EXAMPLE5_VERSION_STRING
#include "cfstore_config.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#ifdef CFSTORE_CONFIG_BACKEND_FLASH_ENABLED
#include "flash_journal_strategy_sequential.h"
#include "flash_journal.h"
#include "Driver_Common.h"
#endif /* CFSTORE_CONFIG_BACKEND_FLASH_ENABLED */
#include <stdio.h>
#include <stdlib.h>
@ -203,6 +203,30 @@ extern ARM_CFSTORE_DRIVER cfstore_driver;
ARM_CFSTORE_DRIVER *cfstore_drv = &cfstore_driver;
/* @brief test startup code to reset flash
*/
int32_t cfstore_test_startup(void)
{
ARM_CFSTORE_CAPABILITIES caps = cfstore_driver.GetCapabilities();
CFSTORE_EX5_LOG("INITIALIZING: caps.asynchronous_ops=%d\n", (int) caps.asynchronous_ops);
#ifdef CFSTORE_CONFIG_BACKEND_FLASH_ENABLED
int32_t ret = ARM_DRIVER_ERROR;
FlashJournal_t jrnl;
extern ARM_DRIVER_STORAGE ARM_Driver_Storage_(0);
const ARM_DRIVER_STORAGE *drv = &ARM_Driver_Storage_(0);
ret = FlashJournal_initialize(&jrnl, drv, &FLASH_JOURNAL_STRATEGY_SEQUENTIAL, NULL);
CFSTORE_EX5_TEST_ASSERT_MSG(ret >= JOURNAL_STATUS_OK, "%s:Error: FlashJournal_initialize() failed (ret=%d)\r\n", __func__, (int) ret);
ret = FlashJournal_reset(&jrnl);
CFSTORE_EX5_TEST_ASSERT_MSG(ret >= JOURNAL_STATUS_OK, "%s:Error: FlashJournal_reset() failed (ret=%d)\r\n", __func__, (int) ret);
#endif /* CFSTORE_CONFIG_BACKEND_FLASH_ENABLED */
return ARM_DRIVER_OK;
}
static void cfstore_ex5_test_01(cfstore_EXAMPLE5_ctx_t* ctx)
{
int32_t ret;
@ -234,13 +258,11 @@ static void cfstore_ex5_test_01(cfstore_EXAMPLE5_ctx_t* ctx)
ret = cfstore_drv->Flush();
CFSTORE_EX5_TEST_ASSERT_MSG(ret >= ARM_DRIVER_OK, "%s:Error: Flush() failed (ret=%ld)\r\n", __func__, ret);
/* commenting out the 2nd flush() means the test works.*/
//CFSTORE_EX5_LOG("FLUSHING2%s", "\r\n");
//ret = cfstore_drv->Flush();
//CFSTORE_EX5_TEST_ASSERT_MSG(ret >= ARM_DRIVER_OK, "%s:Error: Flush() failed (ret=%ld)\r\n", __func__, ret);
/* todo: re-instate when Flush() really persists to flash on mbedOSv3+++.
* currently in the supported sram version Uninitialize() clears the sram
#ifdef CFSTORE_CONFIG_BACKEND_FLASH_ENABLED
/* CFSTORE_CONFIG_BACKEND_FLASH_ENABLED => flash storage support present.
* if this was not the case (i.e. cfstore running SRAM in memory mode) then
* we dont compile in the Uninitialize()/Initialize() as the
* Uninitialize() clears the sram */
CFSTORE_EX5_LOG("UNINITIALIZING1%s", "\r\n");
ret = cfstore_drv->Uninitialize();
CFSTORE_EX5_TEST_ASSERT_MSG(ret >= ARM_DRIVER_OK, "%s:Error: Uninitialize() should return ret >= 0 for synch mode(ret=%ld)\r\n", __func__, ret);
@ -248,7 +270,7 @@ static void cfstore_ex5_test_01(cfstore_EXAMPLE5_ctx_t* ctx)
CFSTORE_EX5_LOG("INITIALIZING2%s", "\r\n");
ret = cfstore_drv->Initialize(NULL, NULL);
CFSTORE_EX5_TEST_ASSERT_MSG(ret >= ARM_DRIVER_OK, "%s:Error: Initialize() should return ret >= 0 for async/synch modes(ret=%ld)\r\n", __func__, ret);
*/
#endif
CFSTORE_EX5_LOG("OPENING%s", "\r\n");
memset(&ctx->flags, 0, sizeof(ctx->flags));
@ -291,6 +313,7 @@ static void cfstore_ex5_test_01(cfstore_EXAMPLE5_ctx_t* ctx)
static control_t cfstore_EXAMPLE5_app_start(const size_t call_count)
{
int32_t ret = ARM_DRIVER_ERROR;
cfstore_EXAMPLE5_ctx_t* ctx = &cfstore_EXAMPLE5_ctx_g;
(void) call_count;
@ -307,6 +330,8 @@ static control_t cfstore_EXAMPLE5_app_start(const size_t call_count)
CFSTORE_EX5_LOG("*** Skipping test as binary built for flash journal async mode, and this test is sync-only%s", "\n");
return CaseNext;
}
ret = cfstore_test_startup();
CFSTORE_EX5_TEST_ASSERT_MSG(ret >= ARM_DRIVER_OK, "%s:Error: failed to perform test startup (ret=%d).\n", __func__, (int) ret);
cfstore_ex5_test_01(ctx);
return CaseNext;
}

View File

@ -20,15 +20,12 @@
#if defined __MBED__ && ! defined TOOLCHAIN_GCC_ARM
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "Driver_Common.h"
#include "cfstore_debug.h"
#include "cfstore_test.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -78,15 +75,12 @@ int main()
#else
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "cfstore_test.h"
#include "cfstore_debug.h"
#include "Driver_Common.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -115,8 +109,12 @@ UVISOR_BOX_CONFIG(cfstore_find_box1, UVISOR_BOX_STACK_SIZE);
/* report whether built/configured for flash sync or async mode */
static control_t cfstore_find_test_00(const size_t call_count)
{
int32_t ret = ARM_DRIVER_ERROR;
(void) call_count;
CFSTORE_LOG("INITIALIZING: caps.asynchronous_ops=%lu\n", cfstore_driver.GetCapabilities().asynchronous_ops);
ret = cfstore_test_startup();
CFSTORE_TEST_UTEST_MESSAGE(cfstore_find_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to perform test startup (ret=%d).\n", __func__, (int) ret);
TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_find_utest_msg_g);
return CaseNext;
}

View File

@ -20,15 +20,12 @@
#if defined __MBED__ && ! defined TOOLCHAIN_GCC_ARM
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "Driver_Common.h"
#include "cfstore_debug.h"
#include "cfstore_test.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -78,15 +75,12 @@ int main()
#else
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "cfstore_test.h"
#include "cfstore_debug.h"
#include "Driver_Common.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -110,13 +104,8 @@ UVISOR_BOX_NAMESPACE("com.arm.mbed.cfstore.test.find2.box1");
UVISOR_BOX_CONFIG(cfstore_find2_box1, UVISOR_BOX_STACK_SIZE);
#endif /* YOTTA_CFG_CFSTORE_UVISOR */
extern ARM_CFSTORE_DRIVER cfstore_driver;
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#define CFSTORE_FIND_MBED_HOSTTEST_TIMEOUT 60
#endif
void cfstore_find2_callback(int32_t status, ARM_CFSTORE_OPCODE cmd_code, void *client_context, ARM_CFSTORE_HANDLE handle)
{
(void) status;
@ -129,8 +118,12 @@ void cfstore_find2_callback(int32_t status, ARM_CFSTORE_OPCODE cmd_code, void *c
/* report whether built/configured for flash sync or async mode */
static control_t cfstore_find2_test_00(const size_t call_count)
{
int32_t ret = ARM_DRIVER_ERROR;
(void) call_count;
CFSTORE_LOG("INITIALIZING: caps.asynchronous_ops=%lu\n", cfstore_driver.GetCapabilities().asynchronous_ops);
ret = cfstore_test_startup();
CFSTORE_TEST_UTEST_MESSAGE(cfstore_find2_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to perform test startup (ret=%d).\n", __func__, (int) ret);
TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_find2_utest_msg_g);
return CaseNext;
}

View File

@ -20,23 +20,27 @@
#if defined __MBED__ && ! defined TOOLCHAIN_GCC_ARM
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "Driver_Common.h"
#include "cfstore_debug.h"
#include "cfstore_test.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
#ifdef YOTTA_CFG_CFSTORE_UVISOR
#include "uvisor-lib/uvisor-lib.h"
#include "cfstore_uvisor.h"
#endif /* YOTTA_CFG_CFSTORE_UVISOR */
#ifdef CFSTORE_CONFIG_BACKEND_FLASH_ENABLED
#include "flash_journal_strategy_sequential.h"
#include "flash_journal.h"
#include "Driver_Common.h"
#endif /* CFSTORE_CONFIG_BACKEND_FLASH_ENABLED */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@ -77,18 +81,21 @@ int main()
#else
#if defined CFSTORE_CONFIG_BACKEND_FLASH_ENABLED && CFSTORE_CONFIG_BACKEND_FLASH_ENABLED == 1
#include <flash-journal-strategy-sequential/flash_journal_strategy_sequential.h>
#include <flash-journal/flash_journal.h>
#endif /* CFSTORE_CONFIG_BACKEND_FLASH_ENABLED */
#include "cfstore_config.h"
#include "cfstore_test.h"
#include "cfstore_debug.h"
#include "Driver_Common.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
#ifdef CFSTORE_CONFIG_BACKEND_FLASH_ENABLED
#include "flash_journal_strategy_sequential.h"
#include "flash_journal.h"
#include "Driver_Common.h"
#endif /* CFSTORE_CONFIG_BACKEND_FLASH_ENABLED */
#ifdef YOTTA_CFG_CFSTORE_UVISOR
#include "uvisor-lib/uvisor-lib.h"
#endif /* YOTTA_CFG_CFSTORE_UVISOR */
@ -133,7 +140,7 @@ UVISOR_BOX_CONFIG(cfstore_flash_box1, UVISOR_BOX_STACK_SIZE);
* Globals
*/
#if defined CFSTORE_CONFIG_BACKEND_FLASH_ENABLED && CFSTORE_CONFIG_BACKEND_FLASH_ENABLED == 1
#ifdef CFSTORE_CONFIG_BACKEND_FLASH_ENABLED
char cfstore_flash_utest_msg_g[CFSTORE_FLASH_UTEST_MSG_BUF_SIZE];
uint16_t cfstore_flash_mtd_async_ops_g = 0;
extern ARM_DRIVER_STORAGE ARM_Driver_Storage_(0);
@ -703,9 +710,14 @@ static control_t cfstore_flash_journal_async_test_01(void)
/* report whether built/configured for flash sync or async mode */
static control_t cfstore_flash_test_00(const size_t call_count)
{
int32_t ret = ARM_DRIVER_ERROR;
(void) call_count;
CFSTORE_LOG("INITIALIZING: caps.asynchronous_ops=%lu\n", cfstore_driver.GetCapabilities().asynchronous_ops);
#ifdef YOTTA_CFG_CFSTORE_BACKEND_SRAM
ret = cfstore_test_startup();
CFSTORE_TEST_UTEST_MESSAGE(cfstore_flash_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to perform test startup (ret=%d).\n", __func__, (int) ret);
TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flash_utest_msg_g);
#ifndef CFSTORE_CONFIG_BACKEND_FLASH_ENABLED
CFSTORE_LOG("INITIALIZING: BACKEND=SRAM. Skipping flash test%s", "\n");
#endif
return CaseNext;
@ -714,7 +726,7 @@ static control_t cfstore_flash_test_00(const size_t call_count)
/* Specify all your test cases here */
Case cases[] = {
Case("flash_journal_async_test_00", cfstore_flash_test_00),
#if defined CFSTORE_CONFIG_BACKEND_FLASH_ENABLED && CFSTORE_CONFIG_BACKEND_FLASH_ENABLED == 1
#ifdef CFSTORE_CONFIG_BACKEND_FLASH_ENABLED
Case("flash_journal_async_test_01", cfstore_flash_journal_async_test_01),
#endif
};

View File

@ -20,15 +20,12 @@
#if defined __MBED__ && ! defined TOOLCHAIN_GCC_ARM
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "Driver_Common.h"
#include "cfstore_debug.h"
#include "cfstore_test.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -78,15 +75,12 @@ int main()
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "cfstore_test.h"
#include "cfstore_debug.h"
#include "Driver_Common.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -595,8 +589,12 @@ static control_t cfstore_flush_test_02_k64f(void)
/* report whether built/configured for flash sync or async mode */
static control_t cfstore_flush_test_00(const size_t call_count)
{
int32_t ret = ARM_DRIVER_ERROR;
(void) call_count;
CFSTORE_LOG("INITIALIZING: caps.asynchronous_ops=%lu\n", cfstore_driver.GetCapabilities().asynchronous_ops);
ret = cfstore_test_startup();
CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to perform test startup (ret=%d).\n", __func__, (int) ret);
TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush_utest_msg_g);
return CaseNext;
}

View File

@ -20,15 +20,12 @@
#if defined __MBED__ && ! defined TOOLCHAIN_GCC_ARM
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "Driver_Common.h"
#include "cfstore_debug.h"
#include "cfstore_test.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -78,14 +75,11 @@ int main()
#else
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "utest/utest.h"
#include "unity/unity.h"
#include "cfstore_config.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "greentea-client/test_env.h"
#include "cfstore_test.h"
#include "cfstore_debug.h"
@ -168,8 +162,12 @@ static void cfstore_flush_ctx_init(cfstore_flush_ctx_t* ctx)
/* report whether built/configured for flash sync or async mode */
static control_t cfstore_flush2_test_00(const size_t call_count)
{
int32_t ret = ARM_DRIVER_ERROR;
(void) call_count;
CFSTORE_LOG("INITIALIZING: caps.asynchronous_ops=%lu\n", cfstore_driver.GetCapabilities().asynchronous_ops);
ret = cfstore_test_startup();
CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to perform test startup (ret=%d).\n", __func__, (int) ret);
TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush_utest_msg_g);
return CaseNext;
}

View File

@ -20,15 +20,12 @@
#if defined __MBED__ && ! defined TOOLCHAIN_GCC_ARM
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "Driver_Common.h"
#include "cfstore_debug.h"
#include "cfstore_test.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -77,15 +74,12 @@ int main()
#else
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "Driver_Common.h"
#include "cfstore_config.h"
#include "cfstore_test.h"
#include "cfstore_debug.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -115,8 +109,12 @@ ARM_CFSTORE_DRIVER *cfstore_drv = &cfstore_driver;
/* report whether built/configured for flash sync or async mode */
static control_t cfstore_init_test_00(const size_t call_count)
{
int32_t ret = ARM_DRIVER_ERROR;
(void) call_count;
CFSTORE_LOG("INITIALIZING: caps.asynchronous_ops=%lu\n", cfstore_driver.GetCapabilities().asynchronous_ops);
ret = cfstore_test_startup();
CFSTORE_TEST_UTEST_MESSAGE(cfstore_init_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to perform test startup (ret=%d).\n", __func__, (int) ret);
TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_init_utest_msg_g);
return CaseNext;
}

View File

@ -21,15 +21,12 @@
#if defined __MBED__ && ! defined TOOLCHAIN_GCC_ARM
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "Driver_Common.h"
#include "cfstore_debug.h"
#include "cfstore_test.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -79,16 +76,13 @@ int main()
#else
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "cfstore_test.h"
#include "cfstore_debug.h"
#include "Driver_Common.h"
#include "cfstore_config.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -120,8 +114,12 @@ UVISOR_SET_MODE_ACL(UVISOR_ENABLED, cfstore_acl_uvisor_box_misc_g);
/* report whether built/configured for flash sync or async mode */
static control_t cfstore_misc_test_00(const size_t call_count)
{
int32_t ret = ARM_DRIVER_ERROR;
(void) call_count;
CFSTORE_LOG("INITIALIZING: caps.asynchronous_ops=%lu\n", cfstore_driver.GetCapabilities().asynchronous_ops);
ret = cfstore_test_startup();
CFSTORE_TEST_UTEST_MESSAGE(cfstore_misc_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to perform test startup (ret=%d).\n", __func__, (int) ret);
TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_misc_utest_msg_g);
return CaseNext;
}
@ -223,10 +221,8 @@ static control_t cfstore_misc_test_02(const size_t call_count)
(void) call_count;
memset(&caps, 0, sizeof(caps));
caps = drv->GetCapabilities();
//CFSTORE_TEST_UTEST_MESSAGE(cfstore_misc_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Capabilities() failed to return asynchronous_ops == false.\r\n", __func__);
//TEST_ASSERT_MESSAGE(caps.asynchronous_ops == false, cfstore_misc_utest_msg_g);
#ifdef YOTTA_CFG_CONFIG_HARDWARE_MTD_ASYNC_OPS
#ifdef STORAGE_DRIVER_CONFIG_HARDWARE_MTD_ASYNC_OPS
/* sync mode */
printf("%s:sync mode: caps.asynchronous_ops =%" PRIu32 "\n", __func__, caps.asynchronous_ops);
CFSTORE_TEST_UTEST_MESSAGE(cfstore_misc_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: GetCapabilities() reported caps.asynchronous_ops != false but system built for sync operation.\r\n", __func__);

View File

@ -21,15 +21,12 @@
#if defined __MBED__ && ! defined TOOLCHAIN_GCC_ARM
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "Driver_Common.h"
#include "cfstore_debug.h"
#include "cfstore_test.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -78,15 +75,12 @@ int main()
#else
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "cfstore_test.h"
#include "cfstore_debug.h"
#include "Driver_Common.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -135,8 +129,12 @@ static cfstore_kv_data_t cfstore_open_test_01_kv_data[] = {
/* report whether built/configured for flash sync or async mode */
static control_t cfstore_open_test_00(const size_t call_count)
{
int32_t ret = ARM_DRIVER_ERROR;
(void) call_count;
CFSTORE_LOG("INITIALIZING: caps.asynchronous_ops=%lu\n", cfstore_driver.GetCapabilities().asynchronous_ops);
ret = cfstore_test_startup();
CFSTORE_TEST_UTEST_MESSAGE(cfstore_open_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to perform test startup (ret=%d).\n", __func__, (int) ret);
TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_open_utest_msg_g);
return CaseNext;
}
@ -535,7 +533,9 @@ static control_t cfstore_open_test_05_end(const size_t call_count)
{
CFSTORE_TEST_UTEST_MESSAGE(cfstore_open_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to create KV in store when kv_name contains valid characters (code=%" PRId32 ", ret=%" PRId32 ").\n", __func__, j, ret);
TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_open_utest_msg_g);
CFSTORE_LOG("Successfully created a KV with valid keyname containing ascii character code %" PRIu32 " (%c) at the %s of the keyname.\n", j, (int) j, pos_str);
/* revert CFSTORE_LOG for more trace */
CFSTORE_DBGLOG("Successfully created a KV with valid keyname containing ascii character code %" PRIu32 " (%c) at the %s of the keyname.\n", j, (int) j, pos_str);
CFSTORE_LOG("%c", '.');
ret = cfstore_test_delete(kv_name);
CFSTORE_TEST_UTEST_MESSAGE(cfstore_open_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to delete KV previously created (code=%" PRId32 ", ret=%" PRId32 ").\n", __func__, j, ret);
@ -545,13 +545,16 @@ static control_t cfstore_open_test_05_end(const size_t call_count)
{ /*node->f_allowed == false => not allowed to create kv name with ascii code */
CFSTORE_TEST_UTEST_MESSAGE(cfstore_open_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: created KV in store when kv_name contains an invalid character (code=%" PRId32 ", ret=%" PRId32 ").\n", __func__, j, ret);
TEST_ASSERT_MESSAGE(ret < ARM_DRIVER_OK, cfstore_open_utest_msg_g);
CFSTORE_LOG("Successfully failed to create a KV with an invalid keyname containing ascii character code %" PRId32 " at the %s of the keyname.\n", j, pos_str);
/* revert CFSTORE_LOG for more trace */
CFSTORE_DBGLOG("Successfully failed to create a KV with an invalid keyname containing ascii character code %" PRId32 " at the %s of the keyname.\n", j, pos_str);
CFSTORE_LOG("%c", '.');
}
}
}
node++;
}
CFSTORE_LOG("%c", '\n');
CFSTORE_TEST_UTEST_MESSAGE(cfstore_open_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: Uninitialize() call failed.\n", __func__);
TEST_ASSERT_MESSAGE(drv->Uninitialize() >= ARM_DRIVER_OK, cfstore_open_utest_msg_g);
return CaseNext;

View File

@ -20,15 +20,12 @@
#if defined __MBED__ && ! defined TOOLCHAIN_GCC_ARM
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "Driver_Common.h"
#include "cfstore_debug.h"
#include "cfstore_test.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -78,15 +75,12 @@ int main()
#else
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "cfstore_test.h"
#include "cfstore_debug.h"
#include "Driver_Common.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -119,8 +113,12 @@ static cfstore_kv_data_t cfstore_read_test_01_kv_data[] = {
/* report whether built/configured for flash sync or async mode */
static control_t cfstore_read_test_00(const size_t call_count)
{
int32_t ret = ARM_DRIVER_ERROR;
(void) call_count;
CFSTORE_LOG("INITIALIZING: caps.asynchronous_ops=%lu\n", cfstore_driver.GetCapabilities().asynchronous_ops);
ret = cfstore_test_startup();
CFSTORE_TEST_UTEST_MESSAGE(cfstore_read_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to perform test startup (ret=%d).\n", __func__, (int) ret);
TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_read_utest_msg_g);
return CaseNext;
}

View File

@ -20,15 +20,12 @@
#if defined __MBED__ && ! defined TOOLCHAIN_GCC_ARM
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "Driver_Common.h"
#include "cfstore_debug.h"
#include "cfstore_test.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -78,15 +75,12 @@ int main()
#else
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#include "mbed-drivers/mbed.h"
#endif
#include "cfstore_config.h"
#include "cfstore_test.h"
#include "cfstore_debug.h"
#include "Driver_Common.h"
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
#include "utest/utest.h"
#include "unity/unity.h"
#include "greentea-client/test_env.h"
@ -125,8 +119,12 @@ static cfstore_kv_data_t cfstore_write_test_01_kv_data[] = {
/* report whether built/configured for flash sync or async mode */
static control_t cfstore_write_test_00(const size_t call_count)
{
int32_t ret = ARM_DRIVER_ERROR;
(void) call_count;
CFSTORE_LOG("INITIALIZING: caps.asynchronous_ops=%lu\n", cfstore_driver.GetCapabilities().asynchronous_ops);
ret = cfstore_test_startup();
CFSTORE_TEST_UTEST_MESSAGE(cfstore_write_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to perform test startup (ret=%d).\n", __func__, (int) ret);
TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_write_utest_msg_g);
return CaseNext;
}

View File

@ -102,16 +102,11 @@ typedef struct _ARM_CFSTORE_STATUS {
*
* CFSTORE_HANDLE_BUFSIZE
* size of the buffer owned and supplied by client to CFSTORE to hold internal
* data structures, referenced by the key handle. Note this can change on
* different platforms depending on the sizeof types.
*
* data structures, referenced by the key handle.
*/
#define CFSTORE_KEY_NAME_MAX_LENGTH 220
#define CFSTORE_VALUE_SIZE_MAX (1<<26)
#ifdef TARGET_LIKE_FRDM_K64F_GCC
#define CFSTORE_HANDLE_BUFSIZE 24
#endif
#ifdef TARGET_LIKE_X86_LINUX_NATIVE
#define CFSTORE_HANDLE_BUFSIZE 40

View File

@ -0,0 +1,10 @@
{
"name": "configuration-store",
"config": {
"storage_disable": {
"help": "Configuration parameter to disable flash storage if present. Default = 0, implying that by default flash storage is used if present.",
"macro_name": "CFSTORE_STORAGE_DISABLE",
"value": 0
}
}
}

View File

@ -10,7 +10,6 @@
/*
* CFSTORE_CONFIG_BACKEND_FLASH_ENABLED
* = 1 >1 build with the flash
* CFSTORE_CONFIG_BACKEND_SRAM_ENABLED
* CFSTORE_CONFIG_BACKEND_UVISOR_ENABLED
* CFSTORE_CONFIG_MBED_OS_VERSION
* 3 => mbedosV3
@ -18,8 +17,6 @@
*/
/* default values */
#define CFSTORE_CONFIG_BACKEND_FLASH_ENABLED 1
#define CFSTORE_CONFIG_BACKEND_SRAM_ENABLED 0
#define CFSTORE_CONFIG_BACKEND_UVISOR_ENABLED 0
#define CFSTORE_CONFIG_MBED_OS_VERSION 3
@ -38,23 +35,25 @@
#ifdef __MBED__
#undef CFSTORE_CONFIG_MBED_OS_VERSION
#define CFSTORE_CONFIG_MBED_OS_VERSION 4
/* currently build only sram version (port flash-journal later) */
#define YOTTA_CFG_CFSTORE_BACKEND_SRAM
/* define the symbol that yotta would define for the k64f target */
#define TARGET_LIKE_FRDM_K64F_GCC
/* at present time building for sram so set yotta symbol for sync mode i.e. async_ops = 0*/
#define YOTTA_CFG_CONFIG_HARDWARE_MTD_ASYNC_OPS 0
#endif /* __MBED__ */
#if defined YOTTA_CFG_CFSTORE_BACKEND_SRAM
#undef CFSTORE_CONFIG_BACKEND_FLASH_ENABLED
#define CFSTORE_CONFIG_BACKEND_FLASH_ENABLED 0
#undef CFSTORE_CONFIG_BACKEND_SRAM_ENABLED
#define CFSTORE_CONFIG_BACKEND_SRAM_ENABLED 1
#endif /* YOTTA_CFG_CFSTORE_BACKEND_SRAM */
/* DEVICE_STORAGE
* defined by the mbed configuration system if a target supports flash storage
* back-end. See targets.json for target flash support.
* - If a target supports storage then by default cfstore will persist KVs to
* storage.
* - If a target does not support storage then (by default) cfstore will store KVs
* in SRAM only (i.e. operate in SRAM in-memory mode).
*
* CFSTORE_STORAGE_DISABLE
* Disable use of storage support (if present)
*/
#if defined DEVICE_STORAGE && CFSTORE_STORAGE_DISABLE==0
#define CFSTORE_CONFIG_BACKEND_FLASH_ENABLED
#endif
#endif /*__CFSTORE_CONFIG_H*/

View File

@ -109,7 +109,7 @@ do
#define CFSTORE_ASSERT(_x) do { } while(0)
#define CFSTORE_INLINE inline
#define CFSTORE_DBGLOG(_fmt, ...) do { } while(0)
#define CFSTORE_ERRLOG(_fmt, ...) do { printf(_fmt, __VA_ARGS__); } while(0)
#define CFSTORE_ERRLOG(_fmt, ...) do { } while(0)
#define CFSTORE_FENTRYLOG(_fmt, ...) do { } while(0)
#define CFSTORE_TP(_tp, _fmt, ...) do { } while(0)
#endif /* CFSTORE_DEBUG */

View File

@ -33,16 +33,16 @@
#ifndef _NO_FNMATCH
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)fnmatch.c 8.2 (Berkeley) 4/16/94";
static char sccsid[] = "@(#)cfstore_fnmatch.c 8.2 (Berkeley) 4/16/94";
#endif /* LIBC_SCCS and not lint */
/* In order to support ARM toolchain, this have been removed from the original
* fnmatch.c from newlib.
* cfstore_fnmatch.c from newlib.
* #include <sys/cdefs.h>
*/
/*
* Function fnmatch() as specified in POSIX 1003.2-1992, section B.6.
* Function cfstore_fnmatch() as specified in POSIX 1003.2-1992, section B.6.
* Compares a filename or pathname to a pattern.
*/
@ -52,7 +52,7 @@ static char sccsid[] = "@(#)fnmatch.c 8.2 (Berkeley) 4/16/94";
#include <stdio.h>
#include <limits.h>
/* code copied from the original fnmatch.h */
/* code copied from the original cfstore_fnmatch.h */
#define FNM_NOESCAPE 0x01 /* Disable backslash escaping. */
#define FNM_PATHNAME 0x02 /* Slash must be matched by slash. */
@ -157,10 +157,7 @@ int __collate_range_cmp (c1, c2)
static int rangematch(const char *, char, int, char **);
int
fnmatch(pattern, string, flags)
const char *pattern, *string;
int flags;
int cfstore_fnmatch(const char *pattern, const char *string, int flags)
{
const char *stringstart;
char *newp;
@ -210,7 +207,7 @@ fnmatch(pattern, string, flags)
/* General case, use recursion. */
while ((test = *string) != EOS) {
if (!fnmatch(pattern, string, flags & ~FNM_PERIOD))
if (!cfstore_fnmatch(pattern, string, flags & ~FNM_PERIOD))
return (0);
if (test == '/' && flags & FNM_PATHNAME)
break;

View File

@ -17,10 +17,18 @@
*
* test support code implementation file.
*/
#include "cfstore_config.h"
#include "cfstore_debug.h"
#include "cfstore_test.h"
#include <configuration_store.h>
#include "configuration_store.h"
#ifdef CFSTORE_CONFIG_BACKEND_FLASH_ENABLED
#include "flash_journal_strategy_sequential.h"
#include "flash_journal.h"
#include "Driver_Common.h"
#endif /* CFSTORE_CONFIG_BACKEND_FLASH_ENABLED */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@ -105,6 +113,39 @@ const char* cfstore_test_opcode_str[] =
"CFSTORE_OPCODE_WRITE",
"CFSTORE_OPCODE_MAX"
};
/* @brief test startup code to reset flash
*/
int32_t cfstore_test_startup(void)
{
ARM_CFSTORE_CAPABILITIES caps = cfstore_driver.GetCapabilities();
CFSTORE_LOG("INITIALIZING: caps.asynchronous_ops=%d\n", (int) caps.asynchronous_ops);
#ifdef CFSTORE_CONFIG_BACKEND_FLASH_ENABLED
int32_t ret = ARM_DRIVER_ERROR;
FlashJournal_t jrnl;
extern ARM_DRIVER_STORAGE ARM_Driver_Storage_(0);
const ARM_DRIVER_STORAGE *drv = &ARM_Driver_Storage_(0);
ret = FlashJournal_initialize(&jrnl, drv, &FLASH_JOURNAL_STRATEGY_SEQUENTIAL, NULL);
if(ret < JOURNAL_STATUS_OK){
CFSTORE_ERRLOG("%s:Error: failed to initialize flash journaling layer (ret=%d)\n", __func__, (int) ret);
return ARM_DRIVER_ERROR;
}
ret = FlashJournal_reset(&jrnl);
if(ret < JOURNAL_STATUS_OK){
CFSTORE_ERRLOG("%s:Error: failed to reset flash journal (ret=%" PRId32 ")\n", __func__, ret);
return ARM_DRIVER_ERROR;
}
#endif /* CFSTORE_CONFIG_BACKEND_FLASH_ENABLED */
return ARM_DRIVER_OK;
}
/* @brief test utility function to check a node appears correctly in the cfstore
* @note this function expects cfstore to have been initialised with
* a call to ARM_CFSTORE_DRIVER::Initialize()
@ -421,7 +462,8 @@ int32_t cfstore_test_init_1(void)
drv->Close(hkey);
return ARM_DRIVER_ERROR;
}
CFSTORE_LOG("Created KV successfully (key_name=\"%s\", value=\"%s\")\r\n", key_name_buf, read_buf);
/* revert CFSTORE_LOG for more trace */
CFSTORE_DBGLOG("Created KV successfully (key_name=\"%s\", value=\"%s\")\r\n", key_name_buf, read_buf);
drv->Close(hkey);
node++;
}

View File

@ -24,7 +24,7 @@
extern "C" {
#endif
#include "configuration-store/configuration_store.h"
#include "configuration_store.h"
/* Defines */
#define CFSTORE_INIT_1_TABLE_HEAD { "a", ""}
@ -75,6 +75,7 @@ int32_t cfstore_test_init_1(void);
int32_t cfstore_test_kv_is_found(const char* key_name, bool* bfound);
int32_t cfstore_test_kv_name_gen(char* name, const size_t len);
int32_t cfstore_test_read(const char* key_name, char* data, size_t* len);
int32_t cfstore_test_startup(void);
int32_t cfstore_test_write(const char* key_name, const char* data, size_t* len);
#ifdef __cplusplus

View File

@ -16,24 +16,25 @@
* limitations under the License.
*/
#include <cfstore_fnmatch.h>
#include "cfstore_config.h"
#include "cfstore_debug.h"
#include "cfstore_list.h"
#include "cfstore_fnmatch.h"
#include "configuration_store.h"
#if defined CFSTORE_CONFIG_MBED_OS_VERSION && CFSTORE_CONFIG_MBED_OS_VERSION == 3
#include <core-util/critical.h>
#endif /* CFSTORE_CONFIG_MBED_OS_VERSION == 3 */
#include "cfstore_config.h"
#ifdef YOTTA_CFG_CFSTORE_UVISOR
#include "uvisor-lib/uvisor-lib.h"
#endif /* YOTTA_CFG_CFSTORE_UVISOR */
#if defined CFSTORE_CONFIG_BACKEND_FLASH_ENABLED && CFSTORE_CONFIG_BACKEND_FLASH_ENABLED == 1
#include <flash-journal-strategy-sequential/flash_journal_strategy_sequential.h>
#include <flash-journal/flash_journal.h>
#include <Driver_Common.h>
#endif /* CFSTORE_CONFIG_BACKEND_FLASH_ENABLED */
#include "cfstore_debug.h"
#include "cfstore_list.h"
#include "configuration-store/configuration_store.h"
#ifdef CFSTORE_CONFIG_BACKEND_FLASH_ENABLED
#include "flash_journal_strategy_sequential.h"
#include "flash_journal.h"
#include "Driver_Common.h"
#endif /* CFSTORE_CONFIG_BACKEND_FLASH_ENABLED */
#include <stdio.h>
#include <stdlib.h>
@ -52,7 +53,7 @@ uint32_t cfstore_optLogTracepoint_g = CFSTORE_TP_NONE; /*CFSTORE_TP_NONE|CFSTORE
/*
* Externs
*/
#if defined CFSTORE_CONFIG_BACKEND_FLASH_ENABLED && CFSTORE_CONFIG_BACKEND_FLASH_ENABLED == 1
#ifdef CFSTORE_CONFIG_BACKEND_FLASH_ENABLED
extern ARM_DRIVER_STORAGE ARM_Driver_Storage_(0);
ARM_DRIVER_STORAGE *cfstore_storage_drv = &ARM_Driver_Storage_(0);
#endif /* CFSTORE_CONFIG_BACKEND_FLASH_ENABLED */
@ -193,7 +194,7 @@ typedef struct cfstore_fsm_t
#ifdef CFSTORE_DEBUG
#if defined CFSTORE_CONFIG_BACKEND_FLASH_ENABLED && CFSTORE_CONFIG_BACKEND_FLASH_ENABLED == 1
#ifdef CFSTORE_CONFIG_BACKEND_FLASH_ENABLED
/* strings used for debug trace */
static const char* cfstore_flash_opcode_str[] =
{
@ -234,7 +235,7 @@ static const char* cfstore_flash_event_str[] =
/*
* Forward decl
*/
#if defined CFSTORE_CONFIG_BACKEND_FLASH_ENABLED && CFSTORE_CONFIG_BACKEND_FLASH_ENABLED == 1
#ifdef CFSTORE_CONFIG_BACKEND_FLASH_ENABLED
static int32_t cfstore_fsm_state_handle_event(cfstore_fsm_t* fsm, cfstore_fsm_event_t event, void* context);
static int32_t cfstore_fsm_state_set(cfstore_fsm_t* fsm, cfstore_fsm_state_t new_state, void* ctx);
#endif /* CFSTORE_CONFIG_BACKEND_FLASH_ENABLED */
@ -384,7 +385,7 @@ typedef struct cfstore_ctx_t
uint32_t area_dirty_flag : 1;
uint32_t f_reserved0 : 30;
#if defined CFSTORE_CONFIG_BACKEND_FLASH_ENABLED && CFSTORE_CONFIG_BACKEND_FLASH_ENABLED == 1
#ifdef CFSTORE_CONFIG_BACKEND_FLASH_ENABLED
/* flash journal related data */
FlashJournal_t jrnl;
FlashJournal_Info_t info;
@ -439,11 +440,11 @@ typedef struct cfstore_flash_journal_error_code_node
/*
* Globals
*/
#ifndef YOTTA_CFG_CONFIG_HARDWARE_MTD_ASYNC_OPS
#ifndef STORAGE_DRIVER_CONFIG_HARDWARE_MTD_ASYNC_OPS
static ARM_CFSTORE_CAPABILITIES cfstore_caps_g = { .asynchronous_ops = 1, .uvisor_support_enabled = 0 };
#else
static ARM_CFSTORE_CAPABILITIES cfstore_caps_g = { .asynchronous_ops = YOTTA_CFG_CONFIG_HARDWARE_MTD_ASYNC_OPS, .uvisor_support_enabled = 0 };
#endif /* YOTTA_CFG_CONFIG_HARDWARE_MTD_ASYNC_OPS */
static ARM_CFSTORE_CAPABILITIES cfstore_caps_g = { .asynchronous_ops = STORAGE_DRIVER_CONFIG_HARDWARE_MTD_ASYNC_OPS, .uvisor_support_enabled = 0 };
#endif /* STORAGE_DRIVER_CONFIG_HARDWARE_MTD_ASYNC_OPS */
static const ARM_DRIVER_VERSION cfstore_driver_version_g = { .api = ARM_CFSTORE_API_VERSION, .drv = ARM_CFSTORE_DRV_VERSION };
@ -615,7 +616,7 @@ static ARM_CFSTORE_SIZE cfstore_ctx_get_area_len(void)
static inline uint32_t cfstore_ctx_get_program_unit(cfstore_ctx_t* ctx)
{
CFSTORE_ASSERT(ctx!= NULL);
#if defined CFSTORE_CONFIG_BACKEND_FLASH_ENABLED && CFSTORE_CONFIG_BACKEND_FLASH_ENABLED == 1
#ifdef CFSTORE_CONFIG_BACKEND_FLASH_ENABLED
return ctx->info.program_unit;
#else
/* the program unit is 1 so byte aligned when no flash backend present */
@ -729,10 +730,45 @@ void *cfstore_realloc(void *ptr, ARM_CFSTORE_SIZE size)
#endif /* CFSTORE_YOTTA_CFG_CFSTORE_SRAM_ADDR */
#ifdef TARGET_LIKE_X86_LINUX_NATIVE
static inline void cfstore_critical_section_init(CFSTORE_LOCK* lock){ *lock = 0; }
static inline void cfstore_critical_section_lock(CFSTORE_LOCK* lock, const char* tag){ (void) tag; __sync_fetch_and_add(lock, 1); }
static inline void cfstore_critical_section_unlock(CFSTORE_LOCK* lock, const char* tag){(void) tag; __sync_fetch_and_sub(lock, 1); }
static CFSTORE_INLINE int32_t cfstore_hkvt_refcount_dec(cfstore_area_hkvt_t* hkvt, uint8_t *refcount)
{
cfstore_area_header_t *hdr = (cfstore_area_header_t*) hkvt->head;
uint32_t __refcount;
__refcount =__sync_fetch_and_sub(&hdr->refcount, 1);
if(refcount) *refcount = __refcount;
return ARM_DRIVER_OK;
}
static CFSTORE_INLINE int32_t cfstore_hkvt_refcount_inc(cfstore_area_hkvt_t* hkvt, uint8_t *refcount)
{
int32_t ret = ARM_CFSTORE_DRIVER_ERROR_HANDLE_COUNT_MAX;
uint32_t __refcount;
cfstore_area_header_t *hdr = (cfstore_area_header_t*) hkvt->head;
if( (__refcount = __sync_fetch_and_add(&hdr->refcount, 1)) < CFSTORE_LOCK_REFCOUNT_MAX) {
if(refcount) *refcount = __refcount;
ret = ARM_DRIVER_OK;
} else {
/* maximum count reach, back down and return error*/
__sync_fetch_and_sub(&hdr->refcount, 1);
}
return ret;
}
#else
/*
* Platform Specific Function Implementations
*/
#ifdef TARGET_LIKE_FRDM_K64F_GCC
static inline void cfstore_critical_section_init(CFSTORE_LOCK* lock){ *lock = 0; }
static inline void cfstore_critical_section_unlock(CFSTORE_LOCK* lock, const char* tag)
{
@ -780,39 +816,6 @@ static CFSTORE_INLINE int32_t cfstore_hkvt_refcount_inc(cfstore_area_hkvt_t* hkv
/* todo: put mbedosv3++ critical section exit here */
return ret;
}
#endif /* TARGET_LIKE_FRDM_K64F_GCC */
#ifdef TARGET_LIKE_X86_LINUX_NATIVE
static inline void cfstore_critical_section_init(CFSTORE_LOCK* lock){ *lock = 0; }
static inline void cfstore_critical_section_lock(CFSTORE_LOCK* lock, const char* tag){ (void) tag; __sync_fetch_and_add(lock, 1); }
static inline void cfstore_critical_section_unlock(CFSTORE_LOCK* lock, const char* tag){(void) tag; __sync_fetch_and_sub(lock, 1); }
static CFSTORE_INLINE int32_t cfstore_hkvt_refcount_dec(cfstore_area_hkvt_t* hkvt, uint8_t *refcount)
{
cfstore_area_header_t *hdr = (cfstore_area_header_t*) hkvt->head;
uint32_t __refcount;
__refcount =__sync_fetch_and_sub(&hdr->refcount, 1);
if(refcount) *refcount = __refcount;
return ARM_DRIVER_OK;
}
static CFSTORE_INLINE int32_t cfstore_hkvt_refcount_inc(cfstore_area_hkvt_t* hkvt, uint8_t *refcount)
{
int32_t ret = ARM_CFSTORE_DRIVER_ERROR_HANDLE_COUNT_MAX;
uint32_t __refcount;
cfstore_area_header_t *hdr = (cfstore_area_header_t*) hkvt->head;
if( (__refcount = __sync_fetch_and_add(&hdr->refcount, 1)) < CFSTORE_LOCK_REFCOUNT_MAX) {
if(refcount) *refcount = __refcount;
ret = ARM_DRIVER_OK;
} else {
/* maximum count reach, back down and return error*/
__sync_fetch_and_sub(&hdr->refcount, 1);
}
return ret;
}
#endif /* TARGET_LIKE_X86_LINUX_NATIVE */
@ -1336,7 +1339,7 @@ static int32_t cfstore_flash_set_tail(void)
return ret;
}
#if defined CFSTORE_CONFIG_BACKEND_FLASH_ENABLED && CFSTORE_CONFIG_BACKEND_FLASH_ENABLED == 1
#ifdef CFSTORE_CONFIG_BACKEND_FLASH_ENABLED
/*
* flash helper functions
@ -1615,8 +1618,6 @@ static int32_t cfstore_fsm_reading(void* context)
memset(&ctx->info, 0, sizeof(ctx->info));
goto out;
}
/* clear info data */
memset(&ctx->info, 0, sizeof(ctx->info));
ret = cfstore_fsm_state_set(&ctx->fsm, cfstore_fsm_state_ready, ctx);
if(ret < ARM_DRIVER_OK){
CFSTORE_ERRLOG("%s:Error: cfstore_fsm_state_set() failed (ret=%" PRId32 ")\n", __func__, ret);
@ -2970,14 +2971,14 @@ static int32_t cfstore_find_ex(const char* key_name_query, cfstore_area_hkvt_t *
next_key_len = cfstore_hkvt_get_key_len(next);
next_key_len++;
cfstore_get_key_name_ex(next, key_name, &next_key_len);
ret = fnmatch(key_name_query, key_name, 0);
ret = cfstore_fnmatch(key_name_query, key_name, 0);
if(ret == 0){
/* found the entry in the store. return handle */
CFSTORE_TP(CFSTORE_TP_FIND, "%s:Found matching key (key_name_query = \"%s\", next->key = \"%s\"),next_key_len=%d\n", __func__, key_name_query, key_name, (int) next_key_len);
cfstore_hkvt_dump(next, __func__);
return ARM_DRIVER_OK;
} else if(ret != CFSTORE_FNM_NOMATCH){
CFSTORE_ERRLOG("%s:Error: fnmatch() error (ret=%" PRId32 ").\n", __func__, ret);
CFSTORE_ERRLOG("%s:Error: cfstore_fnmatch() error (ret=%" PRId32 ").\n", __func__, ret);
return ARM_DRIVER_ERROR;
}
/* CFSTORE_FNM_NOMATCH => get the next hkvt if any */
@ -3721,7 +3722,7 @@ static int32_t cfstore_initialise(ARM_CFSTORE_CALLBACK callback, void* client_co
{
int ret = ARM_DRIVER_ERROR;
cfstore_ctx_t* ctx = cfstore_ctx_get();
#if defined CFSTORE_CONFIG_BACKEND_FLASH_ENABLED && CFSTORE_CONFIG_BACKEND_FLASH_ENABLED == 1
#ifdef CFSTORE_CONFIG_BACKEND_FLASH_ENABLED
ARM_STORAGE_CAPABILITIES storage_caps;
#endif /* CFSTORE_CONFIG_BACKEND_FLASH_ENABLED */
@ -3757,8 +3758,7 @@ static int32_t cfstore_initialise(ARM_CFSTORE_CALLBACK callback, void* client_co
ctx->power_state = ARM_POWER_FULL;
ctx->status = ARM_DRIVER_OK;
#if defined CFSTORE_CONFIG_BACKEND_FLASH_ENABLED && CFSTORE_CONFIG_BACKEND_FLASH_ENABLED == 1
// todo: put in cfstore_flash_init() ?
#ifdef CFSTORE_CONFIG_BACKEND_FLASH_ENABLED
/* set the cfstore async flag according to the storage driver mode */
storage_caps = cfstore_storage_drv->GetCapabilities();
cfstore_caps_g.asynchronous_ops = storage_caps.asynchronous_ops;