#pragma once

#include <string>
#include "StateBase.hpp"
#include "Logger.hpp"

class InitPlatformState final : public StateBase
{
public:
	InitPlatformState(std::string label, uint32_t timeout_min);

	void defineActionLabels() final;

private:
	enum Actions : uint8_t
	{
		readConfigFile = 0,
		readMissionFile,
		initCTD1,
		initBcyEngine,
		initGPS1,
		initIModem1,
		initFLBB1,
		initOptode1,
		initPTH1,
		initMSC1,
		initOCR1,
		runInitPlatformTests,
		runWakeupTests,
		lastAction
	};
	
	//StateVariables SV;

	void enterThisState();
	void exitThisState(StateEvent event);
	void doStateActions(const StateEvent event) final;
	StateNames checkEvents(const StateEvent event) final;
	
	Actions doReadConfigFile(const StateEvent event);
	Actions doReadMissionFile(const StateEvent event);
	Actions doLastAction(const StateEvent event);
	
	std::string actionLabels[lastAction + 1];
	const std::string stateLabel;
	bool hitLastAction = false;
};
