#pragma once

#include "data/config/GenericConfig.h"
#include "data/config/AxisConfig.h"

namespace inertia
{

struct INERTIA_API GenericSensorConfig
	: GenericConfig
{
private:
	ConfigType configType;	// single, dual, triple, quad, other

public:
	std::vector<AxisConfigPtr> configs;

	GenericSensorConfig(ConfigType _configType);
	GenericSensorConfig(uint8_t const* in, ConfigType _configType, const unsigned _length);
	GenericSensorConfig(std::wstring const& argString, ConfigType _configType);

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

	void GetBytes(std::vector<uint8_t>& out) const override;
	ConfigType GetConfigType() const override;
	const std::wstring ToString() const override;
	const std::wstring ToSimpleString(uint16_t const globalRate) const;
};

}
