#ifndef OpenTestSystem_DiagConfiguration_OtxDiagApi_IVehicleInfo_H
#define OpenTestSystem_DiagConfiguration_OtxDiagApi_IVehicleInfo_H

#include "ApiDefs.h"
#include "TypeDefs.h"
#include "OtxDataTypes/AllClasses.h"
#include "OtxDataTypes/OtxGatewayMode.h"
#include <string>
#include <vector>
#include <memory>

namespace OpenTestSystem { namespace OtxDiagManager { namespace OtxDiagApi {
	/// <summary>
	/// @snippetdoc DocSnippets.txt OtxDiagApiClassComment
	/// </summary>
	class API_EXPORTS IVehicleInfo
	{
	protected:
		inline IVehicleInfo() {}
	public:
		inline virtual ~IVehicleInfo() {}
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual std::vector<std::shared_ptr<OpenTestSystem::OtxDiagManager::OtxDiagApi::OtxDataTypes::IOtxDbComChannel>> GetDbComChannelDbComChannelsOfGateways(std::shared_ptr<OpenTestSystem::OtxDiagManager::OtxDiagApi::OtxDataTypes::IOtxDbComChannel> dbComChannel) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual OpenTestSystem::OtxDiagManager::OtxDiagApi::OtxDataTypes::OtxGatewayModes GetDbComChannelGatewayMode(std::shared_ptr<OpenTestSystem::OtxDiagManager::OtxDiagApi::OtxDataTypes::IOtxDbComChannel> dbComChannel) = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiMethodComment
		/// </summary>
		virtual bool IsDbComChannelAccessedViaGateway(std::shared_ptr<OpenTestSystem::OtxDiagManager::OtxDiagApi::OtxDataTypes::IOtxDbComChannel> dbComChannel) = 0;
	};
}}}
#endif // OpenTestSystem_DiagConfiguration_OtxDiagApi_IVehicleInfo_H