Program Listing for File device.h

Return to documentation for file (devices/device.h)

#pragma once
#include <yaml-cpp/yaml.h>

#include <Eigen/Dense>

#include "lupnt/core/config.h"
#include "lupnt/core/data_logger.h"
#include "lupnt/core/definitions.h"

namespace lupnt {

  class Agent;
  class Channel;

  class Device : public DataLogger {
  public:
    Device() = default;

    Device(Config& config);
    virtual ~Device() = default;

    virtual void Step(Real t);

    virtual void Setup();

    std::string GetName() const { return name_; }
    void SetName(std::string name) { name_ = name; }

    Agent* GetAgent() const { return agent_; }
    void SetAgent(Agent* agent) { agent_ = agent; }

    Real GetFrequency() const { return frequency_; }
    void SetFrequency(Real frequency) { frequency_ = frequency; }

    virtual void Log(Real time) { (void)time; };

  protected:
    Config config_;
    Real frequency_ = 0.0;
    std::string name_;
    Agent* agent_ = nullptr;
    Real time_ = 0.0;
  };

}  // namespace lupnt