#include "main.h"

#include <iostream>
#include <cstdint>

#include "fatfs.h"
#include "BSP.hpp"
#include "GPS1.hpp"
#include "RTClock.hpp"
#include "FileSys.hpp"
#include "StateMachine.hpp"
#include "StateVariables.hpp"

int main(void)
{
	//Check for power up from sleep or initial mission start up
	bool sleep = false;
	if (~sleep)
		StateVariables::setProfileNum(0);
		
	BSP::init();	
	StateMachine::initSM();
	StateMachine::runSM();

	std::cout << "Exiting CPF embedded app" << std::endl;
}

/**
  * @brief  This function is executed in case of error occurrence.
  * @retval None
  */
void Error_Handler(void)
{
	/* USER CODE BEGIN Error_Handler_Debug */
	/* User can add his own implementation to report the HAL error return state */
	__disable_irq();
	while (1)
	{
	}
	/* USER CODE END Error_Handler_Debug */
}

#ifdef  USE_FULL_ASSERT
/**
  * @brief  Reports the name of the source file and the source line number
  *         where the assert_param error has occurred.
  * @param  file: pointer to the source file name
  * @param  line: assert_param error line source number
  * @retval None
  */
void assert_failed(uint8_t *file, uint32_t line)
{
	/* USER CODE BEGIN 6 */
	/* User can add his own implementation to report the file name and line number,
	   ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
	 /* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */
