10    !***************************************************************

20    ! Comprehensive Example Program

30    ! 8960 W-CDMA Loopback Test Mode

40    !

50    ! This is a program to demonstrate the use of the 8960

60    ! with E1963A W-CDMA TA testing a FDD W-CDMA UE call processing.

70    ! The 8960 uses test control protocol to perform testing.

80    !

90    !***************************************************************

100   !

110   COM /Address/ INTEGER Testset

120   Testset=714

130   ON TIMEOUT 7,20 GOSUB Timeout

140   Rf_level=-35

150   CLEAR SCREEN

160   !

170   !***************************************************************

180   ! Step 1:  Set Up Test Set

190   !***************************************************************

200   !

210   OUTPUT Testset;"*RST"

220   OUTPUT Testset;"*CLS"

230   OUTPUT Testset;"SYST:COMM:GPIB:DEB ON"

240   OUTPUT Testset;"CALL:OPER:MODE OFF"

250   OUTPUT Testset;"SYST:CORR:FREQ 2000MHZ"

260   OUTPUT Testset;"SYST:CORR -1"

270   !

280   !***************************************************************

290   ! Step 2:  Configure Test Set and UE Parameters

300   !***************************************************************

310   !

320   ! Cell Parameters

330   OUTPUT Testset;"CALL:LAC 30865" !Correct LAC avoids Location Update

340   OUTPUT Testset;"CALL:MCC 234"

350   OUTPUT Testset;"CALL:MNC 56"

360   OUTPUT Testset;"CALL:PAG:REP:STAT:WCDMA ON"

370   ! Generator Info

380   !   -Downlink Channel Codes

390   OUTPUT Testset;"CALL:SCOD:PRIM 0"

400   OUTPUT Testset;"CALL:SRB:CCH:DED:BPS3400:CCOD CODE12"

410   OUTPUT Testset;"CALL:CCPC:SEC:CCOD CODE7"

420   OUTPUT Testset;"CALL:PICH:CCOD CODE16"

430   OUTPUT Testset;"CALL:AICH:CCOD CODE10"

440   OUTPUT Testset;"CALL:DPCH:RMC12:CCOD CODE9"

450   !   -Downlink Channel Levels

460   OUTPUT Testset;"CALL:CPIC -4.8"

470   OUTPUT Testset;"CALL:CCPC:PRIM -7.1"

480   OUTPUT Testset;"CALL:CCPC:SEC -6.9"

490   OUTPUT Testset;"CALL:PICH -9.9"

500   OUTPUT Testset;"CALL:AICH -9.9"

510   OUTPUT Testset;"CALL:DPCH -12"

520   !   -Connected DL Channel Levels

530   OUTPUT Testset;"CALL:CONN:CPIC -3.3"

540   OUTPUT Testset;"CALL:CONN:CCPC:PRIM -5.35"

550   OUTPUT Testset;"CALL:CONN:PICH -20" !Change PICH to give OCNS

560   OUTPUT Testset;"CALL:CONN:DPCH -10.3"

570   !   -AWGN Power

580   OUTPUT Testset;"CALL:AWGN:POW:STAT OFF"

590   ! Uplink Parameters

600   OUTPUT Testset;"CALL:UPL:PRAC:POW:STEP 3"

610   OUTPUT Testset;"CALL:UPL:PRAC:SIGN 0"

620   OUTPUT Testset;"CALL:UPL:PRAC:SCOD 0"

630   OUTPUT Testset;"CALL:UPL:DPCH:SCOD 0"

640   !

650   ! Call Parameters

660   OUTPUT Testset;"CALL:POW ";Rf_level

670   OUTPUT Testset;"CALL:DPCH:TYP RMC12"

680   OUTPUT Testset;"CALL:CHAN 10563"

690   OUTPUT Testset;"CALL:UPL:CHAN 9613"

700   OUTPUT Testset;"CALL:DTCH:DATA PRBS15"

710   OUTPUT Testset;"CALL:SRB:CCH:DED:DRAT BPS3400"

720   ! Uplink Channel Levels

730   OUTPUT Testset;"CALL:CLPC:UPL:MODE ACT"

740   OUTPUT Testset;"CALL:MS:POW:TARG 0 DBM"

750   ! Call Control

760   OUTPUT Testset;"CALL:PAG:IMSI '1234567890'"

770   OUTPUT Testset;"CALL:OPER:MODE CALL"

780   !

790   !***************************************************************

800   ! Step 3:  Measurement Parameters

810   !***************************************************************

820   !

830   ! Set all measurement triggers to single

840   OUTPUT Testset;"SET:CONT:OFF"

850   ! Set up the Thermal Power measurement

860   OUTPUT Testset;"SET:WTP:TIM 7;COUN 1"

870   ! Set up the Channel Power measurement

880   OUTPUT Testset;"SET:WCP:TIM 7;COUN 1"

