Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Configuration surface

One fact can be spelled several ways. Only one of them is a place to make a decision; the rest carry that decision across a layer boundary. This page separates the two, because a list that does not is a list of nine ways to set a locator (issue 0934).

Every symbol on this page is one a user may set. Kconfig says so itself: each carries a PROMPT, which is what a prompt means. An earlier draft split these into public and carrier by asking who read them, and got the layer wrong — cmake reading ${CONFIG_X} to emit ZPICO_X=<value> is cmake CARRYING the choice, not owning it.

The real carriers are one layer down and are NOT Kconfig symbols: the ZPICO_* / NROS_* environment variables, the -D cache variables and the compile definitions this page’s symbols feed. Setting one of those by hand bypasses the question Kconfig asked.

The evidence column is where each value is consumed, so a symbol with no reader stands out: a prompt asking a question whose answer is discarded is worse than no prompt.

80 Kconfig symbols — 79 settable, 1 provided for application code, 0 derived, 0 dead.

Facts with more than one spelling

Where a decision has an authority OUTSIDE Kconfig, that authority is the place to set it and these symbols carry it.

RMW backend

Set it here: [system].rmw in the bringup’s system.toml

symboldefaultclassevidence
CONFIG_NROS_RMW_ZENOHpubliccmake, rust-source, kconfig select/depends
CONFIG_NROS_RMW_XRCEpublicc-source, cmake, rust-source
CONFIG_NROS_RMW_CYCLONEDDSpubliccmake, rust-source, kconfig select/depends

nano_ros_workspace(BACKEND …) and -DNROS_RMW are the cmake carriers. cmake already warns that BACKEND silently beats the cache var; nothing yet compares either against [system].rmw.

ROS domain id

Set it here: [system].domain_id in system.toml

symboldefaultclassevidence
CONFIG_NROS_DOMAIN_ID0publicc-source, cmake, rust-source, kconfig select/depends
CONFIG_NROS_CYCLONE_DOMAIN_IDNROS_DOMAIN_IDpublicc-source, cmake, rust-source

CONFIG_NROS_CYCLONE_DOMAIN_ID defaults FROM NROS_DOMAIN_ID — the one derivation edge in this cluster. Pinning it to a literal is the phase-180 split-brain (CLAUDE.md).

Router / agent endpoint

Set it here: [system].locator in system.toml

symboldefaultclassevidence
CONFIG_NROS_ZENOH_LOCATORtcp/127.0.0.1:7447publicc-source, cmake, rust-source
CONFIG_NROS_XRCE_AGENT_ADDR127.0.0.1publicc-source, rust-source
CONFIG_NROS_XRCE_AGENT_PORT2018publicc-source, rust-source

Zephyr is exempt from the cmake precedence chain by design (see the exemption comments in NanoRosEntry.cmake — no line ref, they move), so the Kconfig spelling is the carrier there rather than an override.

Executor sizing

Set it here: environment knobs at build time (see the pool inventory)

symboldefaultclassevidence
CONFIG_NROS_EXECUTOR_MAX_CBS-1publicforwarded-to-cargo, cmake, rust-source
CONFIG_NROS_EXECUTOR_MAX_SC8publicforwarded-to-cargo, cmake
CONFIG_NROS_EXECUTOR_MAX_NODES-1publicforwarded-to-cargo, cmake
CONFIG_NROS_EXECUTOR_ARENA_SIZE0publicforwarded-to-cargo, cmake, rust-source
CONFIG_NROS_EXECUTOR_MAX_SHUTDOWN_CBS2publicforwarded-to-cargo, cmake, rust-source
CONFIG_NROS_EXECUTOR_ACTION_CLIENTS-1publicforwarded-to-cargo, cmake
CONFIG_NROS_SUBSCRIPTION_BUFFER_SIZE-1publicforwarded-to-cargo, cmake
CONFIG_NROS_PARAM_SERVICE_BUFFER_SIZE4096publicforwarded-to-cargo, cmake
CONFIG_NROS_MAX_PARAMETERS32publicforwarded-to-cargo, cmake, rust-source

On Zephyr the Kconfig spelling IS how a user sets these — it is a carrier only in the sense that the env var is what the build script reads. Issue 0460 is what happens when the bridge breaks.

Public — set these

Read by compiled code or forwarded to a build script. On Zephyr the CONFIG_ spelling IS the way to state these; the env var is the carrier.

