#pragma once

namespace inertia
{

/** @brief Bluetooth LE Connection Settings
 *
 *  Class containing settings for an BLE connection.
 */
struct INERTIA_API BLEConnSettings
{
	std::wstring macAddress;  ///< MAC Address of the BLE device.
	std::wstring deviceName;  ///< The name of the BLE device.
	unsigned payloadSize;     ///< Maximum payload size of a BLE Message.

	/** Default constructor. */
	BLEConnSettings();

	/** Constructor with individual arguments.
	 *  @param macAddress MAC Address of the BLE device
	 *  @param deviceName the name of the BLE device
	 */
	BLEConnSettings(std::wstring const& macAddress, std::wstring const& deviceName);

	/** Constructor with string argument.
	 *  Creates BLEConnSettings from a string.
	 *  @param argString string with arguments
	 */
	BLEConnSettings(std::wstring const& argString);

#ifdef WITH_BOOST_PROGRAM_OPTIONS
	/** Get the possible command-line arguments for BLEConnSettings.
	 *  Only available when \a WITH_BOOST_PROGRAM_OPTIONS is defined.
	 *  @return the option description
	 */
	static const po::options_description GetOptionDescription();
#endif

	/** Get a string representation of this BLEConnSettings.
	 *  The string is compatible with GetOptionDescription() and BLEConnSettings(std::wstring const&).
	 *  @return the string
	 */
	std::wstring const ToString() const;
};

}
