예제 #1
0
 public static void ResetSignal(bool val)
 {
     //if (m_state != IntState.Wait)
     {
         if (val && !m_dirtyResetSignal)
         {
             m_inputSignals |= IntSignals.Reset;
         }
     }
     m_dirtyResetSignal = val;
 }
예제 #2
0
 public static void StartLayer_(bool val)
 {
     if (m_state == IntState.Wait)
     {
         // if (val && !m_dirtyRunSignal)
         {
             m_inputSignals |= IntSignals.Run;
         }
     }
     m_dirtyRunSignal = val;
 }
예제 #3
0
 private static void processStopRequest()
 {
     NativeMethods.PCI_Stop_Execution();
     NativeMethods.PCI_Write_Port(0xC, 0x000);
     NativeMethods.PCI_Write_DA_List((UInt16)0);
     fileLoader.m_mut.WaitOne();    //lock file loader thread
     fileLoader.resetFile();
     PrefetchList.resetList();
     m_runningLIst = ListNumber.Undefine;
     fileLoader.m_mut.ReleaseMutex();
     m_inputSignals &= ~(IntSignals.Reset);
     m_state         = IntState.Wait; // after reset always to wait State.
 }
예제 #4
0
        public static void processSignals()
        {
            NativeMethods.readStatus(ref m_cardStatus);

            if (m_isIntiialize)
            {
                PrefetchList.stepExecution();
            }

            IntSignals s = m_inputSignals;

            switch (m_state)
            {
            case IntState.Wait:
                WaitState();
                if ((s & IntSignals.Run) != 0)
                {
                    m_inputSignals &= ~IntSignals.Run;
                    m_state         = IntState.WaitListReady;
                }
                if ((s & (IntSignals.Reset)) != 0)
                {
                    processStopRequest();
                }
                break;

            case IntState.WaitListReady:

                fillList();

                if ((s & (IntSignals.Reset)) != 0)
                {
                    processStopRequest();
                }

                break;

            case IntState.Work:

                WorkState();

                if ((s & (IntSignals.Reset)) != 0)
                {
                    processStopRequest();
                }

                break;
            }
        }