Skip to content

Module Guide

Arc is easier to read when you group the headers by job instead of reading the file list alphabetically. Use this page as the map, then open the API reference for exact method names and arguments.

Every public header also has its own generated module page with fit guidance, the exact header name, CMake feature, source landmarks, zero-start steps, and the closest proof path. Open the Module Page Index when you want the per-header pages.

How To Choose

Start with the problem, then pick the smallest module that owns that problem:

  • use arc/core.hpp for the basic Core 0/Core 1 programming model;
  • use arc/memory.hpp when buffers cross DMA, cache, PSRAM, or another core;
  • use arc/math.hpp when Core 1 does fixed-shape math, DSP, or control work;
  • use arc/net_codecs.hpp when bytes need MQTT, WebSocket, CoAP, XRCE, CRDT, BFT, URI, stream, or fixed binary record framing without a network task;
  • use arc/crypto.hpp, arc/robotics.hpp, or arc/sandbox.hpp only when the app really needs those heavier domain groups;
  • include a focused header such as arc/spi.hpp or arc/pwm.hpp when one application file only needs that lane.

In CMake, keep the same discipline. Call arc_requires(...) with the feature names that match the headers you include. That keeps ESP-IDF components explicit and avoids dragging every driver into every app.

Profile Modules

These headers are the main entry points for readers and subset builds.

HeaderUse it for
arc/core.hppCore task shape, topology, init, GPIO, timing, queues, text, and basic storage-neutral substrate pieces.
arc/memory.hppCapability buffers, cache ownership, DMA copy, descriptor chains, AXI graphs, pipelines, scrubbing, and placement helpers.
arc/net_codecs.hppURI, streams, fixed records, CRDTs, BFT votes, MQTT, WebSocket, CoAP, XRCE, and small HTTP server helpers without owning Wi-Fi.
arc/math.hppDSP, SIMD, fixed matrices, Kalman, motion, ML, and control math surfaces.
arc/crypto.hppAES, SHA, HMAC, signatures, MPI, XTS, Kyber, Paillier, PUF, secure boot, and related security helpers.
arc/robotics.hppMotor control, CNC, motion, sensors, vision, DVP/LCD, digital twin, and robotics-oriented hardware paths.
arc/sandbox.hppVM, JIT, WASM AOT, hypervisor, PMS/TEE planning, hotpatch, chaos, and sandbox policy hooks.
arc.hppCompatibility umbrella that exposes SDK-backed feature headers only when their ESP-IDF headers are visible.

Target And Naming Contract

These headers describe what silicon and language surface Arc assumes.

HeaderUse it for
arc/sdk.hppSDK-facing compatibility helpers.
arc/soc.hppCompile-time ESP32 target capability map.
arc/soc/target.hppShort target-selection constants.
arc/soc/esp32s3.hppESP32-S3 target facts.
arc/soc/esp32p4.hppESP32-P4 target facts.
arc/soc/esp32s31.hppExperimental ESP32-S31 target facts.
arc/arch/xtensa.hppXtensa-specific core and interrupt facts.
arc/arch/riscv.hppRISC-V architecture facts for experimental/ULP paths.
arc/cfg.hppKconfig-backed Arc defaults used by examples and the root app.
arc/result.hpparc::Result<T>, arc::Status, ARC_TRY, and ARC_CHECK.
arc/concepts.hppSmall compile-time contracts for payloads, digital IO, buses, waves, and control results.
arc/assume.hppOptimizer and unreachable-code hints where a contract has already been checked.

Program Shape And Ownership

Use these when deciding who owns work, lifetime, and access.

