#pragma once

#include <iostream>
#include <string>
#include "StateBase.hpp"
#include "StateVariables.hpp"

class AscendState final : public StateBase
{
  private:
	enum Actions
	{
		getCTDPressure,
		getGPSPosition,
		checkSystemState,
		createSBD,
		sendSBD,
		wait,
		numActions
	};

  public:
	AscendState(std::string stateid, uint32_t timeout = 0) : StateBase{stateid, timeout}
	{
	}

  private:
	StateVariables SV;

	void doStateEntry() final;
	void doStateActions() final;
	StateNames checkEvents() final;
	void doStateExit(bool timeout) final;
	void defineActionLabels() final;

	uint32_t waitCounter = 0;
};
