#ifndef MISSION_TMTC_PERSISTENTSINGLETMSTORETASK_H_
#define MISSION_TMTC_PERSISTENTSINGLETMSTORETASK_H_

#include <fsfw/objectmanager/SystemObject.h>
#include <fsfw/tasks/ExecutableObjectIF.h>
#include <mission/tmtc/PersistentTmStoreWithTmQueue.h>
#include <mission/tmtc/TmStoreTaskBase.h>
#include <mission/tmtc/VirtualChannel.h>

class PersistentSingleTmStoreTask : public TmStoreTaskBase, public ExecutableObjectIF {
 public:
  PersistentSingleTmStoreTask(object_id_t objectId, StorageManagerIF& ipcStore,
                              PersistentTmStoreWithTmQueue& storeWithQueue, VirtualChannel& channel,
                              Event eventIfDumpDone, SdCardMountedIF& sdcMan);

  ReturnValue_t performOperation(uint8_t opCode) override;

 private:
  PersistentTmStoreWithTmQueue& storeWithQueue;
  DumpContext dumpContext;
  Countdown tcHandlingCd = Countdown(400);

  bool initStoresIfPossible();
};

#endif /* MISSION_TMTC_PERSISTENTSINGLETMSTORETASK_H_ */