HeaderUse it for
arc/task.hppStatic FreeRTOS task memory and pinned task bring-up.
arc/borrow.hppStatic-lifetime loans, one-writer edit packs, and loan-pack alias checks with core-owner access gates.
arc/plane.hppStateful pinned workloads with explicit shared state.
arc/sketch.hppCompatibility alias for small app-style programs.
arc/tight.hppMasked deterministic step loops for the rare very-low-jitter path.
arc/lockstep.hppDual-output comparison and policy hooks for lockstep safety checks.
arc/sim.hppHost simulator FIFO, SPI byte lane, trace log, harness ticks, and pin drive/sense facades for app logic tests.
arc/bare_core.hppTrue-AMP Core 1 boot contracts for board policies outside FreeRTOS.
arc/coro.hppHeapless coroutine state machines using explicit arenas.
arc/rtos.hppSafe chrono-to-FreeRTOS tick conversion helpers.
arc/stack.hppCompile-time stack budget helpers and task stack floors.
arc/init.hppBoot-once and shared-reference init state machines.
arc/proof.hppCompile-time proof facts and cycle-budget packs for evidence-carrying workloads.
arc/claim.hppRuntime hardware ownership claims.
arc/audit.hppOpt-in misuse assertions for queues and topology-sensitive lanes.
arc/roles.hppProducer/consumer endpoint exposure without exposing root queue mutation.
arc/topology.hppOne-file board pin topology checks through arc::Pins.
arc/fsm.hppCompile-time automata and transition-table checks.
arc/flow.hppStatic source-lane-sink data path composition.
arc/ipc.hppEmergency and cross-partition IPC policy surface.
arc/cli.hppFixed command parsing from caller-owned byte spans.
arc/text.hppFixed-buffer text, JSON escaping, integer formatting, and format_to.
arc/bus.hppCompatibility naming for shared event/control buses.
arc/fence.hppSmall memory-ordering helpers used by lock-free paths.
arc/watch.hppLightweight watch/check helpers for policy code.

Memory, DMA, And Placement

Reach for these whenever a pointer crosses a hardware or core boundary.

HeaderUse it for
arc/caps.hppCapability-tagged buffers such as dmabuf, simdbuf, rtbuf, and allocators.
arc/cache.hppExplicit CPU-to-device and device-to-CPU cache ownership.
arc/cache_lock.hppPolicy facade for cache-locked hot code or data regions.
arc/copy.hppAsync DMA memcpy, exact tickets, and coherent copy leases.
arc/dma_chain.hppStatic DMA descriptor rings and owned DMA-chain buffers.
arc/axi_graph.hppCompile-time hardware graph planning over DMA endpoints and board trigger policy.
arc/pipeline.hppDescriptor endpoint composition and 2D row binding.
arc/mmu_span.hppTyped read-only spans over mapped flash or PSRAM data.
arc/distributed_mmu.hppRemote span fault planning and deterministic cache-line fetch policy.
arc/fram.hppExternal FRAM/MRAM offset allocation and typed persistence hooks.
arc/place.hppSection-placement aliases such as ARC_HOT, ARC_DMA, and ARC_RTC.
arc/prefetch.hppExplicit read/write prefetch hints for long memory walks.
arc/scrub.hppCRC sealing and background scan state for fixed memory regions.
arc/pmr.hppCapability-aware polymorphic memory-resource hooks.

Lock-Free Lanes

These modules move data without FreeRTOS queues in the hot path.

HeaderUse it for
arc/spsc.hppOne-producer/one-consumer queues, batch push/pop, and role endpoints.
arc/mpsc.hppMany-producer/one-consumer fan-in with cache-line isolated or dense cells.
arc/fanin.hppOne SPSC lane per producer with round-robin draining.
arc/reg.hppSingle-word latest-wins values.
arc/seq.hppSeqlock-style latest snapshots for larger trivially copyable payloads.
arc/rcu.hppDual-buffer latest configuration handoff.
arc/rpc.hppTyped request/reply lanes over fixed queues.
arc/rtc_ring.hppRTC-memory SPSC lane for ULP/main-core handoff.
arc/log.hppBinary event lane for realtime logs drained later by Core 0.
arc/postmortem.hppRTC no-init reboot-surviving diagnostic ring.

GPIO, Timing, And Power

Use these to move pin edges, clocks, wake, and power policy into the right hardware block.

