| // Copyright 2025 The Pigweed Authors |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| // use this file except in compliance with the License. You may obtain a copy of |
| // the License at |
| // |
| // https://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| // License for the specific language governing permissions and limitations under |
| // the License. |
| #pragma once |
| |
| // TODO: b/426012010 - Auto-generate this file from the metadata provided |
| // in //docs/sphinx/module_metadata.json. |
| |
| // TODO: b/441319784 - Move each module's content into that module's directory. |
| // E.g. the pw_allocator content should go into //pw_allocator/doxygen.h |
| |
| // clang-format off |
| |
| /// @defgroup pw_alignment pw_alignment |
| /// @brief Natural object alignment, guaranteed. Main docs: https://pigweed.dev/pw_alignment |
| |
| /// @defgroup pw_allocator pw_allocator |
| /// @brief Flexible, safe, and measurable memory allocation |
| /// @details Main docs: [Home](../../pw_allocator/docs.html) | |
| /// [Guides](../../pw_allocator/guide.html) | |
| /// [Design & roadmap](../../pw_allocator/design.html) | |
| /// [Code size analysis](../../pw_allocator/code_size.html) |
| |
| /// @defgroup pw_allocator_block Blocks |
| /// @ingroup pw_allocator |
| /// @brief An allocatable region of memory |
| /// @details Blocks are the fundamental type managed by several of the |
| /// @ref pw_allocator_concrete_block |
| |
| /// @defgroup pw_allocator_block_impl Block implementations |
| /// @ingroup pw_allocator_block |
| /// @brief The following combine block mix-ins and provide both the methods |
| /// they require as well as a concrete representation of the data those methods |
| /// need |
| |
| /// @brief Blocks are defined using several stateless “mix-in” interface types |
| /// @details These provide specific functionality, while deferring the detailed |
| /// representation of a block to a derived type. |
| |
| /// @defgroup pw_allocator_block_mixins Block mix-ins |
| /// @ingroup pw_allocator_block |
| /// @brief Blocks are defined using several stateless “mix-in” interface types |
| /// @details These provide specific functionality, while deferring the detailed |
| /// representation of a block to a derived type. |
| |
| /// @defgroup pw_allocator_bucket Buckets |
| /// @ingroup pw_allocator |
| /// @brief Data structures that track free blocks |
| |
| /// @defgroup pw_allocator_config Configuration |
| /// @ingroup pw_allocator |
| /// @brief Options for controlling block poisoning intervals, validation |
| /// checks, and deprecation warnings |
| |
| /// @defgroup pw_allocator_concrete Concrete allocators |
| /// @ingroup pw_allocator |
| /// @brief Concrete allocator implementations that provide memory dynamically |
| |
| /// @defgroup pw_allocator_concrete_block Block allocators |
| /// @ingroup pw_allocator_concrete |
| |
| /// @defgroup pw_allocator_core Core interfaces |
| /// @ingroup pw_allocator |
| /// @brief Generic allocator interfaces that can be injected into routines that |
| /// need dynamic memory |
| /// @details These include `Allocator`, as well as the `Layout` type that is |
| /// passed to it and the managed smart pointer types, such as `UniquePtr`, that |
| /// can be returned from it. |
| |
| /// @defgroup pw_allocator_forwarding Forwarding allocators |
| /// @ingroup pw_allocator |
| /// @brief Allocator implementations that don’t allocate memory directly |
| /// and instead rely on other allocators while providing additional behaviors |
| /// @details Learn more: [Forwarding allocator |
| /// concept](../../pw_allocator/design.html#module-pw-allocator-design-forwarding) |
| |
| /// @defgroup pw_allocator_impl_test_fuzz FuzzTest support |
| /// @ingroup pw_allocator_impl_test |
| |
| /// @defgroup pw_allocator_impl Implementation interfaces |
| /// @ingroup pw_allocator |
| /// @brief Interfaces for allocator implementers |
| /// @details These interfaces are intended for allocator implementers, not for |
| /// `pw_allocator` consumers. |
| |
| /// @defgroup pw_allocator_impl_size Size reports |
| /// @ingroup pw_allocator_impl |
| /// @brief Generate code size reports for allocator implementations |
| |
| /// @defgroup pw_allocator_impl_test Testing and debugging |
| /// @ingroup pw_allocator_impl |
| /// @brief Test utilities for allocator implementers |
| /// @details These facilitate writing unit tests and fuzz tests for both |
| /// concrete and forwarding allocator implementations. They are not intended to |
| /// be used by module consumers. |
| |
| /// @defgroup pw_allocator_util Utilities |
| /// @ingroup pw_allocator |
| /// @brief Helpers for metrics, fragmentation, and buffer management |
| |
| /// @defgroup pw_analog pw_analog |
| /// @brief Analog-to-digital converter libraries and utilities. Main docs: https://pigweed.dev/pw_analog |
| |
| /// @defgroup pw_async pw_async |
| /// @brief Portable APIs for asynchronous code. Main docs: https://pigweed.dev/pw_async |
| |
| /// @defgroup pw_async2 pw_async2 |
| /// @brief Cooperative async tasks for embedded. |
| /// @details Main docs: [Home](../../pw_async2/docs.html) | |
| /// [Quickstart](../../pw_async2/quickstart.html) | |
| /// [Codelab](../../pw_async2/codelab.html) | |
| /// [Guides](../../pw_async2/guides.html) | |
| /// [Code size analysis](../../pw_async2/code_size.html) | |
| /// [Coroutines](../../pw_async2/coroutines.html) | |
| /// [Backends](../../pw_async2/backends.html) |
| |
| /// @defgroup pw_async2_adapters Pendable adapters |
| /// @ingroup pw_async2 |
| /// @brief Pendable wrappers and helpers |
| |
| /// @defgroup pw_async2_alloc Dynamic allocation |
| /// @ingroup pw_async2 |
| /// @brief Heap allocate space for tasks or functions with `pw::Allocator` |
| |
| /// @defgroup pw_async2_backends Dispatcher backends |
| /// @ingroup pw_async2 |
| /// @brief Dispatcher implementation interfaces |
| |
| /// @defgroup pw_async2_combiners Combining tasks |
| /// @ingroup pw_async2 |
| /// @brief Helpers for interacting with multiple pendables |
| |
| /// @defgroup pw_async2_core Core |
| /// @ingroup pw_async2 |
| /// @brief Core primitives such as tasks, dispatchers, polls, contexts, and wakers |
| /// @details Learn more: [Core concepts](../../pw_async2/design.html#core-concepts) |
| |
| /// @defgroup pw_async2_coroutines Coroutines |
| /// @ingroup pw_async2 |
| /// @brief C++20 coroutine support. Learn more: [Coroutines](../../pw_async2/coroutines.html) |
| |
| /// @defgroup pw_async2_pendables Built-in pendables |
| /// @ingroup pw_async2 |
| /// @brief Async operations that can be polled for completion and suspended. Learn more: [The pendable function interface](../../pw_async2/design.html#the-pendable-function-interface) |
| |
| /// @defgroup pw_async_basic pw_async_basic |
| /// @brief Main docs: https://pigweed.dev/pw_async_basic |
| |
| /// @defgroup pw_base64 pw_base64 |
| /// @brief Base64 encoding, decoding, and validating. Main docs: https://pigweed.dev/pw_base64 |
| |
| /// @defgroup pw_bloat pw_bloat |
| /// @brief Utilities for generating binary size reports. Main docs: https://pigweed.dev/pw_bloat |
| |
| /// @defgroup pw_bluetooth pw_bluetooth |
| /// @brief Host-layer Bluetooth Low Energy APIs and utilities. Main docs: https://pigweed.dev/pw_bluetooth |
| |
| /// @defgroup pw_bluetooth_proxy pw_bluetooth_proxy |
| /// @brief Lightweight proxy for augmenting Bluetooth functionality. Main docs: https://pigweed.dev/pw_bluetooth_proxy |
| |
| /// @defgroup pw_bluetooth_sapphire pw_bluetooth_sapphire |
| /// @brief Battle-tested Bluetooth with rock-solid reliability. Main docs: https://pigweed.dev/pw_bluetooth_sapphire |
| |
| /// @defgroup pw_build pw_build |
| /// @brief Integrations for Bazel, GN, and CMake. Main docs: https://pigweed.dev/pw_build |
| |
| /// @defgroup pw_bytes pw_bytes |
| /// @brief Utilities for manipulating binary data. Main docs: https://pigweed.dev/pw_bytes |
| |
| /// @defgroup pw_bytes_ptr Packed pointers |
| /// @ingroup pw_bytes |
| /// @brief Store data in unused pointer bits |
| |
| /// @defgroup pw_bytes_align Alignment |
| /// @ingroup pw_bytes |
| /// @brief Functions for memory alignment |
| |
| /// @defgroup pw_bytes_array Byte arrays |
| /// @ingroup pw_bytes |
| /// @brief Compile-time construction of byte arrays |
| |
| /// @defgroup pw_bytes_build Byte builders |
| /// @ingroup pw_bytes |
| /// @brief Dynamically build byte sequences in fixed-size buffers |
| |
| /// @defgroup pw_bytes_bit Bit manipulation |
| /// @ingroup pw_bytes |
| /// @brief C++20 `<bit>` features and extensions |
| |
| /// @defgroup pw_bytes_endian Endian conversion |
| /// @ingroup pw_bytes |
| /// @brief Utilities for handling byte order |
| |
| /// @defgroup pw_bytes_suffix Byte suffixes |
| /// @ingroup pw_bytes |
| /// @brief Convenient literal for `std::byte` |
| |
| /// @defgroup pw_bytes_unit Byte units |
| /// @ingroup pw_bytes |
| /// @brief Constants and literals for byte sizes e.g. KiB |
| |
| /// @defgroup pw_bytes_span Byte spans |
| /// @ingroup pw_bytes |
| /// @brief Aliases for `pw::span` of bytes |
| |
| /// @defgroup pw_channel pw_channel |
| /// @brief Async, zero-copy API for sending and receiving bytes or datagrams. Main docs: https://pigweed.dev/pw_channel |
| |
| /// @defgroup pw_chre pw_chre |
| /// @brief Android Context Hub Runtime Environment backend. Main docs: https://pigweed.dev/pw_chre |
| |
| /// @defgroup pw_chrono pw_chrono |
| /// @brief Portable std::chrono for constrained embedded devices. Main docs: https://pigweed.dev/pw_chrono |
| |
| /// @defgroup pw_clock_tree pw_clock_tree |
| /// @brief Clock tree management for embedded devices. Main docs: https://pigweed.dev/pw_clock_tree |
| |
| /// @defgroup pw_clock_tree_mcuxpresso pw_clock_tree_mcuxpresso |
| /// @brief NXP MCUXpresso SDK implementation for pw_clock_tree. Main docs: https://pigweed.dev/pw_clock_tree_mcuxpresso |
| |
| /// @defgroup pw_containers pw_containers |
| /// @brief Generic collections of objects for embedded devices: https://pigweed.dev/pw_containers |
| |
| /// @defgroup pw_crypto pw_crypto |
| /// @brief Main docs: https://pigweed.dev/pw_crypto |
| |
| /// @defgroup pw_digital_io pw_digital_io |
| /// @brief Digital I/O interface. Main docs: https://pigweed.dev/pw_digital_io |
| |
| /// @defgroup pw_digital_io_mcuxpresso pw_digital_io_mcuxpresso |
| /// @brief Digital I/O for NXP MCUXpresso. Main docs: https://pigweed.dev/pw_digital_io_mcuxpresso |
| |
| /// @defgroup pw_display pw_display |
| /// @brief Graphic display support and framebuffer management. Main docs: https://pigweed.dev/pw_display |
| |
| /// @defgroup pw_elf pw_elf |
| /// @brief ELF file support. Main docs: https://pigweed.dev/pw_elf |
| |
| /// @defgroup pw_function pw_function |
| /// @brief Embedded-friendly `std::function`: https://pigweed.dev/pw_function |
| |
| /// @defgroup pw_hdlc pw_hdlc |
| /// @brief Simple, robust, and efficient serial communication. Main docs: https://pigweed.dev/pw_hdlc |
| |
| /// @defgroup pw_hex_dump pw_hex_dump |
| /// @brief Handy hexdump utilities. Main docs: https://pigweed.dev/pw_hex_dump |
| |
| /// @defgroup pw_i2c pw_i2c |
| /// @brief Cross-platform I2C API with interactive debugging. Main docs: https://pigweed.dev/pw_i2c |
| |
| /// @defgroup pw_i2c_linux pw_i2c_linux |
| /// @brief Linux userspace implementation for pw_i2c. Main docs: https://pigweed.dev/pw_i2c_linux |
| |
| /// @defgroup pw_interrupt pw_interrupt |
| /// @brief Main docs: https://pigweed.dev/pw_interrupt |
| |
| /// @defgroup pw_json pw_json |
| /// @brief Simple, efficient C++ JSON serialization. Main docs: https://pigweed.dev/pw_json |
| |
| /// @defgroup pw_kvs pw_kvs |
| /// @brief Lightweight, persistent key-value store. Main docs: https://pigweed.dev/pw_kvs |
| |
| /// @defgroup pw_log pw_log |
| /// @brief Robust and portable logging for embedded projects |
| /// @details Main docs: [Home](../../pw_log/docs.html) | |
| /// [The pw_log protobuf](../../pw_log/protobuf.html) | |
| /// [Tokenized log arguments](../../pw_log/tokenized_args.html) | |
| /// [Backends](../../pw_log/backends.html) |
| |
| /// @defgroup pw_log_global_config Global config |
| /// @ingroup pw_log |
| /// @details These configuration options differ from the options in |
| /// `pw_log/options.h` in that these should be set at a global level in the |
| /// build system rather than at a module or compile unit level. |
| |
| /// @defgroup pw_log_module_config Module config |
| /// @ingroup pw_log |
| /// @details These configuration options differ from the options in |
| /// `pw_log/config.h` in that these should be set at a module/compile unit |
| /// level rather than a global level. |
| |
| /// @defgroup pw_log_proto Protobuf helpers |
| /// @ingroup pw_log |
| /// @details Learn more: [The pw_log protobuf](../../pw_log/protobuf.html) |
| |
| /// @defgroup pw_log_short Short macros |
| /// @ingroup pw_log |
| /// @brief Optional shortened versions of the `PW_LOG` macros |
| /// @details These shortened versions are not prefixed with `PW_*`, so may |
| /// collide with other macros. |
| |
| /// @defgroup pw_log_glog Google Logging (glog) macros |
| /// @ingroup pw_log |
| /// @details @warning Pigweed strongly recommends sticking to `printf`-style |
| /// logging instead of C++ stream-style glog logging unless absolutely |
| /// necessary. These macros are only provided for compatibility with |
| /// non-embedded code. |
| |
| /// @defgroup pw_log_tokenized_args Tokenized args |
| /// @ingroup pw_log |
| /// @details Learn more: [Tokenized log arguments](../../pw_log/tokenized_args.html) |
| |
| /// @defgroup pw_log_string pw_log_string |
| /// @brief Main docs: https://pigweed.dev/pw_log_string |
| |
| /// @defgroup pw_log_tokenized pw_log_tokenized |
| /// @brief Main docs: https://pigweed.dev/pw_log_tokenized |
| |
| /// @defgroup pw_malloc pw_malloc |
| /// @brief Replacement interface for standard libc dynamic memory operations. Main docs: https://pigweed.dev/pw_malloc |
| |
| /// @defgroup pw_multibuf pw_multibuf |
| /// @brief A buffer API optimized for zero-copy messaging. |
| /// @details Main docs: [Home](../../pw_multibuf/docs.html) | |
| /// [Code size analysis](../../pw_multibuf/code_size.html) |
| |
| /// @defgroup pw_multibuf_v1 Legacy v1 API |
| /// @ingroup pw_multibuf |
| /// @brief Interfaces that will eventually be deprecated |
| /// @details Most users of `pw_multibuf` will start by allocating a `MultiBuf` |
| /// using a `MultiBufAllocator` class, such as the `SimpleAllocator`. |
| /// |
| /// A `MultiBuf` consists of a number of `Chunk` instances representing |
| /// contiguous memory regions. A `Chunk` can be grown or shrunk which allows |
| /// `MultiBuf` to be grown or shrunk. This allows, for example, lower layers to |
| /// reserve part of a `MultiBuf` for a header or footer. See `Chunk` for more |
| /// details. |
| /// |
| /// `MultiBuf` exposes an `std::byte` iterator interface as well as a `Chunk` |
| /// iterator available through the `Chunks()` method. It allows extracting a |
| /// `Chunk` as an RAII-style `OwnedChunk` which manages its own lifetime. |
| |
| /// @defgroup pw_multibuf_v1_impl Allocator implementation API |
| /// @ingroup pw_multibuf_v1 |
| /// @details Some users will need to directly implement the `MultiBufAllocator` |
| /// interface in order to provide allocation out of a particular region, |
| /// provide particular allocation policy, fix chunks to some size (such as MTU |
| /// size - header for socket implementations), or specify other custom behavior. |
| /// These users will also need to understand and implement the |
| /// `ChunkRegionTracker` API. |
| /// |
| /// A simple implementation of a `ChunkRegionTracker` is provided, called |
| /// `HeaderChunkRegionTracker`. It stores its `Chunk` and region metadata in a |
| /// `Allocator` allocation alongside the data. The allocation process is |
| /// synchronous, making this class suitable for testing. The allocated region or |
| /// `Chunk` must not outlive the provided allocator. |
| /// |
| /// Another `ChunkRegionTracker` specialization is the lightweight |
| /// `SingleChunkRegionTracker`, which does not rely on `Allocator` and uses the |
| /// provided memory view to create a single chunk. This is useful when a single |
| /// `Chunk` is sufficient at no extra overhead. However, the user needs to own |
| /// the provided memory and know when a new `Chunk` can be requested. |
| |
| /// @defgroup pw_multibuf_v1_test Test-only features |
| /// @ingroup pw_multibuf_v1 |
| |
| /// @defgroup pw_multibuf_v2 Experimental v2 API |
| /// @ingroup pw_multibuf |
| /// @brief Experimental API that separates out the concern of memory allocation |
| |
| /// @defgroup pw_numeric pw_numeric |
| /// @brief Efficient mathematical utilities for embedded. Main docs: https://pigweed.dev/pw_numeric |
| |
| /// @defgroup pw_perf_test pw_perf_test |
| /// @brief Micro-benchmarks that are easy to write and run. Main docs: https://pigweed.dev/pw_perf_test |
| |
| /// @defgroup pw_persistent_ram pw_persistent_ram |
| /// @brief Main docs: https://pigweed.dev/pw_persistent_ram |
| |
| /// @defgroup pw_polyfill pw_polyfill |
| /// @brief Main docs: https://pigweed.dev/pw_polyfill |
| |
| /// @defgroup pw_preprocessor pw_preprocessor |
| /// @brief Helpful preprocessor macros. Main docs: https://pigweed.dev/pw_preprocessor |
| |
| /// @defgroup pw_protobuf pw_protobuf |
| /// @brief Expressive interface for encoding and decoding protocol buffers |
| /// @details Main docs: [Home](../../pw_protobuf/docs.html) | |
| /// [Extended size report](../../pw_protobuf/size_report.html) |
| |
| /// @defgroup pw_protobuf_find Find APIs |
| /// @ingroup pw_protobuf |
| |
| /// @defgroup pw_random pw_random |
| /// @brief Main docs: https://pigweed.dev/pw_random |
| |
| /// @defgroup pw_rpc pw_rpc |
| /// @brief Efficient, low-code-size RPC system for embedded devices |
| /// @details Main docs: [Home](../../pw_rpc/docs.html) | |
| /// [Quickstart & guides](../../pw_rpc/guides.html) | |
| /// [Client, server, and protobuf libraries](../../pw_rpc/libraries.html) | |
| /// [C++ server and client](../../pw_rpc/cpp.html) | |
| /// [Python client](../../pw_rpc/py/docs.html) | |
| /// [TypeScript client](../../pw_rpc/ts/docs.html) | |
| /// [Nanopb codegen](../../pw_rpc/nanopb/docs.html) | |
| /// [pw_protobuf codegen](../../pw_rpc/pwpb/docs.html) | |
| /// [Packet protocol](../../pw_rpc/protocol.html) | |
| /// [Design & roadmap](../../pw_rpc/design.html) | |
| /// [HDLC example](../../pw_hdlc/rpc_example/docs.html) |
| |
| /// @defgroup pw_rpc_test Benchmarking & testing |
| /// @ingroup pw_rpc |
| |
| /// @defgroup pw_rpc_channel Channels |
| /// @ingroup pw_rpc |
| |
| /// @defgroup pw_rpc_sync Synchronous API |
| /// @ingroup pw_rpc |
| /// @details Main docs: [Client synchronous call |
| /// wrappers](../../pw_rpc/cpp.html#client-synchronous-call-wrappers) |
| |
| /// @defgroup pw_rpc_config Configuration |
| /// @ingroup pw_rpc |
| |
| /// @defgroup pw_span pw_span |
| /// @brief std::span for C++17. Main docs: https://pigweed.dev/pw_span |
| |
| /// @defgroup pw_status pw_status |
| /// @brief Exception-free error propagation for embedded |
| /// @details Main docs: [Home](../../pw_status/docs.html) | |
| /// [Quickstart & guides](../../pw_status/guide.html) | |
| /// [Reference](../../pw_status/reference.html) |
| |
| /// @defgroup pw_stream pw_stream |
| /// @brief A foundational interface for streaming data |
| /// @details Main docs: [Home](../../pw_stream/docs.html) | |
| /// [Backends](../../pw_stream/backends.html) | |
| /// [Python](../../pw_stream/py/docs.html) |
| |
| /// @defgroup pw_stream_interface Interfaces |
| /// @ingroup pw_stream |
| /// @brief Generic stream interfaces that support a combination of reading, |
| /// writing, and seeking |
| |
| /// @defgroup pw_stream_interface_reader Readers |
| /// @ingroup pw_stream_interface |
| /// @brief Streams that support reading but not writing |
| |
| /// @defgroup pw_stream_interface_writer Writers |
| /// @ingroup pw_stream_interface |
| /// @brief Streams that support writing but not reading |
| |
| /// @defgroup pw_stream_interface_readerwriter ReaderWriters |
| /// @ingroup pw_stream_interface |
| /// @brief Streams that support both reading and writing |
| |
| /// @defgroup pw_stream_concrete Implementations |
| /// @ingroup pw_stream |
| /// @brief Concrete implementations of stream interfaces for general use |
| |
| /// @defgroup pw_stream_uart_linux pw_stream_uart_linux |
| /// @brief Main docs: https://pigweed.dev/pw_stream_uart_linux |
| |
| /// @defgroup pw_string pw_string |
| /// @brief Efficient, easy, and safe string manipulation |
| /// @details Main docs: [Home](../../pw_string/docs.html) | |
| /// [Get started & guides](../../pw_string/guide.html) | |
| /// [Design & roadmap](../../pw_string/design.html) | |
| /// [Code size analysis](../../pw_string/code_size.html) |
| |
| /// @defgroup pw_string_inline InlineString and InlineBasicString |
| /// @ingroup pw_string |
| /// @brief Safer alternatives to `std::string` and `std::basic_string` |
| |
| /// @defgroup pw_string_builder StringBuilder |
| /// @ingroup pw_string |
| /// @brief The flexibility of `std::ostringstream` but with a small footprint |
| |
| /// @defgroup pw_string_util Utilities |
| /// @ingroup pw_string |
| /// @brief Safer alternatives to C++ standard library string functions |
| |
| /// @defgroup pw_string_utf8 UTF-8 helpers |
| /// @ingroup pw_string |
| /// @brief Basic helpers for reading and writing UTF-8-encoded strings |
| |
| /// @defgroup pw_sync pw_sync |
| /// @brief Main docs: [Home](../../pw_sync/docs.html) |
| |
| /// @defgroup pw_sys_io pw_sys_io |
| /// @brief Main docs: https://pigweed.dev/pw_sys_io |
| |
| /// @defgroup pw_system pw_system |
| /// @brief Main docs: https://pigweed.dev/pw_system |
| |
| /// @defgroup pw_thread pw_thread |
| /// @brief Main docs: https://pigweed.dev/pw_thread |
| |
| /// @defgroup pw_tokenizer pw_tokenizer |
| /// @brief Compress strings to shrink logs by +75% |
| /// @details Main docs: [Home](../../pw_tokenizer/docs.html) | |
| /// [Quickstart](../../pw_tokenizer/get_started.html) | |
| /// [Tokenization](../../pw_tokenizer/tokenization.html) | |
| /// [Token databases](../../pw_tokenizer/token_databases.html) | |
| /// [Detokenization](../../pw_tokenizer/detokenization.html) |
| |
| /// @defgroup pw_tokenizer_tokenize Tokenization |
| /// @ingroup pw_tokenizer |
| /// @brief Convert string literals to tokens |
| |
| /// @defgroup pw_tokenizer_detokenize Detokenization |
| /// @ingroup pw_tokenizer |
| /// @brief Expand a token to the string it represents and decode its arguments |
| |
| /// @defgroup pw_tokenizer_database Token databases |
| /// @ingroup pw_tokenizer |
| /// @brief Store a mapping of tokens to the strings they represent |
| |
| /// @defgroup pw_tokenizer_config Configuration |
| /// @ingroup pw_tokenizer |
| /// @brief Tokenization customization options |
| |
| /// @defgroup pw_toolchain pw_toolchain |
| /// @brief Embedded toolchains for GN-based Pigweed projects. Main docs: https://pigweed.dev/pw_toolchain |
| |
| /// @defgroup pw_trace_tokenized pw_trace_tokenized |
| /// @brief Main docs: https://pigweed.dev/pw_trace_tokenized |
| |
| /// @defgroup pw_transfer pw_transfer |
| /// @brief Main docs: https://pigweed.dev/pw_transfer |
| |
| /// @defgroup pw_varint pw_varint |
| /// @brief Functions for encoding and decoding variable length integers. Main docs: https://pigweed.dev/pw_varint |
| |
| /// @defgroup pw_uart pw_uart |
| /// @brief Core interfaces for UART communication. Main docs: https://pigweed.dev/pw_uart |
| |
| /// @defgroup pw_unit_test pw_unit_test |
| /// @brief GoogleTest for embedded |
| /// @details Main docs: [Home](../../pw_unit_test/docs.html) |
| |
| /// @defgroup pw_unit_test_declaration Test declaration |
| /// @ingroup pw_unit_test |
| |
| /// @defgroup pw_unit_test_control Test control |
| /// @ingroup pw_unit_test |
| |
| /// @defgroup pw_unit_test_expectations Expectations |
| /// @ingroup pw_unit_test |
| /// @details When a test fails an expectation, the framework marks the test as |
| /// a failure and then continues executing the test. They’re useful when you |
| /// want to verify multiple dimensions of the same feature and see all the |
| /// errors at the same time. |
| |
| /// @defgroup pw_unit_test_assertions Assertions |
| /// @ingroup pw_unit_test |
| /// @details Assertions work the same as expectations except they stop the |
| /// execution of the test as soon as a failed condition is met. |
| |
| /// @defgroup pw_unit_test_events Event handlers |
| /// @ingroup pw_unit_test |
| |
| /// @defgroup pw_unit_test_configuration Configuration |
| /// @ingroup pw_unit_test |
| |
| /// @defgroup pw_unit_test_helpers Helpers |
| /// @ingroup pw_unit_test |
| |
| /// @defgroup pw_unit_test_constexpr Constexpr tests |
| /// @ingroup pw_unit_test |
| |
| /// @defgroup pw_uuid pw_uuid |
| /// @brief 128-bit universally unique identifier (UUID). Main docs: https://pigweed.dev/pw_uuid |
| |
| /// @defgroup pw_work_queue pw_work_queue |
| /// @brief Main docs: https://pigweed.dev/pw_work_queue |
| |
| /// @defgroup third_party third-party |
| /// @brief API integrations with third-party software e.g. FreeRTOS |
| |
| /// @defgroup third_party_freertos FreeRTOS |
| /// @ingroup third_party |
| /// @brief FreeRTOS application functions |
| |
| // clang-format on |