FreeCalypso > hg > ffs-editor
diff src/cs/layer1/p_include/l1p_mfta.h @ 0:92470e5d0b9e
src: partial import from FC Selenite
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 15 May 2020 01:28:16 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cs/layer1/p_include/l1p_mfta.h Fri May 15 01:28:16 2020 +0000 @@ -0,0 +1,321 @@ +/************* Revision Controle System Header ************* + * GSM Layer 1 software + * L1P_MFTAB.H + * + * Filename l1p_mfta.h + * Copyright 2003 (C) Texas Instruments + * + ************* Revision Controle System Header *************/ + +#define L1P_MFTAB_H + +// Prototypes +void l1s_hopping_algo (UWORD8 param1, UWORD8 param2); + +void l1ps_ctrl_single (UWORD8 param1, UWORD8 param2); +void l1ps_read_single (UWORD8 param1, UWORD8 param2); + +void l1ps_ctrl_snb_dl (UWORD8 param1, UWORD8 param2); +void l1ps_read_nb_dl (UWORD8 param1, UWORD8 param2); + +void l1ps_ctrl_pdtch (UWORD8 param1, UWORD8 param2); +void l1ps_read_pdtch (UWORD8 param1, UWORD8 param2); + +void l1ps_ctrl_pbcch (UWORD8 param1, UWORD8 param2); + +void l1ps_ctrl_prach (UWORD8 param1, UWORD8 param2); +void l1ps_read_pra_result (UWORD8 param1, UWORD8 param2); + +void l1ps_ctrl_poll (UWORD8 param1, UWORD8 param2); +void l1ps_read_poll_result(UWORD8 param1, UWORD8 param2); + +void l1ps_ctrl_ptcch (UWORD8 param1, UWORD8 param2); +void l1ps_read_ptcch (UWORD8 param1, UWORD8 param2); + +void l1ps_ctrl_itmeas (UWORD8 param1, UWORD8 param2); +void l1ps_read_itmeas (UWORD8 param1, UWORD8 param2); + +/*********************************************************** + * Content: + * This file contains the MultiFrame tables for all L1S + * Packet basic tasks. + ***********************************************************/ + +/*******************************************************************************************/ +/* Multiframe Blocks for Dynamic MFTAB Building purpose. */ +/*******************************************************************************************/ +// Multiframe table size.... +#define BLOC_PDTCH_SIZE 6 // PDTCH. +#define BLOC_PRACH_SIZE 3 // PRACH. +#define BLOC_POLL_SIZE 6 // POLL. +#define BLOC_POLL_NO_HOPP_SIZE 6 // POLL without hopping algo called. +#define BLOC_SINGLE_SIZE 6 // SINGLE. +#define BLOC_PCCCH_SIZE 6 // PNP, PEP and PALLC +#define BLOC_PBCCHS_SIZE 6 // Serving Cell PBCCH +#define BLOC_PTCCH_SIZE 3 // Serving Cell PTCCH +#define BLOC_ITMEAS_SIZE 4 // Interference measurements +#define BLOC_PBCCHN_TRAN_SIZE 6 // Neighbor Cell PBCCH in packet Transfer +#define BLOC_PBCCHN_IDLE_SIZE 8 // Neighbor Cell PBCCH in Idle + + +#ifdef L1P_ASYN_C + /*----------------------------------------------------*/ + /* TASK: Packet Normal Paging... */ + /*----------------------------------------------------*/ + /* frame 1 2 3 4 5 6 */ + /* | | | | | | */ + /* C W R | | | -> hopping + burst 1 */ + /* C W R | | -> hopping + burst 2 */ + /* C W R | -> hopping + burst 3 */ + /* C W R -> hopping + burst 4 */ + /*----------------------------------------------------*/ + const T_FCT BLOC_PNP[] = + { + {l1s_hopping_algo,PNP,NO_PAR},{l1ps_ctrl_snb_dl,PNP,BURST_1}, {NULL,NO_PAR,NO_PAR}, // frame 1 + {l1s_hopping_algo,PNP,NO_PAR},{l1ps_ctrl_snb_dl,PNP,BURST_2}, {NULL,NO_PAR,NO_PAR}, // frame 2 + {l1s_hopping_algo,PNP,NO_PAR},{l1ps_read_nb_dl,PNP,BURST_1},{l1ps_ctrl_snb_dl,PNP,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 3 + {l1s_hopping_algo,PNP,NO_PAR},{l1ps_read_nb_dl,PNP,BURST_2},{l1ps_ctrl_snb_dl,PNP,BURST_4},{NULL,NO_PAR,NO_PAR}, // frame 4 + {l1ps_read_nb_dl,PNP,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 5 + {l1ps_read_nb_dl,PNP,BURST_4},{NULL,NO_PAR,NO_PAR} // frame 6 + }; + + /*----------------------------------------------------*/ + /* TASK: Packet Extended Paging... */ + /*----------------------------------------------------*/ + /* frame 1 2 3 4 5 6 */ + /* | | | | | | */ + /* C W R | | | ->hopping + burst 1 */ + /* C W R | | ->hopping + burst 2 */ + /* C W R | ->hopping + burst 3 */ + /* C W R ->hopping + burst 4 */ + /*----------------------------------------------------*/ + const T_FCT BLOC_PEP[] = + { + {l1s_hopping_algo,PEP,NO_PAR},{l1ps_ctrl_snb_dl,PEP,BURST_1}, {NULL,NO_PAR,NO_PAR}, // frame 1 + {l1s_hopping_algo,PEP,NO_PAR},{l1ps_ctrl_snb_dl,PEP,BURST_2}, {NULL,NO_PAR,NO_PAR}, // frame 2 + {l1s_hopping_algo,PEP,NO_PAR},{l1ps_read_nb_dl,PEP,BURST_1},{l1ps_ctrl_snb_dl,PEP,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 3 + {l1s_hopping_algo,PEP,NO_PAR},{l1ps_read_nb_dl,PEP,BURST_2},{l1ps_ctrl_snb_dl,PEP,BURST_4},{NULL,NO_PAR,NO_PAR}, // frame 4 + {l1ps_read_nb_dl,PEP,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 5 + {l1ps_read_nb_dl,PEP,BURST_4},{NULL,NO_PAR,NO_PAR} // frame 6 + }; + + /*----------------------------------------------------*/ + /* TASK: All PCCCH Reading ... */ + /*----------------------------------------------------*/ + /* frame 1 2 3 4 5 6 */ + /* | | | | | | */ + /* C W R | | | -> hopping + burst 1 */ + /* C W R | | -> hopping + burst 2 */ + /* C W R | -> hopping + burst 3 */ + /* C W R -> hopping + burst 4 */ + /*----------------------------------------------------*/ + const T_FCT BLOC_PALLC[] = + { + {l1s_hopping_algo,PALLC,NO_PAR},{l1ps_ctrl_snb_dl,PALLC,BURST_1}, {NULL,NO_PAR,NO_PAR}, // frame 1 + {l1s_hopping_algo,PALLC,NO_PAR},{l1ps_ctrl_snb_dl,PALLC,BURST_2}, {NULL,NO_PAR,NO_PAR}, // frame 2 + {l1s_hopping_algo,PALLC,NO_PAR},{l1ps_read_nb_dl,PALLC,BURST_1},{l1ps_ctrl_snb_dl,PALLC,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 3 + {l1s_hopping_algo,PALLC,NO_PAR},{l1ps_read_nb_dl,PALLC,BURST_2},{l1ps_ctrl_snb_dl,PALLC,BURST_4},{NULL,NO_PAR,NO_PAR}, // frame 4 + {l1ps_read_nb_dl,PALLC,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 5 + {l1ps_read_nb_dl,PALLC,BURST_4},{NULL,NO_PAR,NO_PAR} // frame 6 + }; + + /*--------------------------------------------------------------*/ + /* TASK: Serving Cell PBCCH task... */ + /*--------------------------------------------------------------*/ + /* frame 1 2 3 4 5 6 */ + /* | | | | | | */ + /* C W R | | | -> hopping + Synch + burst 1 */ + /* C W R | | -> hopping + burst 2 */ + /* C W R | -> hopping + burst 3 */ + /* C W R -> hopping + burst 4 + Synch back */ + /*--------------------------------------------------------------*/ + const T_FCT BLOC_PBCCHS[] = + { + {l1s_hopping_algo,PBCCHS,NO_PAR},{l1ps_ctrl_pbcch,PBCCHS,BURST_1}, {NULL,NO_PAR,NO_PAR}, // frame 1 + {l1s_hopping_algo,PBCCHS,NO_PAR},{l1ps_ctrl_pbcch,PBCCHS,BURST_2}, {NULL,NO_PAR,NO_PAR}, // frame 2 + {l1s_hopping_algo,PBCCHS,NO_PAR},{l1ps_read_nb_dl,PBCCHS,BURST_1},{l1ps_ctrl_pbcch,PBCCHS,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 3 + {l1s_hopping_algo,PBCCHS,NO_PAR},{l1ps_read_nb_dl,PBCCHS,BURST_2},{l1ps_ctrl_pbcch,PBCCHS,BURST_4},{NULL,NO_PAR,NO_PAR}, // frame 4 + {l1ps_read_nb_dl,PBCCHS,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 5 + {l1ps_read_nb_dl,PBCCHS,BURST_4},{NULL,NO_PAR,NO_PAR} // frame 6 + }; + + + /*--------------------------------------------------------------*/ + /* TASK: Neighbor Cell PBCCH task in Packet Transfer mode... */ + /*--------------------------------------------------------------*/ + /* frame 1 2 3 4 5 6 */ + /* | | | | | | */ + /* C W R | | | -> hopping + Synch + burst 1 */ + /* C W R | | -> hopping + burst 2 */ + /* C W R | -> hopping + burst 3 */ + /* C W R -> hopping + burst 4 + Synch back */ + /*--------------------------------------------------------------*/ + const T_FCT BLOC_PBCCHN_TRAN[] = + { + {l1s_hopping_algo,PBCCHN_TRAN,NO_PAR},{l1ps_ctrl_pbcch,PBCCHN_TRAN,BURST_1}, {NULL,NO_PAR,NO_PAR}, // frame 1 + {l1s_hopping_algo,PBCCHN_TRAN,NO_PAR},{l1ps_ctrl_pbcch,PBCCHN_TRAN,BURST_2}, {NULL,NO_PAR,NO_PAR}, // frame 2 + {l1s_hopping_algo,PBCCHN_TRAN,NO_PAR},{l1ps_read_nb_dl,PBCCHN_TRAN,BURST_1},{l1ps_ctrl_pbcch,PBCCHN_TRAN,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 3 + {l1s_hopping_algo,PBCCHN_TRAN,NO_PAR},{l1ps_read_nb_dl,PBCCHN_TRAN,BURST_2},{l1ps_ctrl_pbcch,PBCCHN_TRAN,BURST_4},{NULL,NO_PAR,NO_PAR}, // frame 4 + {l1ps_read_nb_dl,PBCCHN_TRAN,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 5 + {l1ps_read_nb_dl,PBCCHN_TRAN,BURST_4},{NULL,NO_PAR,NO_PAR} // frame 6 + }; + + /*--------------------------------------------------------------*/ + /* TASK: Neighbor Cell PBCCH task in Idle mode... */ + /*--------------------------------------------------------------*/ + /* frame 1 2 3 4 5 6 7 8 */ + /* | | | | | | | | */ + /* C W R | | | | | -> AGC */ + /* C W R | | | -> hopping + Synch + burst 1 */ + /* C W R | | -> hopping + burst 2 */ + /* C W R | -> hopping + burst 3 */ + /* C W R -> hopping + burst 4 + Synch back */ + /*--------------------------------------------------------------*/ + const T_FCT BLOC_PBCCHN_IDLE[] = + { + {l1s_ctrl_msagc,PBCCHN_IDLE,NO_PAR}, + {NULL,NO_PAR,NO_PAR}, // frame 1 + {NULL,NO_PAR,NO_PAR}, // frame 2 + {l1s_read_msagc,PBCCHN_IDLE,NO_PAR},{l1s_hopping_algo,PBCCHN_IDLE,NO_PAR},{l1ps_ctrl_pbcch,PBCCHN_IDLE,BURST_1}, {NULL,NO_PAR,NO_PAR}, // frame 3 + {l1s_hopping_algo,PBCCHN_IDLE,NO_PAR},{l1ps_ctrl_pbcch,PBCCHN_IDLE,BURST_2}, {NULL,NO_PAR,NO_PAR}, // frame 4 + {l1s_hopping_algo,PBCCHN_IDLE,NO_PAR},{l1ps_read_nb_dl,PBCCHN_IDLE,BURST_1},{l1ps_ctrl_pbcch,PBCCHN_IDLE,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 5 + {l1s_hopping_algo,PBCCHN_IDLE,NO_PAR},{l1ps_read_nb_dl,PBCCHN_IDLE,BURST_2},{l1ps_ctrl_pbcch,PBCCHN_IDLE,BURST_4},{NULL,NO_PAR,NO_PAR}, // frame 6 + {l1ps_read_nb_dl,PBCCHN_IDLE,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 7 + {l1ps_read_nb_dl,PBCCHN_IDLE,BURST_4},{NULL,NO_PAR,NO_PAR} // frame 8 + }; + + /*----------------------------------------------------*/ + /* TASK: PDTCH */ + /*----------------------------------------------------*/ + /* frame 1 2 3 4 5 6 */ + /* | | | | | | */ + /* C W R | | | -> hopping + burst 1 */ + /* C W R | | -> hopping + burst 2 */ + /* C W R | -> hopping + burst 3 */ + /* C W R -> hopping + burst 4 */ + /*----------------------------------------------------*/ + const T_FCT BLOC_PDTCH[] = + { + {l1s_hopping_algo,PDTCH,NO_PAR},{l1ps_ctrl_pdtch,PDTCH,BURST_1}, {NULL,NO_PAR,NO_PAR}, // frame 1 + {l1s_hopping_algo,PDTCH,NO_PAR},{l1ps_ctrl_pdtch,PDTCH,BURST_2}, {NULL,NO_PAR,NO_PAR}, // frame 2 + {l1s_hopping_algo,PDTCH,NO_PAR},{l1ps_read_pdtch,PDTCH,BURST_1},{l1ps_ctrl_pdtch,PDTCH,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 3 + {l1s_hopping_algo,PDTCH,NO_PAR},{l1ps_read_pdtch,PDTCH,BURST_2},{l1ps_ctrl_pdtch,PDTCH,BURST_4},{NULL,NO_PAR,NO_PAR}, // frame 4 + {l1ps_read_pdtch,PDTCH,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 5 + {l1ps_read_pdtch,PDTCH,BURST_4},{NULL,NO_PAR,NO_PAR} // frame 6 + }; + + /*--------------------------------------------------------*/ + /* TASK: SINGLE */ + /*--------------------------------------------------------*/ + /* frame 1 2 3 4 5 6 */ + /* | | | | | | */ + /* C W R | | | -> hopping + burst 1 + Sync */ + /* C W R | | -> hopping + burst 2 */ + /* C W R | -> hopping + burst 3 */ + /* C W R -> hopping + burst 4 + Sync back */ + /*--------------------------------------------------------*/ + const T_FCT BLOC_SINGLE[] = + { + {l1s_hopping_algo,SINGLE,NO_PAR},{l1ps_ctrl_single,SINGLE,BURST_1}, {NULL,NO_PAR,NO_PAR}, // frame 1 + {l1s_hopping_algo,SINGLE,NO_PAR},{l1ps_ctrl_single,SINGLE,BURST_2}, {NULL,NO_PAR,NO_PAR}, // frame 2 + {l1s_hopping_algo,SINGLE,NO_PAR},{l1ps_read_single,SINGLE,BURST_1},{l1ps_ctrl_single,SINGLE,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 3 + {l1s_hopping_algo,SINGLE,NO_PAR},{l1ps_read_single,SINGLE,BURST_2},{l1ps_ctrl_single,SINGLE,BURST_4},{NULL,NO_PAR,NO_PAR}, // frame 4 + {l1ps_read_single,SINGLE,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 5 + {l1ps_read_single,SINGLE,BURST_4},{NULL,NO_PAR,NO_PAR} // frame 6 + }; + /*----------------------------------------------------*/ + /* TASK: PRACH task... */ + /*----------------------------------------------------*/ + const T_FCT BLOC_PRACH[] = + { + {l1ps_ctrl_prach,PRACH,NO_PAR}, {NULL,NO_PAR,NO_PAR}, // frame 1 + {NULL,NO_PAR,NO_PAR}, // frame 2 + {l1ps_read_pra_result,PRACH,NO_PAR}, {NULL,NO_PAR,NO_PAR} // frame 3 + }; + + /*----------------------------------------------------*/ + /* TASK: POLL 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_POLL[] = + { + {l1s_hopping_algo,POLL,NO_PAR},{l1ps_ctrl_poll,POLL,BURST_1}, {NULL,NO_PAR,NO_PAR}, // frame 1 + {l1s_hopping_algo,POLL,NO_PAR},{l1ps_ctrl_poll,POLL,BURST_2}, {NULL,NO_PAR,NO_PAR}, // frame 2 + {l1s_hopping_algo,POLL,NO_PAR},{l1ps_read_poll_result,POLL,BURST_1},{l1ps_ctrl_poll,POLL,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 3 + {l1s_hopping_algo,POLL,NO_PAR},{l1ps_read_poll_result,POLL,BURST_2},{l1ps_ctrl_poll,POLL,BURST_4},{NULL,NO_PAR,NO_PAR}, // frame 4 + {l1ps_read_poll_result,POLL,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 5 + {l1ps_read_poll_result,POLL,BURST_4},{NULL,NO_PAR,NO_PAR} // frame 6 + }; + + /*----------------------------------------------------*/ + /* TASK: POLL_NO_HOPP 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_POLL_NO_HOPP[] = + { + {l1ps_ctrl_poll,POLL,BURST_1}, {NULL,NO_PAR,NO_PAR}, // frame 1 + {l1ps_ctrl_poll,POLL,BURST_2}, {NULL,NO_PAR,NO_PAR}, // frame 2 + {l1ps_read_poll_result,POLL,BURST_1},{l1ps_ctrl_poll,POLL,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 3 + {l1ps_read_poll_result,POLL,BURST_2},{l1ps_ctrl_poll,POLL,BURST_4},{NULL,NO_PAR,NO_PAR}, // frame 4 + {l1ps_read_poll_result,POLL,BURST_3},{NULL,NO_PAR,NO_PAR}, // frame 5 + {l1ps_read_poll_result,POLL,BURST_4},{NULL,NO_PAR,NO_PAR} // frame 6 + }; + + + /*--------------------------------------------------------*/ + /* TASK: PTCCH */ + /*--------------------------------------------------------*/ + /* frame 1 2 3 4 */ + /* | | | | */ + /* C W W R */ + /*--------------------------------------------------------*/ + const T_FCT BLOC_PTCCH[] = + { + {l1s_hopping_algo,PTCCH,NO_PAR},{l1ps_ctrl_ptcch,PTCCH,NO_PAR},{NULL,NO_PAR,NO_PAR}, // frame 1 + {NULL,NO_PAR,NO_PAR}, // frame 2 + {l1ps_read_ptcch,PTCCH,NO_PAR},{NULL,NO_PAR,NO_PAR} // frame 3 + }; + + /*----------------------------------------------------*/ + /* TASK: Interference measurements... */ + /*----------------------------------------------------*/ + /* frame 1 2 3 4 */ + /* | | | | */ + /* C W W R -> hopping + measurements */ + /*----------------------------------------------------*/ + const T_FCT BLOC_ITMEAS[] = + { + {l1s_hopping_algo,ITMEAS,NO_PAR},{l1ps_ctrl_itmeas,NO_PAR,NO_PAR},{NULL,NO_PAR,NO_PAR}, // frame 1 + {NULL,NO_PAR,NO_PAR}, // frame 2 + {NULL,NO_PAR,NO_PAR}, // frame 2 + {l1ps_read_itmeas,NO_PAR,NO_PAR},{NULL,NO_PAR,NO_PAR} // frame 4 + }; + + +#else + extern T_FCT BLOC_PNP[]; + extern T_FCT BLOC_PEP[]; + extern T_FCT BLOC_PALLC[]; + extern T_FCT BLOC_PBCCHS[]; + extern T_FCT BLOC_PBCCHN_TRAN[]; + extern T_FCT BLOC_PBCCHN_IDLE[]; + extern T_FCT BLOC_PDTCH[]; + extern T_FCT BLOC_SINGLE[]; + extern T_FCT BLOC_PRACH[]; + extern T_FCT BLOC_POLL[]; + extern T_FCT BLOC_POLL_NO_HOPP[]; + extern T_FCT BLOC_PTCCH[]; + extern T_FCT BLOC_ITMEAS[]; +#endif