mirror of
https://github.com/mikecarper/MeshCore.git
synced 2026-09-27 06:27:59 +00:00
79 lines
4.4 KiB
Markdown
79 lines
4.4 KiB
Markdown
# PR #7 review and validation
|
||
|
||
Validated on 2026-09-10 against integration commit
|
||
`fa010196b130dee9a8a6fc6325d794e2f4fb9ede`, which combines base `01cc7b8a`
|
||
with PR head `c002966c` and the review fixes. This includes the stacked ESP32
|
||
memory changes already present in PR #7.
|
||
|
||
## Review fixes
|
||
|
||
- Use the [published ExpressLRS Linkflow calibration](https://github.com/ExpressLRS/Targets/blob/504178dcfa469ee32f4290d6ae9ba02e2f2f365e/TX/GEPRC%20900%20Linkflow.json),
|
||
expose 17–30 dBm, and retain the fixed +2 dBm radio drive and correct RF output
|
||
after radio recovery. Propagate startup and radio-setting failures.
|
||
- Keep Linkflow LoRa OTA enabled, as intended by the added repeater target.
|
||
- Preserve stored ACLs and flood filters when allocation fails. Release owned
|
||
buffers and prevent accidental shallow copies of their owners.
|
||
- Release heap OTA workspaces after self-serving windows; retain them for active
|
||
transfers, manual staging, folder operations, and pending application. Service
|
||
cleanup on Companions and reset staged-resume flags when a context disappears.
|
||
- Count dynamically allocated clients, filters, and OTA workspaces in the RAM
|
||
budget. Respect explicit OTA storage ownership in PlatformIO flags.
|
||
|
||
## Automated validation
|
||
|
||
- `pio test -e native -e native_kiss_modem`: **1,393/1,393 cases passed**.
|
||
- Real C++ radio-power, heap-context, ACL persistence/CLI, and shared OTA queue
|
||
tests passed. The applicable radio-power, heap-context, and shared-queue tests
|
||
also passed on Linux with AddressSanitizer and UndefinedBehaviorSanitizer.
|
||
- Display/inbox, radio receive, static DRAM, and runtime RAM regression tests
|
||
passed. ACL allocation-failure coverage verifies that stored clients survive.
|
||
- Sequential firmware builds and their memory gates passed for:
|
||
`GEPRC_Linkflow_900_repeater`, `Heltec_v2_companion_radio_ble`,
|
||
`Tbeam_SX1262_repeater_observer_mqtt`,
|
||
`heltec_v4_r8_repeater_observer_mqtt`, `RAK_4631_repeater`, and
|
||
`SenseCapIndicator-LoRa_companion_radio_full`.
|
||
|
||
## Indicator hardware validation
|
||
|
||
The original SenseCAP Indicator LoRa with 8 MiB flash and 8 MiB octal PSRAM
|
||
was reached through the MercerWoodMesh Pi over Wi-Fi. Its MAC, public identity,
|
||
board reply, and existing partition layout were checked before updating.
|
||
USB interfaces were absent, so this run does not qualify USB behavior.
|
||
|
||
The Full profile was applied to `SenseCapIndicator-LoRa_comp_radio_usb_wifi`.
|
||
The exact application is 2,149,208 bytes:
|
||
|
||
- Application SHA-256:
|
||
`7a2b11e731f946af79d1104818c7993d3897e6d8ec1f0121d27284c0f0c8c665`
|
||
- ELF SHA-256, also verified in the application descriptor:
|
||
`24e60c7785a7aefe3fb0536b0b595bf19e1264e4d5f100d201290dc95eb1761a`
|
||
|
||
This direct profile build uses the repository's default `v1.17.1` version text
|
||
and `14 Aug 2026` build-date text; the hashes above identify the tested image.
|
||
|
||
The Wi-Fi updater returned HTTP 200 and booted the application in `app1` at
|
||
`0x400000`. The previous application remains in `app0` at `0x10000`; the
|
||
partition table, NVS, and SPIFFS were not rewritten. Public identity, radio
|
||
parameters, and USB logging preference matched their pre-update values.
|
||
|
||
The existing Companion stress harness, using a TCP socket adapter, completed
|
||
100 persistent cycles and 100 reconnects in 109.9 seconds: **501 requests and
|
||
501 validated responses**, with no discarded bytes, malformed frames, or device
|
||
error flags. Device info, time, storage, and core statistics were exercised.
|
||
The text terminal exposed all four display-power controls and `display.inbox`.
|
||
The OTA folder service issued a valid `COUNT` request, received an empty-folder
|
||
reply, and returned to its disconnected state after the client closed.
|
||
|
||
After these checks, four memory snapshots showed 69,548–69,996 bytes of free
|
||
internal heap and a 61,428-byte largest block. PSRAM availability stayed at
|
||
6,408,731 bytes. Final uptime was 262 seconds, with zero error flags and an
|
||
empty outbound queue. This is a short regression check, not a long-term soak.
|
||
Raw baseline, upload, stress, and final-state records are retained on the Pi
|
||
under `/home/mikec/hwtest/runs/pr7-review/`.
|
||
|
||
No Linkflow module or RF power meter was available in this run. Linkflow power
|
||
calibration is supported by the pinned upstream table and executable driver
|
||
tests, not a physical RF output measurement. The Indicator's ESP32-S3 does not
|
||
exercise the classic ESP32 heap-OTA default; host tests and classic ESP32 builds
|
||
cover that path. Physical display readability was not inspected.
|