using MECF.Framework.Common.DataCenter;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Threading;

namespace CyberX8_MainPages
{
    internal static class RTData
    {
        static DispatcherTimer timer = new DispatcherTimer();
        static List<string> m_RtDataKeys=new List<string> ();
        public static Dictionary<string, object> RtDataValues=new Dictionary<string, object> ();
        static string ModuleName = "PMA";
        static RTData()
        {
           
        }

       public static void init()
        {
            m_RtDataKeys.Add($"{ModuleName}.FsmState");

            m_RtDataKeys.Add($"{ModuleName}.MfcGas1.SetPoint");
            m_RtDataKeys.Add($"{ModuleName}.MfcGas2.SetPoint");
            m_RtDataKeys.Add($"{ModuleName}.MfcGas3.SetPoint");
            m_RtDataKeys.Add($"{ModuleName}.MfcGas4.SetPoint");
            m_RtDataKeys.Add($"{ModuleName}.MfcGas5.SetPoint");
            m_RtDataKeys.Add($"{ModuleName}.MfcGas6.SetPoint");
            m_RtDataKeys.Add($"{ModuleName}.MfcGas7.SetPoint");
            m_RtDataKeys.Add($"{ModuleName}.MfcGas8.SetPoint");

            m_RtDataKeys.Add($"{ModuleName}.MfcGas1.FeedBack");
            m_RtDataKeys.Add($"{ModuleName}.MfcGas2.FeedBack");
            m_RtDataKeys.Add($"{ModuleName}.MfcGas3.FeedBack");
            m_RtDataKeys.Add($"{ModuleName}.MfcGas4.FeedBack");
            m_RtDataKeys.Add($"{ModuleName}.MfcGas5.FeedBack");
            m_RtDataKeys.Add($"{ModuleName}.MfcGas6.FeedBack");
            m_RtDataKeys.Add($"{ModuleName}.MfcGas7.FeedBack");
            m_RtDataKeys.Add($"{ModuleName}.MfcGas8.FeedBack");

            m_RtDataKeys.Add($"{ModuleName}.ForelinePressure");
            m_RtDataKeys.Add($"{ModuleName}.ProcessPressure");
            m_RtDataKeys.Add($"{ModuleName}.ChamberPressure");

            m_RtDataKeys.Add($"{ModuleName}.IsATM");
            m_RtDataKeys.Add($"{ModuleName}.IsVAC");

            m_RtDataKeys.Add($"{ModuleName}.LiftPinIsUp");
            m_RtDataKeys.Add($"{ModuleName}.LiftPinIsDown");
            timer.Interval = TimeSpan.FromSeconds(1);
            timer.Tick += timer_Tick;
            timer.Start();
        }

        static void timer_Tick(object sender, EventArgs e)
        {
            RtDataValues = QueryDataClient.Instance.Service.PollData(m_RtDataKeys);
        }
        
        //private static readonly RTData rtData = new RTData();

        //public static RTData GetRTData()             
        //{ 
        //    return rtData;
        //}

        
    }
}