コード例 #1
0
        public override MTKTestError RunTest()
        {
            MTKTestError return_value = MTKTestError.NoError;


            programCompleted = true;

            //ProgramAllAtEnd == false : Begin
            if ((ProgramAllAtEnd == false) && (CurrentDUT == CyBLE_MTK.IndexConfiguredSerialPortfor1stRow))
            {
                InitializeTestResult();
                programCompleted = false;
                ProgramAll();

                TestResult.Result = "DONE";
                TestResultUpdate(TestResult);
                TestStatusUpdate(MTKTestMessageType.Complete, "DONE");
            }
            //ProgramAllAtEnd == true : End
            if ((ProgramAllAtEnd == true) && (CurrentDUT == CyBLE_MTK.IndexConfiguredSerialPortforfinalRow))
            {
                InitializeTestResult();
                programCompleted = false;
                ProgramAll();

                TestResult.Result = "DONE";
                TestResultUpdate(TestResult);
                TestStatusUpdate(MTKTestMessageType.Complete, "DONE");
            }



            return(return_value);
        }
コード例 #2
0
        public override MTKTestError RunTest()
        {
            MTKTestError return_value = MTKTestError.NoError;

            this.InitializeTestResult();

            if (CurrentDUT == 0)
            {
                programCompleted = false;
            }

            if (((CurrentDUT == 0) && (ProgramAllAtEnd == false)) ||
                ((CurrentDUT == (NumberOfDUTs - 1)) && (ProgramAllAtEnd == true)))
            {
                if (!ProgramAll())
                {
                    return_value = MTKTestError.NotAllDevicesProgrammed;
                }
            }

            TestResult.Result = "DONE";
            TestResultUpdate(TestResult);
            TestStatusUpdate(MTKTestMessageType.Complete, "DONE");
            return(return_value);
        }
コード例 #3
0
        private MTKTestError RunTestUART()
        {
            //TO DO something...
            MTKTestError RetVal = MTKTestError.Pending;

            try
            {
                MTKInstruments.DUTCurrent = MTKInstruments.MeasureChannelCurrent(CurrentDUT);



                return(RetVal);
            }
            catch
            {
                RetVal            = MTKTestError.TestFailed;
                TestResult.Result = "FAIL";
                TestResultUpdate(TestResult);
                return(RetVal);
            }
            finally
            {
                //Recover all duts' power on after testing.
                if (!MTKInstruments.SwitchAllDutOn())
                {
                    this.Log.PrintLog(this, "Fail to recover power after current test.", LogDetailLevel.LogRelevant);
                }
            }
        }
        public override MTKTestError RunTest()
        {
            MTKTestError return_value = MTKTestError.NoError;



            programCompleted = true;

            //ProgramAllAtEnd == false : Begin
            if ((ProgramAllAtEnd == false) && (CurrentDUT == CyBLE_MTK.IndexConfiguredSerialPortfor1stRow))
            {
                InitializeTestResult();
                programCompleted = false;
            }
            //ProgramAllAtEnd == true : End
            if ((ProgramAllAtEnd == true) && (CurrentDUT == CyBLE_MTK.IndexConfiguredSerialPortforfinalRow))
            {
                InitializeTestResult();
                programCompleted = false;
            }



            if (programCompleted == false)
            {
                ProgramAll();


                TestResult.Result = "DONE";
                TestResultUpdate(TestResult);
                TestStatusUpdate(MTKTestMessageType.Complete, "DONE");



                //if (!ProgramAll())
                //{
                //    //return_value = MTKTestError.NotAllDevicesProgrammed;
                //    //TestResult.Result = "FAIL";
                //    //TestResultUpdate(TestResult);
                //    //TestStatusUpdate(MTKTestMessageType.Failure, "FAIL");
                //}
                //else
                //{
                //    TestResult.Result = "DONE";
                //    TestResultUpdate(TestResult);
                //    TestStatusUpdate(MTKTestMessageType.Complete, "DONE");
                //}
            }
            else
            {
                TestResult.Result = "DONE";
                TestResultUpdate(TestResult);
                TestStatusUpdate(MTKTestMessageType.Complete, "DONE");
            }



            return(return_value);
        }
コード例 #5
0
        private MTKTestError NotProgrammingThread()
        {
            MTKTestError temp = new MTKTestError();

            temp = MTKTestError.ProgrammerNotConfigured;

            return(temp);
        }
コード例 #6
0
        public void RunTestProgram(int NumIteration)
        {
            bool         _Ignore;
            MTKTestError ReturnValue = MTKTestError.NoError;

            CurrentTestStatus = TestProgramState.Running;
            NumberOfDUTs      = NumIteration;
            TestRunViability();

            TestStart = false;

            for (int j = 0; j < NumIteration; j++)
            {
                devTestComplete = false;
                _Ignore         = false;
                _CurrentDUT     = j;
                Log.PrintLog(this, "Selecting DUT " + (j + 1).ToString() + "/" +
                             NumIteration.ToString() + " for tests", LogDetailLevel.LogRelevant);
                OnNextIteration(j);
                ReturnValue     = RunAllTests();
                devTestComplete = true;

                if ((CurrentTestStatus == TestProgramState.Stop) ||
                    (CurrentTestStatus == TestProgramState.Stopped) ||
                    (CurrentTestStatus == TestProgramState.Stopping))
                {
                    break;
                }

                if (ReturnValue == MTKTestError.NoError)
                {
                    if (TestStart)
                    {
                        OnOverallPass();
                        Log.PrintLog(this, "Overall test result: PASS", LogDetailLevel.LogRelevant);
                    }
                }
                else if (ReturnValue == MTKTestError.TestFailed)
                {
                    OnOverallFail();
                    Log.PrintLog(this, "Overall test result: FAIL", LogDetailLevel.LogRelevant);
                }
                else if (ReturnValue == MTKTestError.IgnoringDUT)
                {
                    OnIgnoreDUT();
                    Log.PrintLog(this, "Ignoring DUT# " + _CurrentDUT.ToString(), LogDetailLevel.LogRelevant);
                    _Ignore = true;
                }

                OnCurrentIterationComplete(j, _Ignore);
            }

            StopTestProgram();
            OnTestStopped();
            _CurrentDUT       = 0;
            _CurrentTestIndex = 0;
            CurrentTestStatus = TestProgramState.Stopped;
        }
コード例 #7
0
        public bool SwitchToAnritsu()
        {
            MTKTestError CommandRetVal = SendCommand(DUTSerialPort, "ARU", 100);

            if (CommandRetVal == MTKTestError.NoError)
            {
                return(true);
            }

            return(false);
        }
コード例 #8
0
        public override MTKTestError RunTest()
        {
            MTKTestError RetVal = MTKTestError.NoError;

            this.InitializeTestResult();

            if (!ConnectProgrammer())
            {
                TestStatusUpdate(MTKTestMessageType.Information, "Error!!!");
                Log.PrintLog(this, "Unable to connect to the programmer.", LogDetailLevel.LogRelevant);
                RetVal = MTKTestError.TestFailed;
            }

            if (SelectedAction == PSoCProgrammerAction.Program)
            {
                if (!ProgramAll())
                {
                    TestStatusUpdate(MTKTestMessageType.Information, "Error!!!");
                    //Log.PrintLog(this, "Unable to flash the hex file.", LogDetailLevel.LogRelevant);
                    RetVal = MTKTestError.TestFailed;
                }
            }
            else if (SelectedAction == PSoCProgrammerAction.Erase)
            {
                if (!EraseAll())
                {
                    TestStatusUpdate(MTKTestMessageType.Information, "Error!!!");
                    //Log.PrintLog(this, "Unable to erase flash.", LogDetailLevel.LogRelevant);
                    RetVal = MTKTestError.TestFailed;
                }
            }

            if (!DisconnectProgrammer())
            {
                TestStatusUpdate(MTKTestMessageType.Information, "Error!!!");
                Log.PrintLog(this, "Unable to disconnect from the programmer.", LogDetailLevel.LogRelevant);
                RetVal = MTKTestError.TestFailed;
            }

            if (RetVal == MTKTestError.NoError)
            {
                TestStatusUpdate(MTKTestMessageType.Success, "PASS");
                TestResult.Result = "PASS";
            }
            else
            {
                TestStatusUpdate(MTKTestMessageType.Failure, "FAIL");
                TestResult.Result = "FAIL";
            }

            TestResultUpdate(TestResult);
            return(RetVal);
        }
コード例 #9
0
        public override MTKTestError RunTest()
        {
            MTKTestError return_value = MTKTestError.NoError;

            if (((CurrentDUT == 0) && (ProgramAllAtEnd == false)) ||
                ((CurrentDUT == (NumberOfDUTs - 1)) && (ProgramAllAtEnd == true)))
            {
                if (!ProgramAll())
                {
                    return_value = MTKTestError.NotAllDevicesProgrammed;
                }
            }

            TestStatusUpdate(MTKTestMessageType.Complete, "DONE");
            return(return_value);
        }
