view src/cs/layer1/include/l1_tabs.h @ 600:8f50b202e81f

board preprocessor conditionals: prep for more FC hw in the future This change eliminates the CONFIG_TARGET_FCDEV3B preprocessor symbol and all preprocessor conditionals throughout the code base that tested for it, replacing them with CONFIG_TARGET_FCFAM or CONFIG_TARGET_FCMODEM. These new symbols are specified as follows: CONFIG_TARGET_FCFAM is intended to cover all hardware designs created by Mother Mychaela under the FreeCalypso trademark. This family will include modem products (repackagings of the FCDEV3B, possibly with RFFE or even RF transceiver changes), and also my desired FreeCalypso handset product. CONFIG_TARGET_FCMODEM is intended to cover all FreeCalypso modem products (which will be firmware-compatible with the FCDEV3B if they use TI Rita transceiver, or will require a different fw build if we switch to one of Silabs Aero transceivers), but not the handset product. Right now this CONFIG_TARGET_FCMODEM preprocessor symbol is used to conditionalize everything dealing with MCSI. At the present moment the future of FC hardware evolution is still unknown: it is not known whether we will ever have any beyond-FCDEV3B hardware at all (contingent on uncertain funding), and if we do produce further FC hardware designs, it is not known whether they will retain the same FIC modem core (triband), if we are going to have a quadband design that still retains the classic Rita transceiver, or if we are going to switch to Silabs Aero II or some other transceiver. If we produce a quadband modem that still uses Rita, it will run exactly the same fw as the FCDEV3B thanks to the way we define TSPACT signals for the RF_FAM=12 && CONFIG_TARGET_FCFAM combination, and the current fcdev3b build target will be renamed to fcmodem. OTOH, if that putative quadband modem will be Aero-based, then it will require a different fw build target, the fcdev3b target will stay as it is, and the two targets will both define CONFIG_TARGET_FCFAM and CONFIG_TARGET_FCMODEM, but will have different RF_FAM numbers. But no matter which way we are going to evolve, it is not right to have conditionals on CONFIG_TARGET_FCDEV3B in places like ACI, and the present change clears the way for future evolution.
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 01 Apr 2019 01:05:24 +0000
parents 945cf7f506b2
children
line wrap: on
line source

/************* Revision Controle System Header *************
 *                  GSM Layer 1 software 
 * L1_TABS.H
 *
 *        Filename l1_tabs.h
 *  Copyright 2003 (C) Texas Instruments  
 *
 ************* Revision Controle System Header *************/
/***********************************************************
 * Content:
 *   This file contains the miscelaneous ROM tables.
 ***********************************************************/

