#pragma once

#include "data/config/SamplingConfig.h"

namespace inertia
{

/** RTCConfigVersion */
enum RTCConfigVersion {
	RTC_V0 = 0,
	RTC_V1,
	RTC_V2,
	RTC_V3
};

struct INERTIA_API RTCConfig
	: SamplingConfig
{
	bool externalTrigger;
	RTCConfigVersion rtcVersion;
	uint8_t samplingChannel;

	RTCConfig();
	RTCConfig(uint8_t const* in);
	RTCConfig(std::wstring const& argString);

#ifdef WITH_BOOST_PROGRAM_OPTIONS
	static const po::options_description GetOptionDescription();
#endif

	ConfigType GetConfigType() const override;
	static unsigned GetLength();
	void GetBytes(std::vector<uint8_t>& out) const override;
	const std::wstring ToString() const override;
	const std::wstring ToSimpleString(uint16_t const globalRate) const;
	const std::pair<unsigned, Channel> GetChannel() const;
};

}
