#ifndef MISSION_TMTC_LIVETMTASK_H_
#define MISSION_TMTC_LIVETMTASK_H_

#include <fsfw/objectmanager/SystemObject.h>
#include <fsfw/tasks/ExecutableObjectIF.h>
#include <fsfw/timemanager/Countdown.h>
#include <mission/tmtc/CfdpTmFunnel.h>
#include <mission/tmtc/PusTmFunnel.h>
#include <mission/tmtc/VirtualChannelWithQueue.h>

class LiveTmTask : public SystemObject, public ExecutableObjectIF {
 public:
  LiveTmTask(object_id_t objectId, PusTmFunnel& pusFunnel, CfdpTmFunnel& cfdpFunnel,
             VirtualChannelWithQueue& channel);

  ReturnValue_t performOperation(uint8_t opCode) override;

 private:
  Countdown tmFunnelCd = Countdown(100);
  PusTmFunnel& pusFunnel;
  CfdpTmFunnel& cfdpFunnel;
  VirtualChannelWithQueue& channel;
};

#endif /* MISSION_TMTC_LIVETMTASK_H_ */