#ifdef L1_ASYNC_C
  /*-----------------------------------------------------------------*/
  /* Idle Tasks info. (Paging position, extended Paging position...) */
  /*-----------------------------------------------------------------*/
  /* REM:                                                            */
  /* The "working area" field gives the starting position of an area */
  /* it will be used for neighbour:  - FB search,                    */
  /*                                 - SB reading,                   */
  /* The value given for each parameter set takes into account the   */
  /* size of the "FB search" task and the CBCH task.                 */                                 
  /*-----------------------------------------------------------------*/
  //  NP or EP task size: 1 + 4 + 1 = 6.
  //  BCCHS task size: 1 + 4 + 1 = 6.
  //  FB task size: 1 + 12 + 1 = 14.    --+-- FB + SB task take 15 TDMA (pipeline overlay).
  //  SB task size: 1 + 2 + 1 = 4.      --+
  //  CNF, SB task size: 1 + 2 + 1 = 4.
  //  BC (Broad. Channel): 1 + 4 + 1 = 6     
   
  const T_IDLE_TASK_INFO IDLE_INFO_NCOMB[(MAX_AG_BLKS_RES_NCOMB+1) * (MAX_PG_BLOC_INDEX_NCOMB+1)] =
  // BS_CCCH_SDCCH_COMB = False, BCCH not combined.
  { 
    // BS_AG_BLKS_RES = 0.
    // -------------------
    // Paging, Ext Paging
    {  CCCH_0,     CCCH_2  },  // Paging Block Index = 0.
    {  CCCH_1,     CCCH_3  },  // Paging Block Index = 1.
    {  CCCH_2,     CCCH_4  },  // Paging Block Index = 2.
    {  CCCH_3,     CCCH_5  },  // Paging Block Index = 3.
    {  CCCH_4,     CCCH_6  },  // Paging Block Index = 4.
    {  CCCH_5,     CCCH_7  },  // Paging Block Index = 5.
    {  CCCH_6,     CCCH_8  },  // Paging Block Index = 6.
    {  CCCH_7,     CCCH_0  },  // Paging Block Index = 7.
    {  CCCH_8,     CCCH_1  },  // Paging Block Index = 8.

    // BS_AG_BLKS_RES = 1.
    // -------------------
    // Paging, Ext Paging
    {  CCCH_1,     CCCH_3  },  // Paging Block Index = 0.
    {  CCCH_2,     CCCH_4  },  // Paging Block Index = 1.
    {  CCCH_3,     CCCH_5  },  // Paging Block Index = 2.
    {  CCCH_4,     CCCH_6  },  // Paging Block Index = 3.
    {  CCCH_5,     CCCH_7  },  // Paging Block Index = 4.
    {  CCCH_6,     CCCH_8  },  // Paging Block Index = 5.
    {  CCCH_7,     CCCH_1  },  // Paging Block Index = 6.
    {  CCCH_8,     CCCH_2  },  // Paging Block Index = 7.
    {  NULL,       NULL    },  // Paging Block Index = 8.

    // BS_AG_BLKS_RES = 2.
    // -------------------
    // Paging, Ext Paging
    {  CCCH_2,     CCCH_4  },  // Paging Block Index = 0.
    {  CCCH_3,     CCCH_5  },  // Paging Block Index = 1.
    {  CCCH_4,     CCCH_6  },  // Paging Block Index = 2.
    {  CCCH_5,     CCCH_7  },  // Paging Block Index = 3.
    {  CCCH_6,     CCCH_8  },  // Paging Block Index = 4.
    {  CCCH_7,     CCCH_2  },  // Paging Block Index = 5.
    {  CCCH_8,     CCCH_3  },  // Paging Block Index = 6.
    {  NULL,       NULL    },  // Paging Block Index = 7.
    {  NULL,       NULL    },  // Paging Block Index = 8.

    // BS_AG_BLKS_RES = 3.
    // -------------------
    // Paging, Ext Paging, 
    {  CCCH_3,     CCCH_5  },  // Paging Block Index = 0.
    {  CCCH_4,     CCCH_6  },  // Paging Block Index = 1.
    {  CCCH_5,     CCCH_7  },  // Paging Block Index = 2.
    {  CCCH_6,     CCCH_8  },  // Paging Block Index = 3.
    {  CCCH_7,     CCCH_3  },  // Paging Block Index = 4.
    {  CCCH_8,     CCCH_4  },  // Paging Block Index = 5.
    {  NULL,       NULL    },  // Paging Block Index = 6.
    {  NULL,       NULL    },  // Paging Block Index = 7.
    {  NULL,       NULL    },  // Paging Block Index = 8.

    // BS_AG_BLKS_RES = 4.
    // -------------------
    // Paging, Ext Paging
    {  CCCH_4,     CCCH_6  },  // Paging Block Index = 0.
    {  CCCH_5,     CCCH_7  },  // Paging Block Index = 1.
    {  CCCH_6,     CCCH_8  },  // Paging Block Index = 2.
    {  CCCH_7,     CCCH_4  },  // Paging Block Index = 3.
    {  CCCH_8,     CCCH_5  },  // Paging Block Index = 4.
    {  NULL,       NULL    },  // Paging Block Index = 5.
    {  NULL,       NULL    },  // Paging Block Index = 6.
    {  NULL,       NULL    },  // Paging Block Index = 7.
    {  NULL,       NULL    },  // Paging Block Index = 8.

    // BS_AG_BLKS_RES = 5.
    // -------------------
    // Paging, Ext Paging
    {  CCCH_5,     CCCH_7  },  // Paging Block Index = 0.
    {  CCCH_6,     CCCH_8  },  // Paging Block Index = 1.
    {  CCCH_7,     CCCH_5  },  // Paging Block Index = 2.
    {  CCCH_8,     CCCH_6  },  // Paging Block Index = 3.
    {  NULL,       NULL    },  // Paging Block Index = 4.
    {  NULL,       NULL    },  // Paging Block Index = 5.
    {  NULL,       NULL    },  // Paging Block Index = 6.
    {  NULL,       NULL    },  // Paging Block Index = 7.
    {  NULL,       NULL    },  // Paging Block Index = 8.

    // BS_AG_BLKS_RES = 6.
    // -------------------
    // Paging, Ext Paging, 
    {  CCCH_6,     CCCH_8  },  // Paging Block Index = 0.
    {  CCCH_7,     CCCH_6  },  // Paging Block Index = 1.
    {  CCCH_8,     CCCH_7  },  // Paging Block Index = 2.
    {  NULL,       NULL    },  // Paging Block Index = 3.
    {  NULL,       NULL    },  // Paging Block Index = 4.
    {  NULL,       NULL    },  // Paging Block Index = 5.
    {  NULL,       NULL    },  // Paging Block Index = 6.
    {  NULL,       NULL    },  // Paging Block Index = 7.
    {  NULL,       NULL    },  // Paging Block Index = 8.

    // BS_AG_BLKS_RES = 7.
    // -------------------
    // Paging, Ext Paging
    {  CCCH_7,     CCCH_7  },  // Paging Block Index = 0.
    {  CCCH_8,     CCCH_8  },  // Paging Block Index = 1.
    {  NULL,       NULL    },  // Paging Block Index = 2.
    {  NULL,       NULL    },  // Paging Block Index = 3.
    {  NULL,       NULL    },  // Paging Block Index = 4.
    {  NULL,       NULL    },  // Paging Block Index = 5.
    {  NULL,       NULL    },  // Paging Block Index = 6.
    {  NULL,       NULL    },  // Paging Block Index = 7.
    {  NULL,       NULL    }   // Paging Block Index = 8.
  };

  const T_IDLE_TASK_INFO IDLE_INFO_COMB[(MAX_AG_BLKS_RES_COMB+1) * (MAX_PG_BLOC_INDEX_COMB+1)] =
  // BS_CCCH_SDCCH_COMB = TRUE, BCCH combined.
  { 
    // BS_AG_BLKS_RES = 0.
    // -------------------
    // Paging, Ext Paging, offset, working_area
    {  CCCH_0,     CCCH_2  },  // Paging Block Index = 0.
    {  CCCH_1,     CCCH_0  },  // Paging Block Index = 1.
    {  CCCH_2,     CCCH_1  },  // Paging Block Index = 2.

    // BS_AG_BLKS_RES = 1.
    // -------------------
    // Paging, Ext Paging, offset, working_area
    {  CCCH_1,     CCCH_1  },  // Paging Block Index = 0.
    {  CCCH_2,     CCCH_2  },  // Paging Block Index = 1.
    {  NULL,       NULL    },  // Paging Block Index = 2.

    // BS_AG_BLKS_RES = 2.
    // -------------------
    // Paging, Ext Paging, offset, working_area
    {  CCCH_2,     CCCH_2  },  // Paging Block Index = 0.
    {  NULL,       NULL    },  // Paging Block Index = 1.
    {  NULL,       NULL    }   // Paging Block Index = 2.
  };

    
  /*-------------------------------------*/
  /* Table giving the number of Paging   */
  /* blocks in a MF51.                   */
  /* (called "N div BS_PA_MFRMS" in      */
  /* GSM05.02, Page 21).                 */
  /*-------------------------------------*/

  // BS_CCCH_SDCCH_COMB = False, BCCH not combined.
  const UWORD8 NBPCH_IN_MF51_NCOMB[(MAX_AG_BLKS_RES_NCOMB+1)] =
  {
    9,    // BS_AG_BLKS_RES = 0. 
    8,    // BS_AG_BLKS_RES = 1. 
    7,    // BS_AG_BLKS_RES = 2. 
    6,    // BS_AG_BLKS_RES = 3. 
    5,    // BS_AG_BLKS_RES = 4. 
    4,    // BS_AG_BLKS_RES = 5. 
    3,    // BS_AG_BLKS_RES = 6. 
    2     // BS_AG_BLKS_RES = 7. 
  };    

  // BS_CCCH_SDCCH_COMB = True, BCCH combined.
  const UWORD8 NBPCH_IN_MF51_COMB[(MAX_AG_BLKS_RES_COMB+1)] =
  {
    3,    // BS_AG_BLKS_RES = 0. 
    2,    // BS_AG_BLKS_RES = 1. 
    1     // BS_AG_BLKS_RES = 2. 
  };    

  // Initial value for Downlink Signalling failure Counter (DSC).
  const UWORD8 DSC_INIT_VALUE[MAX_BS_PA_MFRMS-1] =
  {
    45,   // BS_PA_MFRMS = 2.
    30,   // BS_PA_MFRMS = 3.
    23,   // BS_PA_MFRMS = 4.
    18,   // BS_PA_MFRMS = 5.
    15,   // BS_PA_MFRMS = 6.
    13,   // BS_PA_MFRMS = 7.
    11,   // BS_PA_MFRMS = 8.
    10    // BS_PA_MFRMS = 9.
  };

  // REM: 2nd block of SDCCH is always at the same position as the first block
  //      but 1 mf51 later.
  // REM: monitoring during SDCCH used a fixe area (FB51/SB51/SBCNF51 tasks).
  //      Here is given the area starting position. This position is chosen
  //      to allow the equations for SBCNF51 occurence as it is in the l1s
  //      scheduler (the area do not overlap the end of 102 multiframe 
  //      structure).
  // Table for SDCCH description, Down Link & Up link, Not combined case.
   const T_SDCCH_DESC SDCCH_DESC_NCOMB[8] =
  {
    //  "dl_D" , "dl_A"  , "ul_D"  , "ul_A".        , "monit. area"
    {  51 - 12 , 32 - 12 , 15 - 12 ,  47 - 12       ,  70 - 12     }, // SDCCH, D0
    {  55 - 12 , 36 - 12 , 19 - 12 ,  51 - 12       ,  74 - 12     }, // SDCCH, D1
    {  59 - 12 , 40 - 12 , 23 - 12 ,  55 - 12       ,  78 - 12     }, // SDCCH, D2
    {  12 - 12 , 44 - 12 , 27 - 12 ,  59 - 12       ,  82 - 12     }, // SDCCH, D3
    {  16 - 12 , 83 - 12 , 31 - 12 ,  98 - 12       ,  35 - 12     }, // SDCCH, D4
    {  20 - 12 , 87 - 12 , 35 - 12 , 102 - 12       ,  39 - 12     }, // SDCCH, D5
    {  24 - 12 , 91 - 12 , 39 - 12 ,   4 - 12 + 102 ,  43 - 12     }, // SDCCH, D6
    {  28 - 12 , 95 - 12 , 43 - 12 ,   8 - 12 + 102 ,  47 - 12     }  // SDCCH, D7
  };  

  // REM: monitoring during SDCCH used a fixe area (FB51/SB51/SBCNF51 tasks).
  //      Here is given the area starting position. This position is chosen
  //      to allow the equations for SBCNF51 occurence as it is in the l1s
  //      scheduler (the area do not overlap the end of 102 multiframe 
  //      structure).
  // Table for SDCCH description, Down Link & Up link, Combined case.
  const T_SDCCH_DESC SDCCH_DESC_COMB[4] =
  {
    // "dl_D"  , "dl_A"  , "ul_D"  , "ul_A".       , "monit. area"
    {  73 - 37 , 42 - 37 , 37 - 37 , 57 - 37       ,  92 - 37     }, // SDCCH, D0
    {  77 - 37 , 46 - 37 , 41 - 37 , 61 - 37       ,  96 - 37     }, // SDCCH, D1
    {  83 - 37 , 93 - 37 , 47 - 37 , 6  - 37 + 102 ,  51 - 37     }, // SDCCH, D2
    {  87 - 37 , 97 - 37 , 51 - 37 , 10 - 37 + 102 ,  55 - 37     }  // SDCCH, D3
  };                                                               

  // Table for HOPPING SEQUENCE GENERATION ALGORITHM.
  const UWORD8 RNTABLE[114] =
  {
     48,  98,  63,   1,  36,  95,  78, 102,  94,  73,
      0,  64,  25,  81,  76,  59, 124,  23, 104, 100,
    101,  47, 118,  85,  18,  56,  96,  86,  54,   2,
     80,  34, 127,  13,   6,  89,  57, 103,  12,  74,
     55, 111,  75,  38, 109,  71, 112,  29,  11,  88,
     87,  19,   3,  68, 110,  26,  33,  31,   8,  45,
     82,  58,  40, 107,  32,   5, 106,  92,  62,  67,
     77, 108, 122,  37,  60,  66, 121,  42,  51, 126,
    117, 114,   4,  90,  43,  52,  53, 113, 120,  72,
     16,  49,   7,  79, 119,  61,  22,  84,   9,  97,
     91,  15,  21,  24,  46,  39,  93, 105,  65,  70,
    125,  99,  17, 123
  };


  // Table giving the RACH slot positions when COMBINED.
  // Rem: all is shifted left by 1 to map the position of the possible "contoles".
  const UWORD8 COMBINED_RA_DISTRIB[51] =
  { 
    0, 0, 0, 
    1, 1, 
    0, 0, 0, 0, 0, 0, 0, 0, 
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    0, 0, 0, 0, 0, 0, 0, 0,
    1, 1, 
    0, 0, 0, 0, 0
  };

