#ifndef MISSION_TMTC_DIRECTTMSINKIF_H_ #define MISSION_TMTC_DIRECTTMSINKIF_H_ #include #include "eive/resultClassIds.h" #include "fsfw/retval.h" class DirectTmSinkIF { public: virtual ~DirectTmSinkIF() = default; static constexpr uint8_t CLASS_ID = CLASS_ID::TM_SINK; static constexpr ReturnValue_t IS_BUSY = returnvalue::makeCode(CLASS_ID, 0); static constexpr ReturnValue_t PARTIALLY_WRITTEN = returnvalue::makeCode(CLASS_ID, 1); /** * @brief Implements the functionality to write to a TM sink directly * * @param data Pointer to buffer holding the data to write * @param size Number of bytes to write * @return returnvalue::OK on success, returnvalue::FAILED on failure, IS_BUSY * if the TM sink is busy, PARTIALLY_WRITTEN if only a portion of the bytes could be * written. */ virtual ReturnValue_t write(const uint8_t* data, size_t size, size_t& writtenSize) = 0; virtual ReturnValue_t finishWrite(const uint8_t* data, size_t remainingSize) = 0; virtual bool isBusy() const = 0; }; #endif /* MISSION_TMTC_DIRECTTMSINKIF_H_ */