[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/protocol/layer4/l4/include/mbmsal_defs.h b/mcu/protocol/layer4/l4/include/mbmsal_defs.h
new file mode 100644
index 0000000..68eca4f
--- /dev/null
+++ b/mcu/protocol/layer4/l4/include/mbmsal_defs.h
@@ -0,0 +1,459 @@
+/*****************************************************************************
+* 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 */
+