890   OUTPUT Testset;"SET:WCP:INT:TIME .667 MS"

900   OUTPUT Testset;"SET:WCP:FILT ON" ! Turn the RRC filter on

910   ! Set up the Waveform Quality measurement

920   OUTPUT Testset;"SET:WWQ:TIM 7;COUN 1;TSL 1"

930   ! Set up the ACLR measurement

940   OUTPUT Testset;"SET:WACL:TIM 7;COUN 1"

950   ! Set up the Loopback BER measurement

960   OUTPUT Testset;"SET:WBER:TIM 7;COUN 10000"

970   ! Set up the Occupied Bandwidth measurement

980   OUTPUT Testset;"SET:WOBW:TIM 7;COUN 1"

990   ! Set up the Spectrum Emission Mask measurement

1000  OUTPUT Testset;"SET:WSEM:TIM 7;COUN 1"

1010  !

1020  !***************************************************************

1030  ! Step 4:  Make a Connection

1040  !***************************************************************

1050  !

1060  PRINT "Turn the UE on now."

1070  Originate ! Subroutine to originate a connection

1080  !

1090  !***************************************************************

1100  ! Step 5:  INITiate and FETCh Measurements

1110  !***************************************************************

1120  !

1130  CLEAR SCREEN

1140  PRINT "W-CDMA Test Results:"

1150  PRINT

1160  Time1=TIMEDATE ! Start a timer for evaluating test times

1170  !

1180  FOR I=1 TO 1 !Change index depending on # of freq/power levels"

1190    OUTPUT Testset;"INIT:WBER;WTP;WWQ;WACL;WOBW;WSEM"

1200    Fetch_results! Go to a subroutine to handle the results

1210  !

1220  !***************************************************************

1230  ! Step 6:  Reconfigure Test Set and UE Connection Parameters

1240  !***************************************************************

1250  !

1260  !Use deferred commands to set up new channels

1270    OUTPUT Testset;"CALL:SET:CHAN:DOWN 10526"

1280    OUTPUT Testset;"CALL:SET:CHAN:UPL 9626"

1290    OUTPUT Testset;"CALL:HAND:PCR" ! Executes the handoff

1300    OUTPUT Testset;"CALL:STAT?" ! Verify the handoff success

1310    ENTER Testset;Call_state$

1320    IF Call_stat$<>"CONN" THEN Dropped_call

1330  NEXT I

1340  !

1350  !****************************************************************

1360  ! Step 7:  End the Connection

1370  !****************************************************************

1380  !

1390  OUTPUT Testset;"CALL:END"

1400  OUTPUT Testset;"CALL:CONN?"

1410  ENTER Testset;Callstate

1420  IF Callstate=1 THEN

1430    PRINT "Make sure the phone has released the call."

1440    OUTPUT Testset;"SYST:PRES3"

1450  END IF

1460  PRINT ""

1470  PRINT "Testing Complete."

1480  Testtime=PROUND(TIMEDATE-Time1,-2)

1490  PRINT ""

1500  PRINT "Test time was ";Testtime;" seconds."

1510  STOP

1520 Timeout:  !Comes here only when program times out

1530  PRINT "Program time out."

1540  END

1550  !

1560  !*****************************************************************

1570  ! Subroutine Section

1580  !*****************************************************************

1590  !

1600  SUB Print_results(Meas_name$,Res1,OPTIONAL Res2,Res3,Res4,Res5,Res6)

1610    SELECT Meas_name$

1620    CASE "WTP"

1630      PRINT USING "5X,""Thermal Power:"",9X,M2D.2D,"" dBm""";Res1

1640    CASE "WWQ"

1650      PRINT USING "5X,""Max EVM:"",15X,M2D.2D,"" %""";Res1

1660      PRINT USING "5X,""Worst Freq Error:"",5X,M3D.2D,"" Hz""";Res2

1670      PRINT USING "5X,""Max Origin Offset:"",5X,M2D.2D,"" dB""";Res3

1680      PRINT USING "5X,""Max Phase Error:"",7X,M2D.2D,"" Deg""";Res4

1690      PRINT USING "5X,""Max Mag. Error:"",8X,M2D.2D,"" %""";Res5

1700    CASE "WACL"

1710      PRINT USING "5X,""ACLR -5 MHz Offset:"",4X,M2D.2D,"" dBc""";Res1

1720      PRINT USING "5X,""ACLR +5 MHz Offset:"",4X,M2D.2D,"" dBc""";Res2

1730      PRINT USING "5X,""ACLR -10 MHz Offset:"",3X,M2D.2D,"" dBc""";Res3

1740      PRINT USING "5X,""ACLR +10 MHz Offset:"",3X,M2D.2D,"" dBc""";Res4

1750    CASE "WCP"

1760      PRINT USING "5X,""Channel Power:"",9X,M2D.2D,"" dBm""";Res1