#if !L1_GPRS
  const T_TASK_MFTAB  TASK_ROM_MFTAB[NBR_DL_L1S_TASKS] =
  {
    { BLOC_HWTEST,   BLOC_HWTEST_SIZE   },  // HWTEST 
    { BLOC_ADC    ,  BLOC_ADC_SIZE      },  // ADC in CS_MODE0
    { NULL,          0                  },  // DEDIC   (not meaningfull)
    { BLOC_RAACC,    BLOC_RAACC_SIZE    },  // RAACC                 
    { NULL,          0                  },  // RAHO    (not meaningfull)             
    { NULL,          0                  },  // NSYNC   (not meaningfull)             
    { BLOC_FBNEW,    BLOC_FBNEW_SIZE    },  // FBNEW 
    { BLOC_SBCONF,   BLOC_SBCONF_SIZE   },  // SBCONF 
    { BLOC_SB2,      BLOC_SB2_SIZE      },  // SB2 
    { BLOC_FB26,     BLOC_FB26_SIZE     },  // FB26               
    { BLOC_SB26,     BLOC_SB26_SIZE     },  // SB26
    { BLOC_SBCNF26,  BLOC_SBCNF26_SIZE  },  // SBCNF26
    { BLOC_FB51,     BLOC_FB51_SIZE     },  // FB51               
    { BLOC_SB51,     BLOC_SB51_SIZE     },  // SB51               
    { BLOC_SBCNF51,  BLOC_SBCNF51_SIZE  },  // SBCNF51               
    { BLOC_BCCHN,    BLOC_BCCHN_SIZE    },  // BCCHN   
    { BLOC_ALLC,     S_RECT4_SIZE       },  // ALLC
    { BLOC_EBCCHS,   S_RECT4_SIZE       },  // EBCCHS 
    { BLOC_NBCCHS,   S_RECT4_SIZE       },  // NBCCHS 
    { BLOC_SMSCB,    BLOC_SMSCB_SIZE    },  // SMSCB
    { BLOC_NP,       S_RECT4_SIZE       },  // NP  
    { BLOC_EP,       S_RECT4_SIZE       },  // EP  
    { BLOC_ADL,      S_RECT4_SIZE       },  // ADL
    { BLOC_AUL,      S_RECT4_SIZE       },  // AUL                 
    { BLOC_DDL,      S_RECT4_SIZE       },  // DDL
    { BLOC_DUL,      S_RECT4_SIZE       },  // DUL     
    { BLOC_TCHD,     BLOC_TCHT_SIZE     },  // TCHD
    { BLOC_TCHA,     BLOC_TCHA_SIZE     },  // TCHA
    { BLOC_TCHTF,    BLOC_TCHT_SIZE     },  // TCHTF
    { BLOC_TCHTH,    BLOC_TCHT_SIZE     },  // TCHTH
    { BLOC_BCCHN_TOP,BLOC_BCCHN_TOP_SIZE},  // BCCHN_TOP  
    { BLOC_SYNCHRO,  BLOC_SYNCHRO_SIZE  }   // SYNCHRO
  };

  const UWORD8 DSP_TASK_CODE[NBR_DL_L1S_TASKS] =
  {
    CHECKSUM_DSP_TASK,// HWTEST 
    0,                // DEDIC (not meaningfull)
    0,                // ADC   (not meaningfull)
    RACH_DSP_TASK,    // RAACC     
    RACH_DSP_TASK,    // RAHO
    0,                // NSYNC (not meaningfull)
    FB_DSP_TASK,      // FBNEW    
    SB_DSP_TASK,      // SBCONF
    SB_DSP_TASK,      // SB2     
    TCH_FB_DSP_TASK,  // FB26               
    TCH_SB_DSP_TASK,  // SB26               
    TCH_SB_DSP_TASK,  // SBCNF26               
    FB_DSP_TASK,      // FB51               
    SB_DSP_TASK,      // SB51               
    SB_DSP_TASK,      // SBCNF51               
    NBN_DSP_TASK,     // BCCHN         
    ALLC_DSP_TASK,    // ALLC      
    NBS_DSP_TASK,     // EBCCHS       
    NBS_DSP_TASK,     // NBCCHS       
    DDL_DSP_TASK,     // Temporary (BUG IN SIMULATOR)  CB_DSP_TASK,    // SMSCB
    NP_DSP_TASK,      // NP        
    EP_DSP_TASK,      // EP        
    ADL_DSP_TASK,     // ADL     
    AUL_DSP_TASK,     // AUL     
    DDL_DSP_TASK,     // DDL     
    DUL_DSP_TASK,     // DUL     
    TCHD_DSP_TASK,    // TCHD 
    TCHA_DSP_TASK,    // TCHA
    TCHT_DSP_TASK,    // TCHTF
    TCHT_DSP_TASK,    // TCHTH
    NBN_DSP_TASK,     // BCCHN_TOP == BCCHN
    0,                // SYNCHRO (not meaningfull)
  };                
