118 lines
2.5 KiB
C
118 lines
2.5 KiB
C
#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);
|
|
}
|