Пример #1
0
        /// <summary>
        /// The StateMachine EVENT of class TP
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tp_function_STEvent(object sender, StateMachineEventArgs e)
        {
            //trackpad thread init
            if (e.CurrentState == STATE.states.initialize)
            {
                if (e.PassOrFail)
                {
                    tp_ready=true;
                    if (mm_ready)
                    {
                        EnableButtonConnect(false);
                        EnableButtonSleep(true);
                        EnableButtonDeepSleep(true);

                    }
                }
            }

            //Trackpad thread exit
            if (e.CurrentState == STATE.states.exit)
            {

                if (mm_ready)
                {
                    try
                    {
                        EnableButtonConnect(true);
                        EnableButtonSleep(false);
                        EnableButtonDeepSleep(false);

                        serialNumberScanned = false;
                        SetTxtBoxSN("");

                        mm_thread.exit();
                    }
                    catch { }
                }

                tp_ready = false;
                tp_function = null;
                tp_thread = null;

            }

            //Trackpad Power On
            if (e.CurrentState == STATE.states.TP_PowerOn)
            {

            }

            //Sleep1
            if (e.CurrentState == STATE.states.TP_SendSleep1Command)
            {
                System.Threading.Thread.Sleep(Config.Delay.EnterSleepMode);

                List<STATE.states> MM_STATES = new List<STATE.states>();

                for (int i = 0; i < Config.MEAS_TIMES; i++)
                {
                    MM_STATES.Add(STATE.states.MM_ReadCurr);
                }
                MM_STATES.Add(STATE.states.MM_CalcSleep1Curr);

                mm_thread.en_queue(MM_STATES);
            }

            //Deep Sleep
            if (e.CurrentState==STATE.states.TP_SendDeepSleepCommand)
            {
                System.Threading.Thread.Sleep(Config.Delay.EnterSleepMode);

                List<STATE.states> MM_STATES = new List<STATE.states>();

                for (int i = 0; i < Config.MEAS_TIMES; i++)
                {
                    MM_STATES.Add(STATE.states.MM_ReadCurr);
                }
                MM_STATES.Add(STATE.states.MM_CalcDeepSleepCurr);

                mm_thread.en_queue(MM_STATES);
            }

            //Trackpad Power Off
            if (e.CurrentState==STATE.states.TP_PowerOff)
            {
                //mm_thread.en_queue(STATE.states.idle);
            }
        }
Пример #2
0
 protected virtual void StateStatus(StateMachineEventArgs ea)
 {
     StateEventHandler handler = STEvent;
     if (handler != null)
     {
         handler(this, ea);
     }
 }
Пример #3
0
        /// <summary>
        /// The StateMachine EVENT of class MultiMeter
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void mm_fucntion_STEvent(object sender, StateMachineEventArgs e)
        {
            //Multi-Meter Init
            if (e.CurrentState == STATE.states.initialize)
            {
                if (e.PassOrFail)
                {
                    mm_ready = true;
                    if (tp_ready)
                    {

                        EnableButtonConnect(false);
                        EnableButtonSleep(true);
                        EnableButtonDeepSleep(true);
                    }
                }
            }

            //Multi-Meter Exit
            if (e.CurrentState == STATE.states.exit)
            {

                if (tp_ready)
                {
                    try
                    {
                        EnableButtonConnect(true);
                        EnableButtonSleep(false);
                        EnableButtonDeepSleep(false);

                        serialNumberScanned = false;
                        SetTxtBoxSN("");

                        tp_thread.exit();
                    }
                    catch { }
                }

                mm_fucntion = null;
                mm_thread = null;
                mm_ready = false;
            }

            //sleep1 current
            if (e.CurrentState == STATE.states.MM_CalcSleep1Curr)
            {
                sleep1_test_done = true;
                dut.IDDValue_Sleep = Convert.ToDouble(e.Message);

                SetListBoxStatus(false, "Sleep1 Current:" + e.Message + "uA");
                if (e.PassOrFail)
                {
                    SetTextBoxSleepResult("PASS", Color.Green);
                    //Log.info("[" + serialNumber + "]" + "Sleep1 PASS:\t\t\t" + e.Average.ToString() + "uA");

                }
                else
                {
                    SetTextBoxSleepResult("FAIL", Color.Red);
                    //Log.info("[" + serialNumber + "]" + "Sleep1 FAIL:\t\t\t" + e.Average.ToString() + "uA");

                    if (dut.ErrorCode == 0)
                    {
                        dut.ErrorCode += ErrorCode.ERROR_IDD_HIGH;
                    }

                    //No need to test the deep sleep.
                    deepsleep_test_done = true;
                }

                tp_thread.en_queue(STATE.states.TP_PowerOff);

                if (sleep1_test_done && deepsleep_test_done)
                {
                    serialNumberScanned = false;
                    SetTxtBoxSN("");

                    WriteTestReport();

                    if (Config.ONLINE)
                    {
                        UploadResult();
                    }

                    dut = null;
                }
            }

            //deep sleep current
            if (e.CurrentState==STATE.states.MM_CalcDeepSleepCurr)
            {
                deepsleep_test_done = true;
                dut.IDDValue_DeepSleep = Convert.ToDouble(e.Message);

                SetListBoxStatus(false, "Deep Sleep Current:" + e.Message + "uA");
                if (e.PassOrFail)
                {
                    SetTextBoxDeepSleepResult("PASS", Color.Green);
                    //Log.info("[" + serialNumber + "]" + "Deep Sleep PASS:\t\t" + e.Average.ToString() + "uA");

                }
                else
                {
                    SetTextBoxDeepSleepResult("FAIL", Color.Red);
                    //Log.info("[" + serialNumber + "]" + "Deep Sleep FAIL:\t\t" + e.Average.ToString() + "uA");

                    if (dut.ErrorCode == 0)
                    {
                        dut.ErrorCode = ErrorCode.ERROR_IDD_LOW;
                    }

                    //No need to test the sleep1.
                    sleep1_test_done = true;
                }

                tp_thread.en_queue(STATE.states.TP_PowerOff);

                if (sleep1_test_done && deepsleep_test_done)
                {
                    serialNumberScanned = false;
                    SetTxtBoxSN("");

                    WriteTestReport();

                    if (Config.ONLINE)
                    {
                        UploadResult();
                    }

                    dut = null;
                }
            }

            if (e.CurrentState == STATE.states.MM_ReadCurr)
            {
                SetListBoxStatus(false, "Current: " + e.Message + "uA");
            }
        }
Пример #4
0
        private void tp_function_STEvent(object sender, StateMachineEventArgs e)
        {
            if (e.CurrentState == STATE.states.initialize)
            {
                if (e.PassOrFail)
                {
                    tp_ready=true;
                    if (mm_ready)
                    {
                        EnableButtonConnect(false);
                        EnableButtonSleep(true);
                        EnableButtonDeepSleep(true);

                    }
                }
            }

            if (e.CurrentState == STATE.states.exit)
            {
                try
                {
                    mm_thread.exit();

                    EnableButtonConnect(true);
                    EnableButtonSleep(false);
                    EnableButtonDeepSleep(false);

                    serialNumberScanned = false;
                    SetTxtBoxSN("");
                }
                catch { }

                tp_function = null;
                tp_thread = null;

            }
        }