#else
  const T_TASK_MFTAB  TASK_ROM_MFTAB[NBR_DL_L1S_TASKS] =
  {
    { BLOC_HWTEST,       BLOC_HWTEST_SIZE  },       // HWTEST 
    { BLOC_ADC,          BLOC_ADC_SIZE     },       // ADC in CS_MODE0
    { NULL,              0                 },       // DEDIC   (not meaningfull)
    { BLOC_RAACC,        BLOC_RAACC_SIZE   },       // RAACC                 
    { NULL,              0                 },       // RAHO    (not meaningfull)
    { NULL,              0                 },       // NSYNC   (not meaningfull)             
    { BLOC_POLL ,        BLOC_POLL_SIZE    },       // POLL
    { BLOC_PRACH,        BLOC_PRACH_SIZE   },       // PRACH  
    { BLOC_ITMEAS,       BLOC_ITMEAS_SIZE  },       // ITMEAS 
    { BLOC_FBNEW,        BLOC_FBNEW_SIZE   },       // FBNEW 
    { BLOC_SBCONF,       BLOC_SBCONF_SIZE  },       // SBCONF 
    { BLOC_SB2,          BLOC_SB2_SIZE     },       // SB2 
    { BLOC_PTCCH,        BLOC_PTCCH_SIZE   },       // PTCCH  
    { BLOC_FB26,         BLOC_FB26_SIZE    },       // FB26               
    { BLOC_SB26,         BLOC_SB26_SIZE    },       // SB26
    { BLOC_SBCNF26,      BLOC_SBCNF26_SIZE },       // SBCNF26
    { BLOC_FB51,         BLOC_FB51_SIZE    },       // FB51               
    { BLOC_SB51,         BLOC_SB51_SIZE    },       // SB51               
    { BLOC_SBCNF51,      BLOC_SBCNF51_SIZE },       // SBCNF51
    { BLOC_PDTCH,        BLOC_PDTCH_SIZE   },       // PDTCH   
    { BLOC_BCCHN,        BLOC_BCCHN_SIZE   },       // BCCHN   
    { BLOC_ALLC,         S_RECT4_SIZE      },       // ALLC
    { BLOC_EBCCHS,       S_RECT4_SIZE      },       // EBCCHS 
    { BLOC_NBCCHS,       S_RECT4_SIZE      },       // NBCCHS 
    { BLOC_ADL,          S_RECT4_SIZE      },       // ADL
    { BLOC_AUL,          S_RECT4_SIZE      },       // AUL                 
    { BLOC_DDL,          S_RECT4_SIZE      },       // DDL
    { BLOC_DUL,          S_RECT4_SIZE      },       // DUL     
    { BLOC_TCHD,         BLOC_TCHT_SIZE    },       // TCHD
    { BLOC_TCHA,         BLOC_TCHA_SIZE    },       // TCHA
    { BLOC_TCHTF,        BLOC_TCHT_SIZE    },       // TCHTF
    { BLOC_TCHTH,        BLOC_TCHT_SIZE    },       // TCHTH
    { BLOC_PALLC,        BLOC_PCCCH_SIZE   },       // PALLC
    { BLOC_SMSCB,        BLOC_SMSCB_SIZE   },       // SMSCB
    { BLOC_PBCCHS,       BLOC_PBCCHS_SIZE  },       // PBCCHS
    { BLOC_PNP,          BLOC_PCCCH_SIZE   },       // PNP
    { BLOC_PEP,          BLOC_PCCCH_SIZE   },       // PEP
    { BLOC_SINGLE,       BLOC_SINGLE_SIZE  },       // SINGLE        
    { BLOC_PBCCHN_TRAN,  BLOC_PBCCHN_TRAN_SIZE },   // PBCCHN_TRAN   
    { BLOC_PBCCHN_IDLE,  BLOC_PBCCHN_IDLE_SIZE },   // PBCCHN_IDLE   
    { BLOC_BCCHN_TRAN,   BLOC_BCCHN_TRAN_SIZE },    // BCCHN_TRAN  
    { BLOC_NP,           S_RECT4_SIZE      },       // NP  
    { BLOC_EP,           S_RECT4_SIZE      },       // EP  
    { BLOC_BCCHN_TOP,    BLOC_BCCHN_TOP_SIZE},      // BCCHN_TOP  
    { BLOC_SYNCHRO,      BLOC_SYNCHRO_SIZE }        // SYNCHRO
  };

  const UWORD8 DSP_TASK_CODE[NBR_DL_L1S_TASKS] =
  {
    CHECKSUM_DSP_TASK,// HWTEST 
    0,                // ADC   (not meaningfull)
    0,                // DEDIC (not meaningfull)
    RACH_DSP_TASK,    // RAACC     
    RACH_DSP_TASK,    // RAHO
    0,                // NSYNC  (not meaningfull)
    0,                // POLL   (not meaningfull)
    0,                // PRACH  (not meaningfull)
    0,                // ITMEAS 
    FB_DSP_TASK,      // FBNEW    
    SB_DSP_TASK,      // SBCONF
    SB_DSP_TASK,      // SB2     
    PTCCHU_DSP_TASK,  // PTCCH  
    TCH_FB_DSP_TASK,  // FB26               
    TCH_SB_DSP_TASK,  // SB26               
    TCH_SB_DSP_TASK,  // SBCNF26               
    FB_DSP_TASK,      // FB51               
    SB_DSP_TASK,      // SB51               
    SB_DSP_TASK,      // SBCNF51               
    0,                // PDTCH  (not meaningfull)
    NBN_DSP_TASK,     // BCCHN         
    ALLC_DSP_TASK,    // ALLC      
    NBS_DSP_TASK,     // EBCCHS       
    NBS_DSP_TASK,     // NBCCHS       
    ADL_DSP_TASK,     // ADL     
    AUL_DSP_TASK,     // AUL     
    DDL_DSP_TASK,     // DDL     
    DUL_DSP_TASK,     // DUL     
    TCHD_DSP_TASK,    // TCHD 
    TCHA_DSP_TASK,    // TCHA
    TCHT_DSP_TASK,    // TCHTF
    TCHT_DSP_TASK,    // TCHTH
    0,                // PALLC  (not meaningfull)
    DDL_DSP_TASK,     // Temporary (BUG IN SIMULATOR)  CB_DSP_TASK,    // SMSCB
    DDL_DSP_TASK,     // PBCCHS (In order to allow PBCCHS running in CS or Idle mode, we have to specify a valid DSP task in order to request a PBCCHS with the GSM scheduler)
    0,                // PNP    (not meaningfull)
    0,                // PEP    (not meaningfull)
    0,                // SINGLE (not meaningfull) 
    0,                // PBCCHN_TRAN (not meaningfull)    
    DDL_DSP_TASK,     // PBCCHN_IDLE (only for GSM scheduler the task used is the same as SMSCB task)
    NBN_DSP_TASK,     // BCCHN_TRAN == BCCHN
    NP_DSP_TASK,      // NP        
    EP_DSP_TASK,      // EP        
    NBN_DSP_TASK,     // BCCHN_TOP == BCCHN
    0                 // SYNCHRO (not meaningfull)
  };                

