> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/holoscan/sensor-bridge/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/holoscan/sensor-bridge/_mcp/server.

# hololink::emulation::STM32DataPlaneCtxt

> STM32-specific DataPlane context extension.

STM32-specific [DataPlane](../classes/dataplane) context extension.

`base` MUST be the first member: the [DataPlane](../classes/dataplane) base class stores its `data_plane_ctxt_` as a `DataPlaneCtxt*` pointing into this `base`. Standard-layout C++ guarantees `&this->``base`` == reinterpret_cast<STM32DataPlaneCtxt*>(this)`, so STM32 sources downcast via `reinterpret_cast<STM32DataPlaneCtxt*>(data_plane_ctxt_.get())`.

Allocation policy: STM32 builds use a file-scope static pool of these (see [`DATA_PLANE_CTXT`](../variables/dataplanectxt)`[]` in `STM32/data_plane.cpp`) — no `new`/`malloc`. When the [DataPlane](../classes/dataplane) constructor is called with `ctxt == nullptr`, it claims `&`[`DATA_PLANE_CTXT`](../variables/dataplanectxt)`[data_plane_id].``base`.

```cpp showLineNumbers={false}
#include <hololink/emulation/data_plane.hpp>
```

***

## Member variables

| Name           | Type                        | Description |
| -------------- | --------------------------- | ----------- |
| `base`         | `DataPlaneCtxt`             |             |
| `eth_handle`   | `ETH_HandleTypeDef *`       |             |
| `tx_buffers`   | `ETH_BufferTypeDef`         |             |
| `tx_config`    | `ETH_TxPacketConfigTypeDef` |             |
| `reserved`     | `uint8_t`                   |             |
| `bootp_buffer` | `uint8_t`                   |             |