nvs_handle_simple.cpp 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. // Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. // http://www.apache.org/licenses/LICENSE-2.0
  7. //
  8. // Unless required by applicable law or agreed to in writing, software
  9. // distributed under the License is distributed on an "AS IS" BASIS,
  10. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  11. // See the License for the specific language governing permissions and
  12. // limitations under the License.
  13. #include <cstdlib>
  14. #include "nvs_handle.hpp"
  15. #include "nvs_partition_manager.hpp"
  16. namespace nvs {
  17. NVSHandleSimple::~NVSHandleSimple() {
  18. NVSPartitionManager::get_instance()->close_handle(this);
  19. }
  20. esp_err_t NVSHandleSimple::set_typed_item(ItemType datatype, const char *key, const void* data, size_t dataSize)
  21. {
  22. if (!valid) return ESP_ERR_NVS_INVALID_HANDLE;
  23. if (mReadOnly) return ESP_ERR_NVS_READ_ONLY;
  24. return mStoragePtr->writeItem(mNsIndex, datatype, key, data, dataSize);
  25. }
  26. esp_err_t NVSHandleSimple::get_typed_item(ItemType datatype, const char *key, void* data, size_t dataSize)
  27. {
  28. if (!valid) return ESP_ERR_NVS_INVALID_HANDLE;
  29. return mStoragePtr->readItem(mNsIndex, datatype, key, data, dataSize);
  30. }
  31. esp_err_t NVSHandleSimple::set_string(const char *key, const char* str)
  32. {
  33. if (!valid) return ESP_ERR_NVS_INVALID_HANDLE;
  34. if (mReadOnly) return ESP_ERR_NVS_READ_ONLY;
  35. return mStoragePtr->writeItem(mNsIndex, nvs::ItemType::SZ, key, str, strlen(str) + 1);
  36. }
  37. esp_err_t NVSHandleSimple::set_blob(const char *key, const void* blob, size_t len)
  38. {
  39. if (!valid) return ESP_ERR_NVS_INVALID_HANDLE;
  40. if (mReadOnly) return ESP_ERR_NVS_READ_ONLY;
  41. return mStoragePtr->writeItem(mNsIndex, nvs::ItemType::BLOB, key, blob, len);
  42. }
  43. esp_err_t NVSHandleSimple::get_string(const char *key, char* out_str, size_t len)
  44. {
  45. if (!valid) return ESP_ERR_NVS_INVALID_HANDLE;
  46. return mStoragePtr->readItem(mNsIndex, nvs::ItemType::SZ, key, out_str, len);
  47. }
  48. esp_err_t NVSHandleSimple::get_blob(const char *key, void* out_blob, size_t len)
  49. {
  50. if (!valid) return ESP_ERR_NVS_INVALID_HANDLE;
  51. return mStoragePtr->readItem(mNsIndex, nvs::ItemType::BLOB, key, out_blob, len);
  52. }
  53. esp_err_t NVSHandleSimple::get_item_size(ItemType datatype, const char *key, size_t &size)
  54. {
  55. if (!valid) return ESP_ERR_NVS_INVALID_HANDLE;
  56. return mStoragePtr->getItemDataSize(mNsIndex, datatype, key, size);
  57. }
  58. esp_err_t NVSHandleSimple::erase_item(const char* key)
  59. {
  60. if (!valid) return ESP_ERR_NVS_INVALID_HANDLE;
  61. if (mReadOnly) return ESP_ERR_NVS_READ_ONLY;
  62. return mStoragePtr->eraseItem(mNsIndex, key);
  63. }
  64. esp_err_t NVSHandleSimple::erase_all()
  65. {
  66. if (!valid) return ESP_ERR_NVS_INVALID_HANDLE;
  67. if (mReadOnly) return ESP_ERR_NVS_READ_ONLY;
  68. return mStoragePtr->eraseNamespace(mNsIndex);
  69. }
  70. esp_err_t NVSHandleSimple::commit()
  71. {
  72. if (!valid) return ESP_ERR_NVS_INVALID_HANDLE;
  73. return ESP_OK;
  74. }
  75. esp_err_t NVSHandleSimple::get_used_entry_count(size_t& used_entries)
  76. {
  77. used_entries = 0;
  78. if (!valid) return ESP_ERR_NVS_INVALID_HANDLE;
  79. size_t used_entry_count;
  80. esp_err_t err = mStoragePtr->calcEntriesInNamespace(mNsIndex, used_entry_count);
  81. if(err == ESP_OK){
  82. used_entries = used_entry_count;
  83. }
  84. return err;
  85. }
  86. void NVSHandleSimple::debugDump() {
  87. return mStoragePtr->debugDump();
  88. }
  89. esp_err_t NVSHandleSimple::fillStats(nvs_stats_t& nvsStats) {
  90. return mStoragePtr->fillStats(nvsStats);
  91. }
  92. esp_err_t NVSHandleSimple::calcEntriesInNamespace(size_t& usedEntries) {
  93. return mStoragePtr->calcEntriesInNamespace(mNsIndex, usedEntries);
  94. }
  95. bool NVSHandleSimple::findEntry(nvs_opaque_iterator_t* it, const char* name) {
  96. return mStoragePtr->findEntry(it, name);
  97. }
  98. bool NVSHandleSimple::nextEntry(nvs_opaque_iterator_t* it) {
  99. return mStoragePtr->nextEntry(it);
  100. }
  101. const char *NVSHandleSimple::get_partition_name() const {
  102. return mStoragePtr->getPartName();
  103. }
  104. }