#endif

  const UWORD8 REPORTING_PERIOD[] =
  {
    255,            // INVALID_CHANNEL -> invalid reporting period
    104,            // TCH_F              
    104,            // TCH_H              
    102,            // SDCCH_4            
    102             // SDCCH_8            
  }; 
  
  const UWORD8 TOA_PERIOD_LEN[] =
  {
    0,              // CS_MODE0 not used for histogram filling       
    12,             // CS_MODE histogram length            
    12,             // I_MODE histogram length            
    12,             // CON_EST_MODE1 histogram length  
   144,             // CON_EST_MODE2 histogram length      
    36,             // DEDIC_MODE (Full rate) histogram length        
    42              // DEDIC_MODE (Half rate) histogram length        
    #if L1_GPRS
      ,16           // PACKET TRANSFER MODE histogram length
    #endif
  }; 
  
 // #if (STD == GSM) 
    const UWORD8 MIN_TXPWR_GSM[] =
    {
      0,  // unused.
      0,  // Power class = 1, unused for GSM900
      2,  // Power class = 2.
      3,  // Power class = 3.
      5,  // Power class = 4.
      7   // Power class = 5.
    };
 // #elif (STD == PCS1900)
    const UWORD8 MIN_TXPWR_PCS[] =
    {
      0,  // unused.
      0,  // Power class = 1.
      3,  // Power class = 2.
     30   // Power class = 3.
    };
 // #elif (STD == DCS1800)
    const UWORD8 MIN_TXPWR_DCS[] =
    {
      0,  // unused.
      0,  // Power class = 1.
      3,  // Power class = 2.
     29   // Power class = 3.
    };

     const UWORD8 MIN_TXPWR_GSM850[] =
    {
      0,  // unused.
      0,  // Power class = 1, unused for GSM900
      2,  // Power class = 2.
      3,  // Power class = 3.
      5,  // Power class = 4.
      7   // Power class = 5.
    };

