diff src/g23m-gsm/alr2/alr_test/alr_ncell_steps.cpp @ 3:b4c81ea2d291

src/g23m-gsm/alr2: initial import from Magnetite
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 15 Jul 2018 04:43:28 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/g23m-gsm/alr2/alr_test/alr_ncell_steps.cpp	Sun Jul 15 04:43:28 2018 +0000
@@ -0,0 +1,828 @@
+#include "alr_constraints.h"
+#include "alr_ncell_steps.h"
+
+/*------------------------------------------------------------------------------
+ *
+ * Description:	Measurement reporting for the serving cell is tested. The multiframe
+ *              period is set to two multiframes. It is expected that the
+ *              initial report to RR is send after eleven reports of layer 1
+ *              and successive reports are send to RR after ten reports.
+ *              The number of TDMA frames between measurement reports to RR is
+ *              102 TDMA frames which is equal to two multiframes.
+ *-------------------------------------------------------------------------------*/
+T_STEP meas_rep_bs_pa_mfrms_2()
+{
+  BEGIN_STEP ("measurement reporting bs_pa_mfrms=2")
+  {
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    AWAIT ( mph_measurement_ind_1()     );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    AWAIT ( mph_measurement_ind_2()     );
+  }
+}
+
+/*-------------------------------------------------------------------------------
+ *
+ * Description:	Measurement reporting for the serving cell is tested. The multiframe
+ *              period is set to three multiframes. It is expected that the initial
+ *              report to RR is send after eight reports of layer 1 and successive
+ *              reports are send to RR after seven reports. The number of TDMA frames
+ *              between measurement reports to RR is 153 TDMA frames which is equal to
+ *              three multiframes.
+ *-------------------------------------------------------------------------------*/
+T_STEP meas_rep_bs_pa_mfrms_3()
+{
+  BEGIN_STEP ("measurement reporting bs_pa_mfrms=3")
+  {
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    AWAIT ( mph_measurement_ind_3()     );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    AWAIT ( mph_measurement_ind_4()     );
+  }
+}
+
+/*--------------------------------------------------------------------------------
+ *
+ * Description:	Measurement reporting for the serving cell is tested. The multiframe
+ *              period is set to four multiframes. It is expected that the initial
+ *              report to RR is send after six reports of layer 1 and successive
+ *              reports are send to RR after five reports. The number of TDMA frames
+ *              between measurement reports to RR is 204 TDMA frames which is
+ *              equal to four multiframes.
+ *-------------------------------------------------------------------------------*/
+T_STEP meas_rep_bs_pa_mfrms_4()
+{
+  BEGIN_STEP ("measurement reporting bs_pa_mfrms=4")
+  {
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    AWAIT ( mph_measurement_ind_1()     );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    AWAIT ( mph_measurement_ind_5()     );
+  }
+}
+
+/*------------------------------------------------------------------------------
+ *
+ * Description:	Measurement reporting for the serving cell is tested.
+ *              The multiframe period is set to five multiframes. It is expected
+ *              that the initial  report to RR is send after five reports of
+ *              layer 1 and successive  reports are send to RR after four reports.
+ *              The number of TDMA frames between measurement reports to RR is
+ *              255 TDMA frames which is equal to five multiframes.
+ *-------------------------------------------------------------------------------*/
+
+T_STEP meas_rep_bs_pa_mfrms_5()
+{
+  BEGIN_STEP ("measurement reporting bs_pa_mfrms=5")
+  {
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    AWAIT ( mph_measurement_ind_1()     );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    AWAIT ( mph_measurement_ind_6()     );
+  }
+}
+
+
+/*-----------------------------------------------------------------------------
+ *
+ * Description:	Measurement reporting for the serving cell is tested. The multiframe
+ *              period is set to six multiframes. It is expected that the initial
+ *              report to RR is send after five reports of layer 1 and successive
+ *              reports are send to RR after three reports. The number of TDMA frames
+ *              between measurement reports to RR is 306 TDMA frames which is equal
+ *              to six multiframes.
+ *-------------------------------------------------------------------------------*/
+T_STEP meas_rep_bs_pa_mfrms_6()
+{
+  BEGIN_STEP ("measurement reporting bs_pa_mfrms=6")
+  {
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    AWAIT ( mph_measurement_ind_7()     );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    AWAIT ( mph_measurement_ind_8()     );
+  }
+}
+
+/*---------------------------------------------------------------------------------
+ *
+ * Description:	Measurement reporting for the serving cell is tested. The multiframe
+ *              period is set to eight multiframes. It is expected that the initial
+ *              report to RR is send after five reports of layer 1 and successive
+ *              reports are send to RR after two reports. The number of TDMA frames
+ *              between measurement reports to RR is 408 TDMA frames which is equal to
+ *              eight multiframes.
+ *-------------------------------------------------------------------------------*/
+T_STEP meas_rep_bs_pa_mfrms_8()
+{
+  BEGIN_STEP ("measurement reporting bs_pa_mfrms=8")
+  {
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    AWAIT ( mph_measurement_ind_10()    );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    SEND  ( mphc_rxlev_periodic_ind_1() );
+    AWAIT ( mph_measurement_ind_11()    );
+  }
+}
+
+
+/*---------------------------------------------------------------------------------
+ *
+ * Description: The 10 seconds interval for next ncell synchronization in idle 
+ *              mode is effected by sending (42/bs_pa_mfrms) measurement reports.
+ *              This function sends (count*3) number of measurement reports.
+ *-------------------------------------------------------------------------------*/
+T_STEP wait_ncsync_idle_2_14(int count)
+{
+  BEGIN_STEP ("wait for ncsync expiry in idle mode")
+  {
+    int i;
+    for( i=1 ; i<count ; i++ )
+    {
+      SEND  ( mphc_rxlev_periodic_ind_2() );
+      SEND  ( mphc_rxlev_periodic_ind_2() );
+      SEND  ( mphc_rxlev_periodic_ind_2() );
+      AWAIT ( mph_measurement_ind_14()    );
+    }
+    SEND    ( mphc_rxlev_periodic_ind_2() );
+    SEND    ( mphc_rxlev_periodic_ind_2() );
+    SEND    ( mphc_rxlev_periodic_ind_2() );
+  }
+}
+
+/*---------------------------------------------------------------------------------
+ *
+ * Description: The 10 seconds interval for next ncell synchronization in idle 
+ *              mode is effected by sending (42/bs_pa_mfrms) measurement reports.
+ *              This function sends (count*2) number of measurement reports.
+ *-------------------------------------------------------------------------------*/
+T_STEP wait_ncsync_idle_2_31(int count)
+{
+  BEGIN_STEP ("wait for ncsync expiry in idle mode")
+  {
+    int i;
+    for( i=1 ; i<count ; i++ )
+    {
+      SEND  ( mphc_rxlev_periodic_ind_2() );
+      SEND  ( mphc_rxlev_periodic_ind_2() );
+      AWAIT ( mph_measurement_ind_31()    );
+    }
+    SEND    ( mphc_rxlev_periodic_ind_2() );
+    SEND    ( mphc_rxlev_periodic_ind_2() );
+  }
+}
+
+/*---------------------------------------------------------------------------------
+ *
+ * Description: The 10 seconds interval for next ncell synchronization in idle 
+ *              mode is effected by sending (42/bs_pa_mfrms) measurement reports.
+ *              This function sends (count*3) number of measurement reports.
+ *-------------------------------------------------------------------------------*/
+T_STEP wait_ncsync_idle_3_33(int count)
+{
+  BEGIN_STEP ("wait for ncsync expiry in idle mode")
+  {
+    int i;
+    for( i=1 ; i<count ; i++ )
+    {
+      SEND  ( mphc_rxlev_periodic_ind_3() );
+      SEND  ( mphc_rxlev_periodic_ind_3() );
+      SEND  ( mphc_rxlev_periodic_ind_3() );
+      AWAIT ( mph_measurement_ind_33()    );
+    }
+    SEND    ( mphc_rxlev_periodic_ind_3() );
+    SEND    ( mphc_rxlev_periodic_ind_3() );
+    SEND    ( mphc_rxlev_periodic_ind_3() );
+  }
+}
+
+/*---------------------------------------------------------------------------------
+ *
+ * Description: The 10 seconds interval for next ncell synchronization in dedicated 
+ *              mode is effected by sending 21 measurement reports. This function sends 
+ *              'count' number of measurement reports.
+ *-------------------------------------------------------------------------------*/
+T_STEP wait_ncsync_dedicated(int count)
+{
+  BEGIN_STEP ("wait for ncsync expiry in dedicated mode")
+  {
+    int i;
+    for( i=1 ; i<count ; i++ )
+    {
+      SEND  ( mphc_meas_report_4()     );
+      AWAIT ( mph_measurement_ind_34() );
+    }
+    SEND    ( mphc_meas_report_4()     );
+  }
+}
+/*---------------------------------------------------------------------------------
+ *
+ * Description: The 10 seconds interval for next ncell synchronization in dedicated 
+ *              mode is effected by sending 21 measurement reports. This function sends 
+ *              'count' number of measurement reports.
+ *-------------------------------------------------------------------------------*/
+T_STEP wait_ncsync_dedicated_102(int count)
+{
+  BEGIN_STEP ("wait for ncsync expiry in dedicated mode")
+  {
+    int i;
+    for( i=1 ; i<count ; i++ )
+    {
+      SEND  ( mphc_meas_report_4()     );
+      AWAIT ( mph_measurement_ind_dummy(ARFCN_23,25)  );
+    }
+    SEND    ( mphc_meas_report_4()     );
+  }
+}
+/*---------------------------------------------------------------------------------
+ *
+ * Description: The 10 seconds interval for next ncell synchronization in dedicated 
+ *              mode is effected by sending 21 measurement reports. This function sends 
+ *              'count' number of measurement reports.
+ *-------------------------------------------------------------------------------*/
+T_STEP wait_ncsync_dedicated_102a(int count)
+{
+  BEGIN_STEP ("wait for ncsync expiry in dedicated mode")
+  {
+    int i;
+    for( i=1 ; i<count ; i++ )
+    {
+      SEND  ( mphc_meas_report_5()     );
+      AWAIT ( mph_measurement_ind_dummy(ARFCN_23,25)  );
+    }
+    SEND    ( mphc_meas_report_5()     );
+  }
+}
+/*---------------------------------------------------------------------------------
+ *
+ * Description: The 10 seconds interval for next ncell synchronization in dedicated 
+ *              mode is effected by sending 21 measurement reports. This function sends 
+ *              'count' number of measurement reports.
+ *-------------------------------------------------------------------------------*/
+T_STEP wait_ncsync_dedicated_102b(int count)
+{
+  BEGIN_STEP ("wait for ncsync expiry in dedicated mode")
+  {
+    int i;
+    for( i=1 ; i<count ; i++ )
+    {
+      SEND  ( mphc_meas_report_6()     );
+      AWAIT ( mph_measurement_ind_dummy(ARFCN_23,25)  );
+    }
+    SEND    ( mphc_meas_report_6()     );
+  }
+}
+/*---------------------------------------------------------------------------------
+ *
+ * Description: The 10 seconds interval for next ncell synchronization in dedicated 
+ *              mode is effected by sending 21 measurement reports. This function sends 
+ *              'count' number of measurement reports.
+ *-------------------------------------------------------------------------------*/
+T_STEP wait_ncsync_dedicated_102c(int count)
+{
+  BEGIN_STEP ("wait for ncsync expiry in dedicated mode")
+  {
+    int i;
+    for( i=1 ; i<count ; i++ )
+    {
+      SEND  ( mphc_meas_report_6a()     );
+      AWAIT ( mph_measurement_ind_dummy(ARFCN_23,25)  );
+    }
+    SEND    ( mphc_meas_report_6a()     );
+  }
+}
+/*---------------------------------------------------------------------------------
+ *
+ * Description: The 10 seconds interval for next ncell synchronization in dedicated 
+ *              mode is effected by sending 21 measurement reports. This function sends 
+ *              'count' number of measurement reports.
+ *-------------------------------------------------------------------------------*/
+T_STEP wait_ncsync_dedicated_1020A(int count)
+{
+  BEGIN_STEP ("wait for ncsync expiry in dedicated mode alr1020A")
+  {
+    int i;
+    for( i=1 ; i<count ; i++ )
+    {
+      SEND  (mphc_meas_report_4a()                     );
+      AWAIT ( mph_measurement_ind_dummy(ARFCN_23,0x19) );
+    }
+    SEND    ( mphc_meas_report_4a()     );
+  }
+}
+
+/*------------------------------------------------------------------------------
+ *
+ * Description:	The BA list contains the serving cell 23 and
+ *              the neighbour cells 1, 14 and 124.
+ *              The fieldstrength is 56 for channel 23, 12 for channel 1,
+ *              44 for channel 14 and 25 for channel 124 (all values in GSM range).
+ *              The ranking for the neighbour cells is 14, 124 and at least channel 1.
+ *              Each reports contains two fieldstrength values per channel.
+ *              The multiframe period is set to 6. The first measurement report
+ *              is send to RR after five reports from PL. Then after each
+ *              three reports from PL a measurement report is send to RR.
+ *              Synchronisation to channel 14 fails.
+ *-------------------------------------------------------------------------------*/
+
+T_STEP sync_to_ncell_14_fails_once()
+{
+  BEGIN_STEP ("sync to ncell 14 failes once")
+  {
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      AWAIT ( mphc_ncell_sync_req_initial(ARFCN_14)       );
+      AWAIT ( mphc_ncell_sync_req_initial(ARFCN_124)       );
+      AWAIT ( mphc_ncell_sync_req_initial(ARFCN_1)       );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      AWAIT ( mph_measurement_ind_13()      );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      SEND  ( mphc_ncell_sync_ind_failed(ARFCN_14)       );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      SEND  ( mphc_ncell_sync_ind(ARFCN_124,FN_OFF_ARFCN_124,TIME_ALIGNMT_124,BSIC_1)       );
+      AWAIT ( mphc_ncell_bcch_req (ARFCN_124, FN_OFF_ARFCN_124, TIME_ALIGNMT_124));
+      SEND  ( mphc_ncell_sync_ind_3()       );
+      AWAIT ( mphc_ncell_bcch_req (ARFCN_1, FN_OFF_ARFCN_1, TIME_ALIGNMT_1)       );
+      SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_1)       );
+      AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_1)  );
+      SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_124)       );
+      AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_124)  );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      AWAIT ( mph_measurement_ind_15()      );
+      AWAIT ( mph_unitdata_ind_si3(ARFCN_1)          );
+      AWAIT ( mph_unitdata_ind_si3(ARFCN_124)          );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      AWAIT ( mphc_ncell_sync_req_initial(ARFCN_14)       );
+      AWAIT ( mph_measurement_ind_15()      );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      SEND  ( mphc_ncell_sync_ind (ARFCN_14)       );
+      AWAIT ( mphc_ncell_bcch_req (ARFCN_14)       );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      AWAIT ( mph_measurement_ind_15()      );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_14)       );
+      AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_14)  );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      AWAIT ( mph_measurement_ind_14()      );
+      AWAIT ( mph_unitdata_ind_si3(ARFCN_14)          );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      AWAIT ( mph_measurement_ind_14()      );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      AWAIT ( mph_measurement_ind_14()      );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      AWAIT ( mphc_ncell_list_sync_req_1a() );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      SEND  ( mphc_ncell_sync_ind(ARFCN_124,FN_OFF_ARFCN_124,TIME_ALIGNMT_124,BSIC_1)       );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      SEND  ( mphc_ncell_sync_ind_3()       );
+      AWAIT ( mph_measurement_ind_14()      );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      AWAIT ( mph_measurement_ind_14()      );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      AWAIT ( mph_measurement_ind_14()      );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      AWAIT ( mph_measurement_ind_14()      );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      SEND  ( mphc_ncell_sync_ind (ARFCN_14)       );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+      AWAIT ( mph_measurement_ind_14()      );
+      SEND  ( mphc_rxlev_periodic_ind_2()   );
+  }
+}
+/*------------------------------------------------------------------------------
+ *
+ * Description: ALR requests successive reading of BCCH for all neighbour cells.
+ *              This failed for channel 14.
+ *-------------------------------------------------------------------------------*/
+T_STEP ncell_bcch_read_fails_for_ncell_14()
+{
+  BEGIN_STEP ("ncell BCCH read fails for ncell 14")
+  {
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_14)      );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_124)      );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_1)      );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    AWAIT ( mph_measurement_ind_13()     );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    SEND  ( mphc_ncell_sync_ind (ARFCN_14)      );
+    AWAIT ( mphc_ncell_bcch_req (ARFCN_14)      );
+    SEND  ( mphc_ncell_bcch_ind_invalid(ARFCN_14)      );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_14) );
+    AWAIT ( mphc_ncell_bcch_req (ARFCN_14)      );
+    SEND  ( mphc_ncell_bcch_ind_invalid(ARFCN_14)      );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_14) );
+    AWAIT ( mphc_ncell_bcch_req (ARFCN_14)      );
+    SEND  ( mphc_ncell_bcch_ind_invalid(ARFCN_14)      );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_14) );
+    AWAIT ( mphc_ncell_bcch_req (ARFCN_14)      );
+    SEND  ( mphc_ncell_bcch_ind_invalid(ARFCN_14)      );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_14) );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    AWAIT ( mph_measurement_ind_16()     );
+    SEND  ( mphc_ncell_sync_ind(ARFCN_124,FN_OFF_ARFCN_124,TIME_ALIGNMT_124,BSIC_1)      );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    SEND  ( mphc_ncell_sync_ind_5()      );
+    AWAIT ( mphc_ncell_bcch_req (ARFCN_124, FN_OFF_ARFCN_124, TIME_ALIGNMT_124));
+    AWAIT ( mphc_ncell_bcch_req (ARFCN_1, FN_OFF_ARFCN_1, TIME_ALIGNMT_1)      );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    AWAIT ( mphc_ncell_sync_req_1a()     );
+    AWAIT ( mph_measurement_ind_16()     );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_124)      );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_124) );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_1)      );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_1) );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    AWAIT ( mph_measurement_ind_15()     );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_1)         );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_124)         );
+    SEND  ( mphc_ncell_sync_ind (ARFCN_14)      );
+    AWAIT ( mphc_ncell_bcch_req (ARFCN_14)      );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_14)      );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_14) );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    AWAIT ( mph_measurement_ind_14()     );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_14)         );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    AWAIT ( mph_measurement_ind_14()     );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    AWAIT ( mph_measurement_ind_14()     );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    AWAIT ( mphc_ncell_list_sync_req_1a());
+  }
+}
+/*------------------------------------------------------------------------------
+ *
+ * Description:	The multiband parameter is set to 0, that means the neighbourcells
+ *              are ranked after the fieldstrength. The serving cell is 23
+ *              (that means in the GSM 900 frequency band). The neighbourcell list
+ *              contains eight channels : 1, 14, 25, 124, 512 580, 637 and 885.
+ *              It is expected, that ALR starts synchronization to the six
+ *              strongest cells 637, 25, 14, 512, 580, 885. This channels must
+ *              be included in the measurement report to RR.
+ *-------------------------------------------------------------------------------*/
+T_STEP ncell_reporting_multiband_0_scell_is_gsm900()
+{
+  BEGIN_STEP("ncell: multiband 0/scell is gsm900")
+  {
+    START_TIMEOUT(29500);
+    SEND  ( mphc_rxlev_periodic_ind_3()   );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_637)       );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_25)       );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_14)       );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_512)      );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_580)      );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_885)      );
+    SEND  ( mphc_rxlev_periodic_ind_3()   );
+    AWAIT ( mph_measurement_ind_7()       );
+    SEND  ( mphc_ncell_sync_ind_12()      );
+    AWAIT ( mphc_ncell_bcch_req_10()      );
+    SEND  ( mphc_ncell_sync_ind (ARFCN_25)      );
+    AWAIT ( mphc_ncell_bcch_req (ARFCN_25)      );
+    SEND  ( mphc_ncell_sync_ind (ARFCN_14)       );
+    AWAIT ( mphc_ncell_bcch_req (ARFCN_14)       );
+    SEND  ( mphc_ncell_sync_ind (ARFCN_512)      );
+    AWAIT ( mphc_ncell_bcch_req (ARFCN_512)      );
+    SEND  ( mphc_ncell_sync_ind_15()      );
+    AWAIT ( mphc_ncell_bcch_req_13()      );
+    SEND  ( mphc_ncell_sync_ind_16()      );
+    AWAIT ( mphc_ncell_bcch_req (ARFCN_885)      );
+    SEND  ( mphc_rxlev_periodic_ind_3()   );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_637)       );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_637)  );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_25)       );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_25)  );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_14)       );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_14)  );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_512)      );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_512)  );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_580)      );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_580) );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_885)      );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_885) );
+    SEND  ( mphc_rxlev_periodic_ind_3()   );
+    SEND  ( mphc_rxlev_periodic_ind_3()   );
+    AWAIT ( mph_measurement_ind_21()      );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_14)          );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_25)         );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_512)         );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_580)         );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_637)         );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_885)         );
+    SEND  ( mphc_rxlev_periodic_ind_3()   );
+    SEND  ( mphc_rxlev_periodic_ind_3()   );
+    SEND  ( mphc_rxlev_periodic_ind_3()   );
+    AWAIT ( mph_measurement_ind_21()      );
+    SEND  ( mphc_ncell_sync_ind(ARFCN_124,FN_OFF_ARFCN_124,TIME_ALIGNMT_124,BSIC_1)       );
+    WAIT_TIMEOUT();
+  }
+}
+/*---------------------------------------------------------------------------------
+ *
+ * Description:	The multiband parameter is set to 0, that means the neighbourcells
+ *              are ranked after the fieldstrength. The serving cell is 578
+ *              (that means in the DCS 1800 frequency band). The neighbourcell list
+ *              contains eight channels : 1, 14, 25, 124, 512 580, 637 and 885. It is
+ *              expected, that ALR starts synchronization to the six strongest cells
+ *              14, 25, 512, 580, 637, 885. These channels must be included in
+ *              the measurement report to RR.
+ *-------------------------------------------------------------------------------*/
+T_STEP ncell_reporting_multiband_0_scell_is_gsm1800()
+{
+  BEGIN_STEP("ncell: multiband 0/scell is gsm1800")
+  {
+    START_TIMEOUT(29500);
+    SEND  ( mphc_rxlev_periodic_ind_4()   );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_637)       );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_25)       );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_14)       );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_512)      );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_580)      );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_885)      );
+    SEND  ( mphc_rxlev_periodic_ind_4()   );
+    AWAIT ( mph_measurement_ind_22()      );
+    SEND  ( mphc_ncell_sync_ind_12()      );
+    AWAIT ( mphc_ncell_bcch_req_10()      );
+    SEND  ( mphc_ncell_sync_ind (ARFCN_25)      );
+    AWAIT ( mphc_ncell_bcch_req (ARFCN_25)      );
+    SEND  ( mphc_ncell_sync_ind (ARFCN_14)       );
+    AWAIT ( mphc_ncell_bcch_req (ARFCN_14)       );
+    SEND  ( mphc_ncell_sync_ind (ARFCN_512)      );
+    AWAIT ( mphc_ncell_bcch_req (ARFCN_512)      );
+    SEND  ( mphc_ncell_sync_ind_15()      );
+    AWAIT ( mphc_ncell_bcch_req_13()      );
+    SEND  ( mphc_ncell_sync_ind_16()      );
+    AWAIT ( mphc_ncell_bcch_req (ARFCN_885)      );
+    SEND  ( mphc_rxlev_periodic_ind_4()   );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_637)       );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_637)  );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_25)       );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_25)  );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_14)       );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_14)  );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_512)      );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_512)  );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_580)      );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_580) );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_885)      );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_885) );
+    SEND  ( mphc_rxlev_periodic_ind_4()   );
+    SEND  ( mphc_rxlev_periodic_ind_4()   );
+    AWAIT ( mph_measurement_ind_23()      );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_14)          );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_25)         );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_512)         );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_580)         );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_637)         );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_885)         );
+    SEND  ( mphc_rxlev_periodic_ind_4()   );
+    SEND  ( mphc_rxlev_periodic_ind_4()   );
+    SEND  ( mphc_rxlev_periodic_ind_4()   );
+    AWAIT ( mph_measurement_ind_23()      );
+    WAIT_TIMEOUT();
+  }
+}
+/*------------------------------------------------------------------------------
+ *
+ * Description:	The BA list contains the serving cell 23 and the
+ *              neighbour cells 1, 14 and 124.
+ *              The fieldstrength is 56 for channel 23, 12 for channel 1,
+ *              44 for channel 14 and 25 for channel 124 (all values in GSM range).
+ *              The ranking for the neighbour cells is 14, 124 and channel 1.
+ *              Each reports contains two fieldstrength values per channel.
+ *              The multiframe period is set to 6. The first measurement report
+ *              is send to RR after five reports from PL. Then after each three
+ *              reports from PL a measurement report is send to RR. The NCC permitted
+ *              check for neighbour cell 124 fails. The cell shall be excluded
+ *              from further attempts.
+ *-------------------------------------------------------------------------------*/
+
+T_STEP ncell_sync_ncc_permitted_check()
+{
+  BEGIN_STEP ("ncell sync, NCC is not permitted for ncell 124")
+  {
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_14)      );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_124)      );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_1)      );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    AWAIT ( mph_measurement_ind_13()     );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    SEND  ( mphc_ncell_sync_ind(ARFCN_14,FN_OFF_ARFCN_14,TIME_ALIGNMT_14,BSIC_16)      );
+    AWAIT ( mphc_ncell_bcch_req_4()      );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    SEND  ( mphc_ncell_sync_ind(ARFCN_124,FN_OFF_ARFCN_124,TIME_ALIGNMT_124,BSIC_1)      );
+    SEND  ( mphc_ncell_sync_ind(ARFCN_1,FN_OFF_ARFCN_1,TIME_ALIGNMT_1,BSIC_16)      );
+    AWAIT ( mphc_ncell_bcch_req_5()      );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    AWAIT ( mph_measurement_ind_16()     );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_14)      );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_14) );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_1)      );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_1) );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_124)      );
+
+    AWAIT ( mph_measurement_ind_17()     );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_1)         );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_14)         );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    SEND  ( mphc_rxlev_periodic_ind_2()  );
+    AWAIT ( mph_measurement_ind_17()     );
+  }
+}
+/*------------------------------------------------------------------------------
+ *
+ * Description:	The multiband parameter is set to 1, that means at least one of
+ *              the neighbourcells is member of the non-serving cell band
+ *              (that means in the DCS 1800 frequency band). The serving cell
+ *              is 23 (that means in the GSM 900 frequency band). The neighbourcell
+ *              list contains eight channels : 1, 11, 14, 25,87, 124, 512 and 885.
+ *              It is expected, that ALR starts synchronization to the six
+ *              cells 14, 87, 25, 11, 1 and 512. This channels must be included
+ *              in the measurement report to RR. ALR shall not synchronize to 885,
+ *              although the cell has a better fieldstrength than most channels
+ *              of the GSM 900 frequency band.
+ *-------------------------------------------------------------------------------*/
+T_STEP ncell_reporting_multiband_1_scell_is_gsm900()
+{
+  BEGIN_STEP("ncell: multiband 1/scell is gsm900")
+  {
+    SEND  ( mphc_rxlev_periodic_ind_5()                 );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_25)       );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_14)       );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_512)      );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_11)       );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_87)       );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_124)      );
+    SEND  ( mphc_rxlev_periodic_ind_5()                 );
+    AWAIT ( mph_measurement_ind_13()                    );
+    SEND  ( mphc_ncell_sync_ind (ARFCN_25)              );
+    AWAIT ( mphc_ncell_bcch_req (ARFCN_25)              );
+    SEND  ( mphc_ncell_sync_ind (ARFCN_14)              );
+    AWAIT ( mphc_ncell_bcch_req (ARFCN_14)              );
+    SEND  ( mphc_ncell_sync_ind (ARFCN_512)             );
+    AWAIT ( mphc_ncell_bcch_req (ARFCN_512)             );
+    SEND  ( mphc_ncell_sync_ind (ARFCN_11)              );
+    AWAIT ( mphc_ncell_bcch_req (ARFCN_11)              );
+    SEND  ( mphc_ncell_sync_ind (ARFCN_87)              );
+    AWAIT ( mphc_ncell_bcch_req (ARFCN_87)              );
+    SEND  ( mphc_ncell_sync_ind (ARFCN_124)             );
+    AWAIT ( mphc_ncell_bcch_req (ARFCN_124)             );
+    SEND  ( mphc_rxlev_periodic_ind_5()                 );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_25)           );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_25)          );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_14)           );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_14)          );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_512)          );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_512)         );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_11)           );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_11)          );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_87)           );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_87)          );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_124)          );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_124)         );
+    SEND  ( mphc_rxlev_periodic_ind_5()                 );
+    SEND  ( mphc_rxlev_periodic_ind_5()                 );
+    AWAIT ( mph_measurement_ind_24()                    );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_11)              );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_14)              );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_25)              );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_87)              );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_124)             );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_512)             );
+    SEND  ( mphc_rxlev_periodic_ind_5()                 );
+    SEND  ( mphc_rxlev_periodic_ind_5()                 );
+    SEND  ( mphc_rxlev_periodic_ind_5()                 );
+    AWAIT ( mph_measurement_ind_24()                    );
+  }
+}
+
+
+T_STEP ncell_reporting_multiband_1_scell_is_gsm900_4ch()
+{
+  BEGIN_STEP("ncell: multiband 1/scell is gsm900 4ch")
+  {
+    SEND  ( mphc_rxlev_periodic_ind_6()   );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_14)       );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_512)      );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_885)      );
+    AWAIT ( mphc_ncell_sync_req_initial(ARFCN_1)       );
+    SEND  ( mphc_rxlev_periodic_ind_6()   );
+    AWAIT ( mph_measurement_ind_13()      );
+    SEND  ( mphc_ncell_sync_ind (ARFCN_14)       );
+    AWAIT ( mphc_ncell_bcch_req (ARFCN_14)       );
+    SEND  ( mphc_ncell_sync_ind (ARFCN_512)      );
+    AWAIT ( mphc_ncell_bcch_req (ARFCN_512)      );
+    SEND  ( mphc_ncell_sync_ind_16()      );
+    AWAIT ( mphc_ncell_bcch_req (ARFCN_885)      );
+    SEND  ( mphc_ncell_sync_ind (ARFCN_1)      );
+    AWAIT ( mphc_ncell_bcch_req (ARFCN_1)      );
+    SEND  ( mphc_rxlev_periodic_ind_6()   );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_14)       );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_14)  );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_512)      );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_512)  );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_885)      );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_885) );
+    SEND  ( mphc_ncell_bcch_ind_si3(ARFCN_1)      );
+    AWAIT ( mphc_stop_ncell_bcch_req(ARFCN_1)  );
+    SEND  ( mphc_rxlev_periodic_ind_6()   );
+    SEND  ( mphc_rxlev_periodic_ind_6()   );
+    AWAIT ( mph_measurement_ind_25()      );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_1)          );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_14)          );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_512)         );
+    AWAIT ( mph_unitdata_ind_si3(ARFCN_885)         );
+    SEND  ( mphc_rxlev_periodic_ind_6()   );
+    SEND  ( mphc_rxlev_periodic_ind_6()   );
+    SEND  ( mphc_rxlev_periodic_ind_6()   );
+    AWAIT ( mph_measurement_ind_25()      );
+  }
+}