From 38fe3ddaf35636fafff2a5010fec7f61c030da2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=9A=E6=99=96?= <593245898@qq.com> Date: Mon, 1 Mar 2021 16:42:38 +0800 Subject: [PATCH] [Fw] Successfully transplant LVGL SD FAT file-system codes into firmware. --- 2.Firmware/HoloCubic_fw/HoloCubic_fw.ino | 4 + 2.Firmware/HoloCubic_fw/HoloCubic_fw.vcxproj | 5 +- .../HoloCubic_fw/HoloCubic_fw.vcxproj.filters | 3 + 2.Firmware/HoloCubic_fw/lv_port_fatfs.c | 348 ++++++++++++++++++ 2.Firmware/HoloCubic_fw/lv_port_fatfs.h | 44 +++ 5 files changed, 402 insertions(+), 2 deletions(-) create mode 100644 2.Firmware/HoloCubic_fw/lv_port_fatfs.c create mode 100644 2.Firmware/HoloCubic_fw/lv_port_fatfs.h diff --git a/2.Firmware/HoloCubic_fw/HoloCubic_fw.ino b/2.Firmware/HoloCubic_fw/HoloCubic_fw.ino index 553a18d..2976c28 100644 --- a/2.Firmware/HoloCubic_fw/HoloCubic_fw.ino +++ b/2.Firmware/HoloCubic_fw/HoloCubic_fw.ino @@ -5,6 +5,7 @@ #include "sd_card.h" #include "rgb_led.h" #include "lv_port_indev.h" +#include "lv_port_fatfs.h" #include "lv_cubic_gui.h" #include "lv_demo_encoder.h" @@ -41,9 +42,12 @@ void setup() /*** Init micro SD-Card ***/ tf.init(); + lv_fs_if_init(); + String ssid = tf.readFileLine("/wifi.txt", 1); // line-1 for WiFi ssid String password = tf.readFileLine("/wifi.txt", 2); // line-2 for WiFi password + /*** Inflate GUI objects ***/ //lv_demo_benchmark(); //lv_demo_encoder(); diff --git a/2.Firmware/HoloCubic_fw/HoloCubic_fw.vcxproj b/2.Firmware/HoloCubic_fw/HoloCubic_fw.vcxproj index bcb1172..4250a47 100644 --- a/2.Firmware/HoloCubic_fw/HoloCubic_fw.vcxproj +++ b/2.Firmware/HoloCubic_fw/HoloCubic_fw.vcxproj @@ -73,7 +73,7 @@ true true true - $(ProjectDir)..\HoloCubic_fw;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\libraries\lvgl\src;S:\DataCenter\WorkSpace\Arduino\libraries\MPU6050\src;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\libraries\Wire\src;S:\DataCenter\WorkSpace\Arduino\libraries\FastLED;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\libraries\WiFi\src;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\libraries\HTTPClient\src;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\libraries\WiFiClientSecure\src;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\libraries\FS\src;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\libraries\SD\src;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\libraries\SPI\src;S:\DataCenter\WorkSpace\Arduino\libraries\TFT_eSPI;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\libraries\SPIFFS\src;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\cores\esp32;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\cores\esp32\apps;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\cores\esp32\libb64;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\variants\pico32;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\config;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\app_trace;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\app_update;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\asio;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\bootloader_support;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\bt;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\coap;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\console;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\driver;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\esp-tls;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\esp32;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\esp_adc_cal;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\esp_event;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\esp_http_client;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\esp_http_server;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\esp_https_ota;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\esp_ringbuf;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\ethernet;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\expat;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\fatfs;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\freemodbus;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\freertos;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\heap;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\idf_test;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\jsmn;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\json;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\libsodium;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\log;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\lwip;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\mbedtls;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\mdns;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\micro-ecc;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\mqtt;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\newlib;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\nghttp;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\nvs_flash;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\openssl;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\protobuf-c;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\protocomm;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\pthread;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\sdmmc;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\smartconfig_ack;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\soc;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\spi_flash;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\spiffs;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\tcp_transport;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\tcpip_adapter;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\ulp;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\vfs;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\wear_levelling;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\wifi_provisioning;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\wpa_supplicant;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\xtensa-debug-module;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\esp-face;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\esp32-camera;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\fb_gfx;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\lib\gcc\xtensa-esp32-elf\5.2.0\include;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\xtensa-esp32-elf\include\c++\5.2.0\xtensa-esp32-elf;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\xtensa-esp32-elf\include;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\xtensa-esp32-elf\include\c++\5.2.0;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\include\c++\5.2.0;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\include;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-4-b40a506\xtensa-lx106-elf\include\c++\4.8.2;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-4-b40a506\xtensa-lx106-elf\include\c++\4.8.2\xtensa-lx106-elf;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-4-b40a506\xtensa-lx106-elf\include;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-4-b40a506\lib\gcc\xtensa-lx106-elf\4.8.2\include;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include;%(AdditionalIncludeDirectories) + $(ProjectDir)..\HoloCubic_fw;$(ProjectDir)..\..\..\..\WorkSpace\Arduino\libraries\lvgl\src;$(ProjectDir)..\..\..\..\WorkSpace\Arduino\libraries\MPU6050\src;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\libraries\Wire\src;$(ProjectDir)..\..\..\..\WorkSpace\Arduino\libraries\FastLED;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\libraries\WiFi\src;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\libraries\HTTPClient\src;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\libraries\WiFiClientSecure\src;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\libraries\FS\src;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\libraries\SD\src;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\libraries\SPI\src;$(ProjectDir)..\..\..\..\WorkSpace\Arduino\libraries\TFT_eSPI;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\libraries\SPIFFS\src;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\cores\esp32;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\cores\esp32\apps;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\cores\esp32\libb64;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\variants\pico32;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\config;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\app_trace;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\app_update;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\asio;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\bootloader_support;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\bt;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\coap;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\console;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\driver;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\esp-tls;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\esp32;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\esp_adc_cal;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\esp_event;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\esp_http_client;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\esp_http_server;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\esp_https_ota;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\esp_ringbuf;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\ethernet;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\expat;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\fatfs;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\freemodbus;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\freertos;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\heap;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\idf_test;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\jsmn;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\json;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\libsodium;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\log;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\lwip;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\mbedtls;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\mdns;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\micro-ecc;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\mqtt;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\newlib;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\nghttp;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\nvs_flash;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\openssl;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\protobuf-c;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\protocomm;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\pthread;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\sdmmc;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\smartconfig_ack;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\soc;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\spi_flash;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\spiffs;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\tcp_transport;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\tcpip_adapter;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\ulp;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\vfs;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\wear_levelling;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\wifi_provisioning;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\wpa_supplicant;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\xtensa-debug-module;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\esp-face;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\esp32-camera;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\fb_gfx;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\lib\gcc\xtensa-esp32-elf\5.2.0\include;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\xtensa-esp32-elf\include\c++\5.2.0\xtensa-esp32-elf;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\xtensa-esp32-elf\include;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\xtensa-esp32-elf\include\c++\5.2.0;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\include\c++\5.2.0;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\include;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-4-b40a506\xtensa-lx106-elf\include\c++\4.8.2;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-4-b40a506\xtensa-lx106-elf\include\c++\4.8.2\xtensa-lx106-elf;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-4-b40a506\xtensa-lx106-elf\include;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-4-b40a506\lib\gcc\xtensa-lx106-elf\4.8.2\include;D:\Green\Arduino\arduino-1.8.7\portable\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include;%(AdditionalIncludeDirectories) $(ProjectDir)__vm\.HoloCubic_fw.vsarduino.h;%(ForcedIncludeFiles) __ESP32_esp32__;__ESP32_ESP32__;ESP_PLATFORM;HAVE_CONFIG_H;GCC_NOT_5_2_0=0;WITH_POSIX;F_CPU=240000000L;ARDUINO=10807;ARDUINO_ESP32_PICO;ARDUINO_ARCH_ESP32;ESP32;CORE_DEBUG_LEVEL=0;__cplusplus=201103L;_VMICRO_INTELLISENSE;%(PreprocessorDefinitions) @@ -124,6 +124,7 @@ + @@ -137,7 +138,7 @@ - + \ No newline at end of file diff --git a/2.Firmware/HoloCubic_fw/HoloCubic_fw.vcxproj.filters b/2.Firmware/HoloCubic_fw/HoloCubic_fw.vcxproj.filters index 14d88d7..60b6d44 100644 --- a/2.Firmware/HoloCubic_fw/HoloCubic_fw.vcxproj.filters +++ b/2.Firmware/HoloCubic_fw/HoloCubic_fw.vcxproj.filters @@ -80,5 +80,8 @@ Source Files + + Source Files + \ No newline at end of file diff --git a/2.Firmware/HoloCubic_fw/lv_port_fatfs.c b/2.Firmware/HoloCubic_fw/lv_port_fatfs.c new file mode 100644 index 0000000..acabd2d --- /dev/null +++ b/2.Firmware/HoloCubic_fw/lv_port_fatfs.c @@ -0,0 +1,348 @@ +/** + * @file lv_fs_fatfs.c + * For ESP32 + */ + + /********************* + * INCLUDES + *********************/ +#include "lv_port_fatfs.h" + + + /********************* + * DEFINES + *********************/ +#define DRIVE_LETTER 'S' + /********************** + * TYPEDEFS + **********************/ + + /* Create a type to store the required data about your file.*/ +typedef FIL file_t; + +/*Similarly to `file_t` create a type for directory reading too */ +typedef FF_DIR dir_t; + +/********************** + * STATIC PROTOTYPES + **********************/ +static void fs_init(void); + +static lv_fs_res_t fs_open(lv_fs_drv_t* drv, void* file_p, const char* path, lv_fs_mode_t mode); +static lv_fs_res_t fs_close(lv_fs_drv_t* drv, void* file_p); +static lv_fs_res_t fs_read(lv_fs_drv_t* drv, void* file_p, void* buf, uint32_t btr, uint32_t* br); +static lv_fs_res_t fs_write(lv_fs_drv_t* drv, void* file_p, const void* buf, uint32_t btw, uint32_t* bw); +static lv_fs_res_t fs_seek(lv_fs_drv_t* drv, void* file_p, uint32_t pos); +static lv_fs_res_t fs_size(lv_fs_drv_t* drv, void* file_p, uint32_t* size_p); +static lv_fs_res_t fs_tell(lv_fs_drv_t* drv, void* file_p, uint32_t* pos_p); +static lv_fs_res_t fs_remove(lv_fs_drv_t* drv, const char* path); +static lv_fs_res_t fs_trunc(lv_fs_drv_t* drv, void* file_p); +static lv_fs_res_t fs_rename(lv_fs_drv_t* drv, const char* oldname, const char* newname); +static lv_fs_res_t fs_free(lv_fs_drv_t* drv, uint32_t* total_p, uint32_t* free_p); +static lv_fs_res_t fs_dir_open(lv_fs_drv_t* drv, void* dir_p, const char* path); +static lv_fs_res_t fs_dir_read(lv_fs_drv_t* drv, void* dir_p, char* fn); +static lv_fs_res_t fs_dir_close(lv_fs_drv_t* drv, void* dir_p); + +/********************** + * STATIC VARIABLES + **********************/ + + /********************** + * MACROS + **********************/ + + /********************** + * GLOBAL FUNCTIONS + **********************/ + +void lv_fs_if_init(void) +{ + /*---------------------------------------------------- + * Initialize your storage device and File System + * -------------------------------------------------*/ + fs_init(); + + /*--------------------------------------------------- + * Register the file system interface in LittlevGL + *--------------------------------------------------*/ + + /* Add a simple drive to open images */ + lv_fs_drv_t fs_drv; /*A driver descriptor*/ + lv_fs_drv_init(&fs_drv); + + /*Set up fields...*/ + fs_drv.file_size = sizeof(file_t); + fs_drv.letter = DRIVE_LETTER; + fs_drv.open_cb = fs_open; + fs_drv.close_cb = fs_close; + fs_drv.read_cb = fs_read; + fs_drv.write_cb = fs_write; + fs_drv.seek_cb = fs_seek; + fs_drv.tell_cb = fs_tell; + fs_drv.free_space_cb = fs_free; + fs_drv.size_cb = fs_size; + fs_drv.remove_cb = fs_remove; + fs_drv.rename_cb = fs_rename; + fs_drv.trunc_cb = fs_trunc; + + fs_drv.rddir_size = sizeof(dir_t); + fs_drv.dir_close_cb = fs_dir_close; + fs_drv.dir_open_cb = fs_dir_open; + fs_drv.dir_read_cb = fs_dir_read; + + lv_fs_drv_register(&fs_drv); +} + +/********************** + * STATIC FUNCTIONS + **********************/ + + /* Initialize your Storage device and File system. */ +static void fs_init(void) +{ + ///* Initialisation de la carte SD */ + //Serial.print(F("Init SD card... ")); + + //SPIClass* sd_spi = new SPIClass(HSPI); // another SPI + //if (!SD.begin(15, *sd_spi)) // SD-Card SS pin is 15 + //{ + // Serial.println("Card Mount Failed"); + // return; + //} +} + +/** + * Open a file + * @param drv pointer to a driver where this function belongs + * @param file_p pointer to a file_t variable + * @param path path to the file beginning with the driver letter (e.g. S:/folder/file.txt) + * @param mode read: FS_MODE_RD, write: FS_MODE_WR, both: FS_MODE_RD | FS_MODE_WR + * @return LV_FS_RES_OK or any error from lv_fs_res_t enum + */ +static lv_fs_res_t fs_open(lv_fs_drv_t* drv, void* file_p, const char* path, lv_fs_mode_t mode) +{ + uint8_t flags = 0; + + if (mode == LV_FS_MODE_WR) flags = FA_WRITE | FA_OPEN_ALWAYS; + else if (mode == LV_FS_MODE_RD) flags = FA_READ; + else if (mode == (LV_FS_MODE_WR | LV_FS_MODE_RD)) flags = FA_READ | FA_WRITE | FA_OPEN_ALWAYS; + + FRESULT res = f_open((file_t*)file_p, path, flags); + + if (res == FR_OK) + { + f_lseek((file_t*)file_p, 0); + return LV_FS_RES_OK; + } + else + { + return LV_FS_RES_UNKNOWN; + } +} + + +/** + * Close an opened file + * @param drv pointer to a driver where this function belongs + * @param file_p pointer to a file_t variable. (opened with lv_ufs_open) + * @return LV_FS_RES_OK: no error, the file is read + * any error from lv_fs_res_t enum + */ +static lv_fs_res_t fs_close(lv_fs_drv_t* drv, void* file_p) +{ + f_close((file_t*)file_p); + return LV_FS_RES_OK; +} + +/** + * Read data from an opened file + * @param drv pointer to a driver where this function belongs + * @param file_p pointer to a file_t variable. + * @param buf pointer to a memory block where to store the read data + * @param btr number of Bytes To Read + * @param br the real number of read bytes (Byte Read) + * @return LV_FS_RES_OK: no error, the file is read + * any error from lv_fs_res_t enum + */ +static lv_fs_res_t fs_read(lv_fs_drv_t* drv, void* file_p, void* buf, uint32_t btr, uint32_t* br) +{ + FRESULT res = f_read((file_t*)file_p, buf, btr, (UINT*)br); + if (res == FR_OK) return LV_FS_RES_OK; + else return LV_FS_RES_UNKNOWN; +} + +/** + * Write into a file + * @param drv pointer to a driver where this function belongs + * @param file_p pointer to a file_t variable + * @param buf pointer to a buffer with the bytes to write + * @param btr Bytes To Write + * @param br the number of real written bytes (Bytes Written). NULL if unused. + * @return LV_FS_RES_OK or any error from lv_fs_res_t enum + */ +static lv_fs_res_t fs_write(lv_fs_drv_t* drv, void* file_p, const void* buf, uint32_t btw, uint32_t* bw) +{ + FRESULT res = f_write((file_t*)file_p, buf, btw, (UINT*)bw); + if (res == FR_OK) return LV_FS_RES_OK; + else return LV_FS_RES_UNKNOWN; +} + +/** + * Set the read write pointer. Also expand the file size if necessary. + * @param drv pointer to a driver where this function belongs + * @param file_p pointer to a file_t variable. (opened with lv_ufs_open ) + * @param pos the new position of read write pointer + * @return LV_FS_RES_OK: no error, the file is read + * any error from lv_fs_res_t enum + */ +static lv_fs_res_t fs_seek(lv_fs_drv_t* drv, void* file_p, uint32_t pos) +{ + f_lseek((file_t*)file_p, pos); + return LV_FS_RES_OK; +} + +/** + * Give the size of a file bytes + * @param drv pointer to a driver where this function belongs + * @param file_p pointer to a file_t variable + * @param size pointer to a variable to store the size + * @return LV_FS_RES_OK or any error from lv_fs_res_t enum + */ +static lv_fs_res_t fs_size(lv_fs_drv_t* drv, void* file_p, uint32_t* size_p) +{ + (*size_p) = f_size(((file_t*)file_p)); + return LV_FS_RES_OK; +} + +/** + * Give the position of the read write pointer + * @param drv pointer to a driver where this function belongs + * @param file_p pointer to a file_t variable. + * @param pos_p pointer to to store the result + * @return LV_FS_RES_OK: no error, the file is read + * any error from lv_fs_res_t enum + */ +static lv_fs_res_t fs_tell(lv_fs_drv_t* drv, void* file_p, uint32_t* pos_p) +{ + *pos_p = f_tell(((file_t*)file_p)); + return LV_FS_RES_OK; +} + +/** + * Delete a file + * @param drv pointer to a driver where this function belongs + * @param path path of the file to delete + * @return LV_FS_RES_OK or any error from lv_fs_res_t enum + */ +static lv_fs_res_t fs_remove(lv_fs_drv_t* drv, const char* path) +{ + lv_fs_res_t res = LV_FS_RES_NOT_IMP; + + /* Add your code here*/ + + return res; +} + +/** + * Truncate the file size to the current position of the read write pointer + * @param drv pointer to a driver where this function belongs + * @param file_p pointer to an 'ufs_file_t' variable. (opened with lv_fs_open ) + * @return LV_FS_RES_OK: no error, the file is read + * any error from lv_fs_res_t enum + */ +static lv_fs_res_t fs_trunc(lv_fs_drv_t* drv, void* file_p) +{ + f_sync((file_t*)file_p); /*If not syncronized fclose can write the truncated part*/ + f_truncate((file_t*)file_p); + return LV_FS_RES_OK; +} + +/** + * Rename a file + * @param drv pointer to a driver where this function belongs + * @param oldname path to the file + * @param newname path with the new name + * @return LV_FS_RES_OK or any error from 'fs_res_t' + */ +static lv_fs_res_t fs_rename(lv_fs_drv_t* drv, const char* oldname, const char* newname) +{ + + FRESULT res = f_rename(oldname, newname); + + if (res == FR_OK) return LV_FS_RES_OK; + else return LV_FS_RES_UNKNOWN; +} + +/** + * Get the free and total size of a driver in kB + * @param drv pointer to a driver where this function belongs + * @param letter the driver letter + * @param total_p pointer to store the total size [kB] + * @param free_p pointer to store the free size [kB] + * @return LV_FS_RES_OK or any error from lv_fs_res_t enum + */ +static lv_fs_res_t fs_free(lv_fs_drv_t* drv, uint32_t* total_p, uint32_t* free_p) +{ + lv_fs_res_t res = LV_FS_RES_NOT_IMP; + + /* Add your code here*/ + + return res; +} + +/** + * Initialize a 'fs_read_dir_t' variable for directory reading + * @param drv pointer to a driver where this function belongs + * @param dir_p pointer to a 'fs_read_dir_t' variable + * @param path path to a directory + * @return LV_FS_RES_OK or any error from lv_fs_res_t enum + */ +static lv_fs_res_t fs_dir_open(lv_fs_drv_t* drv, void* dir_p, const char* path) +{ + FRESULT res = f_opendir((dir_t*)dir_p, path); + if (res == FR_OK) return LV_FS_RES_OK; + else return LV_FS_RES_UNKNOWN; +} + +/** + * Read the next filename form a directory. + * The name of the directories will begin with '/' + * @param drv pointer to a driver where this function belongs + * @param dir_p pointer to an initialized 'fs_read_dir_t' variable + * @param fn pointer to a buffer to store the filename + * @return LV_FS_RES_OK or any error from lv_fs_res_t enum + */ +static lv_fs_res_t fs_dir_read(lv_fs_drv_t* drv, void* dir_p, char* fn) +{ + FRESULT res; + FILINFO fno; + fn[0] = '\0'; + + do + { + res = f_readdir((dir_t*)dir_p, &fno); + if (res != FR_OK) return LV_FS_RES_UNKNOWN; + + if (fno.fattrib & AM_DIR) + { + fn[0] = '/'; + strcpy(&fn[1], fno.fname); + } + else strcpy(fn, fno.fname); + + } while (strcmp(fn, "/.") == 0 || strcmp(fn, "/..") == 0); + + return LV_FS_RES_OK; +} + +/** + * Close the directory reading + * @param drv pointer to a driver where this function belongs + * @param dir_p pointer to an initialized 'fs_read_dir_t' variable + * @return LV_FS_RES_OK or any error from lv_fs_res_t enum + */ +static lv_fs_res_t fs_dir_close(lv_fs_drv_t* drv, void* dir_p) +{ + f_closedir((dir_t*)dir_p); + return LV_FS_RES_OK; +} \ No newline at end of file diff --git a/2.Firmware/HoloCubic_fw/lv_port_fatfs.h b/2.Firmware/HoloCubic_fw/lv_port_fatfs.h new file mode 100644 index 0000000..1451e0d --- /dev/null +++ b/2.Firmware/HoloCubic_fw/lv_port_fatfs.h @@ -0,0 +1,44 @@ +/** + * @file lv_port_fs_templ.h + * + */ + + /*Copy this file as "lv_port_fs.h" and set this value to "1" to enable content*/ +#if 1 + +#ifndef LV_PORT_FS_TEMPL_H +#define LV_PORT_FS_TEMPL_H + +#ifdef __cplusplus +extern "C" { +#endif + + /********************* + * INCLUDES + *********************/ +#include "lvgl.h" +#include "ff.h" + /********************* + * DEFINES + *********************/ + void lv_fs_if_init(void); + /********************** + * TYPEDEFS + **********************/ + + /********************** + * GLOBAL PROTOTYPES + **********************/ + + /********************** + * MACROS + **********************/ + + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /*LV_PORT_FS_TEMPL_H*/ + +#endif /*Disable/Enable content*/