yidong b0abd91790 同步 Mini7 ONE 功能并重构 ESP32 Wi-Fi 收发 6 일 전
..
README.txt b0abd91790 同步 Mini7 ONE 功能并重构 ESP32 Wi-Fi 收发 6 일 전
build_host_test.py b0abd91790 同步 Mini7 ONE 功能并重构 ESP32 Wi-Fi 收发 6 일 전
host_main.c b0abd91790 同步 Mini7 ONE 功能并重构 ESP32 Wi-Fi 收发 6 일 전
host_prefix.h b0abd91790 同步 Mini7 ONE 功能并重构 ESP32 Wi-Fi 收发 6 일 전

README.txt

ESP32 receive/transmit refactor validation

Active implementation is entirely in DriverInterface/ESP32_WROOM_32D.c.
The older wifi_stream.h / wifi_receive_stream.inc files are not included.

Preserved contracts:
- WriteComm2(char *, uint16_t) is the only physical send path.
- g_wifi_rx_buf remains 256 bytes. g_wifi_rx_last is the ISR write cursor;
g_wifi_rx_head is the main-loop read cursor.
- Every complete Mini7 message is decoded by the Keil project's existing
tshell/van_com_algorithm.c DecodeNew, including its legacy checksum rules.
- Command formatting goes through my_sprintf, now bounded by vsnprintf.
- Diagnostics use Van_Device_Printf(VAN_LOG_WIFI, ...).

Receiving:
- Main loop drains the ring without the former 100ms gate.
- ISR detects ring-full/ORE; it does not silently overwrite unread bytes.
- AT lines, prompts and +IPD payloads are consumed in wire order.
- CIPMUX=1 and CIPDINFO=0 are configured explicitly.
- STA dispatches connection 0; SoftAP provisioning accepts client IDs 0..4
through the same streaming parser, without mixing clients' JSON fragments.
- Mini7 partial frames survive multiple +IPD segments, with a 128-byte maximum
inbound payload matching CMD_BUF_SIZE. The actual ring stays 256 bytes.
- Complete frames use a separate contiguous DecodeNew window so decoding
cannot move the hardware ring cursor or erase newly arrived input.

Sending:
- IDLE -> WAIT_PROMPT (3000ms) -> WAIT_RESULT (7000ms) -> IDLE.
- Payload is sent once per prompt transaction, without a trailing extra byte.
- TCP connection success is followed by CIPTCPOPT=0,,,6000; only its OK enables
application TX. UDP skips TCP options.
- Explicit ERROR before prompt or SEND FAIL after payload releases the pending
frame; existing application-level ACK/retry logic is responsible for retry.
- Ambiguous timeout, UART write failure, malformed +IPD or ring overrun latches
TX_FAULT and sends no further AT. Reset ESP/the device; ready clears the latch.
There is no hardware ESP reset pin configured in this module.
- Close/SSID requests are deferred until the current transaction finishes.

Host test:
python tests/wifi_refactor/build_host_test.py
In a Visual Studio compiler shell:
cl /nologo /TC /utf-8 /DONECHIP_MINI_ONE tests/wifi_refactor/generated.c DriverInterface/cJSON.c /Fe:tests/wifi_refactor/test.exe /Fo:tests/wifi_refactor/
tests/wifi_refactor/test.exe

The generator reads the CURRENT production C and actual DecodeNew, not a
duplicate decoder model. Covers maximum frame fragmentation, ring wrap,
1000 frames, binary delimiters, corruption, callbacks receiving new bytes,
prompt timeout, duplicate prompt, send-result timing, UART error, TCP/UDP setup.
Repeat with /DONECHIP_MINI_PLUS to test the other device variant.
Also covers IPD payloads larger than the ring, SoftAP setup/fragmented JSON,
prompt-only payload release, busy provisioning requests and bounded searches.

2026-10-26 hardware smoke test:
- Full rebuild of mini7_V2_debug with ONECHIP_MINI_ONE: 0 errors, 3 existing
warnings (debug watchdog unreachable code x2, unused stub_RtR x1).
- ST-LINK programming and verification passed; application reset and running.
- COM10 and the existing tool_for_mini TCP/UDP server used for validation.
- 10:32:32..10:34:37: 58 valid TCP responses, 62 SEND OK, maximum observed
response gap 5 seconds, no observed checksum errors, UART faults, AT timeouts,
reset commands or SEND FAIL. Covers periodic status queries, not a full run.
- Ambient temperature -104 indicates an unloaded sensor channel, unresolved.
- Both Keil targets share output files: use a full rebuild when changing target.
- Raw serial/network logs and AXF files are local artifacts, not test sources.