コード例 #10
0
        public override MTKTestError RunTest()
        {
            MTKTestError RetVal = MTKTestError.NoError;

            this.InitializeTestResult();

            if (this.DUTConnectionMode == DUTConnMode.BLE)
            {
                RetVal = RunTestBLE();
            }
            else if (this.DUTConnectionMode == DUTConnMode.UART)
            {
                RefreshMTKHostSerialPort(MTKSerialPort);

                RetVal = RunTestUART();
            }
            else
            {
                MTKTestTmplSFCSErrCode = ECCS.ERROR_CODE_CAUSED_BY_MTK_TESTER;
                return(MTKTestError.NoConnectionModeSet);
            }

            TestResultUpdate(TestResult);

            if (RetVal == MTKTestError.NoError)
            {
                if (MTKSerialPort.IsOpen)
                {
                    MTKTestTmplSFCSErrCode = ECCS.ERRORCODE_ALL_PASS;
                }
                else
                {
                    MTKTestTmplSFCSErrCode = ECCS.ERROR_CODE_CAUSED_BY_MTK_TESTER;
                }
            }
            else if (RetVal == MTKTestError.IgnoringDUT)
            {
                MTKTestTmplSFCSErrCode = ECCS.ERRORCODE_DUT_NOT_TEST;
            }
            else
            {
                MTKTestTmplSFCSErrCode = ECCS.ERRORCODE_STC_DATA_TRANSFER_TEST_FAIL;
            }

            return(RetVal);
        }
