#ifndef LINUX_OBC_VCINTERFACEIF_H_
#define LINUX_OBC_VCINTERFACEIF_H_

#include <stddef.h>

#include "fsfw/returnvalues/HasReturnvaluesIF.h"

/**
 * @brief   Interface class for managing different virtual channels of the PTME IP core implemented
 *          in the programmable logic.
 *
 * @author  J. Meier
 */
class VcInterfaceIF {
 public:
  virtual ~VcInterfaceIF(){};

  /**
   * @brief   Implememts the functionality to write data in the virtual channel of the PTME IP
   *          Core.
   *
   * @param data  Pointer to buffer holding the data to write
   * @param size  Number of bytes to write
   */
  virtual ReturnValue_t write(const uint8_t* data, size_t size) = 0;

  virtual ReturnValue_t initialize() = 0;
};

#endif /* LINUX_OBC_VCINTERFACEIF_H_ */