#include <iostream>

#include "InitMission.h"
#include "OBSWConfig.h"
#include "OBSWVersion.h"
#include "fsfw/tasks/TaskFactory.h"
#include "fsfw/version.h"

#ifdef RASPBERRY_PI
static const char* const BOARD_NAME = "Raspberry Pi";
#elif defined(BEAGLEBONEBLACK)
static const char* const BOARD_NAME = "Beaglebone Black";
#else
static const char* const BOARD_NAME = "Unknown Board";
#endif

/**
 * @brief 	    This is the main program and entry point for the Raspberry Pi.
 * @return
 */
int main(void) {
  std::cout << "-- EIVE OBSW --" << std::endl;
  std::cout << "-- Compiled for Linux board " << BOARD_NAME << " --" << std::endl;
  std::cout << "-- OBSW " << SW_NAME << " v" << SW_VERSION << "." << SW_SUBVERSION << "."
            << SW_REVISION << ", FSFW v" << fsfw::FSFW_VERSION << " --" << std::endl;
  std::cout << "-- " << __DATE__ << " " << __TIME__ << " --" << std::endl;

  initmission::initMission();

  for (;;) {
    /* Suspend main thread by sleeping it. */
    TaskFactory::delayTask(5000);
  }
}