#include <objects/systemObjectList.h>

#include <iostream>

#include "InitMission.h"
#include "commonConfig.h"
#include "fsfw/FSFWVersion.h"
#include "fsfw/controller/ControllerBase.h"
#include "fsfw/ipc/QueueFactory.h"
#include "fsfw/modes/HasModesIF.h"
#include "fsfw/modes/ModeMessage.h"
#include "fsfw/objectmanager/ObjectManager.h"
#include "fsfw/tasks/TaskFactory.h"

#ifdef WIN32
static const char* COMPILE_PRINTOUT = "Windows";
#elif LINUX
static const char* COMPILE_PRINTOUT = "Linux";
#else
static const char* COMPILE_PRINTOUT = "unknown OS";
#endif
/**
 * @brief 	This is the main program for the hosted build. It can be run for
 * 			Linux and Windows.
 * @return
 */
int main(void) {
  std::cout << "-- EIVE OBSW --" << std::endl;
  std::cout << "-- Compiled for " << COMPILE_PRINTOUT << " --" << std::endl;
  std::cout << "-- OBSW "
            << "v" << common::OBSW_VERSION << " | 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);
  }
}