#pragma once

#include <iostream>
#include <string>
#include "StateBase.hpp"
#include "StateVariables.hpp"
#include <bsp.hpp>
#include <BuoyancyEngine_Interface.hpp>

class SubmergeState final : public StateBase
{
public:
	enum Actions : uint8_t
	{
		initiatePumping,
		numActions
	};
public:
	SubmergeState(uint32_t timeout = 0);
	
	StateNames doStateActions(const event_t& event) final;
	StateNames checkEvents(const event_t& event) final;

  private:
	StateVariables SV;
	
	void doStateEntry() final;
	void doStateExit(bool timeout) final;
	
	StateNames submergePlatformActionHandler(const event_t& event);
	
	Actions current_action_;
	
	BuoyancyEngine& buoyancyEngine_ = getBuoyancyEngine();
	
};