aem_adapter_nvram.c 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. #include "aem_adapter_nvram.h"
  2. #include "aem_log.h"
  3. #include "aem_project.h"
  4. #include "aem_nv_id.h"
  5. #ifdef CONFIG_NVRAM_CONFIG
  6. #include <drivers/nvram_config.h>
  7. #endif
  8. #undef LOG_TAG
  9. #define LOG_TAG "adapter_nv"
  10. #define NVRAM_LOG_DEBUG true
  11. static char *aem_get_db_tag_name(uint16_t id)
  12. {
  13. #define DATABASE_TO_NAME_CASE(i) \
  14. case i: \
  15. return #i
  16. switch (id)
  17. {
  18. DATABASE_TO_NAME_CASE(AEM_TAG_WORKOUT_SETTINGS);
  19. DATABASE_TO_NAME_CASE(AEM_TAG_ACTIVITY_REMIND_STATE);
  20. DATABASE_TO_NAME_CASE(AEM_TAG_ACT_WEEK_HIS_IND);
  21. DATABASE_TO_NAME_CASE(AEM_TAG_ACT_LAST_WEEK_INFO);
  22. DATABASE_TO_NAME_CASE(AEM_TAG_ACT_HIS_IND);
  23. DATABASE_TO_NAME_CASE(AEM_TAG_SPO2_HIS_INDEX);
  24. DATABASE_TO_NAME_CASE(AEM_TAG_SPO2_RECENT_DATA);
  25. DATABASE_TO_NAME_CASE(AEM_TAG_HR_HIS_INDEX);
  26. DATABASE_TO_NAME_CASE(AEM_TAG_HR_RECENT_DATA);
  27. DATABASE_TO_NAME_CASE(AEM_TAG_STRESS_HIS_INDEX);
  28. DATABASE_TO_NAME_CASE(AEM_TAG_STRESS_RECENT_DATA);
  29. DATABASE_TO_NAME_CASE(AEM_TAG_SLEEP_HIS_INDEX);
  30. DATABASE_TO_NAME_CASE(AEM_TAG_MSG_SETTINGS);
  31. DATABASE_TO_NAME_CASE(AEM_TAG_OS_SETTINGS);
  32. DATABASE_TO_NAME_CASE(AEM_TAG_BLE_USER_CFG_INFO);
  33. DATABASE_TO_NAME_CASE(AEM_TAG_BLE_SET_INFO);
  34. DATABASE_TO_NAME_CASE(AEM_TAG_BLE_HR_INFO);
  35. DATABASE_TO_NAME_CASE(AEM_TAG_BLE_REMIND_INFO);
  36. DATABASE_TO_NAME_CASE(AEM_TAG_BLE_SWITCH_INFO);
  37. DATABASE_TO_NAME_CASE(AEM_TAG_AUTO_TEST_CFG);
  38. DATABASE_TO_NAME_CASE(AEM_TAG_WF_INFO);
  39. DATABASE_TO_NAME_CASE(AEM_LAUNCH_ANIM);
  40. DATABASE_TO_NAME_CASE(AEM_WF_EDIT_ANIM);
  41. DATABASE_TO_NAME_CASE(AEM_WF_CUR_WF);
  42. DATABASE_TO_NAME_CASE(AEM_TAG_GPS_HIS_INDEX);
  43. DATABASE_TO_NAME_CASE(AEM_TAG_GPS_TRACK_HIS_INDEX);
  44. default:
  45. return "UNKNOW";
  46. }
  47. }
  48. static uint32_t nvram_read(uint16_t index, void *p_buf, uint16_t len)
  49. {
  50. uint32_t ret_len = 0;
  51. #if NVRAM_LOG_DEBUG
  52. AEM_LOG_I("read TAG %d ,name %s \r\n", index, aem_get_db_tag_name(index));
  53. #endif
  54. #ifndef CONFIG_SIMULATOR
  55. #ifdef CONFIG_NVRAM_CONFIG
  56. int ret = nvram_config_get(aem_get_db_tag_name(index), p_buf, len);
  57. if (ret > 0)
  58. {
  59. ret_len = len;
  60. }
  61. else
  62. {
  63. #if NVRAM_LOG_DEBUG
  64. AEM_LOG_I("nvram_config_get index %d name %s ret %d\r\n", index, aem_get_db_tag_name(index), ret);
  65. #endif
  66. }
  67. #endif
  68. #else
  69. #endif
  70. return ret_len;
  71. }
  72. static uint32_t nvram_write(uint16_t index, void *p_buf, uint16_t len)
  73. {
  74. uint32_t ret_len = 0;
  75. #if NVRAM_LOG_DEBUG
  76. AEM_LOG_I("write TAG %d ,name %s \r\n", index, aem_get_db_tag_name(index));
  77. #endif
  78. #ifndef CONFIG_SIMULATOR
  79. #ifdef CONFIG_NVRAM_CONFIG
  80. int ret = nvram_config_set(aem_get_db_tag_name(index), p_buf, len);
  81. if (ret == 0)
  82. {
  83. ret_len = 0;
  84. }
  85. else
  86. {
  87. #if NVRAM_LOG_DEBUG
  88. AEM_LOG_I("nvram_config_set index %d name %s ret %d\r\n", index, aem_get_db_tag_name(index), ret);
  89. #endif
  90. ret_len = 1;
  91. }
  92. #endif
  93. #else
  94. #endif
  95. return ret_len;
  96. }
  97. static uint32_t nvram_delete(uint16_t index)
  98. {
  99. uint32_t ret = 0;
  100. #ifndef BSP_USING_PC_SIMULATOR
  101. #ifdef PKG_USING_FLASHDB
  102. #else
  103. #endif
  104. #endif
  105. return ret;
  106. }
  107. static uint32_t nvram_delete_all(void)
  108. {
  109. uint32_t ret = 0;
  110. #ifdef CONFIG_NVRAM_CONFIG
  111. // 清除所有user nvram
  112. nvram_config_clear_all();
  113. #endif
  114. return ret;
  115. }
  116. static const aem_nv_ops_t s_nv_ops = {
  117. .nvram_delete = nvram_delete,
  118. .nvram_delete_all = nvram_delete_all,
  119. .nvram_read = nvram_read,
  120. .nvram_write = nvram_write,
  121. };
  122. const aem_nv_ops_t *aem_get_nv_ops(void)
  123. {
  124. return &s_nv_ops;
  125. }