-------------------------------------------------------------------------------- --. Syntax : MDI_BLK_CHK. [, RunMode [, TestNo ]] --. Purpose : Check the MDI on board block protocol. --. Sub_system : PLM --. Origin : UK --. Test Spec : SH-MAT-FAX-1183/93 --. Author : JPP --. History : --. V0 JP. PRAT 26 May 93 --. First attempt. --. A01 W.J.SMART 21 June 93 --. A02 W.J.SMART 21 June 93 --. A03 JP. PRAT 6 Dec 93 Change name (old MT_BLK_CHECK) --. --. Sic Note --. 296 J.B.B 05-02-94 update and additional tests --. 332 J.B.B 11-03-94 update (new Tc standard) --. --. Principle : --. --. This Control File; --. --. - is to be run on Experiment nominal data side (TCTOGN) --. - verify the ability of the experiment to manage a correct block sequence --. (using a dummy block). --. - test the following error cases : --. . checksum error, --. . block length error, --. . sequencing of mla/mlb (delays interleave). --. - print a synthesis report of the check made. --. --. Remark, according to its input arguments this control file can be run ; --. . in manual mode, (default) window opened ("M" in upper or lower case) --. . in automatic mode, window closed ("A" in upper or lower case) --. . in automatic mode, window opened ("W" in upper or lower case) --. . for all (0, default) or one particular test of error (1..10) -- -------------------------------------------------------------------------------- Extern Command MBSNOP, MZMLAN, MZMLBN Register MSTCTOGN End Extern Program MDI_BLK_CHK DefArg str(1) !RunMode = "M" -- "M"|"A"|"W", Auto|Manual running mode int !TestCase = 0 -- 0..10, (zero) for all test errors run End Defarg Var str(60) !TestErrLib(20) -- Test Error Label str(8) !TestErrRes(20) -- Test Error Result str(60) !TestErrExp(20) -- Test error Explanation str(8) !SRun = "" int !i = 0 -- Local Loop Counter int !Raw(20) -- Array for BKRAW int !TogBit = 0 -- Toggle bit value Main -------------------------------------------------------------------------------- -- --. Phase 1 : Check input arguments -- -------------------------------------------------------------------------------- select !RunMode case "A", "a", "W", "w" !SRun = "Auto" If ((!RunMode = "W") Or (!RunMode = "w")) Then Window End If case "M", "m" !Srun = "Manual" Window default Window Display "Argument 1 <"+!RunMode+"> to be chosen in A, a, W , w, M, m." Cflog "Argument 1 expected to :" Cflog " ""A"" for Automatic mode (window closed)," Cflog " ""W"" for Automatic mode (window opened)," Cflog " ""M"" for Manual mode,(window opened)." Cflog Halt Window Return "ERR_ARG 1" End select If ( Not ((!TestCase >= 0 ) And (!TestCase <= 10)) ) Then Window Display "Argument 2 <"+!RunMode+"> to be chosen in 0..10." Cflog "Argument 2 expected to :" Cflog " 0 for a check of all test cases," Cflog " 1 to 10 for a check of one test case." Cflog " (see documentation)." Cflog Halt Return "ERR_ARG 2" End If @Print("", "", "") @Print("ALL", "Phase 1 : Check, Input Arguments <"+!RunMode+", "+&d(!TestCase)+">, ok", "DATE") @Print("CFLOG", "-------", "") -- -- Initialisation of variables -- !TestErrLib(1) = " Test 1, Normal : Toggle bit" !TestErrLib(2) = " Test 2, Normal : 1Hz Frequency" !TestErrLib(3) = " Test 3, Error : Checksum" !TestErrLib(4) = " Test 4, Error : Length too short" !TestErrLib(5) = " Test 5, Error : Length too long" !TestErrLib(6) = " Test 6, Error : Experiment ID" !TestErrLib(7) = " Test 7, Error : Block ID" !TestErrLib(8) = " Test 8, Normal : MLA/MLB" !TestErrLib(9) = " Test 9, Error : MLA/MLB (>1s)" !TestErrLib(10)= " Test10, Error : MLB/MLB (>1s)" !TestErrRes(1) = "ended" !TestErrRes(2) = "ended" !TestErrRes(3) = "ended" !TestErrRes(4) = "ended" !TestErrRes(5) = "ended" !TestErrRes(6) = "ended" !TestErrRes(7) = "ended" !TestErrRes(8) = "ended" !TestErrRes(9) = "ended" !TestErrRes(10)= "ended" LogBook "***********************************" LogBook "* Check the MDI On Board Protocol *" LogBook "***********************************" Enable MBSNOP Enable MZMLAN Enable MZMLBN -------------------------------------------------------------------------------- -- --. Phase 2 : Check experiment in standby mode -- -------------------------------------------------------------------------------- @Print("CFLOG", "", "") @Print("ALL", "Phase 2 : Check, Configuration in STANDBY...", "DATE") @Print("CFLOG", "-------", "") If (!SRun = "Manual") Then @Print("CFLOG", "...and type CONT to continue","") Halt End If -------------------------------------------------------------------------------- -- --. Phase 3 : Check Normal Function of on board block management. -- -------------------------------------------------------------------------------- --. -1- Test, Normal : Toggle bit -- ------------------------- -- @Print("CFLOG", "", "") @Print("ALL", "Phase 3 : Normal management of blocks, check...", "DATE") @Print("CFLOG", "-------", "") If ((!TestCase = 0) Or (!TestCase = 1)) Then @Print("ALL", !TestErrLib(1)+"...", "TIME") If (!SRun = "Manual") Then @Print("CFLOG", "...Mode manual, type CONT to continue","") Halt End If Handler TC, START @Print("ALL", " . Wait MSTCTOGN", "") Wait Param, MSTCTOGN, Time, 20 !TogBit = get(MSTCTOGN) @Print("ALL", " . Toggle bit = "+&d(!TogBit), "TIME") @Print("CFLOG", " . Send MBSNOP , NO", "TIME") TCBLOCK MBSNOP , NO Wait time,15 @Print("ALL", " . Wait MSTCTOGN", "") Wait Param, MSTCTOGN, Time, 20 !TogBit = get(MSTCTOGN) @Print("ALL", " . Toggle bit = "+&d(!TogBit), "TIME") @Print("ALL", " > Verify the MSTCTOGN change", "") @Print("ALL", &-50s(!TestErrLib(1)+"...")+!TestErrRes(1), "TIME") End If -------------------------------------------------------------------------------- -- --. -2- Test, Normal : 1Hz Frequency -- ---------------------------- -- If ((!TestCase = 0) Or (!TestCase = 2)) Then @Print("ALL", "", "") @Print("ALL", !TestErrLib(2)+"...", "TIME") If (!SRun = "Manual") Then @Print("CFLOG", "...Mode manual, type CONT to continue","") Halt End If Handler TC, START @Print("ALL", " . Wait MSTCTOGN", "") Wait Param, MSTCTOGN, Time, 20 !TogBit = get(MSTCTOGN) @Print("ALL", " . Toggle bit = "+&d(!TogBit), "TIME") @Print("CFLOG", " . Send MBSNOP, NO (32 times)", "TIME") For !i = 1 To 32 TCBLOCK MBSNOP, NO End For wait time,32 wait time,15 @Print("ALL", " . Wait MSTCTOGN", "") Wait Param, MSTCTOGN, Time, 20 !TogBit = get(MSTCTOGN) @Print("ALL", " . Toggle bit = "+&d(!TogBit), "TIME") @Print("ALL", " > Verify no change on MSTCTOGN ", "") @Print("ALL", &-50s(!TestErrLib(2)+"...")+!TestErrRes(2), "TIME") @Print("CFLOG", "", "") End If -------------------------------------------------------------------------------- -- --. Phase 4 : Error cases of management of blocks -- -------------------------------------------------------------------------------- --. -3- Test, Error : Checksum error -- ----------------------------- -- @Print("ALL", "Phase 4 : Error cases of management of blocks, check...", "DATE") @Print("CFLOG", "-------", "") If ((!TestCase = 0) Or (!TestCase = 3)) Then @Print("ALL", "", "") @Print("ALL", !TestErrLib(3)+"...", "TIME") If (!SRun = "Manual") Then @Print("CFLOG", "...Mode manual, type CONT to continue","") Halt End If Handler TC, START @Print("ALL", " . Wait MSTCTOGN", "") Wait Param, MSTCTOGN, Time, 20 !TogBit = get(MSTCTOGN) @Print("ALL", " . Toggle bit = "+&d(!TogBit), "TIME") @Print("CFLOG", " . Send erroneous MBSNOP, NO", "TIME") !Raw(0) = 0x99041511 -- Code MBSNOP , NO !Raw(1) = 0x55000008 !Raw(2) = 0x55450028 !Raw(3) = 0x55012800 -- Error checksum normal=2801 !Raw(4) = 0x55000000 !Raw(5) = 0xaa000000 BkRaw !Raw(), 6, LETCHECK Wait time,15 @Print("ALL", " . Wait MSTCTOGN", "") Wait Param, MSTCTOGN, Time, 20 !TogBit = get(MSTCTOGN) @Print("ALL", " . Toggle bit = "+&d(!TogBit), "TIME") @Print("ALL", " > Verify NO change on MSTCTOGN", "") @Print("ALL", &-50s(!TestErrLib(3)+"...")+!TestErrRes(3), "TIME") End If -------------------------------------------------------------------------------- -- --. -4- Test, Error : Length too short -- ------------------------------- -- If ((!TestCase = 0) Or (!TestCase = 4)) Then @Print("ALL", "", "") @Print("ALL", !TestErrLib(4)+"...", "TIME") If (!SRun = "Manual") Then @Print("CFLOG", "...Mode manual, type CONT to continue","") Halt End If Handler TC, START @Print("ALL", " . Wait MSTCTOGN", "") Wait Param, MSTCTOGN, Time, 20 !TogBit = get(MSTCTOGN) @Print("ALL", " . Toggle bit = "+&d(!TogBit), "TIME") @Print("CFLOG", " . Send erroneous MBSLOBT", "TIME") !Raw(0) = 0x99041517 -- Code INIT LOBT !Raw(1) = 0x5500000e !Raw(2) = 0x55450028 !Raw(3) = 0x55230000 -- Normal 55240000 !Raw(4) = 0x55000000 !Raw(5) = 0x55002823 -- Normal 55002824 !Raw(6) = 0x55000000 !Raw(7) = 0xaa000000 BkRaw !Raw(), 8, LETCHECK Wait time,15 @Print("ALL", " . Wait MSTCTOGN", "") Wait Param, MSTCTOGN, Time, 20 !TogBit = get(MSTCTOGN) @Print("ALL", " . Toggle bit = "+&d(!TogBit), "TIME") @Print("ALL", " > Verify NO change on MSTCTOGN", "") @Print("ALL", &-50s(!TestErrLib(4)+"...")+!TestErrRes(4), "TIME") End If -------------------------------------------------------------------------------- -- --. -5- Test, Error : Length to long -- ----------------------------- -- If ((!TestCase = 0) Or (!TestCase = 5)) Then @Print("ALL", "", "") @Print("ALL", !TestErrLib(5)+"...", "TIME") If (!SRun = "Manual") Then @Print("CFLOG", "...Mode manual, type CONT to continue","") Halt End If Handler TC, START @Print("ALL", " . Wait MSTCTOGN", "") Wait Param, MSTCTOGN, Time, 20 !TogBit = get(MSTCTOGN) @Print("ALL", " . Toggle bit = "+&d(!TogBit), "TIME") @Print("CFLOG", " . Send erroneous MBSLOBT", "TIME") !Raw(0) = 0x99041517 -- Code INIT LOBT !Raw(1) = 0x5500000e !Raw(2) = 0x55450028 !Raw(3) = 0x55250000 -- Normal 55240000 !Raw(4) = 0x55000000 !Raw(5) = 0x55002825 -- Normal 55002824 !Raw(6) = 0x55000000 !Raw(7) = 0xaa000000 BkRaw !Raw(), 8, LETCHECK Wait time,15 @Print("ALL", " . Wait MSTCTOGN", "") Wait Param, MSTCTOGN, Time, 20 !TogBit = get(MSTCTOGN) @Print("ALL", " . Toggle bit = "+&d(!TogBit), "TIME") @Print("ALL", " > Verify NO change on MSTCTOGN", "") @Print("ALL", &-50s(!TestErrLib(5)+"...")+!TestErrRes(5), "TIME") End If -------------------------------------------------------------------------------- -- --. -6- Test, Error : Experiment ID error -- ----------------------------- -- If ((!TestCase = 0) Or (!TestCase = 6)) Then @Print("ALL", "", "") @Print("ALL", !TestErrLib(6)+"...", "TIME") If (!SRun = "Manual") Then @Print("CFLOG", "...Mode manual, type CONT to continue","") Halt End If Handler TC, START @Print("ALL", " . Wait MSTCTOGN", "") Wait Param, MSTCTOGN, Time, 20 !TogBit = get(MSTCTOGN) @Print("ALL", " . Toggle bit = "+&d(!TogBit), "TIME") @Print("CFLOG", " . Send erroneous MBSNOP, NO", "TIME") !Raw(0) = 0x99041511 -- Code MBSNOP , NO !Raw(1) = 0x55000008 !Raw(2) = 0x55450018 -- CEPAC (E ID normal = 2801) !Raw(3) = 0x55011801 -- Error checksum normal=2801 !Raw(4) = 0x55000000 !Raw(5) = 0xaa000000 BkRaw !Raw(), 6, LETCHECK Wait Time,15 @Print("ALL", " . Wait MSTCTOGN", "") Wait Param, MSTCTOGN, Time, 20 !TogBit = get(MSTCTOGN) @Print("ALL", " . Toggle bit = "+&d(!TogBit), "TIME") @Print("ALL", " > Verify NO change on MSTCTOGN", "") @Print("ALL", &-50s(!TestErrLib(6)+"...")+!TestErrRes(6), "TIME") End If -------------------------------------------------------------------------------- -- --. -7- Test, Error : Block ID error -- ----------------------------- -- If ((!TestCase = 0) Or (!TestCase = 7)) Then @Print("ALL", "", "") @Print("ALL", !TestErrLib(7)+"...", "TIME") If (!SRun = "Manual") Then @Print("CFLOG", "...Mode manual, type CONT to continue","") Halt End If Handler TC, START @Print("ALL", "MDI accepts all CMD ID (see MDI DB)", "") @Print("CFLOG", "no test of Exp. ID error", "TIME") @Print("ALL", &-50s(!TestErrLib(7)+"...")+!TestErrRes(7), "TIME") End If -------------------------------------------------------------------------------- -- --. -8- Test, Normal : Sending MLA/MLB -- ------------------------------ -- If ((!TestCase = 0) Or (!TestCase = 8)) Then @Print("ALL", "", "") @Print("ALL", !TestErrLib(8)+"...", "TIME") If (!SRun = "Manual") Then @Print("CFLOG", "...Mode manual, type CONT to continue","") Halt End If Handler TC, START @Print("ALL", " . Wait MSTCTOGN", "") Wait Param, MSTCTOGN, Time, 20 !TogBit = get(MSTCTOGN) @Print("ALL", " . Toggle bit = "+&d(!TogBit), "TIME") @Print("CFLOG", " . Send correct MBSLOBT with MZMLAN/MZMLBN", "TIME") Send MZMLAN, 0x2824 -- Code INIT LOBT Send MZMLBN, 0x0000 Send MZMLBN, 0x0000 Send MZMLBN, 0x0000 Send MZMLBN, 0x2824 Wait time,15 @Print("ALL", " . Wait MSTCTOGN", "") Wait Param, MSTCTOGN, Time, 20 !TogBit = get(MSTCTOGN) @Print("ALL", " . Toggle bit = "+&d(!TogBit), "TIME") @Print("ALL", " > Verify the MSTCTOGN change", "") @Print("ALL", &-50s(!TestErrLib(8)+"...")+!TestErrRes(8), "TIME") End If -------------------------------------------------------------------------------- -- --. -9- Test, Error : Sending MLA/MLB (Delay 2s) -- ----------------------------------------- -- If ((!TestCase = 0) Or (!TestCase = 9)) Then @Print("ALL", "", "") @Print("ALL", !TestErrLib(9)+"...", "TIME") If (!SRun = "Manual") Then @Print("CFLOG", "...Mode manual, type CONT to continue","") Halt End If Handler TC, START @Print("ALL", " . Wait MSTCTOGN", "") Wait Param, MSTCTOGN, Time, 20 !TogBit = get(MSTCTOGN) @Print("ALL", " . Toggle bit = "+&d(!TogBit), "TIME") @Print("CFLOG", " . Send erroneous MBSLOBT with MZMLAN/MZMLBN", "TIME") Send MZMLAN, 0x2824 -- Code INIT LOBT Wait TIME, 2 Send MZMLBN, 0x0000 Send MZMLBN, 0x0000 Send MZMLBN, 0x0000 Send MZMLBN, 0x2824 Wait time,15 @Print("ALL", " . Wait MSTCTOGN", "") Wait Param, MSTCTOGN, Time, 20 !TogBit = get(MSTCTOGN) @Print("ALL", " . Toggle bit = "+&d(!TogBit), "TIME") @Print("ALL", " > Verify NO change on MSTCTOGN", "") @Print("ALL", &-50s(!TestErrLib(9)+"...")+!TestErrRes(9), "TIME") End If -------------------------------------------------------------------------------- -- --. -10- Test, Error : Sending MLA/MLB (Delay 2s) -- ----------------------------------------- -- If ((!TestCase = 0) Or (!TestCase = 10)) Then @Print("ALL", "", "") @Print("ALL", !TestErrLib(10)+"...", "TIME") If (!SRun = "Manual") Then @Print("CFLOG", "...Mode manual, type CONT to continue","") Halt End If Handler TC, START @Print("ALL", " . Wait MSTCTOGN", "") Wait Param, MSTCTOGN, Time, 20 !TogBit = get(MSTCTOGN) @Print("ALL", " . Toggle bit = "+&d(!TogBit), "TIME") @Print("CFLOG", " . Send erroneous MBSLOBT with MZMLAN/MZMLBN", "TIME") Send MZMLAN, 0x2824 -- Code INIT LOBT Send MZMLBN, 0x0000 Wait TIME, 2 Send MZMLBN, 0x0000 Send MZMLBN, 0x0000 Send MZMLBN, 0x2824 Wait time,15 @Print("ALL", " . Wait MSTCTOGN", "") Wait Param, MSTCTOGN, Time, 20 !TogBit = get(MSTCTOGN) @Print("ALL", " . Toggle bit = "+&d(!TogBit), "TIME") @Print("ALL", " > Verify NO change on MSTCTOGN", "") @Print("ALL", &-50s(!TestErrLib(10)+"...")+!TestErrRes(10), "TIME") End If -------------------------------------------------------------------------------- -- @Print("ALL", "", "") @Print("ALL", "...Click on PRINT button to obtain CFLOG result", "") @Print("ALL", "", "") halt LogBook "******************************************" LogBook "* Check the MDI On Board Protocol, ENDED *" LogBook "******************************************" Return "Ok" End Program ----------------------------------------------------------------------- Procedure Print( str(8) !Mode, str(80) !Mess, str(8) !FDate ) --. Trace in the display and(or) in the Cflog area according to the !Mode --. (ALL, DIS, LOG). The message !Mess can also be stamped with a date & time --. or only with a time depending on the flag !FDate="DATE" or "TIME". Var str(18) !SDate = "" Main Select !FDate Case "DATE" !SDate = Date() Case "TIME" !SDate = SplitStr(Date(), " ", 2) Default !Sdate = "" End Select Select !Mode Case "DISPLAY" Display &-63s(!Mess)+&17s(!SDate) Case "CFLOG" Cflog &-63s(!Mess)+&17s(!SDate) Case "ALL" Display &-63s(!Mess)+&17s(!SDate) Cflog &-63s(!Mess)+&17s(!SDate) Default Display &-63s(!Mess)+&17s(!SDate) Cflog &-63s(!Mess)+&17s(!SDate) End Select Return End Procedure