Initial import: ESP32 ZiFi32 firmware with SMB2/3 VFS bridge

Based on https://github.com/tslabs/zx-evo/tree/master/pentevo/esp32,
extended with an SMB2/3 server that exposes the ZX Evolution's real SD
card as a network share (browse/download/upload/delete), plus assorted
stability and protocol-correctness fixes in vfs_bridge.cpp and the
vendored libsmb2 - see firmware/README.md for the detailed changelog
and current status.

Also adds:
- firmware/: ready-to-flash compiled binaries + flashing instructions
- hardware/: adapter board connection diagram, PCB photo, and Gerber
  files
- src/third_party/libsmb2: vendored from sahlberg/libsmb2 (LGPL-2.1,
  see its own COPYING/LICENCE files), de-submoduled to a plain
  snapshot with local patches applied directly

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-14 16:00:05 +03:00
co-authored by Claude Sonnet 5
commit 6d835bc44c
377 changed files with 189430 additions and 0 deletions
+21
View File
@@ -0,0 +1,21 @@
#pragma once
// Phase 1 of the SMB2/3 network-share feature (see project plan): an SMB2/3
// server task with a hardcoded fake filesystem, to prove the protocol layer
// works before anything is wired to the Z80/Wild Commander side.
#define VFS_SHARE_NAME_MAX 32
extern char vfs_share_name[VFS_SHARE_NAME_MAX + 1];
void vfs_bridge_init();
void smb_server_task(void *arg);
// Start/stop the SMB2/3 server on demand (ESP_CMD_VFS_SERVER_START/STOP,
// dispatched via TASK_VFS_SERVER_START/STOP in helper_task) instead of it
// running unconditionally once WiFi comes up - the Z80 side is single-
// tasking (it can only ever be driving one plugin at a time), so there is
// no point keeping the SMB server (or the other services it pauses -
// at_uart_suspend()/tracker_suspend()) active except while the smbvfs.wmf
// plugin is actually the thing running.
void vfs_bridge_start_server();
void vfs_bridge_stop_server();