コード例 #11
0
        public UInt16 ReturnFinalDUTOverallSFCSErrCodeforDUT(MTKTestError mTKTestError, UInt16 _DUTOverallSFCSErrCode, bool shopfloorpermission)
        {
            try
            {
                if (!shopfloorpermission && _DUTOverallSFCSErrCode != ECCS.ERRORCODE_DUT_NOT_TEST && mTKTestError != MTKTestError.IgnoringDUT)
                {
                    return(ECCS.ERRORCODE_SHOPFLOOR_PROCESS_ERROR);
                }
                else
                {
                    //for DUTOverallSFCSErrCode
                    return(_DUTOverallSFCSErrCode);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Reason: \n" + ex.ToString(), "ReturnFinalDUTOverallSFCSErrCodeforDUT Error");
            }

            return(ECCS.TMPL_ERROR_CODE);
        }
コード例 #12
0
        public UInt16 ReturnFinalDUTOverallSFCSErrCodeforDUT(MTKTestError mTKTestError, UInt16 _DUTOverallSFCSErrCode, bool shopfloorpermission, int CurrentDUT)
        {
            try
            {
                if (!shopfloorpermission && _DUTOverallSFCSErrCode != ECCS.ERRORCODE_DUT_NOT_TEST && mTKTestError != MTKTestError.IgnoringDUT)
                {
                    return(TestProgramManager.DUTProcessCheckErrCode[CurrentDUT]);
                }
                else
                {
                    //for DUTOverallSFCSErrCode
                    return(_DUTOverallSFCSErrCode);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Reason: \n" + ex.ToString(), "ReturnFinalDUTOverallSFCSErrCodeforDUT Error");
            }

            return(ECCS.TMPL_ERROR_CODE);
        }
コード例 #13
0
        private bool ExecuteSTCCommand(string Command, MTKTestError CommandRetVal, SerialPort DUTSerialPort, int DelayPerCommand, int TimeSlice, int TimeIncSteps, int PercentageComplete, int PercentIncSteps)
        {
            //  Command #3
            Command       = "STC " + (this.PacketCount * 2).ToString();
            CommandRetVal = SendCommand(DUTSerialPort, Command, DelayPerCommand);
            if (CommandRetVal != MTKTestError.NoError)
            {
                return(false);
            }



            for (int i = 0; i < TimeSlice; i++)
            {
                PercentageComplete += PercentIncSteps;
                TestStatusUpdate(MTKTestMessageType.Information, PercentageComplete.ToString() + "%");
                Thread.Sleep(TimeIncSteps);
            }

            return(true);
        }
コード例 #14
0
        public override MTKTestError RunTest()
        {
            MTKTestError RetVal = MTKTestError.NoError;

            this.InitializeTestResult();

            if (this.DUTConnectionMode == DUTConnMode.BLE)
            {
                RetVal = RunTestBLE();
            }
            else if (this.DUTConnectionMode == DUTConnMode.UART)
            {
                RetVal = RunTestUART();
            }
            else
            {
                return(MTKTestError.NoConnectionModeSet);
            }

            TestResultUpdate(TestResult);

            return(RetVal);
        }
コード例 #15
0
 private bool ExecuteRRSCommand(string command, MTKTestError commandRetVal, SerialPort dUTSerialPort, int delayPerCommand)
 {
     throw new NotImplementedException();
 }
コード例 #16
0
        public void _RunTestProgram(int NumIteration)
        {
            bool         _Ignore;
            MTKTestError ReturnValue = MTKTestError.NoError;

            CurrentTestStatus = TestProgramState.Running;
            NumberOfDUTs      = NumIteration;
            TestRunViability();

            TestStart = false;

            try
            {
                stopwatch.Restart();
                Log.PrintLog(this, $"RunTestProgram StopWatch is started.", LogDetailLevel.LogRelevant);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "StopWatch of TestProgramManager");
            }

            if (CheckAllDutsPermissionFailure())
            {
                for (int i = 0; i < NumIteration; i++)
                {
                    OnOverallFail();
                    Log.PrintLog(this, "Overall test result: FAIL", LogDetailLevel.LogRelevant);
                }
            }
            else
            {
                for (int j = 0; j < NumIteration; j++)
                {
                    devTestComplete = false;
                    _Ignore         = false;
                    _CurrentDUT     = j;

                    Log.PrintLog(this, "Selecting DUT " + (j + 1).ToString() + "/" +
                                 NumIteration.ToString() + " for tests", LogDetailLevel.LogRelevant);
                    OnNextIteration(j);

                    if (CyBLE_MTK.DUTsTestFlag[j])
                    {
                        ReturnValue = RunAllTests();
                    }
                    else
                    {
                        ReturnValue = MTKTestError.IgnoringDUT;
                    }


                    devTestComplete = true;

                    if ((CurrentTestStatus == TestProgramState.Stop) ||
                        (CurrentTestStatus == TestProgramState.Stopped) ||
                        (CurrentTestStatus == TestProgramState.Stopping))
                    {
                        break;
                    }

                    if (ReturnValue == MTKTestError.NoError && CyBLE_MTK.DUTsTestFlag[_CurrentDUT])
                    {
                        if (TestStart)
                        {
                            OnOverallPass();
                            Log.PrintLog(this, "Overall test result: PASS", LogDetailLevel.LogRelevant);
                        }
                    }
                    //else if (ReturnValue == MTKTestError.ProcessCheckFailure)
                    //{
                    //    DUTOverallSFCSErrCode[_CurrentDUT] = ECCS.ERRORCODE_SHOPFLOOR_PROCESS_ERROR;
                    //    OnOverallFail();

                    //}
                    else if (ReturnValue == MTKTestError.IgnoringDUT || ReturnValue == MTKTestError.ProgrammerNotConfigured || (!CyBLE_MTK.DUTsTestFlag[_CurrentDUT] && CyBLE_MTK.shopfloor_permission[_CurrentDUT]))
                    {
                        OnIgnoreDUT();
                        Log.PrintLog(this, "Ignoring DUT# " + _CurrentDUT.ToString(), LogDetailLevel.LogRelevant);
                        DUTOverallSFCSErrCode[_CurrentDUT] = ECCS.ERRORCODE_DUT_NOT_TEST;
                        _Ignore = true;
                    }
                    else
                    {
                        OnOverallFail();
                        Log.PrintLog(this, "Overall test result: FAIL", LogDetailLevel.LogRelevant);
                    }



                    CurrentDUTTestError = ReturnValue;

                    OnCurrentIterationComplete(j, _Ignore);
                }
            }



            try
            {
                stopwatch.Stop();
                Log.PrintLog(this, $"The last cycle run test program with {NumberOfDUTs} DUT(s) totally elasped: " + stopwatch.Elapsed.TotalSeconds + " secs.", LogDetailLevel.LogRelevant);

                CyBLE_MTK.TestProgramRunCycleTimeForBatch = stopwatch.Elapsed.TotalSeconds.ToString();
            }
            catch
            {
                MessageBox.Show("Fail to stopwatch");
            }

            SetDUTOverallSFCSErrCode();


            StopTestProgram();
            OnTestStopped();
            _CurrentDUT       = 0;
            _CurrentTestIndex = 0;
            CurrentTestStatus = TestProgramState.Stopped;
        }
コード例 #17
0
        private MTKTestError RunAllTests()
        {
            bool FailedOnce = false;

            testRunning = true;



            for (int i = 0; i < TestProgram.Count; i++)
            {
                _CurrentTestIndex = i;
                if (CurrentTestStatus == TestProgramState.Stop)
                {
                    CurrentTestStatus = TestProgramState.Stopping;
                    StopTestProgram();
                    CurrentTestStatus = TestProgramState.Stopped;
                    OnTestStopped();
                    break;
                }

                TestStart = true;

                MTKTestError TestResult = MTKTestError.Pending;



                TestResult = RunTest(i);


                if (TestResult != MTKTestError.NoError)
                {
                    if (TestResult == MTKTestError.IgnoringDUT || TestResult == MTKTestError.ProgrammerNotConfigured && CyBLE_MTK.DUTsTestFlag[_CurrentDUT])
                    {
                        OnIgnoreDUT();
                        return(MTKTestError.IgnoringDUT);
                    }
                    else if (TestResult == MTKTestError.NotAllDevicesProgrammed)
                    {
                        return(MTKTestError.NotAllDevicesProgrammed);
                    }
                    else
                    {
                        if ((CurrentTestStatus != TestProgramState.Pausing) &&
                            (CurrentTestStatus != TestProgramState.Paused) &&
                            (CurrentTestStatus != TestProgramState.Pause) &&
                            (PauseTestsOnFailure == true))
                        {
                            CurrentTestStatus = TestProgramState.Pause;
                        }
                        OnOverallFail();
                        FailedOnce = true;
                        OnTestError(TestResult, TestResult.ToString());
                    }
                }

                if (CurrentTestStatus == TestProgramState.Pause)
                {
                    CurrentTestStatus = TestProgramState.Paused;
                    Log.PrintLog(this, "Test program paused.", LogDetailLevel.LogRelevant);
                    OnTestPaused();
                    while (!PauseTestEvent.WaitOne(100))
                    {
                        ;
                    }
                    if (CurrentTestStatus == TestProgramState.Stop)
                    {
                        StopTestProgram();
                        testRunning = false;
                        if (FailedOnce)
                        {
                            return(MTKTestError.TestFailed);
                        }
                        else
                        {
                            return(MTKTestError.NoError);
                        }
                    }
                    CurrentTestStatus = TestProgramState.Running;
                }

                ///cysp: SetDUTOverallSFCSErrorCodeForUploadTestResult

                SetDUTTmplSFCSErrorCode(_CurrentDUT, _CurrentTestIndex);
            }


            testRunning = false;



            if (FailedOnce)
            {
                return(MTKTestError.TestFailed);
            }


            else
            {
                return(MTKTestError.NoError);
            }
        }
コード例 #18
0
        private bool CheckPorts(string TestType, out MTKTestError err)
        {
            bool ReturnValue = true, CheckDUTPort = false;

            err = MTKTestError.NoError;

            if ((TestType == "MTKTestTXP") || (TestType == "MTKTestTXPER") || (TestType == "MTKTestRXP") ||
                (TestType == "MTKTestRXPER") || (TestType == "MTKTestTXCW") || (TestType == "MTKTestSTC"))
            {
                if (MTKSerialPort.IsOpen == false)
                {
                    OnMTKPortOpen();
                    if (MTKSerialPort.IsOpen == false)
                    {
                        err = MTKTestError.MissingMTKSerialPort;
                        return(false);
                    }
                }

                CheckDUTPort = true;
            }

            if ((TestType == "MTKTestCUS") || (TestType == "MTKTestXOCalibration") || (TestType == "MTKTestProgramAll"))
            {
                CheckDUTPort = true;
            }

            if (TestType == "MTKTestAnritsu")
            {
                if (AnritsuSerialPort.IsOpen == false)
                {
                    OnAnritsuPortOpen();
                    if (AnritsuSerialPort.IsOpen == false)
                    {
                        err = MTKTestError.MissingAnritsuSerialPort;
                        return(false);
                    }
                }

                CheckDUTPort = true;
            }

            if (CheckDUTPort)
            {
                if ((DUTSerialPort.IsOpen == false) && (DUTConnectionType == "UART"))
                {
                    if (!_IgnoreDUT)
                    {
                        OnDUTPortOpen();
                    }
                    if ((DUTSerialPort.IsOpen == false) && (DUTConnectionType == "UART"))
                    {
                        if (_IgnoreDUT)
                        {
                            err = MTKTestError.IgnoringDUT;
                        }
                        else
                        {
                            err = MTKTestError.MissingDUTSerialPort;
                        }
                        return(false);
                    }
                }
            }

            return(ReturnValue);
        }
コード例 #19
0
        public override MTKTestError RunTest()
        {
            char[] DelimiterChars = { ',', '\n' };
            string OuputACKNAC;
            bool   FailedOnce = false;

            this.InitializeTestResult();
            TestStatusUpdate(MTKTestMessageType.Information, "Applying offsets...");
            this.Log.PrintLog(this, "Applying offsets.", LogDetailLevel.LogRelevant);
            AnritsuPort.WriteLine("LEOPCFG " + TestScriptID.ToString() + ",AVGMNLIM," + OutputPowerOffset.ToString());
            this.Log.PrintLog(this, "Setting offset: LEOPCFG " + TestScriptID.ToString() + ",AVGMNLIM," + OutputPowerOffset.ToString() + ": Done", LogDetailLevel.LogEverything);
            Thread.Sleep(20);
            AnritsuPort.DiscardInBuffer();
            AnritsuPort.DiscardOutBuffer();
            AnritsuPort.WriteLine("LEOPCFG? 4,AVGMNLIM");
            Thread.Sleep(200);
            string OffsetOutput = AnritsuPort.ReadExisting();

            string[] OffsetOutputBroke = OffsetOutput.Split(DelimiterChars);
            if (decimal.Parse(OffsetOutputBroke[2]) != OutputPowerOffset)
            {
                TestStatusUpdate(MTKTestMessageType.Failure, "FAIL");
                this.Log.PrintLog(this, "Cannot apply output power offset.", LogDetailLevel.LogRelevant);
                return(MTKTestError.TestFailed);
            }

            AnritsuPort.WriteLine("LESSCFG " + TestScriptID.ToString() + ",TXPWR," + TXPowerOffset.ToString());
            this.Log.PrintLog(this, "Setting offset: LESSCFG " + TestScriptID.ToString() + ",TXPWR," + TXPowerOffset.ToString() + ": Done", LogDetailLevel.LogEverything);
            Thread.Sleep(20);
            AnritsuPort.DiscardInBuffer();
            AnritsuPort.DiscardOutBuffer();
            AnritsuPort.WriteLine("LESSCFG? 4,TXPWR");
            Thread.Sleep(200);
            OffsetOutput      = AnritsuPort.ReadExisting();
            OffsetOutputBroke = OffsetOutput.Split(DelimiterChars);
            if (decimal.Parse(OffsetOutputBroke[2]) != TXPowerOffset)
            {
                TestStatusUpdate(MTKTestMessageType.Failure, "FAIL");
                this.Log.PrintLog(this, "Cannot apply TX power offset.", LogDetailLevel.LogRelevant);
                return(MTKTestError.TestFailed);
            }

            TestStatusUpdate(MTKTestMessageType.Information, "Running...");
            this.Log.PrintLog(this, "Running Anritus test script.", LogDetailLevel.LogRelevant);

            AnritsuPort.WriteLine("RUN");
            int LoopCount = 0;

            do
            {
                AnritsuPort.WriteLine("*INS?");
                Thread.Sleep(100);
                OuputACKNAC = AnritsuPort.ReadExisting();
                LoopCount++;
            } while ((OuputACKNAC != "R46\n") && (LoopCount < 150));

            //Thread.Sleep(2000);

            if (OuputACKNAC == "R46\n")
            {
                Log.PrintLog(this, "Getting result for: LEOP", LogDetailLevel.LogRelevant);
                string   TestOutput = GetResults("ORESULT TEST,0,LEOP");
                string[] Output     = TestOutput.Split(DelimiterChars);
                if (Output[0] == "R46")
                {
                    List <string> temp = Output.Cast <string>().ToList();
                    temp.Remove("R46");
                    Output = temp.ToArray();
                }
                if ((Output[0] == "RLEOP0") && (Output[1] == "TRUE"))
                {
                    MTKTestResult TestResult1 = new MTKTestResult();
                    TestResult1.TestName      = this.ToString() + " - LEOP0";
                    TestResult1.PassCriterion = "N/A";
                    TestResult1.Measured      = "N/A";
                    TestResult1.Parameters    = new string[] { "Packet Average Power", "Test Average Maximum",
                                                               "Test Average Minimum", "Overall Peak Power",
                                                               "Number of Failed Packets", "Number of Tested Packets" };
                    TestResult1.Value  = new string[] { Output[2], Output[3], Output[4], Output[5], Output[6], Output[7] };
                    TestResult1.Result = Output[8];
                    TestResultUpdate(TestResult1);

                    Log.PrintLog(this, "Packet Average Power: " + Output[2] + "dBm", LogDetailLevel.LogEverything);
                    Log.PrintLog(this, "Test Average Maximum: " + Output[3] + "dBm", LogDetailLevel.LogEverything);
                    Log.PrintLog(this, "Test Average Minimum: " + Output[4] + "dBm", LogDetailLevel.LogEverything);
                    Log.PrintLog(this, "Overall Peak Power: " + Output[5] + "dBm", LogDetailLevel.LogEverything);
                    Log.PrintLog(this, "Number of Failed Packets: " + Output[6], LogDetailLevel.LogEverything);
                    Log.PrintLog(this, "Number of Tested Packets: " + Output[7], LogDetailLevel.LogRelevant);
                    Log.PrintLog(this, "Result: " + Output[8], LogDetailLevel.LogRelevant);
                    if (Output[8] == "FAIL")
                    {
                        TestStatusUpdate(MTKTestMessageType.Failure, "FAIL");
                        FailedOnce = true;
                    }
                }
                else
                {
                    Log.PrintLog(this, "Invalid Test Result: " + TestOutput, LogDetailLevel.LogRelevant);
                    //TestStatusUpdate(MTKTestMessageType.Failure, "FAIL");
                    //this.Log.PrintLog(this, "Result: FAIL", LogDetailLevel.LogRelevant);
                    FailedOnce = true;
                }

                Log.PrintLog(this, "Getting result for: LEICD", LogDetailLevel.LogRelevant);
                TestOutput = GetResults("ORESULT TEST,0,LEICD");
                Output     = TestOutput.Split(DelimiterChars);
                if ((Output[0] == "RLEICD0") && (Output[1] == "TRUE"))
                {
                    MTKTestResult TestResult1 = new MTKTestResult();
                    TestResult1.TestName      = this.ToString() + " - LEICD0";
                    TestResult1.PassCriterion = "N/A";
                    TestResult1.Measured      = "N/A";
                    TestResult1.Parameters    = new string[] { "Average Fn", "Maximum Positive Fn", "Minimum Negative Fn",
                                                               "Drift Rate", "Average Drift", "Maximum Drift", "Packets Failed",
                                                               "Packets Tested" };
                    TestResult1.Value = new string[] { Output[2], Output[3], Output[4], Output[5],
                                                       Output[6], Output[7], Output[8], Output[9] };
                    TestResult1.Result = Output[10];
                    TestResultUpdate(TestResult1);

                    Log.PrintLog(this, "Average Fn: " + Output[2], LogDetailLevel.LogEverything);
                    Log.PrintLog(this, "Maximum Positive Fn: " + Output[3], LogDetailLevel.LogEverything);
                    Log.PrintLog(this, "Minimum Negative Fn: " + Output[4], LogDetailLevel.LogEverything);
                    Log.PrintLog(this, "Drift Rate: " + Output[5], LogDetailLevel.LogEverything);
                    Log.PrintLog(this, "Average Drift: " + Output[6], LogDetailLevel.LogEverything);
                    Log.PrintLog(this, "Maximum Drift: " + Output[7], LogDetailLevel.LogEverything);
                    Log.PrintLog(this, "Packets Failed: " + Output[8], LogDetailLevel.LogEverything);
                    Log.PrintLog(this, "Packets Tested: " + Output[9], LogDetailLevel.LogEverything);
                    Log.PrintLog(this, "Result: " + Output[10], LogDetailLevel.LogRelevant);
                    if (Output[10] == "FAIL")
                    {
                        TestStatusUpdate(MTKTestMessageType.Failure, "FAIL");
                        FailedOnce = true;
                    }
                }
                else
                {
                    Log.PrintLog(this, "Invalid Test Result: " + TestOutput, LogDetailLevel.LogRelevant);
                    //TestStatusUpdate(MTKTestMessageType.Failure, "FAIL");
                    //this.Log.PrintLog(this, "Result: FAIL", LogDetailLevel.LogRelevant);
                    FailedOnce = true;
                }

                Log.PrintLog(this, "Getting result for: LEMI", LogDetailLevel.LogRelevant);
                TestOutput = GetResults("ORESULT TEST,0,LEMI");
                Output     = TestOutput.Split(DelimiterChars);
                if ((Output[0] == "RLEMI0") && (Output[1] == "TRUE"))
                {
                    MTKTestResult TestResult1 = new MTKTestResult();
                    TestResult1.TestName      = this.ToString() + " - LEMI0";
                    TestResult1.PassCriterion = "N/A";
                    TestResult1.Measured      = "N/A";
                    TestResult1.Parameters    = new string[] { "Delta f1 max in Hz", "Delta f1 average in Hz", "Delta f2 max in Hz",
                                                               "Delta f2 average in Hz", "Delta f2avg/ delta f1avg", "F2 max Failed limit",
                                                               "F2 max count", "Packets failed", "Packets tested", "F2max % pass rate" };

                    TestResult1.Value = new string[] { Output[2], Output[3], Output[4], Output[5],
                                                       Output[6], Output[7], Output[8], Output[9], Output[10], Output[12] };
                    TestResult1.Result = Output[11];
                    TestResultUpdate(TestResult1);

                    Log.PrintLog(this, "Delta f1 max: " + Output[2] + "Hz", LogDetailLevel.LogEverything);
                    Log.PrintLog(this, "Delta f1 average: " + Output[3] + "Hz", LogDetailLevel.LogEverything);
                    Log.PrintLog(this, "Delta f2 max: " + Output[4] + "Hz", LogDetailLevel.LogEverything);
                    Log.PrintLog(this, "Delta f2 average: " + Output[5] + "Hz", LogDetailLevel.LogEverything);
                    Log.PrintLog(this, "Delta f2 avg / delta f1 avg : " + Output[6], LogDetailLevel.LogEverything);
                    Log.PrintLog(this, "F2 max Failed limit: " + Output[7], LogDetailLevel.LogEverything);
                    Log.PrintLog(this, "F2 max count: " + Output[8], LogDetailLevel.LogEverything);
                    Log.PrintLog(this, "Packets failed: " + Output[9], LogDetailLevel.LogEverything);
                    Log.PrintLog(this, "Packets tested: " + Output[10], LogDetailLevel.LogEverything);
                    Log.PrintLog(this, "F2max % pass rate: " + Output[12], LogDetailLevel.LogEverything);
                    Log.PrintLog(this, "Result: " + Output[11], LogDetailLevel.LogRelevant);
                    if (Output[11] == "FAIL")
                    {
                        TestStatusUpdate(MTKTestMessageType.Failure, "FAIL");
                        FailedOnce = true;
                    }
                }
                else
                {
                    Log.PrintLog(this, "Invalid Test Result: " + TestOutput, LogDetailLevel.LogRelevant);
                    //TestStatusUpdate(MTKTestMessageType.Failure, "FAIL");
                    //this.Log.PrintLog(this, "Result: FAIL", LogDetailLevel.LogRelevant);
                    FailedOnce = true;
                }

                Log.PrintLog(this, "Getting result for: LESS", LogDetailLevel.LogRelevant);
                TestOutput = GetResults("ORESULT TEST,0,LESS");
                Output     = TestOutput.Split(DelimiterChars);
                if ((Output[0] == "RLESS0") && (Output[1] == "TRUE"))
                {
                    MTKTestResult TestResult1 = new MTKTestResult();
                    TestResult1.TestName      = this.ToString() + " - LESS0";
                    TestResult1.PassCriterion = "N/A";
                    TestResult1.Measured      = "N/A";
                    TestResult1.Parameters    = new string[] { "Overall FER", "Total Frames Counted by DUT",
                                                               "Total Frames Sent by Tester" };

                    TestResult1.Value  = new string[] { Output[2], Output[3], Output[4] };
                    TestResult1.Result = Output[5];
                    TestResultUpdate(TestResult1);

                    Log.PrintLog(this, "Overall FER: " + Output[2], LogDetailLevel.LogEverything);
                    Log.PrintLog(this, "Total Frames Counted by DUT: " + Output[3], LogDetailLevel.LogEverything);
                    Log.PrintLog(this, "Total Frames Sent by Tester: " + Output[4], LogDetailLevel.LogEverything);
                    Log.PrintLog(this, "Result: " + Output[5], LogDetailLevel.LogRelevant);
                    if (Output[5] == "FAIL")
                    {
                        TestStatusUpdate(MTKTestMessageType.Failure, "FAIL");
                        FailedOnce = true;
                    }
                }
                else
                {
                    Log.PrintLog(this, "Invalid Test Result: " + TestOutput, LogDetailLevel.LogRelevant);
                    //TestStatusUpdate(MTKTestMessageType.Failure, "FAIL");
                    //this.Log.PrintLog(this, "Result: FAIL", LogDetailLevel.LogRelevant);
                    FailedOnce = true;
                }
            }
            else
            {
                Log.PrintLog(this, "Test Error: " + OuputACKNAC, LogDetailLevel.LogRelevant);
                //TestStatusUpdate(MTKTestMessageType.Failure, "FAIL");
                //this.Log.PrintLog(this, "Result: FAIL", LogDetailLevel.LogRelevant);
                FailedOnce = true;
            }

            MTKTestError RetVal = MTKTestError.NoError;

            if (FailedOnce)
            {
                TestStatusUpdate(MTKTestMessageType.Failure, "FAIL");
                RetVal = MTKTestError.TestFailed;
            }
            else
            {
                TestStatusUpdate(MTKTestMessageType.Success, "PASS");
            }

            TestResult.Result = "N/A";
            //TestResultUpdate(TestResult);
            return(RetVal);
        }
コード例 #20
0
        public override MTKTestError RunTest()
        {
            MTKTestError RetVal     = MTKTestError.NoError;
            bool         FailedOnce = false;

            this.InitializeTestResult();

            if (!Programmer.RunI2CTest(I2CTests))
            {
                RetVal     = MTKTestError.TestFailed;
                FailedOnce = true;
            }
            else
            {
                RetVal = MTKTestError.NoError;
                List <string> ResultParams = new List <string>();
                List <string> ResultVal    = new List <string>();
                TestResult.Result = "PASS";
                for (int i = 0; i < I2CTests.Count(); i++)
                {
                    ResultParams.Add("Address#" + i.ToString());
                    ResultVal.Add(I2CTests[i].Address.ToString());
                    ResultParams.Add("Action#" + i.ToString());
                    string Temp1 = "NONE";
                    if (I2CTests[i].Action == MTKI2CTestType.Read)
                    {
                        Temp1 = "Read";
                    }
                    else if (I2CTests[i].Action == MTKI2CTestType.Write)
                    {
                        Temp1 = "Write";
                    }
                    ResultVal.Add(Temp1);
                    ResultParams.Add("Data#" + i.ToString());
                    StringBuilder hex = new StringBuilder(I2CTests[i].DataBuffer.Length * 2);
                    foreach (byte b in I2CTests[i].DataBuffer)
                    {
                        hex.AppendFormat("{0:x2}", b);
                    }
                    ResultVal.Add(hex.ToString().ToUpper());
                    if (I2CTests[i].ValidateRxData)
                    {
                        ResultParams.Add("Result#" + i.ToString());
                        if (I2CTests[i].DataBuffer.SequenceEqual(I2CTests[i].RxDataBuffer))
                        {
                            Log.PrintLog(this, "PASS", LogDetailLevel.LogEverything);
                            ResultVal.Add("PASS");
                        }
                        else
                        {
                            Log.PrintLog(this, "FAIL", LogDetailLevel.LogEverything);
                            FailedOnce = true;
                            RetVal     = MTKTestError.TestFailed;
                            ResultVal.Add("FAIL");
                            TestResult.Result = "FAIL";
                        }
                    }
                }

                TestResult.Parameters = ResultParams.ToArray();
                TestResult.Value      = ResultVal.ToArray();
                TestResultUpdate(TestResult);
            }
            if (FailedOnce)
            {
                TestStatusUpdate(MTKTestMessageType.Failure, "FAIL");
            }
            else
            {
                TestStatusUpdate(MTKTestMessageType.Success, "PASS");
            }
            return(RetVal);
        }
コード例 #21
0
        private MTKTestError RunAllTests()
        {
            bool FailedOnce = false;

            for (int i = 0; i < TestProgram.Count; i++)
            {
                _CurrentTestIndex = i;
                if (CurrentTestStatus == TestProgramState.Stop)
                {
                    CurrentTestStatus = TestProgramState.Stopping;
                    StopTestProgram();
                    CurrentTestStatus = TestProgramState.Stopped;
                    OnTestStopped();
                    break;
                }

                TestStart = true;

                MTKTestError TestResult = RunTest(i);

                if (TestResult != MTKTestError.NoError)
                {
                    if (TestResult == MTKTestError.IgnoringDUT)
                    {
                        return(MTKTestError.IgnoringDUT);
                    }
                    else
                    {
                        if ((CurrentTestStatus != TestProgramState.Pausing) &&
                            (CurrentTestStatus != TestProgramState.Paused) &&
                            (CurrentTestStatus != TestProgramState.Pause) &&
                            (PauseTestsOnFailure == true))
                        {
                            CurrentTestStatus = TestProgramState.Pause;
                        }
                        OnOverallFail();
                        FailedOnce = true;
                        OnTestError(TestResult, TestResult.ToString());
                    }
                }
                if (CurrentTestStatus == TestProgramState.Pause)
                {
                    CurrentTestStatus = TestProgramState.Paused;
                    Log.PrintLog(this, "Test program paused.", LogDetailLevel.LogRelevant);
                    OnTestPaused();
                    while (!PauseTestEvent.WaitOne(100))
                    {
                        ;
                    }
                    if (CurrentTestStatus == TestProgramState.Stop)
                    {
                        StopTestProgram();
                        if (FailedOnce)
                        {
                            return(MTKTestError.TestFailed);
                        }
                        else
                        {
                            return(MTKTestError.NoError);
                        }
                    }
                    CurrentTestStatus = TestProgramState.Running;
                }
            }
            if (FailedOnce)
            {
                return(MTKTestError.TestFailed);
            }
            else
            {
                return(MTKTestError.NoError);
            }
        }
コード例 #22
0
        public override MTKTestError RunTest()
        {
            MTKTestError        RetVal        = MTKTestError.NoError;
            List <MTKTestError> mTKTestErrors = new List <MTKTestError>();

            mTKTestErrors.Clear();
            TempParameters.Clear();
            TempValues.Clear();

            stopwatch.Restart();

            if (this.DUTConnectionMode == DUTConnMode.BLE)
            {
                RetVal = RunTestBLE();
            }
            else if (this.DUTConnectionMode == DUTConnMode.UART)
            {
                if (ChannelsNumber.Count > 1)
                {
                    foreach (var Channel in ChannelsNumber)
                    {
                        ChannelNumber = Channel;
                        RetVal        = RunTestUART();
                        mTKTestErrors.Add(RetVal);
                    }
                }
                else
                {
                    RetVal = RunTestUART();
                    mTKTestErrors.Add(RetVal);
                }

                TestResult.Value      = TempValues.ToArray();
                TestResult.Parameters = TempParameters.ToArray();
            }
            else
            {
                stopwatch.Stop();
                return(MTKTestError.NoConnectionModeSet);
            }

            foreach (var item in mTKTestErrors)
            {
                switch (item)
                {
                case MTKTestError.NoError:
                    if (MTKSerialPort.IsOpen)
                    {
                        MTKTestTmplSFCSErrCode = ECCS.ERRORCODE_ALL_PASS;
                    }
                    else
                    {
                        MTKTestTmplSFCSErrCode = ECCS.ERROR_CODE_CAUSED_BY_MTK_TESTER;
                    }

                    break;

                case MTKTestError.ReceivedNAC:
                    break;

                case MTKTestError.MissingDUT:
                    break;

                case MTKTestError.TestFailed:
                    MTKTestTmplSFCSErrCode = ECCS.ERRORCODE_CyBLE_GetRSSI_TEST_FAIL;
                    TestStatusUpdate(MTKTestMessageType.Failure, "Fail");
                    RetVal            = MTKTestError.TestFailed;
                    TestResult.Result = "FAIL";
                    TestResultUpdate(TestResult);
                    return(RetVal);

                case MTKTestError.NoConnectionModeSet:
                    break;

                case MTKTestError.MissingDUTSerialPort:
                    break;

                case MTKTestError.MissingMTKSerialPort:
                    break;

                case MTKTestError.UnknownError:
                    break;

                case MTKTestError.MissingAnritsuSerialPort:
                    break;

                case MTKTestError.IgnoringDUT:
                    MTKTestTmplSFCSErrCode = ECCS.ERRORCODE_DUT_NOT_TEST;
                    RetVal            = MTKTestError.IgnoringDUT;
                    TestResult.Result = "IGNORE";
                    TestResultUpdate(TestResult);
                    return(RetVal);

                case MTKTestError.NotAllDevicesProgrammed:
                    break;

                case MTKTestError.ProgrammerNotConfigured:
                    break;

                case MTKTestError.Pending:
                    break;

                case MTKTestError.ProcessCheckFailure:
                    break;

                default:
                    MTKTestTmplSFCSErrCode = ECCS.ERRORCODE_CUS_TEST_FAILURE_BUT_UNKNOWN;
                    RetVal            = MTKTestError.TestFailed;
                    TestResult.Result = "FAIL";
                    TestResultUpdate(TestResult);
                    return(RetVal);
                }
            }



            stopwatch.Stop();
            this.Log.PrintLog(this, string.Format("Perform {0}: {1} secs", DisplayText, stopwatch.Elapsed.TotalMilliseconds / 1000), LogDetailLevel.LogRelevant);
            TestResultUpdate(TestResult);
            return(RetVal);
        }
コード例 #23
0
        private MTKTestError RunTestUART()
        {
            int PercentageComplete = 0;
            int TimeSlice          = 100;
            int TimeIncSteps       = ((int)((double)PacketCount * 7.5) + 50) / TimeSlice;
            int PercentIncSteps    = 1;

            MTKTestError CommandRetVal;

            this.Log.PrintLog(this, GetDisplayText(), LogDetailLevel.LogRelevant);

            TestStatusUpdate(MTKTestMessageType.Information, PercentageComplete.ToString() + "%");

            ////  Command #1
            //string Command = "RRS";
            //CommandRetVal = SendCommand(DUTSerialPort, Command, DelayPerCommand);
            //if (CommandRetVal != MTKTestError.NoError)
            //{
            //    return CommandRetVal;
            //}

            ////  Command #2
            //Command = "RRS";
            //CommandRetVal = SendCommand(MTKSerialPort, Command, DelayPerCommand);
            //if (CommandRetVal != MTKTestError.NoError)
            //{
            //    return CommandRetVal;
            //}

            //  Command #1
            string Command = "RRS";
            //Read Response
            //no return if failure
            //by cysp

            int loops = CyBLE_MTK_Application.Properties.Settings.Default.STCTestRRSRetryInTheBeginning;

            if (loops < 0)
            {
                loops = 0;
            }

            for (int i = 0; i < loops; i++)
            {
                CommandRetVal = SendCommand(DUTSerialPort, Command, DelayPerCommand);
                if (CommandRetVal == MTKTestError.NoError)
                {
                    break;          //break if SendCommand NoError by cysp
                }
                TestStatusUpdate(MTKTestMessageType.Information, "RRS Retry: " + (i + 1).ToString());
                this.Log.PrintLog(this, "RRS Retry: " + (i + 1).ToString() + " | DelayPerCommand: " + DelayPerCommand.ToString(), LogDetailLevel.LogRelevant);
                Thread.Sleep(200);
            }

            // end by cysp

            //  Command #3
            Command       = "STC " + this.PacketCount.ToString();
            CommandRetVal = SendCommand(DUTSerialPort, Command, DelayPerCommand);
            if (CommandRetVal != MTKTestError.NoError)
            {
                return(CommandRetVal);
            }

            for (int i = 0; i < TimeSlice; i++)
            {
                PercentageComplete += PercentIncSteps;
                TestStatusUpdate(MTKTestMessageType.Information, PercentageComplete.ToString() + "%");
                Thread.Sleep(TimeIncSteps);
            }

            Thread.Sleep(500);

            //  Command #4
            Command       = "RRS";
            CommandRetVal = SendCommand(DUTSerialPort, Command, DelayPerCommand);
            if (CommandRetVal != MTKTestError.NoError)
            {
                return(CommandRetVal);
            }
            if (CommandResult == "")
            {
                this.Log.PrintLog(this, Command + ": unable to find DUT.", LogDetailLevel.LogRelevant);
                TestStatusUpdate(MTKTestMessageType.Failure, "Error!!!");
                return(MTKTestError.MissingDUT);
            }
            //TestResult.Result = CommandResult;

            Thread.Sleep(500);

            MTKTestError RetVal = MTKTestError.NoError;

            TestResult.PassCriterion = PacketCount.ToString();
            this.Log.PrintLog(this, "Expected Packet Count: " + PacketCount.ToString(), LogDetailLevel.LogEverything);
            TestResult.Measured = CommandResult;
            this.Log.PrintLog(this, "Packets transmitted: " + this.CommandResult, LogDetailLevel.LogEverything);

            if (Int32.Parse(CommandResult) < PacketCount)
            {
                TestStatusUpdate(MTKTestMessageType.Failure, "FAIL");
                RetVal            = MTKTestError.TestFailed;
                TestResult.Result = "FAIL";
                this.Log.PrintLog(this, "Result: FAIL", LogDetailLevel.LogRelevant);
            }
            else
            {
                TestStatusUpdate(MTKTestMessageType.Success, "PASS");
                this.Log.PrintLog(this, "Result: PASS", LogDetailLevel.LogRelevant);
                TestResult.Result = "PASS";
            }

            ////  Command #5
            //Command = "RRS";
            //CommandRetVal = SendCommand(MTKSerialPort, Command, DelayPerCommand);
            //if (CommandRetVal != MTKTestError.NoError)
            //{
            //    return CommandRetVal;
            //}

            return(RetVal);
        }
コード例 #24
0
        private MTKTestError RunTestUART()
        {
            int PercentageComplete = 0;
            int TimeSlice          = 100;
            //int TimeIncSteps = ((int)((double)PacketCount * 7.5) + 50) / TimeSlice;
            int TimeIncSteps    = ((int)((double)PacketCount * 0.2) + 0) / TimeSlice;
            int PercentIncSteps = 1;


            MTKTestError CommandRetVal = MTKTestError.UnknownError;
            MTKTestError RetVal        = MTKTestError.UnknownError;


            this.Log.PrintLog(this, GetDisplayText(), LogDetailLevel.LogRelevant);

            TestStatusUpdate(MTKTestMessageType.Information, PercentageComplete.ToString() + "%");

            ////  Command #1
            //string Command = "RRS";
            //CommandRetVal = SendCommand(DUTSerialPort, Command, DelayPerCommand);
            //if (CommandRetVal != MTKTestError.NoError)
            //{
            //    return CommandRetVal;
            //}

            ////  Command #2
            //Command = "RRS";
            //CommandRetVal = SendCommand(MTKSerialPort, Command, DelayPerCommand);
            //if (CommandRetVal != MTKTestError.NoError)
            //{
            //    return CommandRetVal;
            //}

            //  Command #1
            string Command = "RRS";
            //Read Response
            //no return if failure
            //by cysp

            int loops = CyBLE_MTK_Application.Properties.Settings.Default.STCTestRRSRetryInTheBeginning;

            if (loops < 0)
            {
                loops = 0;
            }

            for (int i = 0; i < loops; i++)
            {
                CommandRetVal = SendCommand(DUTSerialPort, Command, DelayPerCommand);
                if (CommandRetVal == MTKTestError.NoError)
                {
                    break;          //break if SendCommand NoError by cysp
                }
                TestStatusUpdate(MTKTestMessageType.Information, "RRS Retry: " + (i + 1).ToString());
                this.Log.PrintLog(this, "RRS Retry: " + (i + 1).ToString() + " | DelayPerCommand: " + DelayPerCommand.ToString(), LogDetailLevel.LogRelevant);
                Thread.Sleep(100);
            }

            // end by cysp


            //ExecuteSTCCommand(Command, CommandRetVal, DUTSerialPort, DelayPerCommand, TimeSlice, TimeIncSteps, PercentageComplete, PercentIncSteps);

            //ExecuteRRSCommand(Command, CommandRetVal, DUTSerialPort, DelayPerCommand);

            //  Command #3
            Command       = "STC " + (this.PacketCount).ToString();
            CommandRetVal = SendCommand(DUTSerialPort, Command, DelayPerCommand);
            if (CommandRetVal != MTKTestError.NoError)
            {
                Log.PrintLog(this, $"STC command sending on DUT ({DUTSerialPort}) failure due to {CommandRetVal}.", LogDetailLevel.LogRelevant);
                return(CommandRetVal);
            }



            for (int i = 0; i < TimeSlice; i++)
            {
                PercentageComplete += PercentIncSteps;
                TestStatusUpdate(MTKTestMessageType.Information, PercentageComplete.ToString() + "%");
                Thread.Sleep(TimeIncSteps);
            }

            Thread.Sleep(400);


            //  Command #4
            Command       = "RRS";
            CommandRetVal = SendCommand(DUTSerialPort, Command, DelayPerCommand);
            if (CommandRetVal != MTKTestError.NoError)
            {
                return(CommandRetVal);
            }
            else if (CommandResult == "")
            {
                this.Log.PrintLog(this, Command + ": unable to find DUT.", LogDetailLevel.LogRelevant);
                TestStatusUpdate(MTKTestMessageType.Failure, "Error!!!");
                return(MTKTestError.MissingDUT);
            }
            else if (int.Parse(CommandResult) >= PacketCount)
            {
                RetVal = MTKTestError.NoError;
                Log.PrintLog(this, $"STC Successful on DUT ({DUTSerialPort}): Actual received: {CommandResult} || Expected received: {PacketCount}", LogDetailLevel.LogRelevant);
            }
            else
            {
                for (int j = 1; j < 5; j++)
                {
                    TimeIncSteps = ((int)((double)PacketCount * 0.5) + 0) / TimeSlice;
                    //  Command #3
                    Command       = "STC " + (this.PacketCount).ToString();
                    CommandRetVal = SendCommand(DUTSerialPort, Command, DelayPerCommand);
                    if (CommandRetVal != MTKTestError.NoError)
                    {
                        Log.PrintLog(this, $"STC command sending on DUT ({DUTSerialPort}) failure due to {CommandRetVal}.", LogDetailLevel.LogRelevant);
                        return(CommandRetVal);
                    }

                    TestStatusUpdate(MTKTestMessageType.Information, $"Retry#{j}");
                    Thread.Sleep(300);

                    for (int i = 0; i < TimeSlice; i++)
                    {
                        PercentageComplete  = 0;
                        PercentageComplete += PercentIncSteps;
                        TestStatusUpdate(MTKTestMessageType.Information, PercentageComplete.ToString() + "%");
                        Thread.Sleep(TimeIncSteps * j + j);
                    }

                    //  Command #4 2nd Retry
                    Command       = "RRS";
                    CommandRetVal = SendCommand(DUTSerialPort, Command, DelayPerCommand);

                    if (CommandResult == "")
                    {
                        RetVal = MTKTestError.TestFailed;
                        Log.PrintLog(this, $"STC Failure on DUT ({DUTSerialPort}):  No Response from DUT", LogDetailLevel.LogRelevant);
                    }
                    else if (int.Parse(CommandResult) >= PacketCount)
                    {
                        break;
                    }
                    else
                    {
                        Log.PrintLog(this, $"STC Failure on DUT ({DUTSerialPort}): Actual received: {CommandResult} || Expected received: {PacketCount}", LogDetailLevel.LogRelevant);
                    }
                }

                if (CommandResult == "")
                {
                    RetVal = MTKTestError.TestFailed;
                    Log.PrintLog(this, $"STC Failure on DUT ({DUTSerialPort}):  No Response from DUT", LogDetailLevel.LogRelevant);
                    return(RetVal);
                }
                else if (int.Parse(CommandResult) >= PacketCount)
                {
                    RetVal = MTKTestError.NoError;
                    Log.PrintLog(this, $"STC Successful on DUT ({DUTSerialPort}): Actual received: {CommandResult} || Expected received: {PacketCount}", LogDetailLevel.LogRelevant);
                }
                else
                {
                    RetVal = MTKTestError.TestFailed;
                    Log.PrintLog(this, $"STC Failure on DUT ({DUTSerialPort}): Actual received: {CommandResult} || Expected received: {PacketCount}", LogDetailLevel.LogRelevant);
                }
            }


            TestResult.PassCriterion = PacketCount.ToString();
            this.Log.PrintLog(this, "Expected Packet Count: " + PacketCount.ToString(), LogDetailLevel.LogEverything);
            TestResult.Measured = CommandResult;
            this.Log.PrintLog(this, "Packets transmitted: " + this.CommandResult, LogDetailLevel.LogEverything);

            if (!MTKSerialPort.IsOpen)
            {
                TestStatusUpdate(MTKTestMessageType.Information, "ERROR");
                this.Log.PrintLog(this, "Result: ERROR due to Host Serial COM port is not open", LogDetailLevel.LogRelevant);
                RetVal            = MTKTestError.MissingMTKSerialPort;
                TestResult.Result = "ERROR";
            }
            else if (Regex.IsMatch(CommandResult, @"^[+-]?\d*[.]?\d*$"))
            {
                if (Int32.Parse(CommandResult) >= PacketCount)
                {
                    TestStatusUpdate(MTKTestMessageType.Success, "PASS");
                    this.Log.PrintLog(this, "Result: PASS", LogDetailLevel.LogRelevant);
                    RetVal            = MTKTestError.NoError;
                    TestResult.Result = "PASS";
                }
                else
                {
                    TestStatusUpdate(MTKTestMessageType.Failure, "FAIL");
                    RetVal            = MTKTestError.TestFailed;
                    TestResult.Result = "FAIL";
                    this.Log.PrintLog(this, $"Result: FAIL (Actual: {CommandResult} Expect: {PacketCount})", LogDetailLevel.LogRelevant);
                }
            }
            else
            {
                TestStatusUpdate(MTKTestMessageType.Failure, "FAIL");
                RetVal            = MTKTestError.TestFailed;
                TestResult.Result = "FAIL";
                this.Log.PrintLog(this, $"Result: FAIL ({CommandResult})", LogDetailLevel.LogRelevant);
            }

            ////  Command #5
            //Command = "RRS";
            //CommandRetVal = SendCommand(MTKSerialPort, Command, DelayPerCommand);
            //if (CommandRetVal != MTKTestError.NoError)
            //{
            //    return CommandRetVal;
            //}

            return(RetVal);
        }
コード例 #25
0
        private MTKTestError RunTestUART()
        {
            int PercentageComplete = 0;
            int TimeSlice = 100, DelayPerCommand = 20;
            int TimeIncSteps    = ((int)((double)PacketCount * 7.5) + 50) / TimeSlice;
            int PercentIncSteps = 1;

            MTKTestError CommandRetVal;

            this.Log.PrintLog(this, GetDisplayText(), LogDetailLevel.LogRelevant);

            TestStatusUpdate(MTKTestMessageType.Information, PercentageComplete.ToString() + "%");

            //  Command #1
            string Command = "RRS";

            CommandRetVal = SendCommand(DUTSerialPort, Command, DelayPerCommand);
            if (CommandRetVal != MTKTestError.NoError)
            {
                return(CommandRetVal);
            }

            //Thread.Sleep(1000);

            //  Command #2
            Command       = "STC " + this.PacketCount.ToString();
            CommandRetVal = SendCommand(DUTSerialPort, Command, DelayPerCommand);
            if (CommandRetVal != MTKTestError.NoError)
            {
                return(CommandRetVal);
            }

            for (int i = 0; i < TimeSlice; i++)
            {
                PercentageComplete += PercentIncSteps;
                TestStatusUpdate(MTKTestMessageType.Information, PercentageComplete.ToString() + "%");
                Thread.Sleep(TimeIncSteps);
            }

            //  Command #2
            Command       = "RRS";
            CommandRetVal = SendCommand(DUTSerialPort, Command, DelayPerCommand);
            if (CommandRetVal != MTKTestError.NoError)
            {
                return(CommandRetVal);
            }
            if (CommandResult == "")
            {
                this.Log.PrintLog(this, Command + ": unable to find DUT.", LogDetailLevel.LogRelevant);
                TestStatusUpdate(MTKTestMessageType.Failure, "Error!!!");
                return(MTKTestError.MissingDUT);
            }
            //TestResult.Result = CommandResult;

            Thread.Sleep(500);

            MTKTestError RetVal = MTKTestError.NoError;

            TestResult.PassCriterion = PacketCount.ToString();
            this.Log.PrintLog(this, "Expected Packet Count: " + PacketCount.ToString(), LogDetailLevel.LogEverything);
            TestResult.Measured = CommandResult;
            this.Log.PrintLog(this, "Packets transmitted: " + this.CommandResult, LogDetailLevel.LogEverything);

            if (Int32.Parse(CommandResult) < PacketCount)
            {
                TestStatusUpdate(MTKTestMessageType.Failure, "FAIL");
                RetVal            = MTKTestError.TestFailed;
                TestResult.Result = "FAIL";
                this.Log.PrintLog(this, "Result: FAIL", LogDetailLevel.LogRelevant);
            }
            else
            {
                TestStatusUpdate(MTKTestMessageType.Success, "PASS");
                this.Log.PrintLog(this, "Result: PASS", LogDetailLevel.LogRelevant);
                TestResult.Result = "PASS";
            }

            return(RetVal);
        }
コード例 #26
0
        public MTKTestError WriteBDA()
        {
            bool         IsSuccess = false;
            int          hr;
            string       strError = "";
            MTKTestError RetVal   = MTKTestError.NoError;

            this.InitializeTestResult();

            if (UseProgrammer)
            {
                try
                {
                    Log.PrintLog(this, "Programming BD Adress...", LogDetailLevel.LogRelevant);
                    //-1-. Connect to PP instance first
                    TestStatusUpdate(MTKTestMessageType.Information, "Connecting...");
                    //hr = ConnectToMiniProg3(out strError);
                    if (!BDAProgrammer.ConnectProgrammer())
                    {
                        //MessageBox.Show(strError, "MiniProg3 Initialization Failed!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        throw new SFlashException("MiniProg3 Initialization Failed!", "MiniProg3 Initialization Failed!");
                    }

                    //-2-. Acquire Part
                    TestStatusUpdate(MTKTestMessageType.Information, "Erasing...");
                    if (!BDAProgrammer.AcquireAndEraseSFlash())
                    {
                        throw new SFlashException("Acquire and erase failed!", "Acquire and erase failed!");
                    }

                    //-3-. Update all SFLASH Rows
                    TestStatusUpdate(MTKTestMessageType.Information, "Programming...");
                    hr = ProgramRow(0, out strError);
                    if (!SUCCEEDED(hr))
                    {
                        throw new SFlashException("SFlash update failed!", strError);
                    }

                    //-5-. Just in case try to release part (if it was acquired)
                    TestStatusUpdate(MTKTestMessageType.Information, "Disconnecting...");
                    BDAProgrammer.ReleaseChip(out strError);

                    //-6-. Disconnect from MiniProg3, so other apps can use it while it is IDLE
                    //DisconnectFromMiniProg3(out strError);
                    BDAProgrammer.DisconnectProgrammer();

                    Log.PrintLog(this, "PASS", LogDetailLevel.LogRelevant);
                    TestStatusUpdate(MTKTestMessageType.Success, "PASS");

                    IsSuccess = true;
                }
                catch (SFlashException e)
                {
                    BDAProgrammer.DisconnectProgrammer();
                    Log.PrintLog(this, e.errorMsg, LogDetailLevel.LogRelevant);
                    TestStatusUpdate(MTKTestMessageType.Failure, "FAIL");
                    RetVal = MTKTestError.TestFailed;
                }
            }
            else
            {
                int PercentageComplete = 0;
                int DelayPerCommand    = 20;//, msPerSecond = 1000;

                MTKTestError CommandRetVal;

                this.Log.PrintLog(this, GetDisplayText(), LogDetailLevel.LogRelevant);

                TestStatusUpdate(MTKTestMessageType.Information, PercentageComplete.ToString() + "%");

                //  Command #1
                string Command = "RRS";
                CommandRetVal = SendCommand(DUTSerialPort, Command, DelayPerCommand);
                if (CommandRetVal != MTKTestError.NoError)
                {
                    return(CommandRetVal);
                }

                //  Command #2
                //byte[] temp = { BDAddress[5], BDAddress[4], BDAddress[3], BDAddress[2], BDAddress[1], BDAddress[0] };
                //Int32 temp1 = BitConverter.ToInt32(temp, 0);
                //Int16 temp2 = BitConverter.ToInt16(temp, 4);
                Command       = "WBA " + BitConverter.ToString(BDAddress).Replace("-", " ");
                CommandRetVal = SendCommand(DUTSerialPort, Command, DelayPerCommand);
                if (CommandRetVal != MTKTestError.NoError)
                {
                    return(CommandRetVal);
                }

                Thread.Sleep(100);

                //  Command #3
                Command       = "RRS";
                CommandRetVal = SendCommand(DUTSerialPort, Command, DelayPerCommand);
                if (CommandRetVal != MTKTestError.NoError)
                {
                    return(CommandRetVal);
                }
                if (CommandResult == "")
                {
                    this.Log.PrintLog(this, Command + ": unable to find DUT.", LogDetailLevel.LogRelevant);
                    TestStatusUpdate(MTKTestMessageType.Failure, "Error!!!");
                    return(MTKTestError.MissingDUT);
                }

                if (CommandResult == "ERROR")
                {
                    TestStatusUpdate(MTKTestMessageType.Failure, "FAIL");
                    RetVal            = MTKTestError.TestFailed;
                    TestResult.Result = "FAIL";
                    this.Log.PrintLog(this, "Result: FAIL", LogDetailLevel.LogRelevant);
                }
                else if (CommandResult == "SUCCESS")
                {
                    TestStatusUpdate(MTKTestMessageType.Success, "PASS");
                    this.Log.PrintLog(this, "Result: PASS", LogDetailLevel.LogRelevant);
                    TestResult.Result = "PASS";
                    IsSuccess         = true;
                }
            }

            if (AutoIncrementBDA && IsSuccess)
            {
                IncrementBDA();
            }

            return(RetVal);
        }
コード例 #27
0
        private MTKTestError RunTestBLE()
        {
            int PercentageComplete = 0;
            int DelayPerCommand    = 20;
            int TimeSlice          = 100;
            int TimeIncSteps       = ((int)((double)PacketCount * 7.5) + 50) / TimeSlice;
            int PercentIncSteps    = 1;

            MTKTestError CommandRetVal;

            this.Log.PrintLog(this, GetDisplayText(), LogDetailLevel.LogRelevant);

            TestStatusUpdate(MTKTestMessageType.Information, PercentageComplete.ToString() + "%");

            //  Command #1
            CommandRetVal = SearchForDUT();
            if (CommandRetVal != MTKTestError.NoError)
            {
                return(CommandRetVal);
            }

            //  Command #2
            string Command = "DUT 1";

            CommandRetVal = SendCommand(MTKSerialPort, Command, DelayPerCommand);
            if (CommandRetVal != MTKTestError.NoError)
            {
                return(CommandRetVal);
            }

            //  Command #3
            Command       = "STC " + this.PacketCount.ToString();
            CommandRetVal = SendCommand(MTKSerialPort, Command, DelayPerCommand);
            if (CommandRetVal != MTKTestError.NoError)
            {
                return(CommandRetVal);
            }

            //  Command #4
            Command       = "DUT 0";
            CommandRetVal = SendCommand(MTKSerialPort, Command, DelayPerCommand);
            if (CommandRetVal != MTKTestError.NoError)
            {
                return(CommandRetVal);
            }

            //  Command #5
            Command       = "DCW " + ((int)((double)PacketCount * 7.5) + 50).ToString();
            CommandRetVal = SendCommand(MTKSerialPort, Command, DelayPerCommand);
            if (CommandRetVal != MTKTestError.NoError)
            {
                return(CommandRetVal);
            }

            for (int i = 0; i < TimeSlice; i++)
            {
                PercentageComplete += PercentIncSteps;
                TestStatusUpdate(MTKTestMessageType.Information, PercentageComplete.ToString() + "%");
                Thread.Sleep(TimeIncSteps);
            }

            //  Command #6
            CommandRetVal = SearchForDUT();
            if (CommandRetVal != MTKTestError.NoError)
            {
                return(CommandRetVal);
            }

            //  Command #7
            Command       = "DUT 1";
            CommandRetVal = SendCommand(MTKSerialPort, Command, DelayPerCommand);
            if (CommandRetVal != MTKTestError.NoError)
            {
                return(CommandRetVal);
            }

            //  Command #8
            Command       = "PST";
            CommandRetVal = SendCommand(MTKSerialPort, Command, 200);
            if (CommandRetVal != MTKTestError.NoError)
            {
                return(CommandRetVal);
            }
            if (CommandResult == "")
            {
                this.Log.PrintLog(this, Command + ": unable to find DUT.", LogDetailLevel.LogRelevant);
                TestStatusUpdate(MTKTestMessageType.Failure, "Error!!!");
                return(MTKTestError.MissingDUT);
            }
            TestResult.Result = CommandResult;
            this.Log.PrintLog(this, "Time elapsed (ms): " + this.CommandResult, LogDetailLevel.LogRelevant);

            //  Command #9
            Command       = "DUT 0";
            CommandRetVal = SendCommand(MTKSerialPort, Command, DelayPerCommand);
            if (CommandRetVal != MTKTestError.NoError)
            {
                return(CommandRetVal);
            }

            MTKTestError RetVal = MTKTestError.NoError;

            if (Int32.Parse(CommandResult) < PacketCount)
            {
                TestStatusUpdate(MTKTestMessageType.Complete, "FAIL");
                RetVal = MTKTestError.TestFailed;
                this.Log.PrintLog(this, "Result: FAIL", LogDetailLevel.LogRelevant);
            }
            else
            {
                TestStatusUpdate(MTKTestMessageType.Complete, "PASS");
                this.Log.PrintLog(this, "Result: PASS", LogDetailLevel.LogRelevant);
            }

            return(RetVal);
        }
コード例 #28
0
        public override MTKTestError RunTest()
        {
            MTKTestError RetVal = MTKTestError.NoError;

            this.InitializeTestResult();

            TestResult.Measured = " Result: ";

            if (this.DUTConnectionMode == DUTConnMode.BLE)
            {
                RetVal = RunTestBLE();
            }
            else if (this.DUTConnectionMode == DUTConnMode.UART)
            {
                int loop = SamplesCount;



                if (overallpass_condition.ToUpper() == EnumPassConOverall.ONE_SAMPLE.ToString())
                {
                    while (loop > 0)
                    {
                        RetVal = RunTestUART();
                        loop--;
                        if (DoesSamplePass(MTKInstruments.DUTCurrent) && RetVal == MTKTestError.Pending)
                        {
                            RetVal = MTKTestError.NoError;
                            break;
                        }
                    }
                }
                else
                {
                    while (loop > 0)
                    {
                        RetVal = RunTestUART();

                        if (RetVal != MTKTestError.Pending)
                        {
                            RetVal = MTKTestError.TestFailed;
                            break;
                        }

                        loop--;
                        if (!DoesSamplePass(MTKInstruments.DUTCurrent))
                        {
                            RetVal = MTKTestError.TestFailed;
                            break;
                        }
                        else
                        {
                            TestStatusUpdate(MTKTestMessageType.Success, "Pass: "******"/" + SamplesCount.ToString());
                            RetVal = MTKTestError.NoError;
                            continue;
                        }
                    }
                }


                //Overall TestResult
                if (RetVal == MTKTestError.NoError)
                {
                    ERRORCODE_DUTCurrentMeasureFailure = ECCS.ERRORCODE_ALL_PASS;
                    TestStatusUpdate(MTKTestMessageType.Success, "Pass");
                    TestResult.Result = "Pass";
                }
                else
                {
                    TestStatusUpdate(MTKTestMessageType.Failure, "Fail");
                    TestResult.Result = "FAIL";
                }

                Log.PrintLog(this, TestResult.Result + " : " + TestResult.Measured, LogDetailLevel.LogRelevant);
                MTKTestTmplSFCSErrCode = ERRORCODE_DUTCurrentMeasureFailure;
            }
            else
            {
                TestStatusUpdate(MTKTestMessageType.Failure, "NoConnectionModeSet");
                return(MTKTestError.NoConnectionModeSet);
            }

            TestResultUpdate(TestResult);

            return(RetVal);
        }
コード例 #29
0
        private bool ProgramAll()
        {
            int                 i;
            bool                return_value = true;
            List <Thread>       ProgDUT      = new List <Thread>();
            List <MTKTestError> ErrDUT       = new List <MTKTestError>();

            for (i = 0; i < NumberOfDUTs; i++)
            {
                DUTProgrammers[i].SelectedHEXFilePath = this.SelectedHEXFilePath;
                if ((DUTProgrammers[i].SelectedProgrammer != "") &&
                    (DUTProgrammers[i].SelectedHEXFilePath != ""))
                {
                    try
                    {
                        ErrDUT.Add(new MTKTestError());
                        ProgDUT.Add(new Thread(() => { ErrDUT[i] = ProgrammingThread(i); }));
                        DUTProgrammers[i].ProgrammerNumber       = i;
                        DUTProgrammers[i].OnNumTestStatusUpdate -= new MTKPSoCProgrammer.NumTestStatusUpdateEventHandler(Ind_Prog_OnNumTestStatusUpdate);
                        DUTProgrammers[i].OnNumTestStatusUpdate += new MTKPSoCProgrammer.NumTestStatusUpdateEventHandler(Ind_Prog_OnNumTestStatusUpdate);
                        ProgDUT[i].Start();
                        Thread.Sleep(200);
                    }
                    catch
                    {
                        Log.PrintLog(this, "Cannot create programming thread.", LogDetailLevel.LogRelevant);
                    }
                }
                else
                {
                    MTKTestError temp = new MTKTestError();
                    temp = MTKTestError.ProgrammerNotConfigured;
                    ErrDUT.Add(temp);
                }
                //ProgDUT[i].Join();
            }

            for (i = 0; i < ProgDUT.Count(); i++)
            {
                ProgDUT[i].Join();
            }

            TestResult.Measured = "";
            for (i = 0; i < ErrDUT.Count(); i++)
            {
                if (i > 0)
                {
                    TestResult.Measured += " | ";
                }
                if (ErrDUT[i] == MTKTestError.TestFailed)
                {
                    TestResult.Measured += "DUT#" + (i + 1).ToString() + ": FAIL";
                    return_value         = false;
                    //break;
                }
                else if (ErrDUT[i] == MTKTestError.NoError)
                {
                    TestResult.Measured += "DUT#" + (i + 1).ToString() + ": PASS";
                }
                else
                {
                    TestResult.Measured += "DUT#" + (i + 1).ToString() + ": " + ErrDUT[i].ToString();
                }
            }

            OnProgramAllComplete(ErrDUT);
            programCompleted = true;

            return(return_value);
        }
コード例 #30
0
        public override MTKTestError RunTest()
        {
            MTKTestError RetVal = MTKTestError.NoError;

            this.InitializeTestResult();

            //TmplSFCSErrCode = 0;

            if (this.DUTConnectionMode == DUTConnMode.BLE)
            {
                RetVal = RunTestBLE();
            }
            else if (this.DUTConnectionMode == DUTConnMode.UART)
            {
                RetVal = RunTestUART();
            }
            else
            {
                return(MTKTestError.NoConnectionModeSet);
            }


            //if (TestResult.Result != "PASS" && TmplSFCSErrCode == 0)
            if (TestResult.Result != "PASS")
            {
                switch (CustomCommand)
                {
                case CUSTOM_CMD_READ_GPIO:
                    TmplSFCSErrCode        = (ECCS.ERRORCODE_GPIO_CONTINUITY_TEST_FAIL);
                    MTKTestTmplSFCSErrCode = ECCS.ERRORCODE_GPIO_CONTINUITY_TEST_FAIL;
                    break;

                case CUSTOM_CMD_READ_OPEN_GPIO:
                    TmplSFCSErrCode        = (ECCS.ERRORCODE_GPIO_OPENSHORTS_TEST_FAIL);
                    MTKTestTmplSFCSErrCode = ECCS.ERRORCODE_GPIO_OPENSHORTS_TEST_FAIL;
                    break;

                case CUSTOM_CMD_READ_UNIQUE_ID:
                    TmplSFCSErrCode        = (ECCS.ERRORCODE_SILICON_UNIQUENUMBER_TEST_FAIL);
                    MTKTestTmplSFCSErrCode = ECCS.ERRORCODE_SILICON_UNIQUENUMBER_TEST_FAIL;
                    break;
                    //case CUSTOM_CMD_READ_MFIID:
                    //    TmplSFCSErrCode = ECCS.ERROR_CODE_READ_MFIID;
                    //    break;
                    //case CUSTOM_CMD_READ_FW_VERSION:
                    //    TmplSFCSErrCode = SFCS.ERROR_CODE_FW_VERSION;
                    //    break;
                    //case CUSTOM_CMD_READ_HOMEKIT_SELFTEST_RESULT:
                    //    TmplSFCSErrCode = SFCS.ERROR_CODE_APPLE_AUTO_CHIP;
                    //    break;
                }
            }
            else
            {
                MTKTestTmplSFCSErrCode = ECCS.ERRORCODE_ALL_PASS;
            }

            TestResultUpdate(TestResult);

            return(RetVal);
        }