> 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::RegisterMemory

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

**Inherits from:** `hololink::emulation::AddressMemory` (public)

***

## Constructors

### RegisterMemory \[#registermemory]

```cpp showLineNumbers={false}
hololink::emulation::RegisterMemory::RegisterMemory() = default
```

***

## Methods

### write \[#write]

```cpp showLineNumbers={false}
int hololink::emulation::RegisterMemory::write(
    AddressValuePair &address_value
) override
```

Write a value to a register.

**Returns:** 0 on success, 1 on failure

**Parameters**

Pair of address and value to write

### read \[#read]

```cpp showLineNumbers={false}
int hololink::emulation::RegisterMemory::read(
    AddressValuePair &address_value
) override
```

Read a value from a register.

**Returns:** 0 on success, 1 on failure

**Parameters**

Pair of address and value to read

### write\_many \[#writemany]

```cpp showLineNumbers={false}
int hololink::emulation::RegisterMemory::write_many(
    AddressValuePair *address_values,
    int num_addresses
) override
```

Convenience function to write multiple values to registers under a single lock.

**Returns:** 0 on success, 1 on failure

**Parameters**

Pointer to array of pairs of register addresses and values to write

Number of address-value pairs

### read\_many \[#readmany]

```cpp showLineNumbers={false}
int hololink::emulation::RegisterMemory::read_many(
    AddressValuePair *address_values,
    int num_addresses
) override
```

Convenience function to read multiple values from registers under a single lock.

**Returns:** 0 on success, 1 on failure

**Parameters**

Pointer to array of pairs of register addresses and values to read (caller must allocate at least num\_addresses elements)

Number of addresses to read

### write\_range \[#writerange]

```cpp showLineNumbers={false}
int hololink::emulation::RegisterMemory::write_range(
    uint32_t start_address,
    uint32_t *values,
    int num_addresses,
    int stride = 2
) override
```

Write a range of values to registers.

Allow optimizations if it is known that the addresses are contiguous.

**Returns:** 0 on success, 1 on failure

**Parameters**

The number of addresses to write

### read\_range \[#readrange]

```cpp showLineNumbers={false}
int hololink::emulation::RegisterMemory::read_range(
    uint32_t start_address,
    uint32_t *values,
    int num_addresses,
    int stride = 2
) override
```

Read a range of values from registers.

Allow optimizations if it is known that the addresses are contiguous.

**Returns:** 0 on success, 1 on failure

**Parameters**

The number of addresses to read

### set\_ctxt \[#setctxt]

```cpp showLineNumbers={false}
void hololink::emulation::RegisterMemory::set_ctxt(
    HSBEmulatorCtxt *ctxt
)
```

***

## Member variables

| Name    | Type                       | Description |
| ------- | -------------------------- | ----------- |
| `ctxt_` | `struct HSBEmulatorCtxt *` |             |