FreeCalypso > hg > fc-magnetite
diff src/cs/layer1/include/l1_mftab.h @ 0:945cf7f506b2
src/cs: chipsetsw import from tcs211-fcmodem
binary blobs and LCD demo files have been excluded,
all line endings are LF only
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 25 Sep 2016 22:50:11 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cs/layer1/include/l1_mftab.h Sun Sep 25 22:50:11 2016 +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 + + + +