diff gsm-fw/L1/include/l1_mftab.h @ 143:afceeeb2cba1

Our nuc-fw is destined to become gsm-fw, so I went ahead and did the big hg mv
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Tue, 12 Nov 2013 05:35:48 +0000
parents nuc-fw/L1/include/l1_mftab.h@1e41550feec5
children 25a7fe25864c
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsm-fw/L1/include/l1_mftab.h	Tue Nov 12 05:35:48 2013 +0000
@@ -0,0 +1,574 @@
+/************* Revision Controle System Header *************
+ *                  GSM Layer 1 software 
+ * L1_MFTAB.H
+ *
+ *        Filename l1_mftab.h
+ *  Copyright 2003 (C) Texas Instruments  
+ *
+ ************* Revision Controle System Header *************/
+
+/***********************************************************
+ * Content:
+ *   This file contains the MultiFrame tables for all L1S
+ *   basic tasks.
+ ***********************************************************/
+
+/*******************************************************************************************/
+/* Multiframe Blocks for Dynamic MFTAB Building purpose.                                   */
+/*******************************************************************************************/
+// Multiframe table size....
+#define BLOC_FBNEW_SIZE    14 + 2   // FB.
+
+#define BLOC_SB2_SIZE       5 + 2   // SB2.
+
+#define BLOC_SBCONF_SIZE    4 + 2   // SBCONF.
+#define BLOC_BCCHN_SIZE     7 + 2   // BCCHN.
+#define BLOC_BCCHN_TOP_SIZE 7 + 2   // BCCHN_TOP (BCCHN top priority)
+
+#define BLOC_SYNCHRO_SIZE         1       // SYNC.
+#define BLOC_ADC_SIZE             1       // ADC in CS_MODE0
+#define BLOC_ABORT_SIZE           3       // ABORT.
+#define BLOC_RAACC_SIZE           3       // RAACC.
+#define S_RECT4_SIZE              6       // All "rectangular 4" serving tasks: NP/EP/BCCHS/ALLC.
+#define BLOC_TCHT_SIZE            3       // TCHTF / TCHTH / TCHD.
+#define BLOC_TCHA_SIZE            3       // TCHA.
+#define BLOC_SMSCB_SIZE           6       // SMSCB.
+#define BLOC_FB51_SIZE           14       // FB51.
+#define BLOC_SB51_SIZE            4       // SB51.
+#define BLOC_SBCNF51_SIZE         4       // SBCNF51.
+#define BLOC_FB26_SIZE            4       // FB26.
+#define BLOC_SB26_SIZE            5       // SB26.
+#define BLOC_SBCNF26_SIZE         5       // SBCNF26.
+#define BLOC_HWTEST_SIZE          4       // HWTEST.
+#define BLOC_DUL_ADL_MIXED_SIZED  7
+#if (L1_GPRS)
+  #define BLOC_BCCHN_TRAN_SIZE     7  // BCCHN_TRAN.
+#endif
+
+
+        
+#ifdef L1_ASYNC_C
+  /*----------------------------------------------------*/
+  /* TASK: Frequency Burst search...                    */
+  /*----------------------------------------------------*/
+  const T_FCT  BLOC_FBNEW[] =      
+  { 
+    {l1s_ctrl_msagc,FBNEW,NO_PAR},                               {NULL,NO_PAR,NO_PAR}, // frame 1
+                                                                 {NULL,NO_PAR,NO_PAR}, // frame 2
+    {l1s_read_msagc,FBNEW,NO_PAR},{l1s_ctrl_fb,FBNEW,NO_PAR},    {NULL,NO_PAR,NO_PAR}, // frame 3
+                                                                 {NULL,NO_PAR,NO_PAR}, // frame 4
+                                  {l1s_read_mon_result,FBNEW, 1},{NULL,NO_PAR,NO_PAR}, // frame 5
+                                  {l1s_read_mon_result,FBNEW, 2},{NULL,NO_PAR,NO_PAR}, // frame 6
+                                  {l1s_read_mon_result,FBNEW, 3},{NULL,NO_PAR,NO_PAR}, // frame 7
+                                  {l1s_read_mon_result,FBNEW, 4},{NULL,NO_PAR,NO_PAR}, // frame 8
+                                  {l1s_read_mon_result,FBNEW, 5},{NULL,NO_PAR,NO_PAR}, // frame 9
+                                  {l1s_read_mon_result,FBNEW, 6},{NULL,NO_PAR,NO_PAR}, // frame 10
+                                  {l1s_read_mon_result,FBNEW, 7},{NULL,NO_PAR,NO_PAR}, // frame 11
+                                  {l1s_read_mon_result,FBNEW, 8},{NULL,NO_PAR,NO_PAR}, // frame 12
+                                  {l1s_read_mon_result,FBNEW, 9},{NULL,NO_PAR,NO_PAR}, // frame 13
+                                  {l1s_read_mon_result,FBNEW,10},{NULL,NO_PAR,NO_PAR}, // frame 14
+                                  {l1s_read_mon_result,FBNEW,11},{NULL,NO_PAR,NO_PAR}, // frame 15
+                                  {l1s_read_mon_result,FBNEW,12},{NULL,NO_PAR,NO_PAR}  // frame 16
+  };
+                                           
+  /*----------------------------------------------------*/
+  /* TASK: SB2, New Synchro Burst search...             */
+  /*----------------------------------------------------*/
+  /*       C W R           -> AGC                       */  
+  /*           C W W R     -> 1st SB                    */  
+  /*             C W W R   -> 2nd SB                    */  
+  /*----------------------------------------------------*/
+  const T_FCT BLOC_SB2[] = 
+  {
+    {l1s_ctrl_msagc,SB2,NO_PAR},                              {NULL,NO_PAR,NO_PAR}, // frame 1
+                                                              {NULL,NO_PAR,NO_PAR}, // frame 2
+    {l1s_read_msagc,SB2,NO_PAR}, {l1s_ctrl_sbgen,SB2,1},      {NULL,NO_PAR,NO_PAR}, // frame 3
+                                 {l1s_ctrl_sbgen,SB2,2},      {NULL,NO_PAR,NO_PAR}, // frame 4
+                                                              {NULL,NO_PAR,NO_PAR}, // frame 5
+                                 {l1s_read_mon_result,SB2,1}, {NULL,NO_PAR,NO_PAR}, // frame 6
+                                 {l1s_read_mon_result,SB2,2}, {NULL,NO_PAR,NO_PAR}  // frame 7
+  };
+
+  /*----------------------------------------------------*/
+  /* TASK: SBCONF, Synchro confirmation.                */
+  /*----------------------------------------------------*/
+  /*       C W R           -> AGC                       */  
+  /*           C W W R     -> SBCONF                    */  
+  /*----------------------------------------------------*/
+  const T_FCT BLOC_SBCONF[] = 
+  {
+    {l1s_ctrl_msagc,SBCONF,1},                               {NULL,NO_PAR,NO_PAR}, // frame 1
+                                                             {NULL,NO_PAR,NO_PAR}, // frame 2
+    {l1s_read_msagc,SBCONF,1},{l1s_ctrl_sbgen,SBCONF,1},     {NULL,NO_PAR,NO_PAR}, // frame 3
+                                                             {NULL,NO_PAR,NO_PAR}, // frame 4
+                                                             {NULL,NO_PAR,NO_PAR}, // frame 5
+                              {l1s_read_mon_result,SBCONF,1},{NULL,NO_PAR,NO_PAR}  // frame 6
+  };
+
+  /*----------------------------------------------------*/
+  /* TASK: Serving cell Normal BCCH reading.            */
+  /*----------------------------------------------------*/
+  /* frame 1 2 3 4 5 6                                  */  
+  /*       | | | | | |                                  */  
+  /*       C W R | | |     -> burst 1                   */  
+  /*         C W R | |     -> burst 2                   */  
+  /*           C W R |     -> burst 3                   */  
+  /*             C W R     -> burst 4                   */  
+  /*----------------------------------------------------*/
+  const T_FCT BLOC_NBCCHS[] =    
+  { 
+    {l1s_ctrl_snb_dl,NBCCHS,BURST_1},                                 {NULL,NO_PAR,NO_PAR}, // frame 1
+    {l1s_ctrl_snb_dl,NBCCHS,BURST_2},                                 {NULL,NO_PAR,NO_PAR}, // frame 2
+    {l1s_read_snb_dl,NBCCHS,BURST_1},{l1s_ctrl_snb_dl,NBCCHS,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 3
+    {l1s_read_snb_dl,NBCCHS,BURST_2},{l1s_ctrl_snb_dl,NBCCHS,BURST_4},{NULL,NO_PAR,NO_PAR}, // frame 4
+                                     {l1s_read_snb_dl,NBCCHS,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 5
+                                     {l1s_read_snb_dl,NBCCHS,BURST_4},{NULL,NO_PAR,NO_PAR}  // frame 6
+  };
+
+  /*----------------------------------------------------*/
+  /* TASK: Serving cell Extended BCCH reading.          */
+  /*----------------------------------------------------*/
+  /* frame 1 2 3 4 5 6                                  */  
+  /*       | | | | | |                                  */  
+  /*       C W R | | |     -> burst 1                   */  
+  /*         C W R | |     -> burst 2                   */  
+  /*           C W R |     -> burst 3                   */  
+  /*             C W R     -> burst 4                   */  
+  /*----------------------------------------------------*/
+  const T_FCT BLOC_EBCCHS[] =    
+  { 
+    {l1s_ctrl_snb_dl,EBCCHS,BURST_1},                                 {NULL,NO_PAR,NO_PAR}, // frame 1
+    {l1s_ctrl_snb_dl,EBCCHS,BURST_2},                                 {NULL,NO_PAR,NO_PAR}, // frame 2
+    {l1s_read_snb_dl,EBCCHS,BURST_1},{l1s_ctrl_snb_dl,EBCCHS,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 3
+    {l1s_read_snb_dl,EBCCHS,BURST_2},{l1s_ctrl_snb_dl,EBCCHS,BURST_4},{NULL,NO_PAR,NO_PAR}, // frame 4
+                                     {l1s_read_snb_dl,EBCCHS,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 5
+                                     {l1s_read_snb_dl,EBCCHS,BURST_4},{NULL,NO_PAR,NO_PAR}  // frame 6
+  };
+
+  /*----------------------------------------------------*/
+  /* TASK: Neighbour Cell SYStem info reading.          */
+  /*----------------------------------------------------*/
+  /*   C W R                 -> AGC                     */  
+  /*       C W W W W W R     -> all bursts              */  
+  /*----------------------------------------------------*/
+  const T_FCT BLOC_BCCHN[] =     
+  { 
+    {l1s_ctrl_msagc,BCCHN,NO_PAR},                            {NULL,NO_PAR,NO_PAR}, // frame 1
+                                                              {NULL,NO_PAR,NO_PAR}, // frame 2
+    {l1s_read_msagc,BCCHN,NO_PAR},{l1s_ctrl_nnb,BCCHN,NO_PAR},{NULL,NO_PAR,NO_PAR}, // frame 3
+                                                              {NULL,NO_PAR,NO_PAR}, // frame 4 
+                                                              {NULL,NO_PAR,NO_PAR}, // frame 5 
+                                                              {NULL,NO_PAR,NO_PAR}, // frame 6 
+                                                              {NULL,NO_PAR,NO_PAR}, // frame 7 
+                                                              {NULL,NO_PAR,NO_PAR}, // frame 8  
+                                  {l1s_read_nnb,BCCHN,NO_PAR},{NULL,NO_PAR,NO_PAR}  // frame 9              
+  }; 
+
+  /*----------------------------------------------------*/
+  /* TASK: Neighbour Cell SYStem info reading.          */
+  /*----------------------------------------------------*/
+  /*   C W R                 -> AGC                     */  
+  /*       C W W W W W R     -> all bursts              */  
+  /*----------------------------------------------------*/
+  const T_FCT BLOC_BCCHN_TOP[] =     
+  { 
+    {l1s_ctrl_msagc,BCCHN_TOP,NO_PAR},                                {NULL,NO_PAR,NO_PAR}, // frame 1
+                                                                      {NULL,NO_PAR,NO_PAR}, // frame 2
+    {l1s_read_msagc,BCCHN_TOP,NO_PAR},{l1s_ctrl_nnb,BCCHN_TOP,NO_PAR},{NULL,NO_PAR,NO_PAR}, // frame 3
+                                                                      {NULL,NO_PAR,NO_PAR}, // frame 4 
+                                                                      {NULL,NO_PAR,NO_PAR}, // frame 5 
+                                                                      {NULL,NO_PAR,NO_PAR}, // frame 6 
+                                                                      {NULL,NO_PAR,NO_PAR}, // frame 7 
+                                                                      {NULL,NO_PAR,NO_PAR}, // frame 8  
+                                      {l1s_read_nnb,BCCHN_TOP,NO_PAR},{NULL,NO_PAR,NO_PAR}  // frame 9              
+  }; 
+
+  /*----------------------------------------------------*/
+  /* TASK: Neighbour Cell SYStem info reading.          */
+  /*       for packet transfer mode                     */
+  /*----------------------------------------------------*/
+  /*       C W W W W W R     -> all bursts              */  
+  /*----------------------------------------------------*/
+#if (L1_GPRS)
+  const T_FCT BLOC_BCCHN_TRAN[] =     
+  { 
+                                  {l1s_ctrl_nnb,BCCHN_TRAN,NO_PAR},{NULL,NO_PAR,NO_PAR}, // frame 1
+                                                                   {NULL,NO_PAR,NO_PAR}, // frame 2 
+                                                                   {NULL,NO_PAR,NO_PAR}, // frame 3 
+                                                                   {NULL,NO_PAR,NO_PAR}, // frame 4 
+                                                                   {NULL,NO_PAR,NO_PAR}, // frame 5 
+                                                                   {NULL,NO_PAR,NO_PAR}, // frame 6  
+                                  {l1s_read_nnb,BCCHN_TRAN,NO_PAR},{NULL,NO_PAR,NO_PAR}  // frame 7              
+  }; 
+#endif
+
+  /*----------------------------------------------------*/
+  /* TASK: Synchronization (camp on a new serving cell) */
+  /*----------------------------------------------------*/
+  const T_FCT  BLOC_SYNCHRO[] =      
+  { 
+    {l1s_new_synchro,NO_PAR,NO_PAR},{NULL,NO_PAR,NO_PAR} // frame 1
+  }; 
+
+
+  /*----------------------------------------------------*/
+  /* TASK: ADC measurement in CS_MODE0                  */
+  /*       C                                            */
+  /* the ADC is performed inside the frame and the      */
+  /* result is red in the same frame due to an          */
+  /* Interrupt (handle by Riviera)                      */
+  /*----------------------------------------------------*/
+  const T_FCT  BLOC_ADC[] =      
+  { 
+    {l1s_ctrl_ADC,NO_PAR,NO_PAR},{NULL,NO_PAR,NO_PAR}  // frame 1
+  };
+
+           
+  /*----------------------------------------------------*/
+  /* TASK: Short Message Service Cell Broadcast         */
+  /*----------------------------------------------------*/
+  /* frame   1 2 3 4 5 6                                */  
+  /*         | | | | | |                                */  
+  /*         C W R | | | -> hopp. + burst 1             */  
+  /*           C W R | | -> hopp. + burst 2             */  
+  /*             C W R | -> hopp. + burst 3             */  
+  /*               C W R -> hopp. + burst 4 + Synch back*/  
+  /*----------------------------------------------------*/
+  const T_FCT  BLOC_SMSCB[] =      
+  { 
+    {l1s_hopping_algo,SMSCB,NO_PAR},{l1s_ctrl_smscb, SMSCB,BURST_1},                                {NULL,NO_PAR,NO_PAR}, // frame 1
+    {l1s_hopping_algo,SMSCB,NO_PAR},{l1s_ctrl_smscb, SMSCB,BURST_2},                                {NULL,NO_PAR,NO_PAR}, // frame 2
+    {l1s_hopping_algo,SMSCB,NO_PAR},{l1s_read_snb_dl,SMSCB,BURST_1},{l1s_ctrl_smscb, SMSCB,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 3
+    {l1s_hopping_algo,SMSCB,NO_PAR},{l1s_read_snb_dl,SMSCB,BURST_2},{l1s_ctrl_smscb, SMSCB,BURST_4},{NULL,NO_PAR,NO_PAR}, // frame 4
+                                                                    {l1s_read_snb_dl,SMSCB,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 5
+                                                                    {l1s_read_snb_dl,SMSCB,BURST_4},{NULL,NO_PAR,NO_PAR}  // frame 6
+  }; 
+  
+  /*----------------------------------------------------*/
+  /* TASK: Normal Paging...                             */
+  /*----------------------------------------------------*/
+  /* frame 1 2 3 4 5 6                                  */  
+  /*       | | | | | |                                  */  
+  /*       C W R | | |     -> burst 1                   */  
+  /*         C W R | |     -> burst 2                   */  
+  /*           C W R |     -> burst 3                   */  
+  /*             C W R     -> burst 4                   */  
+  /*----------------------------------------------------*/
+  const T_FCT  BLOC_NP[] =      
+  { 
+    {l1s_ctrl_snb_dl,NP,BURST_1},                             {NULL,NO_PAR,NO_PAR}, // frame 1
+    {l1s_ctrl_snb_dl,NP,BURST_2},                             {NULL,NO_PAR,NO_PAR}, // frame 2
+    {l1s_read_snb_dl,NP,BURST_1},{l1s_ctrl_snb_dl,NP,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 3
+    {l1s_read_snb_dl,NP,BURST_2},{l1s_ctrl_snb_dl,NP,BURST_4},{NULL,NO_PAR,NO_PAR}, // frame 4
+                                 {l1s_read_snb_dl,NP,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 5
+                                 {l1s_read_snb_dl,NP,BURST_4},{NULL,NO_PAR,NO_PAR}  // frame 6
+  }; 
+           
+  /*----------------------------------------------------*/
+  /* TASK: Extended Paging task...                      */
+  /*----------------------------------------------------*/
+  /* frame 1 2 3 4 5 6                                  */  
+  /*       | | | | | |                                  */  
+  /*       C W R | | |     -> burst 1                   */  
+  /*         C W R | |     -> burst 2                   */  
+  /*           C W R |     -> burst 3                   */  
+  /*             C W R     -> burst 4                   */  
+  /*----------------------------------------------------*/
+  const T_FCT  BLOC_EP[] =      
+  { 
+    {l1s_ctrl_snb_dl,EP,BURST_1},                             {NULL,NO_PAR,NO_PAR}, // frame 1
+    {l1s_ctrl_snb_dl,EP,BURST_2},                             {NULL,NO_PAR,NO_PAR}, // frame 2
+    {l1s_read_snb_dl,EP,BURST_1},{l1s_ctrl_snb_dl,EP,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 3
+    {l1s_read_snb_dl,EP,BURST_2},{l1s_ctrl_snb_dl,EP,BURST_4},{NULL,NO_PAR,NO_PAR}, // frame 4
+                                 {l1s_read_snb_dl,EP,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 5
+                                 {l1s_read_snb_dl,EP,BURST_4},{NULL,NO_PAR,NO_PAR}  // frame 6
+  }; 
+
+  /*----------------------------------------------------*/
+  /* TASK: All CCCH reading task...                     */
+  /*----------------------------------------------------*/
+  /* frame 1 2 3 4 5 6                                  */  
+  /*       | | | | | |                                  */  
+  /*       C W R | | |     -> burst 1                   */  
+  /*         C W R | |     -> burst 2                   */  
+  /*           C W R |     -> burst 3                   */  
+  /*             C W R     -> burst 4                   */  
+  /*----------------------------------------------------*/
+  const T_FCT  BLOC_ALLC[] =      
+  { 
+    {l1s_ctrl_snb_dl,ALLC,BURST_1},                               {NULL,NO_PAR,NO_PAR}, // frame 1
+    {l1s_ctrl_snb_dl,ALLC,BURST_2},                               {NULL,NO_PAR,NO_PAR}, // frame 2
+    {l1s_read_snb_dl,ALLC,BURST_1},{l1s_ctrl_snb_dl,ALLC,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 3
+    {l1s_read_snb_dl,ALLC,BURST_2},{l1s_ctrl_snb_dl,ALLC,BURST_4},{NULL,NO_PAR,NO_PAR}, // frame 4
+                                   {l1s_read_snb_dl,ALLC,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 5
+                                   {l1s_read_snb_dl,ALLC,BURST_4},{NULL,NO_PAR,NO_PAR}  // frame 6
+  }; 
+
+  /*----------------------------------------------------*/
+  /* TASK: SDCCH                                        */
+  /*----------------------------------------------------*/
+  /* frame 1 2 3 4 5 6                                  */  
+  /*       | | | | | |                                  */  
+  /*       C W R | | |     -> burst 1                   */  
+  /*         C W R | |     -> burst 2                   */  
+  /*           C W R |     -> burst 3                   */  
+  /*             C W R     -> burst 4                   */  
+  /*----------------------------------------------------*/
+  const T_FCT  BLOC_DDL[] = 
+  { 
+    {l1s_hopping_algo,DDL,NO_PAR},{l1s_ctrl_snb_dl,  DDL,BURST_1},                                {NULL,NO_PAR,NO_PAR}, // frame 1
+    {l1s_hopping_algo,DDL,NO_PAR},{l1s_ctrl_snb_dl,  DDL,BURST_2},                                {NULL,NO_PAR,NO_PAR}, // frame 2
+    {l1s_hopping_algo,DDL,NO_PAR},{l1s_read_dedic_dl,DDL,BURST_1},{l1s_ctrl_snb_dl,  DDL,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 3
+    {l1s_hopping_algo,DDL,NO_PAR},{l1s_read_dedic_dl,DDL,BURST_2},{l1s_ctrl_snb_dl,  DDL,BURST_4},{NULL,NO_PAR,NO_PAR}, // frame 4
+                                                                  {l1s_read_dedic_dl,DDL,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 5
+                                                                  {l1s_read_dedic_dl,DDL,BURST_4},{NULL,NO_PAR,NO_PAR}  // frame 6
+  }; 
+
+  const T_FCT  BLOC_DUL[] = 
+  { 
+    {l1s_hopping_algo,DUL,NO_PAR},{l1s_ctrl_snb_ul,   DUL,BURST_1},                                 {NULL,NO_PAR,NO_PAR}, // frame 1
+    {l1s_hopping_algo,DUL,NO_PAR},{l1s_ctrl_snb_ul,   DUL,BURST_2},                                 {NULL,NO_PAR,NO_PAR}, // frame 2
+    {l1s_hopping_algo,DUL,NO_PAR},{l1s_read_tx_result,DUL,BURST_1},{l1s_ctrl_snb_ul,   DUL,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 3
+    {l1s_hopping_algo,DUL,NO_PAR},{l1s_read_tx_result,DUL,BURST_2},{l1s_ctrl_snb_ul,   DUL,BURST_4},{NULL,NO_PAR,NO_PAR}, // frame 4
+                                                                   {l1s_read_tx_result,DUL,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 5
+                                                                   {l1s_read_tx_result,DUL,BURST_4},{NULL,NO_PAR,NO_PAR}  // frame 6
+  }; 
+
+  const T_FCT  BLOC_ADL[] = 
+  { 
+    {l1s_hopping_algo,ADL,NO_PAR},{l1s_ctrl_snb_dl,  ADL,BURST_1},                                {NULL,NO_PAR,NO_PAR}, // frame 1
+    {l1s_hopping_algo,ADL,NO_PAR},{l1s_ctrl_snb_dl,  ADL,BURST_2},                                {NULL,NO_PAR,NO_PAR}, // frame 2
+    {l1s_hopping_algo,ADL,NO_PAR},{l1s_read_dedic_dl,ADL,BURST_1},{l1s_ctrl_snb_dl,  ADL,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 3
+    {l1s_hopping_algo,ADL,NO_PAR},{l1s_read_dedic_dl,ADL,BURST_2},{l1s_ctrl_snb_dl,  ADL,BURST_4},{NULL,NO_PAR,NO_PAR}, // frame 4
+                                                                  {l1s_read_dedic_dl,ADL,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 5
+                                                                  {l1s_read_dedic_dl,ADL,BURST_4},{NULL,NO_PAR,NO_PAR}  // frame 6
+  }; 
+
+  const T_FCT  BLOC_AUL[] = 
+  { 
+    {l1s_hopping_algo,AUL,NO_PAR},{l1s_ctrl_snb_ul,   AUL,BURST_1},                                 {NULL,NO_PAR,NO_PAR}, // frame 1
+    {l1s_hopping_algo,AUL,NO_PAR},{l1s_ctrl_snb_ul,   AUL,BURST_2},                                 {NULL,NO_PAR,NO_PAR}, // frame 2
+    {l1s_hopping_algo,AUL,NO_PAR},{l1s_read_tx_result,AUL,BURST_1},{l1s_ctrl_snb_ul,   AUL,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 3
+    {l1s_hopping_algo,AUL,NO_PAR},{l1s_read_tx_result,AUL,BURST_2},{l1s_ctrl_snb_ul,   AUL,BURST_4},{NULL,NO_PAR,NO_PAR}, // frame 4
+                                                                   {l1s_read_tx_result,AUL,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 5
+                                                                   {l1s_read_tx_result,AUL,BURST_4},{NULL,NO_PAR,NO_PAR}  // frame 6
+  }; 
+                
+  /*-----------------------------------------------------------------------*/
+  /* SPECIAL CASE: (ADL4,DDL4),(ADL5,DDL5),(ADL6,DDL6).                    */
+  /*-----------------------------------------------------------------------*/
+  /* frame 1        2        3        4        5        6        7         */  
+  /*       |        |        |        |        |        |        |         */  
+  /*       C(DUL,1) W(DUL,1) R(DUL,1) |        |        |        |         */
+  /*                C(ADL,1) W(ADL,1) R(ADL,1) |        |        |         */
+  /*                C(DUL,2) W(DUL,2) R(DUL,2) |        |        |         */
+  /*                         C(ADL,2) W(ADL,2) R(ADL,2) |        |         */
+  /*                         C(DUL,3) W(DUL,3) R(DUL,3) |        |         */
+  /*                                  C(ADL,3) W(ADL,3) R(ADL,3) |         */
+  /*                                  C(DUL,4) W(DUL,4) R(DUL,4) |         */
+  /*                                           C(ADL,4) W(ADL,4) R(ADL,4)  */
+  /*-----------------------------------------------------------------------*/
+  const T_FCT  BLOC_DUL_ADL_MIXED[] = 
+  { 
+    {l1s_hopping_algo,AUL,NO_PAR},{l1s_ctrl_snb_ul,   DUL,BURST_1},                                                                                                  {NULL,NO_PAR,NO_PAR}, // frame 1
+    {l1s_hopping_algo,ADL,NO_PAR},{l1s_ctrl_snb_dl,   ADL,BURST_1},{l1s_ctrl_snb_ul,   DUL,BURST_2},                                                                 {NULL,NO_PAR,NO_PAR}, // frame 2
+    {l1s_hopping_algo,ADL,NO_PAR},{l1s_read_tx_result,DUL,BURST_1},{l1s_ctrl_snb_dl,   ADL,BURST_2},{l1s_ctrl_snb_ul,  DUL,BURST_3},                                 {NULL,NO_PAR,NO_PAR}, // frame 3
+    {l1s_hopping_algo,ADL,NO_PAR},{l1s_read_dedic_dl, ADL,BURST_1},{l1s_read_tx_result,DUL,BURST_2},{l1s_ctrl_snb_dl,  ADL,BURST_3},{l1s_ctrl_snb_ul,   DUL,BURST_4},{NULL,NO_PAR,NO_PAR}, // frame 4
+    {l1s_hopping_algo,ADL,NO_PAR},{l1s_read_dedic_dl, ADL,BURST_2},{l1s_read_tx_result,DUL,BURST_3},{l1s_ctrl_snb_dl,  ADL,BURST_4},                                 {NULL,NO_PAR,NO_PAR}, // frame 5
+                                                                                                    {l1s_read_dedic_dl,ADL,BURST_3},{l1s_read_tx_result,DUL,BURST_4},{NULL,NO_PAR,NO_PAR}, // frame 6
+                                                                                                    {l1s_read_dedic_dl,ADL,BURST_4},                                 {NULL,NO_PAR,NO_PAR}  // frame 7
+  };
+  
+  /*----------------------------------------------------*/
+  /* ABORT: used to abort a running task when a new     */
+  /* task with higher priority occurs.                  */
+  /*----------------------------------------------------*/
+  const T_FCT  BLOC_ABORT[] =      
+  { 
+    {l1s_abort,NO_PAR,NO_PAR},     {NULL,NO_PAR,NO_PAR}, // frame 1
+                                   {NULL,NO_PAR,NO_PAR}, // frame 2
+    {l1s_read_dummy,NO_PAR,NO_PAR},{NULL,NO_PAR,NO_PAR}  // frame 3
+  }; 
+   
+  /*----------------------------------------------------*/
+  /* TASK: RACH in access mode...                       */
+  /*----------------------------------------------------*/
+  const T_FCT  BLOC_RAACC[] =      
+  { 
+    {l1s_ctrl_rach,RAACC,NO_PAR},     {NULL,NO_PAR,NO_PAR}, // frame 1
+                                      {NULL,NO_PAR,NO_PAR}, // frame 2
+    {l1s_read_tx_result,RAACC,NO_PAR},{NULL,NO_PAR,NO_PAR}  // frame 3
+  }; 
+
+  /*----------------------------------------------------*/
+  /* TASK: TCH                                          */
+  /*----------------------------------------------------*/
+  /*       C W R                                        */  
+  /*----------------------------------------------------*/
+  const T_FCT  BLOC_TCHTF[] =      
+  {
+    {l1s_hopping_algo,TCHTF,NO_PAR},{l1s_ctrl_tchtf,TCHTF,NO_PAR},   {NULL,NO_PAR}, // frame 1
+                                                                     {NULL,NO_PAR}, // frame 2
+                                   {l1s_read_dedic_dl,TCHTF,NO_PAR}, {NULL,NO_PAR}  // frame 3
+  };
+  
+  const T_FCT  BLOC_TCHTH[] =      
+  {
+    {l1s_hopping_algo,TCHTH,NO_PAR},{l1s_ctrl_tchth,TCHTH,NO_PAR},   {NULL,NO_PAR}, // frame 1
+                                                                     {NULL,NO_PAR}, // frame 2
+                                   {l1s_read_dedic_dl,TCHTH,NO_PAR}, {NULL,NO_PAR}  // frame 3
+  };
+  
+  const T_FCT  BLOC_TCHD[] =      
+  {
+                                   {l1s_ctrl_tchtd,TCHD,NO_PAR},    {NULL,NO_PAR}, // frame 1
+                                                                    {NULL,NO_PAR}, // frame 2
+                                   {l1s_read_dummy,TCHD,NO_PAR},    {NULL,NO_PAR}  // frame 3
+  };
+
+  const T_FCT  BLOC_TCHA[] =      
+  {
+    {l1s_hopping_algo,TCHA,NO_PAR},{l1s_ctrl_tcha,TCHA,NO_PAR},     {NULL,NO_PAR}, // frame 1
+                                                                    {NULL,NO_PAR}, // frame 2
+                                   {l1s_read_dedic_dl,TCHA,NO_PAR}, {NULL,NO_PAR}  // frame 3
+  };
+
+  /*----------------------------------------------------*/
+  /* TASK: Frequency Burst search in dedic/SDCCH...     */
+  /*----------------------------------------------------*/
+  const T_FCT  BLOC_FB51[] =      
+  { 
+    {l1s_ctrl_fb,FB51,NO_PAR},    {NULL,NO_PAR,NO_PAR}, // frame 1
+                                  {NULL,NO_PAR,NO_PAR}, // frame 2
+    {l1s_read_mon_result,FB51, 1},{NULL,NO_PAR,NO_PAR}, // frame 3
+    {l1s_read_mon_result,FB51, 2},{NULL,NO_PAR,NO_PAR}, // frame 4
+    {l1s_read_mon_result,FB51, 3},{NULL,NO_PAR,NO_PAR}, // frame 5
+    {l1s_read_mon_result,FB51, 4},{NULL,NO_PAR,NO_PAR}, // frame 6
+    {l1s_read_mon_result,FB51, 5},{NULL,NO_PAR,NO_PAR}, // frame 7
+    {l1s_read_mon_result,FB51, 6},{NULL,NO_PAR,NO_PAR}, // frame 8
+    {l1s_read_mon_result,FB51, 7},{NULL,NO_PAR,NO_PAR}, // frame 9
+    {l1s_read_mon_result,FB51, 8},{NULL,NO_PAR,NO_PAR}, // frame 10
+    {l1s_read_mon_result,FB51, 9},{NULL,NO_PAR,NO_PAR}, // frame 11
+    {l1s_read_mon_result,FB51,10},{NULL,NO_PAR,NO_PAR}, // frame 12
+    {l1s_read_mon_result,FB51,11},{NULL,NO_PAR,NO_PAR}, // frame 13
+    {l1s_read_mon_result,FB51,12},{NULL,NO_PAR,NO_PAR}  // frame 14
+  };
+
+  /*----------------------------------------------------*/
+  /* TASK: SB51, Synchro Burst reading. Dedic/SDCCH.    */
+  /*----------------------------------------------------*/
+  /*           C W W R     -> SB                        */  
+  /*----------------------------------------------------*/
+  const T_FCT BLOC_SB51[] = 
+  {
+    {l1s_ctrl_sbgen,SB51,NO_PAR},     {NULL,NO_PAR,NO_PAR}, // frame 1
+                                      {NULL,NO_PAR,NO_PAR}, // frame 2
+                                      {NULL,NO_PAR,NO_PAR}, // frame 3
+    {l1s_read_mon_result,SB51,NO_PAR},{NULL,NO_PAR,NO_PAR}  // frame 4
+  };
+
+  /*----------------------------------------------------*/
+  /* TASK: SBCNF51, Synchro confirmation. Dedic/SDCCH.  */
+  /*----------------------------------------------------*/
+  /*           C W W R     -> SBCONF                    */  
+  /*----------------------------------------------------*/
+  const T_FCT BLOC_SBCNF51[] = 
+  {
+    {l1s_ctrl_sbgen,SBCNF51,NO_PAR},     {NULL,NO_PAR,NO_PAR}, // frame 1
+                                         {NULL,NO_PAR,NO_PAR}, // frame 2
+                                         {NULL,NO_PAR,NO_PAR}, // frame 3
+    {l1s_read_mon_result,SBCNF51,NO_PAR},{NULL,NO_PAR,NO_PAR}  // frame 4
+  };
+
+  /*----------------------------------------------------*/
+  /* TASK: FB26, Frequency Burst search in dedic/TCH... */
+  /*----------------------------------------------------*/
+  /*           C W W R                                  */  
+  /*----------------------------------------------------*/
+  const T_FCT BLOC_FB26[] =      
+  { 
+    {l1s_ctrl_fb26,FB26,NO_PAR},      {NULL,NO_PAR,NO_PAR}, // frame 1
+                                      {NULL,NO_PAR,NO_PAR}, // frame 2
+                                      {NULL,NO_PAR,NO_PAR}, // frame 3
+    {l1s_read_mon_result,FB26,NO_PAR},{NULL,NO_PAR,NO_PAR}  // frame 4
+  };
+
+  /*----------------------------------------------------*/
+  /* TASK: SB26, Synchro. Burst reading in dedic/TCH... */
+  /*----------------------------------------------------*/
+  /*           C W W W R                                */  
+  /*----------------------------------------------------*/
+  const T_FCT BLOC_SB26[] =      
+  { 
+    {l1s_ctrl_sb26,SB26,NO_PAR},      {NULL,NO_PAR,NO_PAR}, // frame 1
+                                      {NULL,NO_PAR,NO_PAR}, // frame 2
+                                      {NULL,NO_PAR,NO_PAR}, // frame 3
+                                      {NULL,NO_PAR,NO_PAR}, // frame 4
+    {l1s_read_mon_result,SB26,NO_PAR},{NULL,NO_PAR,NO_PAR}  // frame 5
+  };
+
+  /*----------------------------------------------------*/
+  /* TASK: SBCNF26, Synchro. Burst reading in dedic/TCH.*/
+  /*----------------------------------------------------*/
+  /*           C W W W R                                */  
+  /*----------------------------------------------------*/
+  const T_FCT BLOC_SBCNF26[] =      
+  { 
+    {l1s_ctrl_sb26,SBCNF26,NO_PAR},      {NULL,NO_PAR,NO_PAR}, // frame 1
+                                         {NULL,NO_PAR,NO_PAR}, // frame 2
+                                         {NULL,NO_PAR,NO_PAR}, // frame 3
+                                         {NULL,NO_PAR,NO_PAR}, // frame 4
+    {l1s_read_mon_result,SBCNF26,NO_PAR},{NULL,NO_PAR,NO_PAR}  // frame 5
+  };
+
+  /*----------------------------------------------------*/
+  /* TASK: HWTEST after power-on...                     */
+  /*----------------------------------------------------*/
+  const T_FCT  BLOC_HWTEST[] =      
+  { 
+    {l1s_ctrl_hwtest,HWTEST,NO_PAR},     {NULL,NO_PAR,NO_PAR}, // frame 1
+                                         {NULL,NO_PAR,NO_PAR}, // frame 2
+                                         {NULL,NO_PAR,NO_PAR}, // frame 3
+    {l1s_read_hwtest,HWTEST,NO_PAR},     {NULL,NO_PAR,NO_PAR}  // frame 4
+  }; 
+
+#else                                                                         
+  extern   T_FCT  BLOC_FB[];
+  extern   T_FCT  BLOC_SB[];
+  extern   T_FCT  BLOC_BCCHS[];
+  extern   T_FCT  BLOC_BCCHN[];
+  extern   T_FCT  BLOC_BCCHN_TOP[];
+  extern   T_FCT  BLOC_EP[]; 
+  extern   T_FCT  BLOC_SYNCHRO[];      
+  extern   T_FCT  BLOC_ADC[];      
+  extern   T_FCT  BLOC_SMSCB[];
+  extern   T_FCT  BLOC_NP[];
+  extern   T_FCT  BLOC_ALLC[];      
+  extern   T_FCT  BLOC_DDL[];
+  extern   T_FCT  BLOC_DUL[];
+  extern   T_FCT  BLOC_ADL[];
+  extern   T_FCT  BLOC_AUL[];
+  extern   T_FCT  BLOC_DUL_ADL_MIXED[];
+  extern   T_FCT  BLOC_ABORT[];
+  extern   T_FCT  BLOC_RAACC[];
+  extern   T_FCT  BLOC_TCHTF[];      
+  extern   T_FCT  BLOC_TCHTH[];      
+  extern   T_FCT  BLOC_TCHTD[];      
+  extern   T_FCT  BLOC_TCHA[];      
+  extern   T_FCT  BLOC_FB51[];      
+  extern   T_FCT BLOC_SB51[]; 
+  extern   T_FCT BLOC_SBCNF51[]; 
+  extern   T_FCT BLOC_FB26[];      
+  extern   T_FCT BLOC_SB26[];      
+  extern   T_FCT BLOC_SBCNF26[]; 
+  extern   T_FCT BLOC_HWTEST[]; 
+
+  #if (L1_GPRS)
+    extern T_FCT  BLOC_BCCHN_TRAN[];
+  #endif
+
+#endif
+
+
+
+