FreeCalypso > hg > fc-magnetite
view src/cs/layer1/include/l1_msgty.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_MSGTY.H * * Filename l1_msgty.h * Copyright 2003 (C) Texas Instruments * ************* Revision Controle System Header *************/ /* channels types */ #define L2_CHANNEL_SACCH 1 #define L2_CHANNEL_SDCCH 2 #define L2_CHANNEL_FACCH_H 3 #define L2_CHANNEL_FACCH_F 4 #define L2_CHANNEL_CCCH 5 #define L2_CHANNEL_NBCCH 6 #define L2_CHANNEL_PCH 7 #define L2_CHANNEL_EPCH 8 #define L2_CHANNEL_CBCH 9 #define L2_CHANNEL_EBCCH 10 /****************************************************************/ /* Structure definition for L1S <-> DATA ADAPTOR data blocks */ /* TCH/9.6 -> 30 bytes */ /* TCH/4.8 -> 15 bytes */ /* TCH/2.4 -> 9 bytes */ /****************************************************************/ typedef struct { UWORD8 A[30]; } T_DATA_FRAME; /****************************************************************/ /* Structure definition for L1A <-> MMI messages */ /****************************************************************/ typedef struct { UWORD8 tx_flag; UWORD8 traffic_period; UWORD8 idle_period; } T_MMI_ADC_REQ; /****************************************************************/ /* Structure definition for L1S <-> L1A messages */ /****************************************************************/ typedef T_PH_DATA_IND T_L1_BCCH_INFO; typedef T_PH_DATA_IND T_L1_CCCH_INFO; /****************************************************************/ /* Structure definition for new L3 <-> L1 messages */ /****************************************************************/ #if (OP_L1_STANDALONE == 1) /* Message used for hardware dynamic configuration */ typedef struct { UWORD8 num_of_clock_cfg; // Dynamic clock configuration index } T_TST_HW_CONFIG_REQ; #endif // OP_L1_STANDALONE typedef struct { UWORD32 mf51_fn; } T_MPHC_START_CBCH_READING; typedef struct { T_RXLEV_MEAS A[8]; UWORD8 nbr_of_carriers; WORD8 s_rxlev; UWORD8 ba_id; } T_MPHC_RXLEV_PERIODIC_IND; typedef struct { TC_CHAN_LIST chan_list; UWORD8 num_of_chans; UWORD8 ba_id; UWORD8 next_radio_freq_measured; // index of first radio_freq to be measured } T_MPHC_RXLEV_PERIODIC_REQ; typedef struct { UWORD16 radio_freq; // carrier id. } T_MPHC_NCELL_FB_SB_READ; typedef struct { UWORD16 radio_freq; // carrier id. } T_MPHC_START_BCCH_READING; typedef struct { UWORD16 radio_freq; // carrier id. UWORD32 fn_offset; // offset between fn of this NCELL and the SCELL fn. UWORD32 time_alignmt; // time alignment. UWORD8 bsic; // BSIC. UWORD16 si_bit_map; // System Info. bit map. } T_MPHC_NCELL_BCCH_READ; typedef struct { UWORD32 fn; UWORD8 channel_request; } T_MPHC_RA_CON; typedef struct { T_CHANNEL_DESCRIPTION channel_desc; UWORD8 timing_advance; T_MOBILE_ALLOCATION frequency_list; T_STARTING_TIME starting_time; T_MOBILE_ALLOCATION frequency_list_bef_sti; UWORD8 maio_bef_sti; BOOL dtx_allowed; T_BCCH_LIST bcch_allocation; UWORD8 ba_id; BOOL pwrc; } T_MPHC_IMMED_ASSIGN_REQ; typedef struct { T_CHANNEL_DESCRIPTION channel_desc_1; UWORD8 channel_mode_1; UWORD8 txpwr; T_MOBILE_ALLOCATION frequency_list; T_STARTING_TIME starting_time; T_CHANNEL_DESCRIPTION channel_desc_2; UWORD8 channel_mode_2; T_MOBILE_ALLOCATION frequency_list_bef_sti; T_CHANNEL_DESCRIPTION channel_desc_1_bef_sti; T_CHANNEL_DESCRIPTION channel_desc_2_bef_sti; UWORD8 cipher_mode; UWORD8 a5_algorithm; T_ENCRYPTION_KEY cipher_key; BOOL dtx_allowed; #if (AMR == 1) T_AMR_CONFIGURATION amr_configuration; #endif } T_MPHC_CHANNEL_ASSIGN_REQ; typedef struct { UWORD8 txpwr; UWORD8 rand; UWORD8 channel_request; UWORD8 powerclass_band1; UWORD8 powerclass_band2; } T_MPHC_RA_REQ; typedef struct { T_HO_PARAMS handover_command; UWORD32 fn_offset; UWORD32 time_alignmt; T_ENCRYPTION_KEY cipher_key; #if (AMR == 1) T_AMR_CONFIGURATION amr_configuration; #endif } T_MPHC_ASYNC_HO_REQ; typedef struct { T_HO_PARAMS handover_command; UWORD32 fn_offset; UWORD32 time_alignmt; T_ENCRYPTION_KEY cipher_key; BOOL nci; BOOL timing_advance_valid; UWORD8 timing_advance; #if (AMR == 1) T_AMR_CONFIGURATION amr_configuration; #endif } T_MPHC_PRE_SYNC_HO_REQ; typedef struct { T_HO_PARAMS handover_command; UWORD32 fn_offset; UWORD32 time_alignmt; T_ENCRYPTION_KEY cipher_key; BOOL nci; UWORD8 real_time_difference; } T_MPHC_PSEUDO_SYNC_HO_REQ; typedef struct { T_HO_PARAMS handover_command; UWORD32 fn_offset; UWORD32 time_alignmt; T_ENCRYPTION_KEY cipher_key; BOOL nci; #if (AMR == 1) T_AMR_CONFIGURATION amr_configuration; #endif } T_MPHC_SYNC_HO_REQ; typedef struct { UWORD8 cause; } T_MPHC_HANDOVER_FINISHED; typedef struct { BOOL dtx_used; BOOL meas_valid; WORD16 rxlev_full_acc; UWORD8 rxlev_full_nbr_meas; WORD16 rxlev_sub_acc; UWORD8 rxlev_sub_nbr_meas; UWORD16 rxqual_full_acc_errors; UWORD16 rxqual_full_nbr_bits; UWORD16 rxqual_sub_acc_errors; UWORD16 rxqual_sub_nbr_bits; UWORD8 no_of_ncell_meas; T5_NCELL_MEAS ncell_meas; UWORD8 ba_id; UWORD8 timing_advance; UWORD8 txpwr_used; // RESERVED: for trace/debug only UWORD8 facch_dl_count; UWORD8 facch_ul_count; } T_MPHC_MEAS_REPORT; typedef T_NEW_BA_LIST T_MPHC_UPDATE_BA_LIST; typedef struct { UWORD8 bs_pa_mfrms; UWORD8 bs_ag_blks_res; BOOL bcch_combined; UWORD8 ccch_group; UWORD8 page_group; UWORD8 page_block_index; UWORD8 page_mode; } T_MPHC_START_CCCH_REQ; typedef struct { UWORD8 sb_flag; //TRUE if SB found and belongs to PLMN, otherwise FALSE UWORD16 radio_freq; // carrier id. UWORD8 bsic; // BSIC. UWORD32 fn_offset; // offset between fn of this NCELL and the SCELL fn. UWORD32 time_alignmt; // time alignment. } T_MPHC_NCELL_SB_READ; typedef T_FULL_LIST_MEAS T_MPHC_RXLEV_REQ; typedef T_FULL_LIST_MEAS T_L1C_VALID_MEAS_INFO; typedef T_MPHC_RXLEV_PERIODIC_IND T_L1C_RXLEV_PERIODIC_DONE; typedef struct { UWORD8 radio_band_config; // frequency band configuration: E-GSM, DCS, GSM/DCS, PCS } T_MPHC_INIT_L1_REQ; /****************************************************************/ /* Structure definition for Test <-> L1A messages */ /****************************************************************/ typedef struct { UWORD16 dsp_code_version; UWORD16 dsp_checksum; UWORD16 dsp_patch_version; UWORD16 mcu_tcs_program_release; UWORD16 mcu_tcs_official; UWORD16 mcu_tcs_internal; } T_TST_TEST_HW_CON; typedef struct { UWORD8 type; } T_L1_STATS_REQ; //////////////////// // Trace messages // //////////////////// #if ((TRACE_TYPE == 1) || (TRACE_TYPE == 4) || (TRACE_TYPE == 7)) #if (DSP_DEBUG_TRACE_ENABLE == 1) // DSP DEBUG buffer display typedef struct { UWORD16 size; UWORD32 fn; UWORD16 debug_time; UWORD16 patch_version; UWORD16 trace_level; API buffer[2]; // ANOTHER DEFINITION ??? } T_DSP_DEBUG_INFO; // DSP AMR trace typedef struct { UWORD16 size; UWORD32 fn; API buffer[2]; // ANOTHER DEFINITION ??? } T_DSP_AMR_DEBUG_INFO; #endif typedef struct { UWORD32 trace_config; UWORD32 rtt_cell_enable[8]; UWORD32 rtt_event; } T_TRACE_CONFIG_CHANGE; #if (L1_GPRS) // Packet transfer trace typedef struct { UWORD32 fn; UWORD8 rx_allocation; UWORD8 tx_allocation; BOOL blk_status; UWORD8 dl_cs_type; UWORD8 dl_status[4]; UWORD8 ul_status[8]; } T_CONDENSED_PDTCH_INFO; #endif typedef struct { UWORD8 debug_code; UWORD32 fn; UWORD32 tab[7]; } T_QUICK_TRACE; #endif #if ((TRACE_TYPE == 1) || (TRACE_TYPE == 4) || (TRACE_TYPE == 7)) typedef struct { UWORD8 debug_code; UWORD32 tab[8]; } T_TRACE_INFO; #endif #if (TRACE_TYPE==7) // CPU LOAD // Number of measurements before output to UART #define C_MESURE_DEPTH 13 /* * cpu : hisr cpu load in microseconds * cpu_access : lisr -> hisr begining cpu load in microseconds * fn : Frame number modulo 104 */ typedef struct { UWORD16 cpu; UWORD16 cpu_access; UWORD8 fn; BOOL valid; } T_MESURE; typedef struct { UWORD8 debug_code; T_MESURE tab[C_MESURE_DEPTH]; } T_TRACE_INFO_CPU_LOAD; #endif /****************************************************************/ /* Structure definition for POWER MANAGEMENt. */ /****************************************************************/ typedef struct { UWORD8 sleep_mode; UWORD16 clocks; } T_TST_SLEEP_REQ; // ...................NEW FOR ALR.................... typedef struct { UWORD8 schedule_array_size; T_BCCHS_SCHEDULE schedule_array[10]; } T_MPHC_SCELL_NBCCH_REQ; typedef struct { UWORD8 schedule_array_size; T_BCCHS_SCHEDULE schedule_array[10]; } T_MPHC_SCELL_EBCCH_REQ; typedef struct { UWORD16 radio_freq; UWORD32 fn_offset; UWORD32 time_alignmt; UWORD8 tsc; UWORD16 bcch_blks_req; #if L1_GPRS UWORD8 gprs_priority; #endif } T_MPHC_NCELL_BCCH_REQ; typedef struct { UWORD16 radio_freq; UWORD8 l2_channel; BOOL error_flag; T_RADIO_FRAME l2_frame; UWORD8 tc; WORD8 ccch_lev; UWORD32 fn; // L1S -> L1A data only UWORD8 neigh_id; } T_MPHC_DATA_IND; typedef T_MPHC_DATA_IND T_MPHC_NCELL_BCCH_IND; typedef T_MPHC_DATA_IND T_L1C_BCCHS_INFO; typedef T_MPHC_DATA_IND T_L1C_BCCHN_INFO; typedef struct { UWORD16 radio_freq; UWORD32 fn_offset; UWORD32 time_alignmt; UWORD8 timing_validity; UWORD8 search_mode; } T_MPHC_NETWORK_SYNC_REQ; typedef struct { UWORD16 radio_freq; BOOL sb_flag; UWORD32 fn_offset; UWORD32 time_alignmt; UWORD8 bsic; } T_MPHC_NETWORK_SYNC_IND; typedef struct { UWORD16 radio_freq; UWORD32 fn_offset; UWORD32 time_alignmt; UWORD8 timing_validity; } T_MPHC_NCELL_SYNC_REQ; #if (L1_12NEIGH ==1) typedef struct { UWORD8 eotd; UWORD8 list_size; T_MPHC_NCELL_SYNC_REQ ncell_list[NBR_NEIGHBOURS]; } T_MPHC_NCELL_LIST_SYNC_REQ; #endif typedef struct { UWORD16 radio_freq; BOOL sb_flag; // used to fill "data_valid" field for Cursor UWORD32 fn_offset; UWORD32 time_alignmt; UWORD8 bsic; // L1S -> L1A data only UWORD8 neigh_id; UWORD8 attempt; // RESERVED: for trace/debug and test mode only UWORD32 pm; UWORD32 toa; UWORD32 angle; UWORD32 snr; // EOTD data : L1S -> L1A #if (L1_EOTD==1) UWORD8 eotd_data_valid; // indicates to L3 that it's an EOTD result UWORD8 mode; // indicates to CURSOR that it's Idle(0) or Dedicated (1) WORD16 d_eotd_first; WORD16 d_eotd_max; UWORD32 d_eotd_nrj; WORD16 a_eotd_crosscor[18]; UWORD32 timetag; UWORD32 fn_sb_neigh; // used for Timetag computation UWORD32 fn_in_SB; // sent to CURSOR for SC fn (header=46 ...) // TOA correction for timetag in dedicated mode... WORD32 toa_correction; // for Debug traces ............ UWORD32 delta_fn; WORD32 delta_qbit; #endif } T_MPHC_NCELL_SYNC_IND; typedef T_MPHC_NCELL_SYNC_IND T_L1C_SB_INFO; typedef T_MPHC_NCELL_SYNC_IND T_L1C_SBCONF_INFO; typedef struct { UWORD16 radio_freq; UWORD32 fn_offset; UWORD32 time_alignmt; UWORD8 bsic; } T_MPHC_NEW_SCELL_REQ; typedef struct { BOOL fb_flag; WORD8 ntdma; UWORD8 neigh_id; #if (L1_12NEIGH ==1) // L1S --> L1A data only UWORD8 attempt; #endif // RESERVED: for Trace/Debug and test mode only UWORD32 pm; UWORD32 toa; UWORD32 angle; UWORD32 snr; UWORD16 radio_freq; } T_L1C_FB_INFO; typedef struct { WORD8 radio_freq_array_size; #if (L1_12NEIGH ==1) UWORD16 radio_freq_array[NBR_NEIGHBOURS]; #else UWORD16 radio_freq_array[6]; #endif } T_MPHC_STOP_NCELL_SYNC_REQ; typedef struct { UWORD8 radio_freq_array_size; UWORD16 radio_freq_array[6]; } T_MPHC_STOP_NCELL_BCCH_REQ; typedef struct { T_CHANNEL_DESCRIPTION cbch_desc; T_MOBILE_ALLOCATION cbch_freq_list; } T_MPHC_CONFIG_CBCH_REQ; typedef struct { BOOL extended_cbch; UWORD8 schedule_length; UWORD32 first_block_0; UWORD16 first_block_1; } T_MPHC_CBCH_SCHEDULE_REQ; typedef struct { UWORD8 tb_bitmap; } T_MPHC_CBCH_INFO_REQ; typedef struct { BOOL extended_cbch; UWORD32 first_block_0; UWORD16 first_block_1; } T_MPHC_CBCH_UPDATE_REQ; typedef struct { BOOL normal_cbch; BOOL extended_cbch; } T_MPHC_STOP_CBCH_REQ; // ...................NEW FOR ALR.................... /****************************************************************/ /* Structure definition for L1 configuration. */ /****************************************************************/ typedef struct { UWORD8 std; UWORD8 swap_iq_band1; UWORD8 swap_iq_band2; UWORD8 pwr_mngt; UWORD8 tx_pwr_code; UWORD16 dwnld; UWORD8 pwr_mngt_mode_authorized; UWORD32 pwr_mngt_clocks; } T_MMI_L1_CONFIG;