#pragma once

namespace inertia
{

/** @brief Firmware Update Settings
 *
 *  Class containing settings for Firmware Validation and Reprogramming.
 */
struct INERTIA_API FirmwareSettings
{
	bool resetToDefaults;            ///< Reset the device to default settings when reprogramming with new firmware.

	std::wstring firmwareFile;       ///< The Firmware Update file.

	bool validateHardwareID;         ///< Validate if FWU target hardware ID and device hardware ID match.
	bool validateHardwareRevision;   ///< Validate if FWU target firmware ID and device firmware ID match.
	bool validateFirmwareID;         ///< Validate if FWU target hardware revision and device hardware revision match.
	bool validateFirmwareComponent;  ///< Validate if the device supports the selected FWU target components.

	std::vector<unsigned> indexes;   ///< The indexes of the target components in the FWU file that should be reprogrammed, empty for all. Order does not matter, the lowest index is always updated first.

	/** Default constructor. */
	FirmwareSettings();
};

}
