mirror of
https://github.com/mikecarper/MeshCore.git
synced 2026-10-22 20:01:17 +00:00
Include and qualify Meshtext in RAK4631 Full Companion
Port Meshtext settings to verified atomic nRF52 storage and use the existing radio RNG and hardware entropy. Keep the ExtraFS boundary, GPS, contacts, channel count and 8 KiB stack unchanged; omit unused library data to fit the image. Require linked codec and Companion transport evidence and build the real RAK Full profile in CI. Add configuration and storage-failure regression coverage.
This commit is contained in:
1 parent
a31b19ed8a
commit
9ce2a076eb
13 files changed
+515
-9
No files matched your search
@@ -70,6 +70,10 @@ def parse_args() -> argparse.Namespace:
|
||||
parser.add_argument("--capability", action="append", default=[])
|
||||
parser.add_argument("--reduction", action="append", default=[])
|
||||
parser.add_argument("--require-ota", action="store_true")
|
||||
parser.add_argument(
|
||||
"--require-meshtext", action="store_true",
|
||||
help="Require linked Meshtext encode/decode and Companion raw-frame transport implementations.",
|
||||
)
|
||||
parser.add_argument("--firmware-bin", type=Path)
|
||||
parser.add_argument("--partitions", type=Path)
|
||||
parser.add_argument("--dfu-package", type=Path)
|
||||
@@ -190,6 +194,7 @@ def main() -> int:
|
||||
checks = []
|
||||
malformed = False
|
||||
third_party_notices = []
|
||||
codec_symbols, chat_symbols = [], []
|
||||
try:
|
||||
codec_symbols, chat_symbols = meshtext_evidence(args.image)
|
||||
if codec_symbols:
|
||||
@@ -202,6 +207,10 @@ def main() -> int:
|
||||
except (OSError, ValueError) as error:
|
||||
print(f"capability check: cannot qualify linked Meshtext code: {error}", file=sys.stderr)
|
||||
malformed = True
|
||||
if args.require_meshtext and not chat_symbols:
|
||||
checks.append({"capability": MESHTEXT_CAPABILITY,
|
||||
"evidence": "Meshtext encode/decode, Companion send/receive, and Dispatcher raw-frame queue implementations",
|
||||
"present": False, "source": "linked ELF symbols"})
|
||||
application = b""
|
||||
if args.expect_application:
|
||||
try:
|
||||
@@ -237,6 +246,10 @@ def main() -> int:
|
||||
capabilities = stable_unique(
|
||||
args.capability + [check["capability"] for check in checks]
|
||||
)
|
||||
if not chat_symbols:
|
||||
# Neither a requested capability nor CLI strings prove the optional
|
||||
# codec and its complete Companion transport survived linking.
|
||||
capabilities = [value for value in capabilities if value != MESHTEXT_CAPABILITY]
|
||||
missing = [check for check in checks if not check["present"]]
|
||||
ota_methods = stable_unique([
|
||||
check["capability"].removeprefix("ota.update.")
|
||||
|
||||
Reference in new issue
Block a user