view src/cs/layer1/p_include/l1p_deft.h @ 127:d80ee234a573
mmiStart.h: bogotab fixes
author |
Mychaela Falconia <falcon@freecalypso.org> |
date |
Tue, 10 Nov 2020 06:37:23 +0000 (2020-11-10) |
parents |
4e78acac3d88 |
children |
|
line source
/************* 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;