Generate device name
This commit is contained in:
		
							
								
								
									
										55
									
								
								esp32_device/main/storage.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								esp32_device/main/storage.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,55 @@
 | 
			
		||||
#include "constants.h"
 | 
			
		||||
#include "storage.h"
 | 
			
		||||
#include "nvs_flash.h"
 | 
			
		||||
#include "nvs.h"
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
#define STORAGE_NAMESPACE "storage"
 | 
			
		||||
 | 
			
		||||
#define DEV_NAME_KEY "dev_name"
 | 
			
		||||
 | 
			
		||||
bool storage_init()
 | 
			
		||||
{
 | 
			
		||||
    esp_err_t err = nvs_flash_init();
 | 
			
		||||
    if (err == ESP_ERR_NVS_NO_FREE_PAGES || err == ESP_ERR_NVS_NEW_VERSION_FOUND)
 | 
			
		||||
    {
 | 
			
		||||
        printf("Need to reset storage\n");
 | 
			
		||||
 | 
			
		||||
        // NVS partition was truncated and needs to be erased
 | 
			
		||||
        // Retry nvs_flash_init
 | 
			
		||||
        ESP_ERROR_CHECK(nvs_flash_erase());
 | 
			
		||||
        err = nvs_flash_init();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return err == ESP_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void storage_set_dev_name(const char *name)
 | 
			
		||||
{
 | 
			
		||||
    nvs_handle_t my_handle;
 | 
			
		||||
 | 
			
		||||
    ESP_ERROR_CHECK(nvs_open(STORAGE_NAMESPACE, NVS_READWRITE, &my_handle));
 | 
			
		||||
 | 
			
		||||
    ESP_ERROR_CHECK(nvs_set_blob(my_handle, DEV_NAME_KEY, name, strlen(name)));
 | 
			
		||||
 | 
			
		||||
    nvs_close(my_handle);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
size_t storage_get_dev_name(char *dest)
 | 
			
		||||
{
 | 
			
		||||
    nvs_handle_t my_handle;
 | 
			
		||||
 | 
			
		||||
    ESP_ERROR_CHECK(nvs_open(STORAGE_NAMESPACE, NVS_READWRITE, &my_handle));
 | 
			
		||||
 | 
			
		||||
    size_t len = (dest == NULL ? 0 : DEV_NAME_LEN);
 | 
			
		||||
    esp_err_t res = nvs_get_blob(my_handle, DEV_NAME_KEY, dest, &len);
 | 
			
		||||
 | 
			
		||||
    nvs_close(my_handle);
 | 
			
		||||
 | 
			
		||||
    if (res == ESP_ERR_NVS_NOT_FOUND || len == 0)
 | 
			
		||||
        return 0;
 | 
			
		||||
 | 
			
		||||
    ESP_ERROR_CHECK(res);
 | 
			
		||||
 | 
			
		||||
    return len;
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user