> 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**

**`address_value`** `AddressValuePair &`

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**

**`address_value`** `AddressValuePair &`

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**

**`address_values`** `AddressValuePair *`

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

---

**`num_addresses`** `int`

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**

**`address_values`** `AddressValuePair *`

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

---

**`num_addresses`** `int`

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**

**`start_address`** `uint32_t`

The first register address in the range.

---

**`values`** `uint32_t *`

Pointer to the array of values to write (caller must allocate at least num\_addresses elements).

---

**`num_addresses`** `int`

The number of addresses to write.

---

**`stride`** `int` — default: 2

The address increment between consecutive registers in the range (defaults to 2).

---

### 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**

**`start_address`** `uint32_t`

The first register address in the range.

---

**`values`** `uint32_t *`

Pointer to the array that receives the values read (caller must allocate at least num\_addresses elements).

---

**`num_addresses`** `int`

The number of addresses to read.

---

**`stride`** `int` — default: 2

The address increment between consecutive registers in the range (defaults to 2).

---

### set\_ctxt \[#setctxt]

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

---

## Member variables

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