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.

131 Kconfig symbols — 61 settable, 1 provided for application code, 69 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_ZENOH—publiccmake, rust-source, kconfig select/depends
CONFIG_NROS_RMW_XRCE—publicc-source, cmake, rust-source
CONFIG_NROS_RMW_CYCLONEDDS—publiccmake, 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_ID0publicforwarded-to-cargo, c-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-1derivedforwarded-to-cargo, cmake, rust-source
CONFIG_NROS_EXECUTOR_MAX_SC-1derivedforwarded-to-cargo, cmake, rust-source
CONFIG_NROS_EXECUTOR_MAX_NODES-1derivedforwarded-to-cargo, cmake, rust-source
CONFIG_NROS_EXECUTOR_ARENA_SIZE0derivedforwarded-to-cargo, cmake, rust-source
CONFIG_NROS_EXECUTOR_MAX_MONITORS-1derivedforwarded-to-cargo, cmake, rust-source
CONFIG_NROS_EXECUTOR_MAX_AGE_MONITORS-1derivedforwarded-to-cargo, cmake, rust-source
CONFIG_NROS_EXECUTOR_MAX_SHUTDOWN_CBS2derivedforwarded-to-cargo, cmake, rust-source
CONFIG_NROS_EXECUTOR_ACTION_CLIENTS-1derivedforwarded-to-cargo, cmake, rust-source
CONFIG_NROS_SUBSCRIPTION_BUFFER_SIZE-1derivedforwarded-to-cargo, cmake, rust-source
CONFIG_NROS_PARAM_SERVICE_BUFFER_SIZE-1derivedforwarded-to-cargo, cmake, rust-source
CONFIG_NROS_MAX_PARAMETERS-1derivedforwarded-to-cargo, cmake, rust-source
CONFIG_NROS_MAX_PARAM_NAME_LEN-1derivedforwarded-to-cargo, cmake, rust-source
CONFIG_NROS_MAX_STRING_VALUE_LEN-1derivedforwarded-to-cargo, cmake, rust-source
CONFIG_NROS_MAX_ARRAY_LEN-1derivedforwarded-to-cargo, cmake, rust-source
CONFIG_NROS_MAX_BYTE_ARRAY_LEN-1derivedforwarded-to-cargo, cmake, rust-source
CONFIG_NROS_MAX_PARAM_DESCRIPTION_LEN256derivedforwarded-to-cargo, cmake, rust-source
CONFIG_NROS_MAX_PARAM_CONSTRAINTS_LEN0derivedforwarded-to-cargo, cmake, rust-source
CONFIG_NROS_PARAM_EVENTS_DEPTH1derivedforwarded-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_ARENA_EXHAUSTION_IS_FATALy if NROS_BOOT_REPORTcmake, rust-source
CONFIG_NROS_BOOT_REPORTy if ARCH_POSIXc-source, cmake, rust-source, kconfig select/depends
CONFIG_NROS_CAPABILITY_LIFECYCLE—rust-source, kconfig select/depends
CONFIG_NROS_CAPABILITY_PARAM_SERVICES—cmake, rust-source, kconfig select/depends
CONFIG_NROS_CODEGEN_TOOL—cmake
CONFIG_NROS_CPP_API—cmake, rust-source, kconfig select/depends
CONFIG_NROS_CYCLONE_CONFIG_XML—c-source
CONFIG_NROS_C_API—cmake, rust-source
CONFIG_NROS_FAULT_LOGncmake, kconfig select/depends
CONFIG_NROS_FAULT_LOG_FLASHnc-source
CONFIG_NROS_HEAP_EXHAUSTION_IS_FATALy if NROS_BOOT_REPORTc-source, rust-source
CONFIG_NROS_MONITOR_ARM_GRACE_MS0forwarded-to-cargo, c-source, cmake, rust-source
CONFIG_NROS_MONITOR_ARM_ON_CALL—c-source, cmake, rust-source
CONFIG_NROS_PARAM_STORE—cmake, rust-source, kconfig select/depends
CONFIG_NROS_RUST_APINROS_RMW_ZENOHcmake, kconfig select/depends
CONFIG_NROS_SNTP_EPOCH—c-source, rust-source, kconfig select/depends
CONFIG_NROS_SNTP_SERVER10.0.2.2c-source
CONFIG_NROS_SNTP_TIMEOUT_MS3000c-source
CONFIG_NROS_TRACE_CALLBACKS—cmake, kconfig select/depends
CONFIG_NROS_TRACE_TAKES—c-source, cmake, rust-source
CONFIG_NROS_TRACE_TIMER_EVERY1forwarded-to-cargo, c-source, cmake, rust-source
CONFIG_NROS_TRANSPORT_SERIAL—kconfig select/depends
CONFIG_NROS_VIOLATION_DRAIN_REPORT—c-source, cmake, rust-source
CONFIG_NROS_ZENOH_AUTO_RECONNECTycmake
CONFIG_NROS_ZENOH_LEASE_FACTOR3c-define, cmake
CONFIG_NROS_ZENOH_LEASE_MS60000c-define, cmake
CONFIG_NROS_ZENOH_LINK_CANncmake, kconfig select/depends
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_SCOUTINGncmake
CONFIG_NROS_ZENOH_SERIAL_FIFO_RXWATER1c-define
CONFIG_NROS_ZENOH_SERIAL_FIFO_WATERMARK—cmake, kconfig select/depends
CONFIG_NROS_ZENOH_SERIAL_ISR_STATS—cmake
CONFIG_NROS_ZENOH_SERIAL_RX_RING_BYTES1024cmake
CONFIG_NROS_ZENOH_SERIAL_TCM—cmake, kconfig select/depends
CONFIG_NROS_ZENOH_SERIAL_TX_RING_BYTES2048cmake
CONFIG_NROS_ZENOH_SERIAL_UART_ASYNC—cmake, kconfig select/depends
CONFIG_NROS_ZENOH_SERIAL_UART_ASYNC_RX_TIMEOUT_US25cmake
CONFIG_NROS_ZENOH_SUBSCRIPTIONycmake
CONFIG_NROS_ZEPHYR_MAX_TIERS4c-define, 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, c-source, cmake
CONFIG_NROS_ZEPHYR_TIER_STACK_SIZE16384c-define, c-source, cmake, rust-source

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 shows an application calling nros_platform_zephyr_wait_network(CONFIG_NROS_INIT_DELAY_MS) from its own main(); docs/guides/zephyr-setup.md:220 documents it as a knob.

