Example #1
0
 public void en_queue(STATE.states state)
 {
     lock (mf.states_queue)
     {
         mf.states_queue.Enqueue(state);
     }
 }
Example #2
0
        public void error()
        {
            Trace.WriteLine("tp ==> In Function error.");

            //get the failure state
            STATE.states state = queue.Dequeue();

            //if it is not fatal error, then try to fix it.
            //TO-DO

            //if it is fatal error
            queue.Enqueue(STATE.states.exit);

            try
            {
                BridgePowerOff();
            }
            catch { }
            try
            {
                BridgeCloseDevice();
            }
            catch { }

            bridge = null;
        }
Example #3
0
        public void working(STATE.states state)
        {
            try
            {
                if (state == STATE.states.TP_SendSleep1Command)
                {
                    Trace.WriteLine("tp ==> In Function Sleep1.");

                    //byte[] datain = bridge.ReadWrite(0x25, 0x80, 0x04);

                    StateStatus(new StateMachineEventArgs(true, STATE.states.TP_SendSleep1Command, "tp ==> Sleep1"));
                }

                if (state == STATE.states.TP_SendDeepSleepCommand)
                {
                    Trace.WriteLine("tp ==> In Function Deep Sleep.");

                    //byte[] datain = bridge.ReadWrite(0x25, 0x81, 0x04);

                    StateStatus(new StateMachineEventArgs(true, STATE.states.TP_SendDeepSleepCommand, "tp ==> Deep Sleep"));
                }

                if (state == STATE.states.TP_PowerOn)
                {
                    Trace.WriteLine("tp ==> In Function Power On.");
                    BridgePowerOn();
                    System.Threading.Thread.Sleep(Config.Delay.BridgePowerON);
                    //BridgeGetDUTAddress();

                    StateStatus(new StateMachineEventArgs(true, STATE.states.TP_PowerOn, "tp ==> Power On"));
                }

                if (state == STATE.states.TP_PowerOff)
                {
                    Trace.WriteLine("tp ==> In Function Power Off.");
                    BridgePowerOff();

                    StateStatus(new StateMachineEventArgs(true, STATE.states.TP_PowerOff, "tp ==> Power Off"));
                }
            }
            catch (Exception ex)
            {
                Trace.WriteLine("Error: " + ex.Message);

                //not try to fix the error in this class, directly go to the erorr handler.
                queue.Clear();
                queue.TrimExcess();
                queue.Enqueue(STATE.states.error);

                //save the current un-do state.
                queue.Enqueue(state);
            }
        }
Example #4
0
        public void working(STATE.states state)
        {
            try
            {
                if (state == STATE.states.TP_SendSleep1Command)
                {
                    Trace.WriteLine("tp ==> In Function Sleep1.");

                    byte[] datain = bridge.ReadWrite(0x25, 0x80, 0x04);

                    OnStatusChange(new TPEventArgs(1));
                }

                if (state == STATE.states.TP_SendDeepSleepCommand)
                {
                    Trace.WriteLine("tp ==> In Function Deep Sleep.");

                    byte[] datain = bridge.ReadWrite(0x25, 0x81, 0x04);

                    OnStatusChange(new TPEventArgs(2));
                }

                if (state == STATE.states.TP_PowerOn)
                {
                    Trace.WriteLine("tp ==> In Function Power On.");
                    BridgePowerOn();
                    System.Threading.Thread.Sleep(1000);
                    BridgeGetDUTAddress();

                    OnStatusChange(new TPEventArgs(0));
                }

                if (state == STATE.states.TP_PowerOff)
                {
                    Trace.WriteLine("tp ==> In Function Power Off.");
                    BridgePowerOff();

                    OnStatusChange(new TPEventArgs(4));
                }
            }
            catch (Exception ex)
            {
                Trace.WriteLine("Error: " + ex.Message);

                //not try to fix the error in this class, directly go to the erorr handler.
                queue.Clear();
                queue.TrimExcess();
                queue.Enqueue(STATE.states.error);

                //save the current un-do state.
                queue.Enqueue(state);
            }
        }
Example #5
0
        private void thread_ruuning()
        {
            mf.states_queue.Enqueue(STATE.states.initialize);
            mf.states_queue.Enqueue(STATE.states.idle);

            while (!exit_thread)
            {
                lock (mf.states_queue)
                {
                    m_state = mf.states_queue.Dequeue();
                    mf.states_queue.TrimExcess();
                    switch (m_state)
                    {
                    case STATE.states.initialize:

                        //Trace.WriteLine("In State: initalize.");
                        mf.initialize();
                        break;


                    case STATE.states.error:

                        //Trace.WriteLine("In State: error.");
                        mf.error();
                        break;

                    case STATE.states.exit:

                        //Trace.WriteLine("In State: exit.");
                        mf.exit();
                        exit_thread = true;

                        break;

                    case STATE.states.idle:

                        //Trace.WriteLine("In State: idle.");
                        mf.states_queue.Enqueue(STATE.states.idle);
                        mf.idle();
                        break;

                    case STATE.states.working:
                    default:
                        //Trace.WriteLine("In State: working.");
                        mf.working(m_state);
                        break;
                    }
                }
                Thread.Sleep(1);
            }
        }
