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

> Representation of the internal memory space of the HSBEmulator and its registers.

Representation of the internal memory space of the [HSBEmulator](hsbemulator) and its registers.

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

This currently implemented as a simple map, but the underlying implementation should be expected to change, though the public methods should remain available.

***

## Constructors

### Destructor \[#destructor]

### \~AddressMemory

```cpp showLineNumbers={false}
virtual hololink::emulation::AddressMemory::~AddressMemory() = default
```

***

## Methods

### write \[#write]

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

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}
virtual int hololink::emulation::AddressMemory::read(
    AddressValuePair &address_value
)
```

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}
virtual int hololink::emulation::AddressMemory::write_many(
    AddressValuePair *address_values,
    int num_addresses
)
```

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}
virtual int hololink::emulation::AddressMemory::read_many(
    AddressValuePair *address_values,
    int num_addresses
)
```

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}
virtual int hololink::emulation::AddressMemory::write_range(
    uint32_t start_address,
    uint32_t *values,
    int num_addresses,
    int stride = 2
)
```

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}
virtual int hololink::emulation::AddressMemory::read_range(
    uint32_t start_address,
    uint32_t *values,
    int num_addresses,
    int stride = 2
)
```

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