using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;

namespace DataBlockHelper.Entity.DB2104Entity
{
	public class WeterEntity
	{
		int StartSet;
		byte[] Bytes;
		public WeterEntity(int startSet, byte[] bytes)
		{
			this.StartSet = startSet;
			this.Bytes = bytes;
		}
		public List<Recipe_WMixE> Step => new WeterArrayManager(10, StartSet, 20, Bytes).GetList();
	}



	public class Recipe_WMixE
	{
		public Recipe_WMixE(byte[] content)
		{
			MixCode = PlcConnect.Instance.ByteTransform.TransInt16(content, 0);
			MixTime = PlcConnect.Instance.ByteTransform.TransInt16(content, 2);
			MixTemp = PlcConnect.Instance.ByteTransform.TransSingle(content, 4);
			MixSpeed = PlcConnect.Instance.ByteTransform.TransSingle(content, 8);
			SetValue = PlcConnect.Instance.ByteTransform.TransSingle(content, 12);
			Tolerance = PlcConnect.Instance.ByteTransform.TransSingle(content, 16);
		}

		public short MixCode { get; private set; }
		public short MixTime { get; private set; }
		public float MixTemp { get; private set; }
		public float MixSpeed { get; private set; }
		public float SetValue { get; private set; }
		public float Tolerance { get; private set; }


	}

	public class WeterArrayManager
	{
		private int Length;
		private int StartSet;
		private int SLength;
		private byte[] Bytes;

		public WeterArrayManager(ushort length, int startSet, int sLength, byte[] bytes)
		{
			Length = length;
			StartSet = startSet;
			SLength = sLength;
			Bytes = bytes;
		}

		public List<Recipe_WMixE> GetList()
		{
			List<Recipe_WMixE> ListE = new List<Recipe_WMixE>(Length);
			//var getListE = PlcConnect.Instance.Read("DB2104." + StartSet + ".0", Convert.ToUInt16(Length * SLength));
			var content = Bytes.Skip(StartSet).Take(Length * SLength).ToArray();

            for (int i = 0; i < Length; i++)
			{
				var singleBlock = content.Skip(SLength * i).Take(SLength).ToArray();
				ListE.Add(new Recipe_WMixE(singleBlock));
			}
			return ListE;
		}
	}
}