From e8964de1d3e3af1a3953a6ff53905b71ef9c8efd Mon Sep 17 00:00:00 2001 From: Thorsten von Eicken Date: Mon, 6 Jan 2020 22:24:59 -0800 Subject: [PATCH] generate espfs image and compile as C file --- mkespfs.py | 87 ++++++++++++++++++++++++++++--------------------- pio-genespfs.py | 23 +++++++++++++ platformio.ini | 12 ++++--- src/main.c | 8 ++--- 4 files changed, 82 insertions(+), 48 deletions(-) create mode 100644 pio-genespfs.py diff --git a/mkespfs.py b/mkespfs.py index 5c9d4a2..5368b70 100755 --- a/mkespfs.py +++ b/mkespfs.py @@ -1,43 +1,56 @@ #! /usr/bin/python3 +# Given a directory name as argument, this script generates an espfs filesystem image +# with all the html, js, css, png, and ico files found in the directory tree. +# Each file is compressed with gzip so it can be served up in compressed form from the esp8266. from sys import argv, exit, stderr, stdout from pathlib import Path import re, gzip, struct -MAGIC = 0x73665345 -FL_GZIP = 2 # gzipped file flag -FL_LAST = 1 # last entry file flag - -if len(argv) != 2 or not Path(argv[1]).is_dir(): - print("Usage: {} directory".format(argv[0]), file=stderr) - exit(1) -dir = argv[1] - -f_html = list(Path(dir).rglob('*.html')) -f_css = list(Path(dir).rglob('*.css')) -f_js = list(Path(dir).rglob('*.js')) -f_img = list(Path(dir).rglob('*.ico')) + list(Path(dir).rglob('*.png')) -f_all = f_html + f_css + f_js + f_img - -for fn in f_all: - if not fn.is_file(): continue - out_path = fn.relative_to(dir).as_posix().encode('ascii') - info = fn.stat() - data_un = fn.read_bytes() - data_comp = gzip.compress(data_un) - - print("Processing {} -> {}[{}], {}->{} bytes".format(fn, out_path, len(out_path), info.st_size, - len(data_comp)), file=stderr) - - header = struct.pack(' {}[{}], {}->{} bytes".format(fn, out_path, len(out_path), info.st_size, + # len(data_comp)), file=stderr) + + header = struct.pack(' -<*/test/> -<*/*/test/> -monitor_speed = 115200 -upload_resetmethod = ck build_flags = -Isrc/include -I. -Wl,-Tld/eagle.flash.4m1m.app1.ld @@ -20,8 +17,13 @@ build_flags = -DMQTT -DREST -DSOCKET -DWEBSERVER -DSYSLOG -DCHANGE_TO_STA=yes -DESP_HOSTNAME=esp-link-v3 +extra_scripts = pre:pio-genespfs.py - +[env:esp12e] +board = esp12e +monitor_speed = 115200 +upload_resetmethod = ck upload_speed = 460800 +upload_port = /dev/ttyUSB0 #upload_speed = 230400 diff --git a/src/main.c b/src/main.c index 3eb0180..09a4805 100644 --- a/src/main.c +++ b/src/main.c @@ -131,9 +131,7 @@ static void ICACHE_FLASH_ATTR prHeapTimerCb(void *arg) { char* esp_link_version = VERS_STR(VERSION); // address of espfs binary blob -#if PIO_HACK -extern uint32_t _binary_espfs_img_start; -#endif +extern uint8_t espfs_image[]; extern void app_init(void); extern void mqtt_client_init(void); @@ -186,10 +184,8 @@ user_init(void) { serledInit(); // Wifi wifiInit(); -#if PIO_HACK // init the flash filesystem with the html stuff - espFsInit(espLinkCtx, &_binary_espfs_img_start, ESPFS_MEMORY); -#endif + espFsInit(espLinkCtx, espfs_image, ESPFS_MEMORY); //EspFsInitResult res = espFsInit(&_binary_espfs_img_start); //os_printf("espFsInit %s\n", res?"ERR":"ok");