diff src/cs/layer1/p_include/l1p_deft.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_deft.h	Fri May 15 01:28:16 2020 +0000
@@ -0,0 +1,660 @@
+/************* Revision Controle System Header *************
+ *                  GSM Layer 1 software
+ * L1P_DEFTY.H
+ *
+ *        Filename l1p_deft.h
+ *  Copyright 2003 (C) Texas Instruments  
+ *
+ ************* Revision Controle System Header *************/
+
+typedef struct
+{
+  WORD32  rand;
+  UWORD16 channel_request_data;
+  UWORD8  bs_prach_blks;
+  UWORD8  prach_alloc;
+  UWORD32 fn_to_report;
+}
+T_PRACH_INFO;
+
+typedef union
+{
+  UWORD16 prach_data[12];
+  UWORD8  cs1_data[24];
+}
+T_CHAN_REQ_DATA;
+
+typedef struct
+{
+  UWORD8          pol_resp_type;
+  T_CHAN_REQ_DATA chan_req;
+  UWORD32         fn;
+  UWORD8          timing_advance;
+  UWORD32         fn_to_report;
+}
+T_POLL_INFO;
+
+
+typedef struct
+{
+  UWORD8  data_array[23];
+  UWORD8  tn;
+  UWORD8  dl_tn_to_restore;
+  UWORD8  activity;
+}
+T_SINGLE_BLOCK;
+
+
+typedef struct
+{
+  UWORD32               SignalCode;
+  UWORD8                assignment_id;
+  UWORD8                synchro_tn;
+  UWORD8                allocated_tbf;
+  UWORD8                dl_tbf_synchro_timeslot;
+  UWORD8                ul_tbf_synchro_timeslot;
+  UWORD8                transfer_synchro_timeslot;
+
+  UWORD8                assignment_command;
+  UWORD8                multislot_class;
+  T_PACKET_TA           packet_ta;
+  T_DL_POWER_CTL        dl_pwr_ctl;
+  UWORD8                tsc;
+  T_PACKET_FREQ_PARAM   freq_param;
+  UWORD8                mac_mode;
+  T_TBF_STI             tbf_sti;
+
+  T_UL_RESSOURCE_ALLOC  *ul_tbf_alloc;
+  T_DL_RESSOURCE_ALLOC  dl_tbf_alloc;
+
+  BOOL                  interf_meas_enable;
+  UWORD8                ts_override;
+  BOOL                  pc_meas_chan;
+}
+T_TRANSFER_SET;
+
+
+typedef struct
+{
+  UWORD8       ta_update_cmd;
+  UWORD8       assignment_id;
+  UWORD16      radio_freq;
+  UWORD8       activity;
+  BOOL         request_dl;
+  T_PACKET_TA  packet_ta;
+}
+T_PTCCH_PARAM;
+
+typedef struct
+{
+  UWORD8       tbf_release_cmd;
+  UWORD8       released_tbf;
+}
+T_TBF_RELEASE_PARAM;
+
+typedef struct
+{
+  UWORD8       pdch_release_cmd;
+  UWORD8       timeslot_available;
+  UWORD8       assignment_id;
+}
+T_PDCH_RELEASE_PARAM;
+
+typedef struct
+{
+ UWORD8        assignment_id;
+ UWORD8        txpwr[8];
+ BOOL          crc_error;
+ WORD8         bcch_level;
+ UWORD16       radio_freq_tbl[4];
+ WORD8         burst_level[4];
+}
+T_DL_PWR_CTRL;
+
+typedef struct
+{
+  UWORD8       psi_param_update_cmd;
+  UWORD8       Scell_pb;
+  UWORD8       access_burst_type;
+}
+T_PSI_PARAM_UPDATE;
+
+typedef struct
+{
+  BOOL                              semaphore;
+
+  T_TRANSFER_SET                    *aset;
+  T_TRANSFER_SET                    *fset[2];
+  T_TRANSFER_SET                    set[3];
+
+  T_UL_RESSOURCE_ALLOC              ul_tbf_alloc[3];
+
+  T_SINGLE_BLOCK                    single_block;
+
+  T_PTCCH_PARAM                     ptcch;
+  T_TBF_RELEASE_PARAM               tbf_release_param;
+  T_PDCH_RELEASE_PARAM              pdch_release_param;
+  T_MPHP_REPEAT_UL_FIXED_ALLOC_REQ  repeat_alloc;
+  T_PSI_PARAM_UPDATE                psi_param;
+
+  T_DL_PWR_CTRL                     dl_pwr_ctrl;
+}
+T_TRANSFER_PARAM;
+
+/***************************************************************************************/
+/* L1S packet global variable structure...                                             */
+/***************************************************************************************/
+
+typedef struct
+{
+  BOOL            new_set;
+  UWORD8          assignment_id;
+  UWORD8          allocated_tbf;
+  UWORD8          dl_tfi;
+  UWORD8          ul_tfi;
+  T_DL_POWER_CTL  dl_pwr_ctl;
+  BOOL            pc_meas_chan;
+  UWORD16         radio_freq_for_lna;
+} T_READ_PARAM;
+
+typedef struct
+{
+  UWORD8     ILmin_beacon;
+  UWORD8     ILmin_others[8];
+
+  // No power control AGC algorithm variables
+  UWORD32    fn_select;
+  BOOL       phase;
+
+  // Downlink power control mode B variables
+  UWORD8     last_PR_good;
+
+  // TBF Parameters used during the PDTCH read phase
+  T_READ_PARAM   read_param;
+
+  // Flag used to know if the pc_meas_chan measurement has been controlled
+  BOOL pc_meas_chan_ctrl;
+}
+T_L1PS_GLOBAL;
+
+/***********************************************************/
+/* L1PA global variable structure...                       */
+/***********************************************************/
+typedef struct
+{
+  // State for L1A state machines...
+  //-----------------------------------------
+  UWORD8    state[NBR_L1PA_PROCESSES];
+
+  // Measurement tasks management...
+  //-----------------------------------------
+  UWORD32   l1pa_en_meas[NBR_L1PA_PROCESSES];
+}
+T_L1PA_GLOBAL;
+
+
+/*************************************************************/
+/* Packet Idle mode tasks information...                     */
+/*************************************************************/
+/* must be filled according to Packet Idle parameters...     */
+/* ...                                                       */
+/*************************************************************/
+// Packet Idle Parameter description
+typedef struct
+{
+  UWORD16  radio_freq;
+  UWORD16  radio_freq_d;
+  UWORD16  radio_freq_dd;
+}
+T_P_IDLE_PARAM;
+
+// Packet Paging description
+typedef struct
+{
+  // -------- Packet Paging description --------------
+  UWORD8                  bs_pag_blks_res; // BS_PAG_BLKS_RES parameter (cf. S921 specification)
+  UWORD8                  bs_pbcch_blks;   // BS_PBCCH_BLKS parameter (cf. S921 specification)
+  T_PACKET_CHANNEL_DESC   packet_chn_desc; // Packet Channel Description: arfcn/Hopping description + TN + TSC
+  T_MOBILE_ALLOCATION     frequency_list;  // Mobile allocation description
+  UWORD8                  nb_ppch_per_mf52;// Number of Packet PCCH per MF52
+  UWORD16                 first_pg_grp;    // First Paging Group index
+  UWORD16                 pg_blks_avail;   // Number of Paging blocks available per MF52
+  UWORD16                 pg_offset;       // (IMSI mo 1000) div (KC*N) (Note N = 1 for PCCCH)
+  UWORD16                 split_pg_value;  // Min(pg_blks_avail, split_pg_cycle)
+
+  //--
+  BOOL                    epg_computation; // Packet Paging STATE used in Extended Paging scheduling
+  UWORD16                 pnp_period;      // Paging Period = (52*64)/split_pg_value
+  WORD16                  time_to_pnp;     // Time to  next PPCH block position.
+}
+T_PCCCH_PARAM;
+
+typedef struct
+{
+  BOOL                    change_synchro;
+  BOOL                    control_offset;
+  BOOL                    read_all_psi;
+
+  UWORD8                  nbr_psi;
+  UWORD8                  bs_pbcch_blks;
+  UWORD8                  psi1_repeat_period;
+  UWORD8                  relative_position_array[20]; // Array for Relative position
+  UWORD16                 offset_array[20];            // Array of offset computed from relative position
+  T_PACKET_CHANNEL_DESC   packet_chn_desc;             // Packet Channel Description: arfcn/Hopping description + TN + TSC
+  T_MOBILE_ALLOCATION     frequency_list;              // Mobile allocation description
+  UWORD8                  rel_pos_to_report;           // Relative Position of the PBCCH block read and to
+                                                       // to report to L3.
+  UWORD16                 pbcch_period;                // PBCCH period = MFL52 * psi1_repaet_period;
+  UWORD8                  tn_pbcch;                    // Time slot number relative for DSP point of view.
+}
+T_PBCCHS_PARAM;
+
+typedef struct
+{
+  BOOL                    change_synchro;
+
+  UWORD8                  pb;
+  UWORD8                  bs_pbcch_blks;
+  UWORD8                  psi1_repeat_period;
+  UWORD8                  relative_position;           // for Relative position
+  UWORD16                 offset;                      // offset computed from relative position
+  T_PACKET_CHANNEL_DESC   packet_chn_desc;             // Packet Channel Description: arfcn/Hopping description + TN + TSC
+  T_MOBILE_ALLOCATION     frequency_list;              // Mobile allocation description
+  UWORD16                 pbcch_period;                // PBCCH period = MFL52 * psi1_repaet_period;
+  UWORD16                 bcch_carrier;                // beacon of the neighbor cell (used by the DSP)
+  WORD32                  fn_offset;
+  WORD32                  time_alignmt;
+}
+T_PBCCHN_PARAM;
+
+typedef struct
+{
+  BOOL                    dsp_r_page_switch_req;       // If true, the dsp_r_page must be toggled in the interference measurement read
+  UWORD8                  multislot_class;             // Mobile multislot class
+  UWORD8                  meas_bitmap;                 // Timeslots on which the interference measurements are done
+  UWORD8                  position;                    // Position on which measurements must be done (search or ptcch frame)
+  UWORD8                  idle_tn_rx;                  // Timeslot bitmap in packet idle with PCCCH on the frame before
+  UWORD8                  idle_tn_no_rx;               // Timeslot bitmap in packet idle without PCCCH on the frame before
+  UWORD16                 radio_freq;                  // Radio freq. processed by l1s_hopping_algo()
+  T_PACKET_FREQ_PARAM     packet_intm_freq_param;      // Frequency parameters
+}
+T_ITMEAS_PARAM;
+
+typedef struct
+{
+  UWORD32             fn;               // Absolute FN reported during the last measurement session
+  UWORD8              rxlev[8];         // Buffer used to save the parameters reported to L3
+  UWORD8              meas_bitmap;      // Interf meas bitmap.
+  UWORD8              id;               // Id.
+} T_L1A_INT_MEAS_PARAM;
+
+typedef struct
+{
+  UWORD8                  lna;  // Input level result
+  UWORD8                  il;   // LNA parameter
+}
+T_IL_LNA;
+
+typedef struct
+{
+  UWORD8         next_to_ctrl;     // Carrier for next power measurement result.
+  UWORD8         next_to_read;     // Next carrier to measure.
+
+  UWORD8         pnp_ctrl;         // Specify to l1s_meas_manager() that a PPCH burst has been ctrl.
+
+  UWORD8         ms_ctrl;
+  UWORD8         ms_ctrl_d;
+  UWORD8         ms_ctrl_dd;
+
+  T_IL_LNA       used_il_lna[NB_MEAS_MAX_GPRS];
+  T_IL_LNA       used_il_lna_d[NB_MEAS_MAX_GPRS];
+  T_IL_LNA       used_il_lna_dd[NB_MEAS_MAX_GPRS];
+}
+T_CR_FREQ_LIST;
+
+typedef struct
+{
+  UWORD8   nb_carrier;
+  UWORD16  freq_list[32+1];
+  UWORD8   list_id;
+} T_CRES_LIST_PARAM;
+
+typedef struct
+{
+  T_CRES_LIST_PARAM  *alist;
+  T_CRES_LIST_PARAM  *flist;
+  T_CRES_LIST_PARAM  list[2];
+} T_CRES_FREQ_LIST;
+
+typedef struct
+{
+  UWORD8            tcr_next_to_ctrl;
+  UWORD8            tcr_next_to_read;
+  UWORD8            last_stored_tcr_to_read;
+
+  UWORD8            ms_ctrl;
+  UWORD8            ms_ctrl_d;
+  UWORD8            ms_ctrl_dd;
+
+  BOOL              first_pass_flag;
+
+  T_IL_LNA          used_il_lna;
+  T_IL_LNA          used_il_lna_d;
+  T_IL_LNA          used_il_lna_dd;
+
+  BOOL              new_list_present;
+
+  WORD8             beacon_meas;
+
+  WORD8             fn_report;
+  UWORD8            cres_meas_report;
+
+} T_TCR_LIST_SET;
+
+/***************************************************************************************/
+/* L1A <-> L1S communication structure dedicated to packet mode                        */
+/***************************************************************************************/
+typedef struct
+{
+  // Packet Idle Parameters
+
+  // PCCCH parameters
+  T_PCCCH_PARAM     pccch;
+
+  //--
+  T_P_IDLE_PARAM          p_idle_param;    // Packet Idle Parameters description
+
+  // Packet Access Parameters
+  T_PRACH_INFO      pra_info;
+
+  // Packet Access Parameters
+  T_POLL_INFO       poll_info;
+
+  // Packet Transfer Parameters
+  T_TRANSFER_PARAM  transfer;
+
+  // Serving Cell PBCCH parameters
+  T_PBCCHS_PARAM     pbcchs;
+
+  // Neigbour Cell PBCCH parameters
+  T_PBCCHN_PARAM     pbcchn;
+
+  // Interference measurement parameters
+  T_ITMEAS_PARAM     itmeas;
+
+  // Measurement tasks management...
+  //-----------------------------------------
+  UWORD32         meas_param;         // Synchro semaphore bit register for packet measurement tasks.
+  UWORD32         l1ps_en_meas;       // Enable packet Meas task bit register.
+
+  // Access burst type
+  //------------------
+  UWORD8           access_burst_type;
+
+  // Frequency list Parameters used in Cell Reselection measurements
+  // ---------------------------------------------------------------
+  T_CR_FREQ_LIST   cr_freq_list;
+
+  // Parameters used in Packet Transfer Neighbour measurement task
+  // -------------------------------------------------------------
+  T_TCR_LIST_SET   tcr_freq_list;
+
+  // Cell Reselection list, used both in Packet Idle and Packet Transfer
+  // -------------------------------------------------------------------
+  T_CRES_FREQ_LIST  cres_freq_list;
+
+} T_L1PA_L1PS_COM;
+
+
+/***************************************************************************************/
+/* API (MCU <-> DSP) communication structures                                          */
+/***************************************************************************************/
+
+typedef struct
+{
+  // GPRS Extension...............
+  API d_task_d_gprs;        // (map?) Task, burst per burst  (part of header)
+  API d_task_u_gprs;        // (map?) Task, burst per burst  (part of header)
+  API d_task_pm_gprs;       // (map?) Task, burst per burst  (part of header)
+  API d_burst_nb_gprs;      // (map?) burst identifier. (part of header)
+  API a_ctrl_abb_gprs[8];   // (map?) Analog baseband control, burst per burst.
+  API a_ctrl_power_gprs[8]; // (map?) Power control value, burst per burst.
+}
+T_DB_MCU_TO_DSP_GPRS;
+
+typedef struct
+{
+  // GPRS Extension...............
+  API d_task_d_gprs;        // (map?) Task, burst per burst  (part of header)
+  API d_task_u_gprs;        // (map?) Task, burst per burst  (part of header)
+  API d_task_pm_gprs;       // (map?) Task, burst per burst  (part of header)
+  API d_burst_nb_gprs;      // (map?) burst identifier. (part of header)
+
+  API a_burst_toa_gprs[8];  // (map?) Time of arrival, burst per burst
+  API a_burst_pm_gprs[8];   // (map?) Receive Power Level, burst per burst
+  API a_burst_angle_gprs[8];// (map?) Angle deviation, burst per burst
+  API a_burst_snr_gprs[8];  // (map?) Signal to noise ratio, burst per burst
+}
+T_DB_DSP_TO_MCU_GPRS;
+
+#if (DSP == 34) || (DSP == 35) || (DSP == 36)
+  typedef struct
+  {
+    // GEA module
+    API d_gea_mode;
+    API a_gea_kc[4];
+
+    API d_hole1_ndb_gprs[8];
+    API d_a5mode_ovly;
+
+    API d_sched_mode_gprs;
+
+    API d_hole2_ndb_gprs[5];
+
+    API d_usf_updated_gprs;
+    API d_win_start_gprs;
+    API d_usf_vote_enable;
+    API d_bbctrl_gprs;
+
+    API d_hole3_ndb_gprs[2];
+
+    // (map?) BTS physical timeslot mapping.
+    API a_ctrl_ched_gprs[8];  // (map?) Ched configuration, burst per burst
+    API a_ul_buffer_gprs[8];  // (map?) UL burst / UL buffer mapping, burst per burst. (part of header)
+    API a_usf_gprs[8];
+    API a_interf_meas_gprs[8];
+
+    API a_ptcchu_gprs[4];
+
+    API a_dd_md_gprs[16];
+
+    API a_du_gprs[4][29];
+    API a_pu_gprs[4][15];
+
+    API d_rlcmac_rx_no_gprs;
+
+    API a_dd_gprs[8][31];
+
+    API a_ramp_gprs[8][16];
+
+  }
+  T_NDB_MCU_DSP_GPRS;
+
+#elif (DSP == 33)
+  typedef struct
+  {
+    // GEA module
+    API d_gea_mode;
+    API a_gea_kc[4];
+
+    API d_hole1_ndb_gprs[8];
+    API d_a5mode_ovly;
+
+    API d_sched_mode_gprs;
+
+    API d_hole2_ndb_gprs[5];
+
+    API d_usf_updated_gprs;
+    API d_win_start_gprs;
+    API d_usf_vote_enable;
+    API d_bbctrl_gprs;
+
+    API d_hole3_ndb_gprs[2];
+
+    // (map?) BTS physical timeslot mapping.
+    API a_ctrl_ched_gprs[8];  // (map?) Ched configuration, burst per burst
+    API a_ul_buffer_gprs[8];  // (map?) UL burst / UL buffer mapping, burst per burst. (part of header)
+    API a_usf_gprs[8];
+    API a_interf_meas_gprs[8];
+
+    API a_ptcchu_gprs[4];
+
+    API a_dd_md_gprs[16];
+
+    API a_du_gprs[4][29];
+    API a_pu_gprs[4][15];
+
+    API d_rlcmac_rx_no_gprs;
+
+    API a_dd_gprs[8][31];
+
+    API a_ramp_gprs[8][16];
+
+  }
+  T_NDB_MCU_DSP_GPRS;
+
+#else
+
+typedef struct
+{
+  // GPRS Extension...............
+  API a_ramp_gprs[8][16];
+
+  #if (CODE_VERSION != SIMULATION)
+  API a_hole1_gprs[22];         // hole for a_du_1 and d_a5_mode
+  #endif
+
+  API d_ptcchu_ctrl_abb_gprs;
+  API d_ptcchu_ctrl_power_gprs;
+  API d_ptcchd_burst_nb_gprs;
+
+  #if (CODE_VERSION != SIMULATION)
+  API a_hole2_gprs[184];
+  #endif
+
+  API d_usf_updated_gprs;
+  API d_win_start_gprs;     // (map?) BTS physical timeslot mapping.
+  API a_ctrl_ched_gprs[8];  // (map?) Ched configuration, burst per burst
+  API a_ul_buffer_gprs[8];  // (map?) UL burst / UL buffer mapping, burst per burst. (part of header)
+  API a_usf_gprs[8];
+  API a_interf_meas_gprs[8];
+
+  API d_background_enable;
+  API d_background_abort;
+  API d_background_state;
+  API d_max_background;
+  API a_background_tasks[16];
+  API a_back_task_io[10];
+
+  #if (CODE_VERSION != SIMULATION)
+  API a_hole3_gprs[19];
+  #endif
+  API d_gea_mode;
+
+  API a_gea_kc[4];
+
+  API d_sched_mode_gprs;
+
+  #if (CODE_VERSION != SIMULATION)
+  API a_hole4_gprs[384];
+  #endif
+
+  API a_du_gprs[4][29];
+  API d_rlcmac_rx_no_gprs;
+  API a_dd_gprs[4][31];
+  API a_pu_gprs[4][15];
+
+  #if (CODE_VERSION != SIMULATION)
+  API a_hole5_gprs[112];
+  #endif
+
+  API a_ptcchu_gprs[4];
+  API a_dd_md_gprs[16];
+}
+T_NDB_MCU_DSP_GPRS;
+#endif
+
+#if (DSP == 34) || (DSP == 35) || (DSP == 36)
+  typedef struct
+  {
+    // GPRS Extension...............
+    API_SIGNED d_overlay_rlcmac_cfg_gprs;
+    API_SIGNED d_mac_threshold;
+    API_SIGNED d_sd_threshold;
+    API_SIGNED d_nb_max_iteration;
+  }
+  T_PARAM_MCU_DSP_GPRS;
+#elif (DSP == 33)
+  typedef struct
+  {
+    // GPRS Extension...............
+    API_SIGNED d_overlay_rlcmac_cfg_gprs;
+    API_SIGNED d_mac_threshold;
+    API_SIGNED d_sd_threshold;
+    API_SIGNED d_nb_max_iteration;
+  }
+  T_PARAM_MCU_DSP_GPRS;
+#else
+  typedef struct
+  {
+    // GPRS Extension...............
+    API_SIGNED d_overlay_rlcmac_cfg_gprs;
+    API_SIGNED d_lat_mcu_bridge;
+    API_SIGNED d_lat_pll2div;
+    API_SIGNED d_lat_mcu_hom2sam;
+    API_SIGNED d_gprs_install_address;
+    API_SIGNED d_mac_threshold;
+    API_SIGNED d_sd_threshold;
+    API_SIGNED d_nb_max_iteration;
+  }
+  T_PARAM_MCU_DSP_GPRS;
+#endif
+
+/***************************************************************************************/
+/* L1PS -> DSP communication structure...                                              */
+/***************************************************************************************/
+typedef struct
+{
+  T_DB_DSP_TO_MCU_GPRS  *pdsp_db_r_ptr;   // MCU<->DSP comm. read  page (Double Buffered comm. memory).
+  T_DB_MCU_TO_DSP_GPRS  *pdsp_db_w_ptr;   // MCU<->DSP comm. write page (Double Buffered comm. memory).
+  T_NDB_MCU_DSP_GPRS    *pdsp_ndb_ptr;    // MCU<->DSP comm. read/write (Non Double Buffered comm. memory).
+  T_PARAM_MCU_DSP_GPRS  *pdsp_param_ptr;  // MCU<->DSP comm. read/write (Param comm. memory).
+}
+T_L1PS_DSP_COM;
+
+/***************************************************************************************/
+/* L1PS -> MAC-S communication structure...                                            */
+/***************************************************************************************/
+
+typedef struct
+{
+  UWORD8  nb;      // Number of error found
+  UWORD8  id[10];  // Error ID
+}
+T_MACS_STATUS;
+
+typedef struct
+{
+  BOOL            new_set;                 // Set to 1 if allocation parameters have changed, reset by MAC-S
+  UWORD8          rx_allocation;           // Downlink resources relative to Layer 1 frames
+  UWORD8          tx_nb_allocation;        // Uplink resources used to transmit normal bursts relative to Layer 1 frames
+  UWORD8          tx_prach_allocation;     // Uplink resources used to transmit PRACH bursts relative to Layer 1 frames
+  UWORD8          pwr_allocation;          // Measurement gap relative to Layer 1 frames
+  BOOL            fix_alloc_exhaust_flag;  // Set to 1 if the fixed allocation has just exhausted
+  BOOL            rlc_downlink_call;
+  T_MACS_STATUS   macs_status;
+}
+T_L1PS_MACS_COM;
+
+
+