#ifndef LINUX_OBC_PTMEIF_H_
#define LINUX_OBC_PTMEIF_H_

#include "fsfw/returnvalues/HasReturnvaluesIF.h"

/**
 * @brief   Interface class for managing the PTME IP Core implemented in the programmable logic.
 *
 * @details PTME IP Core: https://www.esa.int/Enabling_Support/Space_Engineering_Technology/
 *                        Microelectronics/PTME
 * @author  J. Meier
 */
class PtmeIF {
 public:
  virtual ~PtmeIF(){};

  /**
   * @brief   Implements to function to write to a specific virtual channel.
   *
   * @param vcId  Virtual channel to write to
   * @param data  Pointer to buffer holding the data to write
   * @param size  Number of bytes to write
   */
  virtual ReturnValue_t writeToVc(uint8_t vcId, const uint8_t* data, size_t size) = 0;
};

#endif /* LINUX_OBC_PTMEIF_H_ */