| /***************************************************************************** |
| * Copyright Statement: |
| * -------------------- |
| * This software is protected by Copyright and the information contained |
| * herein is confidential. The software may not be copied and the information |
| * contained herein may not be used or disclosed except with the written |
| * permission of MediaTek Inc. (C) 2014 |
| * |
| * BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES |
| * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") |
| * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON |
| * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, |
| * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF |
| * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. |
| * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE |
| * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR |
| * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH |
| * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO |
| * NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S |
| * SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM. |
| * |
| * BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE |
| * LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE, |
| * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE, |
| * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO |
| * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. |
| * |
| * THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE |
| * WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF |
| * LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND |
| * RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER |
| * THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC). |
| * |
| *****************************************************************************/ |
| |
| /***************************************************************************** |
| * |
| * Filename: |
| * --------- |
| * mbmsal_defs.h |
| * |
| * Project: |
| * -------- |
| * UMOLY |
| * |
| * Description: |
| * ------------ |
| * The common header files in MBMSAL sub-module. |
| * |
| * Author: |
| * ------- |
| * ------- |
| * |
| ****************************************************************************/ |
| |
| /****************************************************************************/ |
| /*! @file mbmsal_defs.h |
| @author Stan Chen |
| @date 11 JUL 2014 |
| |
| @brief The common header file in MBMSAL sub-module. |
| |
| The header file is used by all components in MBMSAL, even in l4c_mbms and |
| rmmi_mbms. Common macros, constant definitions and structure prototypes |
| are placed here. |
| */ |
| /****************************************************************************/ |
| |
| #ifndef _MBMSAL_DEFS_H |
| #define _MBMSAL_DEFS_H |
| /****************************************************************************/ |
| |
| #include "kal_public_api.h" |
| |
| #include "mcd_l3_inc_struct.h" |
| #include "mbmsal_errc_struct.h" |
| #include "l4c_common_enum.h" |
| #include "ps_public_utility.h" |
| #include "l3_inc_enums.h" |
| |
| /**************************************************************************** |
| * Definitions |
| ****************************************************************************/ |
| |
| #define MBMSAL_ASSERT ASSERT |
| #define MBMSAL_DBG_ASSERT DEBUG_ASSERT |
| |
| #define MBMSAL_FORCE_OUTPUT KAL_TRUE |
| |
| #define MBMSAL_ERRC_NOCHANGE 0xFF |
| |
| #define MBMSAL_ERRC_INVALID8 0xFF |
| #define MBMSAL_ERRC_INVALID16 0xFFFF |
| |
| #define MBMSAL_RMMI_MAX_UART_LEN (1024) |
| |
| #define MBMSAL_DEACT_CAUSE_NORMAL (0) |
| #define MBMSAL_DEACT_CAUSE_ACTFAIL (1) |
| #define MBMSAL_DEACT_CAUSE_SESSIONLOST (2) |
| #define MBMSAL_DEACT_CAUSE_NONMBMSAREA (3) |
| #define MBMSAL_DEACT_CAUSE_LEAVELTE (4) |
| |
| /* Subcause for activation failed */ |
| #define MBMSAL_ACT_FAIL_CAUSE_RESERVED (0) |
| #define MBMSAL_ACT_FAIL_CAUSE_UNKNOWN (1) |
| #define MBMSAL_ACT_FAIL_CAUSE_ALREADY_DONE (2) |
| #define MBMSAL_ACT_FAIL_CAUSE_SERVICE_DISABLED (3) |
| #define MBMSAL_ACT_FAIL_CAUSE_MISSING_CONTROL_INFO (4) |
| #define MBMSAL_ACT_FAIL_CAUSE_MISSING_TMGI (5) |
| #define MBMSAL_ACT_FAIL_CAUSE_MISSING_OOC (6) |
| #define MBMSAL_ACT_FAIL_CAUSE_MISSING_OOS (7) |
| #define MBMSAL_ACT_FAIL_CAUSE_FREQUENCY_CONFLICT (8) |
| #define MBMSAL_ACT_FAIL_CAUSE_MAXIMUM_SESSIONS (9) |
| |
| #ifdef MBMS_CONFIG_INFO_SERVICE_NUM |
| #if MBMS_CONFIG_INFO_SERVICE_NUM > 32 |
| #error MBMSAL cannot handle MBMS_CONFIG_INFO_SERVICE_NUM larger than 32. |
| #endif |
| #endif |
| |
| #define MBMSAL_MAX_LTEBAND (64) |
| |
| #define MBMSAL_TST_AUTO_RESUME_MAX_SESSION (16) |
| |
| #define MBMSAL_EMSLU_MAX_SESSION_NUM (MBMS_CONFIG_INFO_SERVICE_NUM * 3) |
| |
| #define MBMSAL_SIM_DEFAULT (0xFF) |
| |
| #ifdef __GEMINI_LTE__ |
| #define MBMSAL_MAX_SIM_NUM (2) |
| #else |
| #define MBMSAL_MAX_SIM_NUM (1) |
| #endif |
| |
| #define MBMSAL_PS_DEFAULT (0xFF) |
| |
| /**************************************************************************** |
| * Macro |
| ****************************************************************************/ |
| |
| #define MBMSAL_BCD_DECODE(_n) (((_n) & 0x0F) * 10 + ((_n) >> 4)) |
| |
| /**************************************************************************** |
| * Type definitions |
| ****************************************************************************/ |
| |
| typedef enum |
| { |
| MBMSAL_PCELL, |
| MBMSAL_SCELL, |
| } mbmsal_cell_type; |
| |
| typedef enum |
| { |
| MBMSAL_ACTION_SEND_EMSAIL_URC, |
| MBMSAL_ACTION_SEND_EMFRQ_URC, |
| MBMSAL_ACTION_SEND_EMSRV_URC, |
| MBMSAL_ACTION_SEND_EMSLU_URC, |
| MBMSAL_ACTION_SEND_EMSESS_URC, |
| } mbmsal_action_type; |
| |
| typedef enum |
| { |
| MBMSAL_COVERAGE_NO_SERVICE, |
| MBMSAL_COVERAGE_IN_LTE, |
| MBMSAL_COVERAGE_IN_MBMS, |
| MBMSAL_COVERAGE_IN_E911, |
| MBMSAL_COVERAGE_IN_SRLTE, |
| MBMSAL_COVERAGE_IN_FLIGHT_MODE, |
| MBMSAL_COVERAGE_IN_GEMINI_SUSPEND, |
| MBMSAL_COVERAGE_IN_GEMINI_VIRTUAL_SUSPEND |
| } mbmsal_coverage_enum; |
| |
| typedef enum |
| { |
| MBMSAL_EVENT_SCENARIO_NONE, |
| MBMSAL_EVENT_SCENARIO_E911, |
| MBMSAL_EVENT_SCENARIO_SRLTE, |
| } mbmsal_event_scenario_enum; |
| |
| typedef enum |
| { |
| MBMSAL_EVENT_STATUS_END, |
| MBMSAL_EVENT_STATUS_BEGIN, |
| } mbmsal_event_status_enum; |
| |
| typedef enum |
| { |
| MBMSAL_EMTSI_TYPE_NONE, |
| MBMSAL_EMTSI_TYPE_SIB16, |
| MBMSAL_EMTSI_TYPE_NITZ, |
| } mbmsal_emtsi_type_enum; |
| |
| typedef enum |
| { |
| MBMSAL_EMSESSCFG_INDEX_NONE = 0, |
| MBMSAL_EMSESSCFG_INDEX_TMGI_SEARCH_TIME = 1, |
| MBMSAL_EMSESSCFG_INDEX_INVALID, |
| } mbmsal_emsesscfg_index_enum; |
| |
| typedef struct _mbmsal_tst_info |
| { |
| struct { |
| kal_bool isEnabled; |
| kal_uint8 last_index; |
| kal_uint8 num; |
| struct mbmsal_tst_resume_servsess_info { |
| tmgi_struct tmgi; |
| kal_uint16 sess_id; /* 0xffff = invalid */ |
| kal_bool additional_info_valid; |
| struct { |
| kal_uint8 num_of_earfcn; |
| kal_uint32 earfcn[MBMS_SERVSESS_INFO_EARFCN_NUM]; |
| kal_uint8 num_of_sai; |
| kal_uint16 sai[MBMS_SERVSESS_INFO_SAI_NUM]; |
| } additional_info; |
| } servsess_info[MBMSAL_TST_AUTO_RESUME_MAX_SESSION]; |
| } auto_resume; |
| } mbmsal_tst_info; |
| |
| typedef struct _mbmsal_gtest_fp |
| { |
| kal_bool (*msg_send5)(module_type _src_mod_id, module_type _dest_mod_id, |
| sap_type _sap_id, msg_type _msg_id, |
| local_para_struct *_local_para_ptr); |
| |
| void (*rmmi_write_to_uart)(kal_uint8 *buffer, kal_uint16 length, |
| kal_bool stuff); |
| void (*rmmi_final_rsp_generator)(kal_bool ret_val, kal_uint8 *buffer, |
| kal_uint16 string_length); |
| |
| kal_bool (*sbp_query_md_feature)(sbp_md_feature_enum feature); |
| kal_uint32 (*kal_get_systicks)(void); |
| rat_enum (*get_rat_mode)(void); |
| rat_enum (*get_request_rat_mode)(void); |
| |
| void (*query_LteBand)(kal_uint32 lte_band[]); |
| |
| } mbmsal_gtest_fp; |
| |
| /****************************************************************************/ |
| |
| typedef struct _mbms_config_req_info |
| { |
| kal_bool isValid; |
| mbmsal_errc_mbms_config_req_struct info; |
| } mbms_config_req_info; |
| |
| typedef struct _mbms_sib13_servsess_info |
| { |
| tmgi_struct tmgi; |
| kal_uint16 sess_id; /* 0xffff = invalid */ |
| kal_bool status; |
| } mbms_sib13_servsess_info; |
| |
| typedef struct _mbms_sib13_mbsfn_mch_info { |
| kal_bool isValid; |
| kal_uint8 mbsfn_area_id; |
| kal_uint16 servsess_count; |
| mbms_sib13_servsess_info servsess_info[MBMS_CONFIG_INFO_MCH_NUM * MBMS_CONFIG_INFO_SERVICE_NUM]; |
| } mbms_sib13_mbsfn_mch_info; |
| |
| typedef struct _mbms_service_info |
| { |
| kal_uint8 validity; |
| |
| kal_bool isEmsrvOn; |
| kal_bool isEmfrqOn; |
| kal_bool isEmsluOn; |
| |
| mbmsal_errc_mbms_status_enum coverage_status; |
| kal_bool serving_earfcn_valid[ERRC_MBMS_MAX_CELL_NUM]; |
| kal_uint32 serving_earfcn[ERRC_MBMS_MAX_CELL_NUM]; |
| |
| kal_uint8 num_of_mbsfn_area_id[ERRC_MBMS_MAX_CELL_NUM]; |
| kal_uint8 mbsfn_area_id[ERRC_MBMS_MAX_CELL_NUM][MBMS_SERVICE_STATUS_MBSFN_AREA_NUM]; |
| |
| mbms_sib13_mbsfn_mch_info mbsfn_mch_info[ERRC_MBMS_MAX_CELL_NUM][MBMS_SERVICE_STATUS_MBSFN_AREA_NUM]; |
| } mbms_sib13_info; |
| |
| typedef struct _mbms_sib15_info |
| { |
| kal_bool isValid; |
| kal_bool isEmsailOn; |
| mbmsal_errc_mbms_sib15_ind_struct info; |
| |
| /* Support to Band 256 */ |
| kal_uint32 lte_band[8]; |
| } mbms_sib15_info; |
| |
| typedef struct _mbms_sib16_info |
| { |
| kal_bool isValid; |
| mbmsal_errc_mbms_sib16_ind_struct info; |
| } mbms_sib16_info; |
| |
| typedef struct _mbms_nw_time_info |
| { |
| kal_bool time_zone_valid; |
| nw_time_zone_time_struct time_zone; |
| |
| kal_bool daylight_saving_time_valid; |
| kal_uint8 daylight_saving_time; |
| } mbms_nw_time_info; |
| |
| typedef struct _mbms_servsess_info |
| { |
| kal_bool isValid; |
| |
| kal_bool act_servsess_valid; |
| struct { |
| kal_bool valid; |
| tmgi_struct tmgi; |
| kal_uint16 sess_id; /* 0xffff = invalid */ |
| } act_servsess[MBMS_SERVSESS_STATUS_SERVICE_NUM]; |
| |
| kal_uint8 report_servsess_total; |
| kal_uint8 report_servsess_index; |
| |
| kal_bool report_servsess_activated; |
| kal_uint8 report_servsess_cause; |
| kal_uint8 report_servsess_subcause; |
| struct { |
| tmgi_struct tmgi; |
| kal_uint16 sess_id; /* 0xffff = invalid */ |
| } report_servsess; |
| |
| } mbms_servsess_info; |
| |
| typedef struct _mbms_signal_info |
| { |
| kal_bool isValid; |
| mbmsal_errc_mbms_info_ind_struct info; |
| } mbms_signal_info; |
| |
| typedef struct _mbms_binding_info |
| { |
| kal_uint8 embind_src_id; /*!< store l4c src id under embind |
| procedure */ |
| kal_bool isEnabled; |
| l4c_tcm_l2p_enum l2p_type; |
| kal_uint32 channel_id; |
| kal_uint32 netif_id; |
| kal_uint8 bind_ps; |
| } mbms_binding_info; |
| |
| typedef struct _mbmsal_config_para |
| { |
| kal_uint32 out_mbms_hysteresis_period; |
| kal_uint32 out_sess_hysteresis_period; |
| kal_uint32 in_mbms_hysteresis_period; |
| |
| } mbmsal_config_para; |
| |
| typedef struct _mbmsal_event_para |
| { |
| mbmsal_event_scenario_enum scenario; |
| mbmsal_event_status_enum status; |
| } mbmsal_event_para; |
| |
| typedef struct _mbmsal_emslu_data |
| { |
| kal_uint32 total_servsess; |
| kal_uint8 *p_data; |
| } mbmsal_emslu_data; |
| |
| typedef struct _mbmsal_emsesscfg_para |
| { |
| kal_uint32 index; |
| kal_uint32 para_1; |
| } mbmsal_emsesscfg_para; |
| |
| typedef struct _mbmsal_context |
| { |
| kal_uint8 sim_current; |
| kal_uint8 sim_ongoing; |
| |
| // MBMSAL configurations |
| kal_uint16 id; /*!< context ID */ |
| |
| kal_bool gtest_isOn; /*!< gtest flag */ |
| mbmsal_gtest_fp *gtest_fp; /*!< gtest function pointers */ |
| |
| // MBMSAL instances |
| mbms_binding_info info_binding; /*!< cache hif binding info from |
| TE */ |
| |
| mbms_config_req_info info_config_req;/*!< cache config request from |
| TE */ |
| mbms_servsess_info info_servsess; /*!< cache session status from |
| eRRC */ |
| mbms_sib13_info info_sib13; /*!< cache sib13 info from eRRC */ |
| mbms_sib15_info info_sib15; /*!< cache sib15 info from eRRC */ |
| mbms_sib16_info info_sib16; /*!< cache sib16 info from eRRC */ |
| mbms_nw_time_info info_nw_time; /*!< cache NW time info from L4C */ |
| |
| // VZW: Configuration Parameters |
| mbmsal_config_para para_config; |
| |
| // AT+EMEVT related |
| mbmsal_event_para para_event; |
| |
| // MBMSAL tst related |
| mbmsal_tst_info info_tst; |
| |
| mbmsal_coverage_enum last_mbms_status; |
| kal_uint32 last_frq[ERRC_MBMS_MAX_CELL_NUM + 1]; |
| mbmsal_emslu_data last_emslu_data; |
| |
| // SIM cfun states updated by L4 |
| kal_uint8 mbmsal_cfun_state[MBMSAL_MAX_SIM_NUM]; |
| |
| // For NITZ elapse time calculation |
| kal_uint32 mbmsal_systicks; |
| |
| // For TC10 Signal strength report |
| mbms_signal_info info_signal; |
| |
| } mbmsal_context; |
| |
| typedef struct _mbmsal_internal_ind |
| { |
| LOCAL_PARA_HDR |
| |
| mbmsal_action_type action; |
| mbms_servsess_info info; |
| kal_bool force_report; |
| } mbmsal_internal_ind_struct; |
| |
| /**************************************************************************** |
| * Macros |
| ****************************************************************************/ |
| |
| /*#define mbmsal_trace(...) kal_brief_trace(__VA_ARGS__)*/ |
| |
| #ifndef __GTEST_ENABLE__ |
| #define mbmsal_mem_alloc(size) get_ctrl_buffer(size) |
| #define mbmsal_mem_free(ptr) free_ctrl_buffer(ptr) |
| #else |
| #define mbmsal_mem_alloc(size) mbmsal_tst_mem_alloc(size) |
| #define mbmsal_mem_free(ptr) mbmsal_tst_mem_free(ptr) |
| |
| extern void* mbmsal_tst_mem_alloc(kal_uint32 size); |
| extern void mbmsal_tst_mem_free(void *buf); |
| #endif |
| |
| /**************************************************************************** |
| * Unit Test |
| ****************************************************************************/ |
| |
| #ifdef __GTEST_ENABLE__ |
| #define STATIC |
| #else |
| #define STATIC static |
| #endif |
| |
| /****************************************************************************/ |
| #endif /* _MBMSAL_DEFS_H */ |
| |