| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #include "esp_partition.h"
- #include "nvs_partition_lookup.hpp"
- #ifdef CONFIG_NVS_ENCRYPTION
- #include "nvs_encrypted_partition.hpp"
- #endif // CONFIG_NVS_ENCRYPTION
- namespace nvs {
- namespace partition_lookup {
- esp_err_t lookup_nvs_partition(const char* label, NVSPartition **p)
- {
- const esp_partition_t* esp_partition = esp_partition_find_first(
- ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_DATA_NVS, label);
- if (esp_partition == nullptr) {
- return ESP_ERR_NOT_FOUND;
- }
- if (esp_partition->encrypted) {
- return ESP_ERR_NVS_WRONG_ENCRYPTION;
- }
- NVSPartition *partition = new (std::nothrow) NVSPartition(esp_partition);
- if (partition == nullptr) {
- return ESP_ERR_NO_MEM;
- }
- *p = partition;
- return ESP_OK;
- }
- #ifdef CONFIG_NVS_ENCRYPTION
- esp_err_t lookup_nvs_encrypted_partition(const char* label, nvs_sec_cfg_t* cfg, NVSPartition **p)
- {
- const esp_partition_t* esp_partition = esp_partition_find_first(
- ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_DATA_NVS, label);
- if (esp_partition == nullptr) {
- return ESP_ERR_NOT_FOUND;
- }
- if (esp_partition->encrypted) {
- return ESP_ERR_NVS_WRONG_ENCRYPTION;
- }
- NVSEncryptedPartition *enc_p = new (std::nothrow) NVSEncryptedPartition(esp_partition);
- if (enc_p == nullptr) {
- return ESP_ERR_NO_MEM;
- }
- esp_err_t result = enc_p->init(cfg);
- if (result != ESP_OK) {
- delete enc_p;
- return result;
- }
- *p = enc_p;
- return ESP_OK;
- }
- #endif // CONFIG_NVS_ENCRYPTION
- } // partition_lookup
- } // nvs
|