2 #include "halco/common/geometry.h" 
    3 #include "halco/hicann-dls/vx/cadc.h" 
    8 #include "hate/visibility.h" 
   11 #include "hxcomm/vx/target.h" 
   16 class OmnibusChipOverJTAG;
 
   40     struct GENPYBIND(inline_base("*
")) ResetWait 
   41         : public halco::common::detail::RantWrapper<ResetWait, uint_fast16_t, 255, 0> 
   43         constexpr explicit ResetWait(uintmax_t const val = 100) GENPYBIND(implicit_conversion) : 
   52     struct GENPYBIND(inline_base("*
")) DeadTime 
   53         : public halco::common::detail::RantWrapper<DeadTime, uint_fast16_t, 255, 0> 
   55         constexpr explicit DeadTime(uintmax_t const val = 20) GENPYBIND(implicit_conversion) : 
   61     CADCConfig() SYMBOL_VISIBLE; 
   67     GENPYBIND(getter_for(enable)) 
   68     bool get_enable() const SYMBOL_VISIBLE; 
   74     GENPYBIND(setter_for(enable)) 
   75     void set_enable(bool value) SYMBOL_VISIBLE; 
   81     GENPYBIND(getter_for(reset_wait)) 
   82     ResetWait get_reset_wait() const SYMBOL_VISIBLE; 
   88     GENPYBIND(setter_for(reset_wait)) 
   89     void set_reset_wait(ResetWait value) SYMBOL_VISIBLE; 
   95     GENPYBIND(getter_for(dead_time)) 
   96     DeadTime get_dead_time() const SYMBOL_VISIBLE; 
  102     GENPYBIND(setter_for(dead_time)) 
  103     void set_dead_time(DeadTime value) SYMBOL_VISIBLE; 
  105     bool operator==(CADCConfig const& other) const SYMBOL_VISIBLE; 
  106     bool operator!=(CADCConfig const& other) const SYMBOL_VISIBLE; 
  108     GENPYBIND(stringstream) 
  109     friend std::ostream& operator<<(std::ostream& os, CADCConfig const& config) SYMBOL_VISIBLE; 
  111     static size_t constexpr config_size_in_words GENPYBIND(hidden) = 1; 
  112     template <typename AddressT> 
  113     static std::array<AddressT, config_size_in_words> addresses(coordinate_type const& word) 
  114         SYMBOL_VISIBLE GENPYBIND(hidden); 
  115     template <typename WordT> 
  116     std::array<WordT, config_size_in_words> encode() const SYMBOL_VISIBLE GENPYBIND(hidden); 
  117     template <typename WordT> 
  118     void decode(std::array<WordT, config_size_in_words> const& data) SYMBOL_VISIBLE 
  122     friend class cereal::access; 
  123     template <typename Archive> 
  124     void serialize(Archive& ar, std::uint32_t const version) SYMBOL_VISIBLE; 
  127     ResetWait m_reset_wait; 
  128     DeadTime m_dead_time; 
  131 EXTERN_INSTANTIATE_CEREAL_SERIALIZE(CADCConfig) 
  136 struct BackendContainerTrait<CADCConfig> 
  137     : public BackendContainerBase< 
  139           fisch::vx::word_access_type::Omnibus, 
  140           fisch::vx::word_access_type::OmnibusChipOverJTAG> 
  143 } // namespace detail 
  148 class SYMBOL_VISIBLE CADCChannelConfig 
  151     typedef std::true_type is_leaf_node; 
  152     typedef typename halco::hicann_dls::vx::CADCChannelConfigOnDLS coordinate_type; 
  154     constexpr static auto unsupported_read_targets GENPYBIND(hidden) = { 
  155         hxcomm::vx::Target::hardware}; 
  161     struct GENPYBIND(inline_base("*
")) Offset 
  162         : public halco::common::detail::RantWrapper<Offset, int_fast16_t, 127, -128> 
  164         typedef halco::common::detail::RantWrapper<Offset, int_fast16_t, 127, -128> rant_t; 
  165         constexpr explicit Offset(intmax_t const val = 0) GENPYBIND(implicit_conversion) : 
  177     GENPYBIND(getter_for(offset)) 
  178     Offset get_offset() const; 
  184     GENPYBIND(setter_for(offset)) 
  185     void set_offset(Offset value); 
  187     bool operator==(CADCChannelConfig const& other) const; 
  188     bool operator!=(CADCChannelConfig const& other) const; 
  190     GENPYBIND(stringstream) 
  191     friend std::ostream& operator<<(std::ostream& os, CADCChannelConfig const& config) 
  197     static size_t constexpr config_size_in_words GENPYBIND(hidden) = 1; 
  198     template <typename AddressT> 
  199     static std::array<AddressT, config_size_in_words> addresses(coordinate_type const& word) 
  201     template <typename WordT> 
  202     std::array<WordT, config_size_in_words> encode() const GENPYBIND(hidden); 
  203     template <typename WordT> 
  204     void decode(std::array<WordT, config_size_in_words> const& data) GENPYBIND(hidden); 
  207     friend class cereal::access; 
  208     template <typename Archive> 
  209     void serialize(Archive& ar, std::uint32_t const version); 
  218 struct BackendContainerTrait<CADCChannelConfig> 
  219     : public BackendContainerBase< 
  221           fisch::vx::word_access_type::Omnibus, 
  222           fisch::vx::word_access_type::OmnibusChipOverJTAG> 
  225 } // namespace detail 
  228 // TODO: Switch to CRTP pattern when https://github.com/kljohann/genpybind/issues/28 is solved 
  229 class GENPYBIND(visible) CADCOffsetSRAMTimingConfig : public detail::SRAMTimingConfig 
  232     typedef halco::hicann_dls::vx::CADCOffsetSRAMTimingConfigOnDLS coordinate_type; 
  234     bool operator==(CADCOffsetSRAMTimingConfig const& other) const SYMBOL_VISIBLE; 
  235     bool operator!=(CADCOffsetSRAMTimingConfig const& other) const SYMBOL_VISIBLE; 
  237     GENPYBIND(stringstream) 
  238     friend std::ostream& operator<<(std::ostream& os, CADCOffsetSRAMTimingConfig const& config) 
  241     template <typename AddressT> 
  242     std::array<AddressT, config_size_in_words> addresses(coordinate_type const& word) const 
  243         SYMBOL_VISIBLE GENPYBIND(hidden); 
  246     friend class cereal::access; 
  247     template <typename Archive> 
  248     void serialize(Archive& ar, std::uint32_t); 
  251 EXTERN_INSTANTIATE_CEREAL_SERIALIZE(CADCOffsetSRAMTimingConfig) 
  256 struct BackendContainerTrait<CADCOffsetSRAMTimingConfig> 
  257     : public BackendContainerBase< 
  258           CADCOffsetSRAMTimingConfig, 
  259           fisch::vx::word_access_type::Omnibus, 
  260           fisch::vx::word_access_type::OmnibusChipOverJTAG> 
  263 } // namespace detail 
  268 class GENPYBIND(visible) CADCSampleQuad 
  271     typedef std::true_type is_leaf_node; 
  272     typedef halco::hicann_dls::vx::CADCSampleQuadOnDLS coordinate_type; 
  277     struct GENPYBIND(inline_base("*
")) Value 
  278         : public halco::common::detail::RantWrapper<Value, uint_fast16_t, 255, 0> 
  280         constexpr explicit Value(intmax_t const val = 0) GENPYBIND(implicit_conversion) : 
  286     CADCSampleQuad() SYMBOL_VISIBLE; 
  293     Value get_sample(halco::hicann_dls::vx::EntryOnQuad const& coord) const SYMBOL_VISIBLE; 
  300     void set_sample(halco::hicann_dls::vx::EntryOnQuad const& coord, Value value) SYMBOL_VISIBLE; 
  302     bool operator==(CADCSampleQuad const& other) const SYMBOL_VISIBLE; 
  303     bool operator!=(CADCSampleQuad const& other) const SYMBOL_VISIBLE; 
  305     GENPYBIND(stringstream) 
  306     friend std::ostream& operator<<(std::ostream& os, CADCSampleQuad const& config) SYMBOL_VISIBLE; 
  308     static size_t constexpr read_config_size_in_words GENPYBIND(hidden) = 1; 
  309     static size_t constexpr write_config_size_in_words GENPYBIND(hidden) = 0; 
  310     static std::array<halco::hicann_dls::vx::OmnibusAddress, read_config_size_in_words> 
  311     read_addresses(coordinate_type const& word) SYMBOL_VISIBLE GENPYBIND(hidden); 
  312     static std::array<halco::hicann_dls::vx::OmnibusAddress, write_config_size_in_words> 
  313     write_addresses(coordinate_type const& word) SYMBOL_VISIBLE GENPYBIND(hidden); 
  314     std::array<fisch::vx::word_access_type::Omnibus, write_config_size_in_words> encode() const 
  315         SYMBOL_VISIBLE GENPYBIND(hidden); 
  316     void decode(std::array<fisch::vx::word_access_type::Omnibus, read_config_size_in_words> const& 
  317                     data) SYMBOL_VISIBLE GENPYBIND(hidden); 
  320     friend class cereal::access; 
  321     template <typename Archive> 
  322     void serialize(Archive& ar, std::uint32_t const version) SYMBOL_VISIBLE; 
  324     halco::common::typed_array<Value, halco::hicann_dls::vx::EntryOnQuad> m_samples; 
  330 struct BackendContainerTrait<CADCSampleQuad> 
  331     : public BackendContainerBase<CADCSampleQuad, fisch::vx::word_access_type::Omnibus> 
  334 } // namespace detail 
  336 EXTERN_INSTANTIATE_CEREAL_SERIALIZE(CADCSampleQuad) 
  339 } // namespace haldls 
CADC container with global digital config for a vertical half.
std::true_type is_leaf_node
halco::hicann_dls::vx::CADCConfigOnDLS coordinate_type
#define GENPYBIND_TAG_HALDLS_VX
haldls::vx::CADCChannelConfig CADCChannelConfig