#pragma once

#include "data/config/SamplingConfig.h"

namespace inertia
{

struct INERTIA_API InertialConfig
	: SamplingConfig
{
public:
	bool adoptOffset;
	bool adoptScale;

	float 	scaleX;
	float 	scaleY;
	float 	scaleZ;

	int16_t 	offsetX;
	int16_t 	offsetY;
	int16_t 	offsetZ;

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

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

	virtual void GetBytes(std::vector<uint8_t>& out) const override;
	virtual const std::wstring ToString() const override;

public:
	virtual double GetRangeFactor() const = 0;
	virtual uint16_t GetMaxRate() const = 0;
};

}
