nx_iot_research_fetch.nx
buildroot/runtime/nx_iot_research_fetch.nx
about
nx_iot_research_fetch.nx -- SOVEREIGN multi-source web-fetch to RESEARCH how others do SMART-HOME IoT
PAIRING + UNIFICATION (operator 2026-06-22: "use the nishi researcher and see how others do this" --
pair unpaired bulbs + unify the home IoT onto our hub, S-class). Mirrors the proven
nx_idam_research_fetch / nx_docpub_research_fetch pattern: own TLS-1.3 (nx_https_fetch_follow) + the
Mozilla CA store, saves each source to knowledge/fetched/iot_*.raw so research COMPOUNDS to the Library
and can be grepped to CITE (>=2-source no-hearsay). 100% sovereign (own TLS, nx_cc->nxasm, no curl/wget/gcc).
Idempotent have-skip (also the per-fetch mmap-leak workaround; re-run fills gaps).
Axes = what "pair the bulbs + unify to a sovereign hub, S-class" must learn from the field:
(A) WIFI PROVISIONING / ONBOARDING (how an unpaired device joins a network: WPS, Wi-Fi Easy Connect/DPP,
captive-portal SoftAP, the access-point pairing dance)
(B) DISCOVERY + LOCAL CONTROL (cloud-free hub<->device: mDNS/DNS-SD, MQTT, CoAP -- the LAN floor)
(C) HUBS + UNIFY STANDARDS (how others unify: Home Assistant, openHAB, Matter, Thread, Zigbee)
(D) NETWORK ISOLATION / IoT SECURITY (the S-class IoT-SSID/VLAN segmentation pattern)
(E) VENDOR / ECOSYSTEM (TP-Link et al. -- the real fleet)
expect_exit: 0 license_tier: ORIGINAL
dependencies 4 imports · 0 importers
imports: nx_syscalls.nxnx_x509_trust_store.nxnx_trust_store_load_from_certdata.nxnx_https_fetch_follow.nx
imported by: nobody (leaf or entry point)
call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown
structs
| none |
consts
| 20 | const K_MAGIC_4194304: i64 = 4194304 |
| 21 | const K_MAGIC_8388608: i64 = 8388608 |
functions
| 23 | func gf_puts(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } |
| 24 | func gf_putn(v: i64) -> i64 |
| 34 | func have_file(path: *u8) -> i64 |
| 40 | func fetch_save(url: *u8, opath: *u8, store: *TrustStore, out: *u8, cap: i64) -> i64 |
| 57 | func main() -> i64 |