Program Listing for File comms.h

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

#pragma once

#include "lupnt/core/definitions.h"
#include "lupnt/devices/device.h"
#include "lupnt/measurements/channel.h"

namespace lupnt {

  class Transmitter : public Device {
  public:
    Transmitter() = default;
    Transmitter(Config& config);
    virtual void Step(Real t) override;
    virtual void Setup() override;

    virtual void Send(Real t);

    virtual void Send(Real t, void* data);

    virtual void AddData(void* data) { data_.push_back(data); }
    virtual void EmptyData() { data_.clear(); }

  protected:
    Channel* channel_;
    std::vector<void*> data_;
  };

  class Receiver : public Device {
  public:
    Receiver() = default;
    Receiver(Config& config);
    virtual void Step(Real t) override;
    virtual void Setup() override;

    virtual void Receive(Real t);

    virtual void Receive(Real t, void* data);

  protected:
    Channel* channel_;
    std::vector<void*> data_;
  };

  class Transponder : public Device {
  public:
    Transponder() = default;
    Transponder(Config& config);
    virtual void Step(Real t) override;
    virtual void Setup() override;

    virtual void Send(Real t);

    virtual void Send(Real t, void* data);

    virtual void Receive(Real t);

    virtual void Receive(Real t, void* data);

  protected:
    Channel* channel_;
    std::vector<void*> data_;
  };
}  // namespace lupnt