/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2016 Raytrix GmbH. All rights reserved.
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma once

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// namespace: Rx.Interop.Runtime30.Camera
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
namespace Rx
{
	namespace Interop
	{
		namespace Runtime30
		{
			namespace Camera
			{
				/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				/// <summary>
				/// 	Interface to be implemented by frame grabber. Provides functions only required by frame grabber Devices.
				/// </summary>
				/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				class INativeDeviceFrameGrabber
				{
				protected:

					/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					/// <summary>
					/// 	Destructor.
					/// </summary>
					/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					virtual ~INativeDeviceFrameGrabber() { };

				public:

					/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					/// <summary>
					/// 	Sets information about the connected camera. It's required to find the corresponding camera file.
					/// </summary>
					///
					/// <param name="pcConnector">   [in] The connector type. Is "M" for grablink full board. Defines the connection type. </param>
					/// <param name="pcCameraModel"> [in] The camera model. Second part of the camera file name. Example: "hr29050MFLCPC". </param>
					/// <param name="pcDriverType">  [in] Type of the driver. First part of the camera file name. Example: "TypeD". </param>
					/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					virtual void SetCameraInfo(const char* pcConnector, const char* pcCameraModel, const char* pcDriverType) = 0;
				};
			}
		}
	}
}

#pragma make_public(Rx::Interop::Runtime30::Camera::INativeDeviceFrameGrabber)
