#ifndef SUPV_RETURN_VALUES_IF_H_
#define SUPV_RETURN_VALUES_IF_H_

#include "fsfw/returnvalues/HasReturnvaluesIF.h"

class SupvReturnValuesIF {
 public:
  static const uint8_t INTERFACE_ID = CLASS_ID::SUPV_RETURN_VALUES_IF;

  //! [EXPORT] : [COMMENT] Space Packet received from PLOC supervisor has invalid CRC
  static const ReturnValue_t CRC_FAILURE = MAKE_RETURN_CODE(0xA0);
  //! [EXPORT] : [COMMENT] Received ACK failure reply from PLOC supervisor
  static const ReturnValue_t RECEIVED_ACK_FAILURE = MAKE_RETURN_CODE(0xA1);
  //! [EXPORT] : [COMMENT] Received execution failure reply from PLOC supervisor
  static const ReturnValue_t RECEIVED_EXE_FAILURE = MAKE_RETURN_CODE(0xA2);
  //! [EXPORT] : [COMMENT] Received space packet with invalid APID from PLOC supervisor
  static const ReturnValue_t INVALID_APID = MAKE_RETURN_CODE(0xA3);
  //! [EXPORT] : [COMMENT] Failed to read current system time
  static const ReturnValue_t GET_TIME_FAILURE = MAKE_RETURN_CODE(0xA4);
  //! [EXPORT] : [COMMENT] Received command with invalid watchdog parameter. Valid watchdogs are 0
  //! for PS, 1 for PL and 2 for INT
  static const ReturnValue_t INVALID_WATCHDOG = MAKE_RETURN_CODE(0xA5);
  //! [EXPORT] : [COMMENT] Received watchdog timeout config command with invalid timeout. Valid
  //! timeouts must be in the range between 1000 and 360000 ms.
  static const ReturnValue_t INVALID_WATCHDOG_TIMEOUT = MAKE_RETURN_CODE(0xA6);
  //! [EXPORT] : [COMMENT] Received latchup config command with invalid latchup ID
  static const ReturnValue_t INVALID_LATCHUP_ID = MAKE_RETURN_CODE(0xA7);
  //! [EXPORT] : [COMMENT] Received set adc sweep period command with invalid sweep period. Must be
  //! larger than 21.
  static const ReturnValue_t SWEEP_PERIOD_TOO_SMALL = MAKE_RETURN_CODE(0xA8);
  //! [EXPORT] : [COMMENT] Receive auto EM test command with invalid test param. Valid params are 1
  //! and 2.
  static const ReturnValue_t INVALID_TEST_PARAM = MAKE_RETURN_CODE(0xA9);
  //! [EXPORT] : [COMMENT] Returned when scanning for MRAM dump packets failed.
  static const ReturnValue_t MRAM_PACKET_PARSING_FAILURE = MAKE_RETURN_CODE(0xAA);
  //! [EXPORT] : [COMMENT] Returned when the start and stop addresses of the MRAM dump or MRAM  wipe
  //! commands are invalid (e.g. start address bigger than stop address)
  static const ReturnValue_t INVALID_MRAM_ADDRESSES = MAKE_RETURN_CODE(0xAB);
  //! [EXPORT] : [COMMENT] Expect reception of an MRAM dump packet but received space packet with
  //! other apid.
  static const ReturnValue_t NO_MRAM_PACKET = MAKE_RETURN_CODE(0xAC);
  //! [EXPORT] : [COMMENT] Path to PLOC directory on SD card does not exist
  static const ReturnValue_t PATH_DOES_NOT_EXIST = MAKE_RETURN_CODE(0xAD);
  //! [EXPORT] : [COMMENT] MRAM dump file does not exists. The file should actually already have
  //! been created with the reception of the first dump packet.
  static const ReturnValue_t MRAM_FILE_NOT_EXISTS = MAKE_RETURN_CODE(0xAE);
  //! [EXPORT] : [COMMENT] Received action command has invalid length
  static const ReturnValue_t INVALID_LENGTH = MAKE_RETURN_CODE(0xAF);
  //! [EXPORT] : [COMMENT] Filename too long
  static const ReturnValue_t FILENAME_TOO_LONG = MAKE_RETURN_CODE(0xB0);
  //! [EXPORT] : [COMMENT] Received update status report with invalid packet length field
  static const ReturnValue_t UPDATE_STATUS_REPORT_INVALID_LENGTH = MAKE_RETURN_CODE(0xB1);
  //! [EXPORT] : [COMMENT] Update status report does not contain expected CRC. There might be a bit
  //! flip in the update memory region.
  static const ReturnValue_t UPDATE_CRC_FAILURE = MAKE_RETURN_CODE(0xB2);
  //! [EXPORT] : [COMMENT] Supervisor helper task ist currently executing a command (wait until
  //! helper tas has finished or interrupt by sending the terminate command)
  static const ReturnValue_t SUPV_HELPER_EXECUTING = MAKE_RETURN_CODE(0xB3);
};

#endif /* SUPV_RETURN_VALUES_IF_H_ */