diff options
Diffstat (limited to 'host/include')
| -rw-r--r-- | host/include/uhd/types/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | host/include/uhd/types/memmap_iface.hpp | 42 | 
2 files changed, 43 insertions, 0 deletions
diff --git a/host/include/uhd/types/CMakeLists.txt b/host/include/uhd/types/CMakeLists.txt index 108a37da4..730ee0e65 100644 --- a/host/include/uhd/types/CMakeLists.txt +++ b/host/include/uhd/types/CMakeLists.txt @@ -15,6 +15,7 @@ UHD_INSTALL(FILES      eeprom.hpp      endianness.hpp      mac_addr.hpp +    memmap_iface.hpp      metadata.hpp      ranges.hpp      ref_vector.hpp diff --git a/host/include/uhd/types/memmap_iface.hpp b/host/include/uhd/types/memmap_iface.hpp new file mode 100644 index 000000000..fa6c18d4a --- /dev/null +++ b/host/include/uhd/types/memmap_iface.hpp @@ -0,0 +1,42 @@ +// +// Copyright 2020 Ettus Research, a National Instruments Brand +// +// SPDX-License-Identifier: GPL-3.0-or-later +// + +#pragma once + +#include <uhd/config.hpp> +#include <uhd/types/time_spec.hpp> +#include <stdint.h> +#include <functional> + +namespace uhd { + +//! Represents a 32-bit, memory-mapped interface (peek/poke). +// This is a simplified version of wb_iface, useful for those cases when we use +// closures to provide bespoke peek/poke interfaces to objects. +struct UHD_API memmap32_iface +{ +    using poke32_fn_t = std::function<void(const uint32_t addr, const uint32_t data)>; +    using peek32_fn_t = std::function<uint32_t(const uint32_t addr)>; + +    poke32_fn_t poke32; +    peek32_fn_t peek32; +}; + +//! Represents a 32-bit, memory-mapped interface (peek/poke). +// +// The difference to memmap32_iface is that the poke command will require a command +// time. +struct UHD_API memmap32_iface_timed +{ +    using poke32_fn_t = std::function<void( +        const uint32_t addr, const uint32_t data, const uhd::time_spec_t& time)>; +    using peek32_fn_t = std::function<uint32_t(const uint32_t addr)>; + +    poke32_fn_t poke32; +    peek32_fn_t peek32; +}; + +} // namespace uhd  | 