Derived — selected by another symbol

No Kconfig prompt, so not asked about directly.

symboldefaultevidence
CONFIG_NROS_ACTION_INBOX_BYTES-1forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_ACTION_INBOX_DEPTH4forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_BATCH_UNICAST_SIZE1024forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_EXECUTOR_BACKING_U64S-1rust-source
CONFIG_NROS_EXECUTOR_MAX_VIOLATIONS8forwarded-to-cargo, cmake, rust-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, rust-source
CONFIG_NROS_GRAPH_MAX_ENTITIES0rust-source
CONFIG_NROS_LOG_BUFFER_SIZE256forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_LOG_DYNAMIC_LOGGERS16forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_LOG_EARLY_RECORDS4forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_LOG_MAX_LEVEL0forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_LOG_ROSOUT_RECORDS16forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_MAX_LARGE_SUBSCRIBERS-1forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_MAX_LIVELINESS-1forwarded-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_PARAM_SERVICE_INBOX_BYTES-1forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_PARAM_SERVICE_INBOX_DEPTH1forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_PUBSUB_QOS_DEPTH10rust-source
CONFIG_NROS_RMW_LOCAL_QUERYABLE-1forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_RMW_SUBSCRIBER_SLOTS-1forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_SERVICE_BUFFER_SIZE1024forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_SERVICE_INBOX_BYTES-1forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_SERVICE_INBOX_DEPTH4forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_SUBSCRIBER_BUFFER_SIZE-1forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_SUBSCRIBER_LARGE_SIZE-1forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_SUBSCRIBER_RING_DEPTH4forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_XRCE_BUFFER_SIZE1024forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_XRCE_CUSTOM_TRANSPORT_MTUNROS_XRCE_TRANSPORT_MTUforwarded-to-cargo, cmake, rust-source
CONFIG_NROS_XRCE_MAX_SERVICE_CLIENTS4forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_XRCE_MAX_SERVICE_SERVERS-1forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_XRCE_MAX_SUBSCRIBERS-1forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_XRCE_SERVICE_REPLY_BUFFER_SIZE-1forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_XRCE_SERVICE_REQUEST_BUFFER_SIZE-1forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_XRCE_STREAM_HISTORY16forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_XRCE_SUBSCRIBER_BUFFER_SIZE-1forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_XRCE_SUBSCRIBER_RING_DEPTH32forwarded-to-cargo, cmake, rust-source
CONFIG_NROS_XRCE_TRANSPORT_MTU512forwarded-to-cargo, cmake, rust-source, kconfig select/depends
CONFIG_NROS_ZENOH_GRAPH_DISCOVERY`n if (NROS_ZENOH_LINK_SERIAL
CONFIG_NROS_ZENOH_LEASE_PRIORITY200c-define, cmake, rust-source
CONFIG_NROS_ZENOH_READ_PRIORITY200c-define, cmake, rust-source
CONFIG_NROS_ZENOH_SOCKET_TIMEOUT_MS100c-define, cmake, rust-source
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_SIZE1048576 if NROS_RMW_CYCLONEDDSforwarded-to-cargo, c-source, cmake, rust-source