esp-open-rtos/examples/spiffs/spiffs_example.c

119 lines
2.5 KiB
C
Raw Normal View History

#include "espressif/esp_common.h"
#include "esp/uart.h"
#include "FreeRTOS.h"
#include "task.h"
#include "esp8266.h"
#include "fcntl.h"
#include "unistd.h"
#include "spiffs.h"
#include "esp_spiffs.h"
/**
* This example shows the default SPIFFS configuration when SPIFFS is
* configured in compile-time (SPIFFS_SINGLETON = 1).
*
* To configure SPIFFS in run-time uncomment SPIFFS_SINGLETON in the Makefile
* and replace the commented esp_spiffs_init in the code below.
*
*/
static void example_read_file_posix()
{
const int buf_size = 0xFF;
uint8_t buf[buf_size];
int fd = open("test.txt", O_RDONLY);
if (fd < 0) {
printf("Error opening file\n");
return;
}
int read_bytes = read(fd, buf, buf_size);
printf("Read %d bytes\n", read_bytes);
buf[read_bytes] = '\0'; // zero terminate string
printf("Data: %s\n", buf);
close(fd);
}
static void example_read_file_spiffs()
{
const int buf_size = 0xFF;
uint8_t buf[buf_size];
spiffs_file fd = SPIFFS_open(&fs, "other.txt", SPIFFS_RDONLY, 0);
if (fd < 0) {
printf("Error opening file\n");
return;
}
int read_bytes = SPIFFS_read(&fs, fd, buf, buf_size);
printf("Read %d bytes\n", read_bytes);
buf[read_bytes] = '\0'; // zero terminate string
printf("Data: %s\n", buf);
SPIFFS_close(&fs, fd);
}
static void example_write_file()
{
uint8_t buf[] = "Example data, written by ESP8266";
int fd = open("other.txt", O_WRONLY|O_CREAT, 0);
if (fd < 0) {
printf("Error opening file\n");
return;
}
int written = write(fd, buf, sizeof(buf));
printf("Written %d bytes\n", written);
close(fd);
}
static void example_fs_info()
{
uint32_t total, used;
SPIFFS_info(&fs, &total, &used);
printf("Total: %d bytes, used: %d bytes", total, used);
}
void test_task(void *pvParameters)
{
#if SPIFFS_SINGLETON == 1
esp_spiffs_init();
#else
// for run-time configuration when SPIFFS_SINGLETON = 0
esp_spiffs_init(0x200000, 0x10000);
#endif
if (esp_spiffs_mount() != SPIFFS_OK) {
printf("Error mount SPIFFS\n");
}
while (1) {
vTaskDelay(2000 / portTICK_RATE_MS);
example_write_file();
example_read_file_posix();
example_read_file_spiffs();
example_fs_info();
printf("\n\n");
}
}
void user_init(void)
{
uart_set_baud(0, 115200);
xTaskCreate(test_task, (signed char *)"test_task", 1024, NULL, 2, NULL);
}