using System.Collections.Generic;
using System.Xml;
using Aitex.Core.RT.IOCore;

namespace MECF.Framework.RT.Core.IoProviders
{
	public interface IIoProvider
	{
		string Name { get; set; }

		string Module { get; set; }

		bool IsOpened { get; }
		
		bool IsSynced { get; }

		void Initialize(string module, string name, List<IoBlockItem> lstBuffers, IIoBuffer buffer, XmlElement nodeParameter, Dictionary<int, string> ioMappingPathFile);

		void Initialize(string module, string name, List<IoBlockItem> lstBuffers, IIoBuffer buffer, XmlElement nodeParameter, string ioMappingPathFile, string ioModule);

		void Start();

		void Stop();

		void Reset();

		bool SetValue(AOAccessor aoItem, float value);

		bool SetValue(DOAccessor doItem, bool value);
	}
}
