#ifndef FSFWCONFIG_DEVICES_POWERSWITCHERLIST_H_
#define FSFWCONFIG_DEVICES_POWERSWITCHERLIST_H_

#include <OBSWConfig.h>

namespace pcduSwitches {
/* Switches are uint8_t datatype and go from 0 to 255 */
enum SwitcherList {
  Q7S,
  PAYLOAD_PCDU_CH1,
  RW,
  TCS_BOARD_8V_HEATER_IN,
  SUS_REDUNDANT,
  DEPLOYMENT_MECHANISM,
  PAYLOAD_PCDU_CH6,
  ACS_BOARD_SIDE_B,
  PAYLOAD_CAMERA,
  TCS_BOARD_3V3,
  SYRLINKS,
  STAR_TRACKER,
  MGT,
  SUS_NOMINAL,
  SOLAR_CELL_EXP,
  PLOC,
  ACS_BOARD_SIDE_A,
  NUMBER_OF_SWITCHES
};

static const uint8_t ON = 1;
static const uint8_t OFF = 0;

/* Output states after reboot of the PDUs */
static const uint8_t INIT_STATE_Q7S = ON;
static const uint8_t INIT_STATE_PAYLOAD_PCDU_CH1 = OFF;
static const uint8_t INIT_STATE_RW = OFF;
#if BOARD_TE0720 == 1
/* Because the TE0720 is not connected to the PCDU, this switch is always on */
static const uint8_t INIT_STATE_TCS_BOARD_8V_HEATER_IN = ON;
#else
static const uint8_t INIT_STATE_TCS_BOARD_8V_HEATER_IN = OFF;
#endif
static const uint8_t INIT_STATE_SUS_REDUNDANT = OFF;
static const uint8_t INIT_STATE_DEPLOYMENT_MECHANISM = OFF;
static const uint8_t INIT_STATE_PAYLOAD_PCDU_CH6 = OFF;
static const uint8_t INIT_STATE_ACS_BOARD_SIDE_B = OFF;
static const uint8_t INIT_STATE_PAYLOAD_CAMERA = OFF;
static const uint8_t INIT_STATE_TCS_BOARD_3V3 = OFF;
static const uint8_t INIT_STATE_SYRLINKS = OFF;
static const uint8_t INIT_STATE_STAR_TRACKER = OFF;
static const uint8_t INIT_STATE_MGT = OFF;
static const uint8_t INIT_STATE_SUS_NOMINAL = OFF;
static const uint8_t INIT_STATE_SOLAR_CELL_EXP = OFF;
static const uint8_t INIT_STATE_PLOC = OFF;
static const uint8_t INIT_STATE_ACS_BOARD_SIDE_A = OFF;
}  // namespace pcduSwitches

#endif /* FSFWCONFIG_DEVICES_POWERSWITCHERLIST_H_ */