HeaderUse it for
arc/drive.hppDedicated GPIO output.
arc/sense.hppDedicated GPIO input.
arc/gpio.hppGeneral GPIO ownership.
arc/flexroute.hppGPIO matrix routing and policy-based spare-route repair.
arc/pwm.hppLEDC hardware PWM.
arc/sigma.hppSigma-Delta pulse-density output.
arc/pulse.hppMCPWM waveform generation.
arc/bridge.hppComplementary MCPWM pairs with dead-time and optional brake input.
arc/capture.hppMCPWM capture timestamps.
arc/burst.hppRMT symbol output.
arc/trace.hppRMT symbol capture.
arc/count.hppPCNT pulse and quadrature counting.
arc/timer.hppGPTimer timebase and alarm hooks.
arc/etm.hppEvent Task Matrix event/task/channel routing.
arc/rtc.hppRTC GPIO and retained RTC helpers.
arc/sleep.hppLight/deep sleep entry and wake-source policy.
arc/pm.hppCPU/APB/no-light-sleep PM locks.
arc/time.hppGlobal SYSTIMER-backed microsecond time.
arc/clock.hppCycle counter and timing conversions.
arc/timesync.hppPeer clock discipline over fixed timestamp samples.
arc/tdma.hppDeterministic radio transmit windows.
arc/wave.hppCPU-owned square-wave generation with explicit timing-source policy.
arc/probe.hppCycle, jitter, deadline, and stall statistics.
arc/mask.hppTiny Xtensa interrupt masking guards.
arc/power_governor.hppSlack-based boost/release policy hooks.
arc/power_profiler.hppCurrent and instruction-counter profiling hooks.
arc/temp.hppInternal die-temperature sensor.
arc/touch.hppCapacitive touch controller and channel ownership.
arc/rng.hppHardware random bytes and values.
arc/wdt.hppTask watchdog setup, users, and feeds.
arc/fuse.hppeFuse, MAC, package, and secure-version reads.

Buses, Displays, And Data Capture

These headers bind real ESP32-S3 peripherals to typed owners.

HeaderUse it for
arc/any.hppNo-heap type erasure for slow-path GPIO/I2C/SPI/UART-style drivers.
arc/i2c.hppI2C master bus and device ownership.
arc/i2c_slave.hppI2C slave ownership.
arc/spi.hppSPI master bus/device, transfer tickets, and coherent queue/finish.
arc/spi_slave.hppSPI slave queue/finish ownership.
arc/i2s.hppStandard, TDM, and PDM I2S DMA lanes.
arc/uart.hppUART ports, pins, framing, buffers, and runtime baud changes.
arc/usb.hppUSB Serial/JTAG byte IO.
arc/otg.hppNative USB OTG PHY ownership.
arc/usb_device.hppUSB device descriptors, Chapter 9 state, class-facing FIFO bridges.
arc/usb_host.hppUSB host bring-up, polling, and transfer policy hooks.
arc/sdio_slave.hppSDIO slave coherent queue/finish semantics.
arc/sd.hppSD/MMC FAT mount and raw sector access.
arc/adc.hppADC pad descriptors and oneshot reads.
arc/scope.hppADC continuous DMA capture.
arc/can.hppTWAI/CAN ownership, filters, TX/RX, and counters.
arc/dvp.hppLCD_CAM DVP camera capture.
arc/i80.hppLCD_CAM Intel 8080 parallel output.
arc/rgb.hppRGB LCD panel output and frame-buffer ownership.
arc/pru.hppPRU-style LCD_CAM/I2S descriptor output and parallel capture.

Storage And Update

Keep file, flash, and firmware update work on Core 0.

HeaderUse it for
arc/fs.hppSPIFFS and FAT-on-flash VFS mounts.
arc/file.hppRAII FILE* ownership for mounted VFS paths.
arc/store.hppTyped NVS blobs and fixed text config.
arc/ota.hppStaged OTA write, slot state, confirm, and rollback.
arc/space.hppFlash, partition, image, and heap capacity reporting.
arc/flash_log.hppFixed-record queue flushed through a storage sink.
arc/secure_update.hppDecrypt/verify/write policy composition for encrypted OTA streams.
arc/flash_off.hppPolicy guard for flash/cache-off critical sections.

Network, Radio, And Wire Protocols

The radio owner lives on Core 0. Protocol codecs stay caller-buffered.

