blob: 4be04b34eabbe426574d79a3b5a57803b73bc5f1 [file] [log] [blame]
#pragma once
#include <hei_includes.hpp>
namespace libhei
{
/**
* @brief A signature represents an active attention from a single bit on a
* register within a chip.
*
* The isolator will gather a list of all active attentions on a chip and return
* a list of signatures to the user application. The user application should be
* able to determine what actions to take based on these signatures.
*/
class Signature
{
public: // Constructors, destructor, assignment, etc.
/**
* @brief Constructor from components.
* @param i_chip The chip containing this register.
* @param i_id The register ID.
* @param i_instance The instance of this register.
* @param i_bit The target bit within this register.
* @param i_attnType The attention type reported by this bit.
*/
Signature(const Chip & i_chip, RegisterId_t i_id,
RegisterInstance_t i_instance, RegisterBit_t i_bit,
AttentionType_t i_attnType) :
iv_chip(i_chip), iv_id(i_id), iv_instance(i_instance),
iv_bit(i_bit), iv_attnType(i_attnType)
{}
/** @brief Destructor. */
~Signature() = default;
/** @brief Copy constructor. */
Signature(const Signature &) = default;
/** @brief Assignment operator. */
Signature & operator=(const Signature &) = default;
private: // Instance variables.
Chip iv_chip; ///< Chip containing this register.
RegisterId_t iv_id; ///< Register ID.
RegisterInstance_t iv_instance; ///< Instance of this register.
RegisterBit_t iv_bit; ///< Target bit within this register.
AttentionType_t iv_attnType; ///< Attention type reported by this bit.
public: // Member functions
/** @return The chip containing this register. */
const Chip & getChip() const { return iv_chip; }
/** @return The register ID. */
RegisterId_t getId() const { return iv_id; }
/** @return The instance of this register. */
RegisterInstance_t getInstance() const { return iv_instance; }
/** @return The target bit within this register. */
RegisterBit_t getBit() const { return iv_bit; }
/** @return The attention type reported by this bit. */
AttentionType_t getAttnType() const { return iv_attnType; }
};
} // end namespace libhei