1770    CASE "WBER"

1780      PRINT USING "5X,""Loopback BER:"",9X,M3D.2D,"" %""";Res1

1790    CASE "WOBW"

1800      PRINT USING "5X,""Occupied Bandwidth:"",4X,M1D.3D,"" MHz""";Res1

1810    CASE "WSEM"

1820      IF Res1=0 THEN Res1$="PASS"

1830      IF Res1=1 THEN Res1$="FAIL"

1840      PRINT "     Spectrum Emission Mask:  ";Res1$

1850    END SELECT

1860  SUBEND

1870  SUB Dropped_call

1880    PRINT " "

1890    PRINT "Call was dropped. Program aborted."

1900    STOP

1910  SUBEND

1920  SUB Orig_failed

1930    COM /Address/ INTEGER Testset

1940    CLEAR Testset

1950    OUTPUT Testset;"CALL:END"

1960    PRINT "Origination failed. Check conditions and run again."

1970    STOP

1980  SUBEND

1990  SUB Fetch_results

2000    COM /Address/ INTEGER Testset

2010    REPEAT

2020      OUTPUT Testset;"INIT:DONE?"

2030      ENTER Testset;Measdone$

2040      SELECT Measdone$

2050      CASE "WTP"

2060        OUTPUT Testset;"FETC:WTP:INT?;POW?"

2070        ENTER Testset;Integrity,Power

2080        IF Integrity=0 THEN

2090          Print_results(Measdone$,Power)

2100        ELSE

2110          Meas_error(Measdone$,Integrity)

2120        END IF

2130      CASE "WCP"

2140        OUTPUT Testset;"FETC:WCP:INT?;POW?"

2150        ENTER Testset;Integrity,Power

2160        IF Integrity=0 THEN

2170          Print_results(Measdone$,Power)

2180        ELSE

2190          Meas_error(Measdone$,Integrity)

2200        END IF

2210      CASE "WWQ"

2220        OUTPUT Testset;"FETC:WWQ?"

2230        ENTER Testset;Integrity,Evm,Ferr,Ooff,Perr,Merr

2240        IF Integrity=0 THEN

2250          Print_results(Measdone$,Evm,Ferr,Ooff,Perr,Merr)

2260        ELSE

2270          Meas_error(Measdone$,Integrity)

2280        END IF

2290      CASE "WACL"

2300        OUTPUT Testset;"FETC:WACL:INT?;AVER?"

2310        ENTER Testset;Integrity,Negfive,Posfive,Negten,Posten

2320        IF Integrity=0 THEN

2330          Print_results(Measdone$,Negfive,Posfive,Negten,Posten)

2340        ELSE

2350          Meas_error(Measdone$,Integrity)

2360        END IF

2370      CASE "WBER"

2380        OUTPUT Testset;"FETC:WBER?"

2390        ENTER Testset;Integrity,Ber

2400        IF Integrity=0 THEN

2410          Print_results(Measdone$,Ber)

2420        ELSE

2430          Meas_error(Measdone$,Integrity)

2440        END IF

2450      CASE "WOBW"

2460        OUTPUT Testset;"FETC:WOBW?"

2470        ENTER Testset;Integrity,Obw

2480        IF Integrity=0 THEN

2490          Print_results(Measdone$,Obw)

2500        ELSE

2510          Meas_error(Measdone$,Integrity)

2520        END IF

2530      CASE "WSEM"

2540        OUTPUT Testset;"FETC:WSEM?"

2550        ENTER Testset;Integrity,Overall,Pow,Range1,Range2,Range3,Range4

2560        IF Integrity=0 THEN

2570          Print_results(Measdone$,Overall)

2580        ELSE

2590          Meas_error(Measdone$,Integrity)

2600        END IF

2610      END SELECT

2620    UNTIL Measdone$="NONE"

2630  SUBEND

2640  SUB Meas_error(Measdone$,Integrity)

2650    SELECT Integrity

2660    CASE 2

2670      Err$=" Meas Timeout"

2680    CASE 5

2690      Err$=" Over Range"

2700    CASE 6

2710      Err$=" Under Range"

2720    CASE 17

2730      Err$=" Cannot Correlate"

2740    CASE 19

2750      Err$=" Temp Drift"

2760    CASE ELSE

2770      Err$=""

2780    END SELECT

2790    PRINT Measdone$;" Integrity is";Integrity;Err$

2800  SUBEND

2810  SUB Originate

2820    COM /Address/ INTEGER Testset

2830    ON TIMEOUT 7,10 CALL Orig_failed

2840    OUTPUT Testset;"CALL:ORIG:SEQ"

2850    OUTPUT Testset;"CALL:CONN?"

2860    ENTER Testset;Connected

2870    IF NOT Connected THEN

2880      PRINT "Call origination not successful."

2890      STOP

2900    END IF

2910  SUBEND