HeaderUse it for
arc/net.hppShared Wi-Fi radio base.
arc/ip.hppIP readiness and address-family helpers.
arc/uri.hppHeapless URI parsing and percent encode/decode.
arc/tcp.hppDirect TCP client sockets.
arc/poll.hppHeapless select() wrapper for caller-owned sockets.
arc/pbuf.hppRAII lwIP packet-buffer ownership.
arc/tls.hppDirect ESP-TLS client sessions.
arc/http.hppESP-IDF HTTP/HTTPS client RAII wrapper.
arc/http_server.hppSmall no-heap HTTP request parser, router, and response builder.
arc/stream.hppExact byte streams, length-prefixed frames, and small stream erasure.
arc/pack.hppFixed binary record schemas and struct codecs.
arc/mqtt.hppMQTT 3.1.1 codec and session helper.
arc/ws.hppWebSocket handshake and frame codec.
arc/coap.hppCoAP datagram codec.
arc/xrce.hppFixed-buffer DDS-XRCE message and submessage framing.
arc/crdt.hppHeapless CRDT counters, registers, and fixed replicated-state frames.
arc/bft.hppBounded BFT vote collection and quorum certificates for fleet decisions.
arc/mdns.hppmDNS host and service advertisement.
arc/eap.hppWPA2/WPA3 Enterprise setup for the shared STA radio.
arc/udp.hppReusable Core 0 UDP transport plane.
arc/espnow.hppReusable ESP-NOW transport plane.
arc/csi.hppWi-Fi CSI capture and feature extraction.
arc/ftm.hppWi-Fi FTM ranging and multilateration helpers.
arc/fabric.hppStatic TDMA mesh routing over ESP-NOW-style slots.
arc/rdma.hppAligned raw Wi-Fi write-frame planning.
arc/netrpc.hppStruct-codec commands over radio or transport payloads.
arc/swarm.hppDistributed snapshots, schedules, and swarm helper types.
arc/ethernet.hppRaw Ethernet frame ring for policy-owned MAC/PHY paths.
arc/tsn.hppTime-aware Ethernet gate schedule checks for deterministic transmit windows.
arc/w5500.hppPolicy-driven W5500 raw Ethernet path.
arc/thread.hppThread/OpenThread policy bridge.
arc/ble.hppNimBLE lifecycle, GAP, advertising, and scanning bridge.
arc/ble_mesh.hppBLE Mesh payload validation and policy hooks.

DSP, Control, ML, And Vision

These modules are for deterministic compute, not dynamic frameworks.

HeaderUse it for
arc/dsp.hppDot/scale/mix/MAC, FIR, PID, biquad, SOS, and state-space kernels.
arc/simd.hppExplicit S3-focused vector and image/math kernels.
arc/matrix.hppFixed-size matrix math and adaptive LQR identification.
arc/kalman.hppDeterministic Kalman correction helpers.
arc/ml.hppFixed-shape tensor, dense, quantized dense, conv, pool, and inference surfaces.
arc/snn.hppSpike-driven inference primitives.
arc/nav.hppESKF and quaternion navigation helpers.
arc/foc.hppBLDC field-oriented control and motor-control helpers.
arc/motion.hppBounded synchronized motion plans.
arc/cnc.hppKinematics and no-allocation G-code parsing.
arc/maglev.hppUnstable state-space control surfaces.
arc/hls.hppHLS-shaped fixed-loop kernels and silicon-plan metadata.
arc/wavefront.hppMultichannel acoustic phase planning and synthesis.
arc/digital_twin.hppHIL plant stepping, fixed-horizon forecasting, and encoder-output policy hooks.
arc/hil.hppHIL-facing helper types and evidence surfaces.
arc/isp.hppCaller-buffer camera ISP kernels.
arc/vision.hppSobel, optical flow, visual servo, and related vision kernels.
arc/vision_accel.hppPPA/JPEG/H264 frame and bitstream plan validation.
arc/vslam.hppVisual SLAM correction hooks.
arc/star_tracker.hppStar centroid and catalog matching helpers.
arc/ecs.hppStructure-of-arrays style entity/control data helpers.
arc/acoustic_slam.hppFMCW chirp, TDoA, range, and acoustic swarm helpers.
arc/hyper_matrix.hppFixed probability tensor fusion for swarm observations.
arc/lifi.hppManchester optical symbol generation.
arc/sdr.hppLCD_CAM pulse-stream preparation for SDR experiments.
arc/covert.hppPWM/Sigma-Delta FSK symbol planning for experimental air-gap channels.

