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*/