#pragma once

#include "data/config/AccelConfig.h"

namespace inertia
{

struct INERTIA_API AccelConfigExt
	: AccelConfig
{
	uint8_t instance; // 0 represents the first sensor of this type
	uint8_t samplingChannel;
	uint8_t wordSize;
	uint8_t revision;
	uint8_t channelPositionMask; // e.g. axis numbers that are used

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

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

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

}