Crypto, Security, VM, And Sandbox

These are policy surfaces. Key custody, trust decisions, and product security rules stay above Arc.

HeaderUse it for
arc/aes.hppAES block, stream modes, and GCM.
arc/sha.hppAccelerated SHA hashing.
arc/hmac.hppeFuse-keyed HMAC and temporary JTAG unlock.
arc/sign.hppDigital Signature peripheral operations.
arc/mpi.hppMove-only mbedTLS big integers.
arc/xts.hppEncrypted flash read/write helpers.
arc/kyber.hppCaller-buffer ML-KEM-shaped polynomial/KEM surfaces.
arc/paillier.hppModular arithmetic surfaces for encrypted telemetry aggregation.
arc/puf.hppEntropy sampling, extraction, and key derivation hooks.
arc/cloak.hppTiming/power side-channel policy hooks.
arc/blackbox.hppSealed Merkle-linked flight-recorder payloads.
arc/cert_bundle.hppCertificate-bundle policy hooks.
arc/nvs_crypto.hppEncrypted-NVS policy hooks.
arc/secure_boot.hppSecure-boot state and policy hooks.
arc/pms.hppESP32-S3 permission-control region facade.
arc/tee.hppSecure/non-secure world assignment planning.
arc/vm.hppBPF bytecode execution and sandbox helpers.
arc/jit.hppBounded BPF-to-executable-word translation hooks.
arc/hotswap.hppSigned native, BPF, and WASM hot-swap staging policy.
arc/wasm_aot.hppBounded WASM AOT translation policy surface.
arc/migrator.hppFixed fleet idle-core selection plus WASM snapshot, transport, and resume helpers.
arc/hypervisor.hppRestricted partition planning and trap decisions.
arc/hotpatch.hppExecutable payload loading and IRAM detour policy hooks.
arc/chaos.hppBounded fault injection and postmortem logging.
arc/crypto_dma.hppHardware-to-hardware crypto descriptor job planning.
arc/crypto_selftest.hppCaller-owned KAT-style crypto self-test workspaces.
arc/interrupt_matrix.hppDirect interrupt routing contracts.
arc/provisioning.hppProvisioning-state wrappers.

ULP And Low-Power Coprocessor

Use these when the main cores should sleep while tiny policy code keeps running.

HeaderUse it for
arc/ulp.hppULP RISC-V/FSM load, run, interrupt, and shared memory controls.
arc/ulp_asm.hppCompile-time ULP RISC-V program assembly.
arc/ulp_cxx.hppTiny C++ builder, GPIO/I2C/ADC, and SleepFsm-style ULP building blocks.
arc/ulp_ml.hppULP-side int8 dense inference and semantic/audio wake helpers.
arc/lp_core.hppESP32-P4 LP-core entry tags, image metadata, and shared handoff lanes.
arc/intermittent.hppRTC no-init checkpoints for brownout/intermittent execution.

Observability And Trace

These modules make runtime evidence exportable without doing heavy work in the hot loop.

HeaderUse it for
arc/trace_event.hppTrace-event JSON fragments from binary log events.
arc/trace_stream.hppDraining binary logs to UDP, WebSocket, file, or custom sinks.
arc/trace_live.hppHalf-full trace chunk handoff to policy-owned sinks.
arc/perfetto.hppCompact binary Perfetto trace records.
arc/mcap.hppFixed-buffer MCAP telemetry records.
arc/trax.hppXtensa TRAX instruction trace memory control.

Detail Headers

Headers under arc/detail/ are implementation support for public modules. Do not start a new app from them.

HeaderUse it for
arc/detail/cold.hppInternal cold-path annotations.
arc/detail/owner.hppInternal move-only ownership helpers.
arc/detail/quant.hppInternal quantized rounding helpers.
arc/detail/scoped_result.hppInternal scoped-callback return-shape helpers.

Next Step

Once you know the module, open the API reference:

ESP32-S3 first. ESP-IDF native. Static ownership by default.