//  #elif (STD == DUAL)
 //   const UWORD8 MIN_TXPWR_GSM[] =
 //  {
 //     0,  // unused.
 //     0,  // Power class = 1, unused for GSM900
 //     2,  // Power class = 2.
 //     3,  // Power class = 3.
 //     5,  // Power class = 4.
 //     7   // Power class = 5.
 //   };
 //   const UWORD8 MIN_TXPWR_DCS[] =
 //   {
 //     0,  // unused.
 //     0,  // Power class = 1.
 //     3,  // Power class = 2.
 //    29   // Power class = 3.
 //   };
//  #endif

const UWORD8 GAUG_VS_PAGING_RATE[] =
{
  4,   // bs_pa_mfrms = 2, 1 gauging every 4 Paging blocs
  3,   // bs_pa_mfrms = 3, 1 gauging every 3 Paging blocs
  2,   // bs_pa_mfrms = 4, 1 gauging every 2 Paging blocs
  1,   // bs_pa_mfrms = 5, 1 gauging every 1 Paging bloc
  1,   // bs_pa_mfrms = 6, 1 gauging every 1 Paging bloc
  1,   // bs_pa_mfrms = 7, 1 gauging every 1 Paging bloc
  1,   // bs_pa_mfrms = 8, 1 gauging every 1 Paging bloc
  1    // bs_pa_mfrms = 9, 1 gauging every 1 Paging bloc
};   
  