Example #6
0
        private void thread_ruuning()
        {
            mf.states_queue.Enqueue(STATE.states.initialize);
            mf.states_queue.Enqueue(STATE.states.idle);

            while (!exit_thread)
            {
                lock (mf.states_queue)
                {
                    m_state = mf.states_queue.Dequeue();
                    mf.states_queue.TrimExcess();
                    switch (m_state)
                    {
                        case STATE.states.initialize:

                            //Trace.WriteLine("In State: initalize.");
                            mf.initialize();
                            break;

                        case STATE.states.error:

                            //Trace.WriteLine("In State: error.");
                            mf.error();
                            break;

                        case STATE.states.exit:

                            //Trace.WriteLine("In State: exit.");
                            mf.exit();
                            exit_thread = true;

                            break;

                        case STATE.states.idle:

                            //Trace.WriteLine("In State: idle.");
                            mf.states_queue.Enqueue(STATE.states.idle);
                            mf.idle();
                            break;

                        case STATE.states.working:
                        default:
                            //Trace.WriteLine("In State: working.");
                            mf.working(m_state);
                            break;
                    }
                }
                Thread.Sleep(1);
            }
        }
Example #7
0
        public void error()
        {
            Trace.WriteLine("mm ==> In Function error.");

            //get the failure state
            STATE.states state = queue.Dequeue();

            //if it is not fatal error, then try to fix it.
            //TO-DO

            //if it is fatal error
            queue.Enqueue(STATE.states.exit);

            try
            {
                mm = null;
            }
            catch
            { }
        }
Example #8
0
        public void working(STATE.states state)
        {
            try
            {
                if (state == STATE.states.MM_ReadCurr)
                {
                    Trace.WriteLine("mm ==> In Function Read Current.");

                    double curr = mm.MeasureChannelCurrent().average;
                    current.Add(curr);

                    StateStatus(new StateMachineEventArgs(true, STATE.states.MM_ReadCurr, (curr * 1000000).ToString())); //convert to uA
                }

                if (state == STATE.states.MM_CalcSleep1Curr)
                {
                    double sum  = 0;
                    double aver = 0;
                    foreach (double temp in current)
                    {
                        sum += temp;
                    }

                    aver = Math.Round((sum / Config.MEAS_TIMES) * 1000000, 2); //convert to uA

                    if ((aver < Config.SLEEP1_MAX) && (aver > Config.SLEEP1_MIN))
                    {
                        //DisplayResult(new MMResultEventArgs(1, true, aver));

                        StateStatus(new StateMachineEventArgs(true, STATE.states.MM_CalcSleep1Curr, aver.ToString()));
                    }
                    else
                    {
                        StateStatus(new StateMachineEventArgs(false, STATE.states.MM_CalcSleep1Curr, aver.ToString()));
                    }

                    current.Clear();
                }

                if (state == STATE.states.MM_CalcDeepSleepCurr)
                {
                    double sum  = 0;
                    double aver = 0;
                    foreach (double temp in current)
                    {
                        sum += temp;
                    }

                    aver = Math.Round((sum / Config.MEAS_TIMES) * 1000000, 2);

                    if ((aver < Config.DEEP_SLEEP_MAX) && (aver > Config.DEEP_SLEEP_MIN))
                    {
                        StateStatus(new StateMachineEventArgs(true, STATE.states.MM_CalcDeepSleepCurr, aver.ToString()));
                    }
                    else
                    {
                        StateStatus(new StateMachineEventArgs(false, STATE.states.MM_CalcDeepSleepCurr, aver.ToString()));
                    }

                    current.Clear();
                }
            }
            catch (Exception ex)
            {
                Trace.WriteLine("Error: " + ex.Message);

                //not try to fix the error in this class, directly go to the erorr handler.
                queue.Clear();
                queue.TrimExcess();
                queue.Enqueue(STATE.states.error);

                //save the current un-do state.
                queue.Enqueue(state);
            }
        }
Example #9
0
 public StateMachineEventArgs(bool pass_or_fail, STATE.states current_state, string message)
 {
     pf = pass_or_fail;
     st = current_state;
     ms = message;
 }
 public StateMachineEventArgs(bool pass_or_fail, STATE.states current_state, string message)
 {
     pf = pass_or_fail;
     st = current_state;
     ms = message;
 }