#include "aem_adapter_nvram.h" #include "aem_log.h" #include "aem_project.h" #include "aem_nv_id.h" #ifdef CONFIG_NVRAM_CONFIG #include #endif #undef LOG_TAG #define LOG_TAG "adapter_nv" #define NVRAM_LOG_DEBUG true static char *aem_get_db_tag_name(uint16_t id) { #define DATABASE_TO_NAME_CASE(i) \ case i: \ return #i switch (id) { DATABASE_TO_NAME_CASE(AEM_TAG_WORKOUT_SETTINGS); DATABASE_TO_NAME_CASE(AEM_TAG_ACTIVITY_REMIND_STATE); DATABASE_TO_NAME_CASE(AEM_TAG_ACT_WEEK_HIS_IND); DATABASE_TO_NAME_CASE(AEM_TAG_ACT_LAST_WEEK_INFO); DATABASE_TO_NAME_CASE(AEM_TAG_ACT_HIS_IND); DATABASE_TO_NAME_CASE(AEM_TAG_SPO2_HIS_INDEX); DATABASE_TO_NAME_CASE(AEM_TAG_SPO2_RECENT_DATA); DATABASE_TO_NAME_CASE(AEM_TAG_HR_HIS_INDEX); DATABASE_TO_NAME_CASE(AEM_TAG_HR_RECENT_DATA); DATABASE_TO_NAME_CASE(AEM_TAG_STRESS_HIS_INDEX); DATABASE_TO_NAME_CASE(AEM_TAG_STRESS_RECENT_DATA); DATABASE_TO_NAME_CASE(AEM_TAG_SLEEP_HIS_INDEX); DATABASE_TO_NAME_CASE(AEM_TAG_MSG_SETTINGS); DATABASE_TO_NAME_CASE(AEM_TAG_OS_SETTINGS); DATABASE_TO_NAME_CASE(AEM_TAG_BLE_USER_CFG_INFO); DATABASE_TO_NAME_CASE(AEM_TAG_BLE_SET_INFO); DATABASE_TO_NAME_CASE(AEM_TAG_BLE_HR_INFO); DATABASE_TO_NAME_CASE(AEM_TAG_BLE_REMIND_INFO); DATABASE_TO_NAME_CASE(AEM_TAG_BLE_SWITCH_INFO); DATABASE_TO_NAME_CASE(AEM_TAG_AUTO_TEST_CFG); DATABASE_TO_NAME_CASE(AEM_TAG_WF_INFO); DATABASE_TO_NAME_CASE(AEM_LAUNCH_ANIM); DATABASE_TO_NAME_CASE(AEM_WF_EDIT_ANIM); DATABASE_TO_NAME_CASE(AEM_WF_CUR_WF); DATABASE_TO_NAME_CASE(AEM_TAG_GPS_HIS_INDEX); DATABASE_TO_NAME_CASE(AEM_TAG_GPS_TRACK_HIS_INDEX); default: return "UNKNOW"; } } static uint32_t nvram_read(uint16_t index, void *p_buf, uint16_t len) { uint32_t ret_len = 0; #if NVRAM_LOG_DEBUG AEM_LOG_I("read TAG %d ,name %s \r\n", index, aem_get_db_tag_name(index)); #endif #ifndef CONFIG_SIMULATOR #ifdef CONFIG_NVRAM_CONFIG int ret = nvram_config_get(aem_get_db_tag_name(index), p_buf, len); if (ret > 0) { ret_len = len; } else { #if NVRAM_LOG_DEBUG AEM_LOG_I("nvram_config_get index %d name %s ret %d\r\n", index, aem_get_db_tag_name(index), ret); #endif } #endif #else #endif return ret_len; } static uint32_t nvram_write(uint16_t index, void *p_buf, uint16_t len) { uint32_t ret_len = 0; #if NVRAM_LOG_DEBUG AEM_LOG_I("write TAG %d ,name %s \r\n", index, aem_get_db_tag_name(index)); #endif #ifndef CONFIG_SIMULATOR #ifdef CONFIG_NVRAM_CONFIG int ret = nvram_config_set(aem_get_db_tag_name(index), p_buf, len); if (ret == 0) { ret_len = 0; } else { #if NVRAM_LOG_DEBUG AEM_LOG_I("nvram_config_set index %d name %s ret %d\r\n", index, aem_get_db_tag_name(index), ret); #endif ret_len = 1; } #endif #else #endif return ret_len; } static uint32_t nvram_delete(uint16_t index) { uint32_t ret = 0; #ifndef BSP_USING_PC_SIMULATOR #ifdef PKG_USING_FLASHDB #else #endif #endif return ret; } static uint32_t nvram_delete_all(void) { uint32_t ret = 0; #ifdef CONFIG_NVRAM_CONFIG // 清除所有user nvram nvram_config_clear_all(); #endif return ret; } static const aem_nv_ops_t s_nv_ops = { .nvram_delete = nvram_delete, .nvram_delete_all = nvram_delete_all, .nvram_read = nvram_read, .nvram_write = nvram_write, }; const aem_nv_ops_t *aem_get_nv_ops(void) { return &s_nv_ops; }