#else
  extern T_IDLE_TASK_INFO IDLE_INFO_COMB[(MAX_AG_BLKS_RES_COMB+1) * (MAX_PG_BLOC_INDEX_COMB+1)];
  extern T_IDLE_TASK_INFO IDLE_INFO_NCOMB[(MAX_AG_BLKS_RES_NCOMB+1) * (MAX_PG_BLOC_INDEX_NCOMB+1)];
  extern UWORD8           NBPCH_IN_MF51_NCOMB[(MAX_AG_BLKS_RES_NCOMB+1)];
  extern UWORD8           NBPCH_IN_MF51_COMB[(MAX_AG_BLKS_RES_COMB+1)];
  extern UWORD8           DSC_INIT_VALUE[MAX_BS_PA_MFRMS-2];
  extern T_SDCCH_DESC     SDCCH_DESC_NCOMB[];
  extern T_SDCCH_DESC     SDCCH_DESC_COMB[];
  extern UWORD8           RNTABLE[114];
  extern UWORD8           COMBINED_RA_DISTRIB[51];
  extern T_TASK_MFTAB     TASK_ROM_MFTAB[NBR_DL_L1S_TASKS];
  extern UWORD8           DSP_TASK_CODE[NBR_DL_L1S_TASKS];
  extern UWORD8           REPORTING_PERIOD[];
  extern UWORD8           TOA_PERIOD_LEN[];
  extern UWORD8           MIN_TXPWR_GSM[];
  extern UWORD8           MIN_TXPWR_DCS[];
  extern UWORD8           MIN_TXPWR_PCS[];
  extern UWORD8           MIN_TXPWR_GSM850[];
  extern UWORD8           GAUG_VS_PAGING_RATE[];
#endif