symboldefaultevidence
CONFIG_NROS_BATCH_UNICAST_SIZE1024forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_BOOT_REPORTncmake, rust-source
CONFIG_NROS_CODEGEN_TOOLcmake
CONFIG_NROS_CPP_APIcmake, kconfig select/depends
CONFIG_NROS_CYCLONE_CONFIG_XMLc-source
CONFIG_NROS_C_APIcmake
CONFIG_NROS_FAULT_LOGncmake, kconfig select/depends
CONFIG_NROS_FAULT_LOG_FLASHnc-source
CONFIG_NROS_FRAG_MAX_SIZE2048forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_GET_POLL_INTERVAL_MS10forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_GET_REPLY_BUF_SIZE4096forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_GRAPH_CACHE_SIZE65536cmake
CONFIG_NROS_MAX_LARGE_SUBSCRIBERS-1forwarded-to-cargo, cmake
CONFIG_NROS_MAX_LIVELINESS16forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_MAX_PENDING_GETS4forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_MAX_PUBLISHERS-1forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_MAX_QUERYABLES-1forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_MAX_SUBSCRIBERS-1forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_RMW_SUBSCRIBER_SLOTS-1forwarded-to-cargo, cmake
CONFIG_NROS_RUST_APINROS_RMW_ZENOHcmake, kconfig select/depends
CONFIG_NROS_SERVICE_BUFFER_SIZE1024forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_SNTP_EPOCHc-source, rust-source, kconfig select/depends
CONFIG_NROS_SNTP_SERVER10.0.2.2c-source
CONFIG_NROS_SNTP_TIMEOUT_MS3000c-source
CONFIG_NROS_SUBSCRIBER_BUFFER_SIZE-1forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_SUBSCRIBER_LARGE_SIZE-1forwarded-to-cargo, cmake
CONFIG_NROS_SUBSCRIBER_RING_DEPTH4forwarded-to-cargo, cmake
CONFIG_NROS_TRACE_CALLBACKScmake
CONFIG_NROS_TRANSPORT_SERIALkconfig select/depends
CONFIG_NROS_XRCE_BUFFER_SIZE1024forwarded-to-cargo, cmake
CONFIG_NROS_XRCE_MAX_SERVICE_CLIENTS4forwarded-to-cargo, cmake
CONFIG_NROS_XRCE_MAX_SERVICE_SERVERS-1forwarded-to-cargo, cmake
CONFIG_NROS_XRCE_MAX_SUBSCRIBERS-1forwarded-to-cargo, cmake
CONFIG_NROS_XRCE_STREAM_HISTORY16forwarded-to-cargo, cmake
CONFIG_NROS_XRCE_TRANSPORT_MTU512forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_ZENOH_AUTO_RECONNECTycmake
CONFIG_NROS_ZENOH_LEASE_FACTOR3c-define, cmake
CONFIG_NROS_ZENOH_LEASE_MS10000c-define, cmake
CONFIG_NROS_ZENOH_LEASE_PRIORITY200c-define, cmake, rust-source
CONFIG_NROS_ZENOH_LINK_CANncmake
CONFIG_NROS_ZENOH_LINK_ISOTPncmake, kconfig select/depends
CONFIG_NROS_ZENOH_LINK_SERIALncmake, kconfig select/depends
CONFIG_NROS_ZENOH_LINK_TCPycmake
CONFIG_NROS_ZENOH_LINK_UDP_MULTICASTncmake
CONFIG_NROS_ZENOH_LINK_UDP_UNICASTncmake
CONFIG_NROS_ZENOH_LINK_WSncmake
CONFIG_NROS_ZENOH_MULTI_THREADycmake, kconfig select/depends
CONFIG_NROS_ZENOH_PUBLICATIONycmake
CONFIG_NROS_ZENOH_QUERYycmake
CONFIG_NROS_ZENOH_QUERYABLEycmake
CONFIG_NROS_ZENOH_RAWETH_TRANSPORTncmake
CONFIG_NROS_ZENOH_READ_PRIORITY200c-define, cmake, rust-source
CONFIG_NROS_ZENOH_SCOUTINGncmake
CONFIG_NROS_ZENOH_SOCKET_TIMEOUT_MS100c-define, cmake
CONFIG_NROS_ZENOH_SUBSCRIPTIONycmake
CONFIG_NROS_ZENOH_TX_BATCHycmake, rust-source, kconfig select/depends
CONFIG_NROS_ZENOH_TX_BATCH_FLUSH_MS50forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_ZENOH_TX_SPLIT_LOCKycmake, rust-source
CONFIG_NROS_ZEPHYR_HEAP_SIZE65536forwarded-to-cargo, c-source, cmake, rust-source
CONFIG_NROS_ZEPHYR_STACKS_IN_DTCMncmake
CONFIG_NROS_ZEPHYR_TASK_SLOTS4c-define, c-source, cmake
CONFIG_NROS_ZEPHYR_TASK_STACK_SIZE0c-define, cmake

Provided for application code

No reader in THIS tree, and not dead: the guides teach an application to use these in its own main(). Kconfig generating the macro is the service. Each names where that contract is written down.

symboldefaultevidence
CONFIG_NROS_INIT_DELAY_MS2000docs/guides/cpp-api.md:451 shows an application calling zpico_zephyr_wait_network(CONFIG_NROS_INIT_DELAY_MS) from its own main(); docs/guides/zephyr-setup.md:220 documents it as a knob.