[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/protocol/general/mspm_public_api.h b/mcu/interface/protocol/general/mspm_public_api.h
new file mode 100644
index 0000000..5ad32ae
--- /dev/null
+++ b/mcu/interface/protocol/general/mspm_public_api.h
@@ -0,0 +1,358 @@
+/******************************************************************************
+* 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) 2018
+*
+* 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).
+*
+*******************************************************************************/
+
+#ifndef MSPM_PUBLIC_STRUCT_H
+#define MSPM_PUBLIC_STRUCT_H
+
+#include "kal_public_defs.h"
+
+/********************************************
+ * MACROS *
+ ********************************************/
+#if !defined(__MTK_TARGET__) && !defined(__UE_SIMULATOR__)
+#ifndef MSPM_UT
+#define MSPM_UT
+#endif
+#endif
+
+#define MSPM_MAX_PRIORITY_LEVEL 32
+
+/********************************************
+ * TYPE DEFINITIONS & ENUMS *
+ ********************************************/
+typedef enum
+{
+ MSPM_PROC_ATTR_AS_CONNECTION,
+ MSPM_PROC_ATTR_C2K_AS_CONNECTION,
+ MSPM_PROC_ATTR_PRIORITY_CAN_CHANGE,
+ MSPM_PROC_ATTR_PREEMPTED_BY_PEER_NOT_ALLOWED,
+ MSPM_PROC_ATTR_OCCUPY_RF_IMMEDIATELY,
+ MSPM_PROC_ATTR_SUSPEND_PEER_SIM,
+ MSPM_PROC_ATTR_23G_NAS_PS_SIG,
+ MSPM_PROC_ATTR_MAX_NUM
+} mspm_procedure_attribute_enum;
+
+typedef enum
+{
+ MSPM_CELLULAR_EMERGENCY_CALL_SESSION,
+ MSPM_CELLULAR_CALL_SESSION,
+ MSPM_CELLULAR_CONNECTED_CALL_SESSION,
+ MSPM_CELLULAR_SRVCC_CALL_SESSION,
+ MSPM_VODATA_CALL_SESSION,
+ MSPM_VODATA_EMERGENCY_CALL_SESSION,
+ MSPM_IMS_CALL_ALT1,
+ MSPM_IMS_CALL_ALT2,
+ MSPM_BIP,
+ MSPM_CS_CALL,
+ MSPM_SMS,
+ MSPM_MMS,
+ MSPM_DDM_RETRY_FOR_SUSPEND,
+ MSPM_CISS,
+ MSPM_XCAP_SS,
+ MSPM_DATA_SIM,
+ MSPM_RSIM,
+ MSPM_PROTECT_NON_PS_REGISTRATION,
+ MSPM_AFR_SIM_PROTECT,
+ MSPM_1X_CS_CALL,
+ MSPM_IMS_SMS,
+ MSPM_IMS_C2K_SMS,
+ MSPM_IMS_STK_SMS,
+ MSPM_IMS_CMSS_SMS,
+ MSPM_IMS_UTK_SMS,
+ MSPM_IMS_RE_REG,
+ MSPM_IMS_REG_INITIAL,
+ MSPM_IMS_REG_INITIAL_LOW,
+ MSPM_IMS_SUBSCRIBE,
+ MSPM_IMS_USSD,
+ MSPM_IMS_CONF_SUBSCRIBE,
+ MSPM_IMS_MWI_SUBSCRIBE,
+ MSPM_IMS_CALLPULL_SUBSCRIBE,
+ MSPM_SM_ACT_PDP,
+ MSPM_SM_ACT_PDP_TOP,
+ MSPM_SM_ACT_PDP_RETRY,
+ MSPM_SM_MOD_PDP,
+ MSPM_SM_DEACT_PDP,
+ MSPM_SM_DEACT_PDP_RETRY,
+ MSPM_C2K_ACT_PDP,
+ MSPM_C2K_DEACT_PDP,
+ MSPM_C2K_HIGH_DATA,
+ MSPM_C2K_SMS,
+ MSPM_MM_LU,
+ MSPM_MM_IMSI_DETACH,
+ MSPM_MM_CSFB,
+ MSPM_MM_3G_CS_PAGING,
+ MSPM_MM_CS_SIG,
+ MSPM_MM_PS_SIG,
+ MSPM_GMM_ATTACH,
+ MSPM_GMM_ATTACH_POWER_ON,
+ MSPM_GMM_ATTACH_RETRANSMIT,
+ MSPM_GMM_ATTACH_NON_DATA_SIM,
+ MSPM_GMM_ATTACH_NON_DATA_SIM_LOW,
+ MSPM_AFR_CONN_PROTECT,
+ MSPM_GMM_DETACH,
+ MSPM_GMM_DETACH_POWER_OFF,
+ MSPM_GMM_RAU,
+ MSPM_GMM_RAU_DDS,
+ MSPM_GMM_RAU_RETRANSMIT,
+ MSPM_GMM_RAU_SYNC,
+ MSPM_GMM_RAU_NON_DATA_SIM,
+ MSPM_GMM_SERVICE,
+ MSPM_GMM_COMBINED_ATTACH,
+ MSPM_GMM_COMBINED_ATTACH_POWER_ON,
+ MSPM_GMM_COMBINED_DETACH,
+ MSPM_GMM_COMBINED_DETACH_POWER_OFF,
+ MSPM_GMM_COMBINED_RAU,
+ MSPM_ESM_ACT_PDN,
+ MSPM_ESM_ACT_PDN_IMS,
+ MSPM_ESM_ACT_PDN_EMC,
+ MSPM_ESM_ACT_BEARER,
+ MSPM_ESM_MOD_BEARER,
+ MSPM_ESM_DEACT_PDN,
+ MSPM_ESM_IMS_DED,
+ MSPM_EMM_ATTACH,
+ MSPM_EMM_DETACH,
+ MSPM_EMM_DETACH_POWER_OFF,
+ MSPM_EMM_DETACH_RSIM,
+ MSPM_EMM_TAU,
+ MSPM_EMM_TAU_IRAT,
+ MSPM_EMM_TAU_DRB,
+ MSPM_EMM_TAU_RSIM,
+ MSPM_EMM_TAU_RETRY,
+ MSPM_EMM_TAU_CSFB,
+ MSPM_EMM_TAU_AFR_NR,
+ MSPM_EMM_SERVICE,
+ MSPM_EMM_SERVICE_RSIM,
+ MSPM_EMM_EXT_SERVICE,
+ MSPM_EMM_PS_PAGING,
+ MSPM_EMM_SMC,
+ MSPM_5G_AS_CONNECTION,
+ MSPM_5G_AS_INACTIVE,
+ MSPM_5G_AS_RNA_UPDATE,
+ MSPM_4G_AS_CONNECTION,
+ MSPM_4G_AS_CONNECTION_ABORT,
+ MSPM_4G_AS_RECONFIG_DURING,
+ MSPM_3G_AS_CONNECTION,
+ MSPM_3G_AS_PCH,
+ MSPM_2G_AS_CONNECTION_CS,
+ MSPM_2G_AS_CONNECTION_PS,
+ MSPM_C1X_AS_CONNECTION_CS,
+ MSPM_C1X_AS_CONNECTION_SRLTE_ENHAN,
+ MSPM_C1X_AS_CONNECTION_PS,
+ MSPM_CDO_AS_CONNECTION_PS,
+ MSPM_CDO_AS_CONNECTION_HPS,
+ MSPM_VGSM_EST_EMERGENCY_PDU_SESSION,
+ MSPM_VGSM_EST_IMS_PDU_SESSION,
+ MSPM_VGSM_EST_PDUS,
+ MSPM_VGSM_MOD_PDUS,
+ MSPM_VGSM_REL_PDUS,
+ MSPM_VGSM_CONN_REQ,
+ MSPM_VGMM_REG,
+ MSPM_VGMM_DEREG,
+ MSPM_VGMM_DEREG_POWER_OFF,
+ MSPM_VGMM_REG_UPDATE,
+ MSPM_VGMM_REG_UPDATE_IRAT,
+ MSPM_VGMM_REG_UPDATE_UP,
+ MSPM_VGMM_SERVICE,
+ MSPM_VGMM_PS_PAGING,
+ MSPM_VGMM_PS_PAGING_NON_PREEMPTED,
+ MSPM_VGMM_PAGING_DRB,
+ MSPM_VGMM_IRAT_PROTECT,
+ MSPM_ERRC_TEST_RFDB_CHECK,
+ MSPM_ERRC_CONFIG_RFDB_CHECK,
+ MSPM_NRRC_TEST_RFDB_CHECK,
+ MSPM_NRRC_CONFIG_RFDB_CHECK,
+ MSPM_EL1_RFDB_CONFIG,
+ MSPM_NL1_RFDB_CONFIG,
+ MSPM_MT_SGS_SMS,
+ MSPM_MT_IMS_SMS,
+ MSPM_GEMINI_ABORT_4G_PROTECT,
+ MSPM_NRRC_ODSI_RA_HIGH,
+ MSPM_NRRC_ODSI_RA_LOW,
+ MSPM_PRE_GEMINI_ABORT,
+ MSPM_IMSM_ACT,
+ MSPM_ERRC_NR_GAPLESS_SFTD,
+ MSPM_NFR_PROTECT,
+ MSPM_OTTAPP_VV_TOP,
+ MSPM_LPP_POS_MEAS_MEM_SHARE,
+ MSPM_N3GPP_ACT_PDN,
+ MSPM_N3GPP_ACT_PDN_IMS,
+ MSPM_N3GPP_ACT_PDN_EMC,
+ MSPM_N3GPP_IKEV2_EXCHANGE,
+ MSPM_PROCEDURE_ENUM_NUM
+} mspm_procedure_enum;
+
+typedef enum
+{
+ MSPM_SIM1 = 0,
+ MSPM_SIM2 = 1,
+ MSPM_SIM3 = 2,
+ MSPM_SIM4 = 3,
+ MSPM_SIM_NONE = 0xFF
+} mspm_sim_index_enum;
+
+typedef enum
+{
+ MSPM_VC_CAUSE_NONE,
+ MSPM_VC_CAUSE_SRLTE,
+ MSPM_VC_CAUSE_RSIM,
+ MSPM_VC_CAUSE_SIGNALING
+} mspm_vc_cause_enum;
+
+// MSG_ID_MSPM_SESSION_START_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+ mspm_sim_index_enum sim_index; // sim_index in current module
+ mspm_procedure_enum procedure; // procedure to be started
+ kal_bool is_block_waiting; // TRUE : Source module will wait CNF message with result success for "wait_time" seconds
+ // False : MSPM will reply the request immediately no matter success or fail CNF
+ kal_uint32 wait_time; // "wait_time" seconds for "wait_time">0. In case "wait_time" = 0, it means infinitely wait
+} mspm_session_start_req_struct;
+
+// MSG_ID_MSPM_SESSION_START_CNF
+typedef struct
+{
+ LOCAL_PARA_HDR
+ mspm_procedure_enum procedure;
+ kal_bool result; // TRUE : success; FALSE : fail
+} mspm_session_start_cnf_struct;
+
+// MSG_ID_MSPM_SESSION_START_NTF
+typedef struct
+{
+ LOCAL_PARA_HDR
+ mspm_sim_index_enum sim_index;
+ mspm_procedure_enum procedure;
+} mspm_session_start_ntf_struct;
+
+// MSG_ID_MSPM_SESSION_END_NTF
+typedef struct
+{
+ LOCAL_PARA_HDR
+ mspm_sim_index_enum sim_index;
+ mspm_procedure_enum procedure;
+ kal_bool is_extend_timer_disable;
+} mspm_session_end_ntf_struct;
+
+// MSG_ID_MSPM_AS_SESSION_START_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+ mspm_sim_index_enum sim_index;
+ mspm_procedure_enum procedure;
+ kal_uint32 mspm_ack_id; // 0: from primitive, none 0: from callback function
+} mspm_as_session_start_req_struct;
+
+// MSG_ID_MSPM_AS_SESSION_START_CNF
+typedef struct
+{
+ LOCAL_PARA_HDR
+ mspm_procedure_enum procedure;
+ kal_bool result;
+} mspm_as_session_start_cnf_struct;
+
+// MSG_ID_MSPM_AS_SESSION_END_NTF
+typedef struct
+{
+ LOCAL_PARA_HDR
+ mspm_sim_index_enum sim_index;
+ mspm_procedure_enum procedure;
+ kal_uint32 mspm_ack_id; // 0: from primitive, none 0: from callback function
+} mspm_as_session_end_ntf_struct;
+
+// MSG_ID_MSPM_RF_OWNER_CHANGE_NTF
+typedef struct
+{
+ LOCAL_PARA_HDR
+ mspm_sim_index_enum rf_owner;
+} mspm_rf_owner_change_ntf_struct;
+
+// MSG_ID_MSPM_RF_OWNER_PRIORITY_CHANGE_NTF
+typedef struct
+{
+ LOCAL_PARA_HDR
+ mspm_sim_index_enum rf_owner;
+ kal_uint8 priority;
+} mspm_rf_owner_priority_change_ntf_struct;
+
+// MSG_ID_MSPM_AS_LEAVE_VC_SUSPEND_REQ
+typedef struct
+{
+ LOCAL_PARA_HDR
+ mspm_sim_index_enum sim_index;
+} mspm_as_leave_vc_suspend_req_struct;
+
+// MSG_ID_MSPM_XL1_DR_STATUS_IND
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_bool is_dr_enable;
+} mspm_xl1_dr_status_ind_struct;
+/********************************************
+ * VARIABLES *
+ ********************************************/
+
+/********************************************
+ * FUNCTION DECLARATIONS *
+ ********************************************/
+extern kal_bool mspm_as_session_start_request(mspm_sim_index_enum sim_index, module_type mod_src, mspm_procedure_enum procedure);
+extern void mspm_as_session_end_ntf(mspm_sim_index_enum sim_index, module_type mod_src, mspm_procedure_enum procedure);
+
+extern mspm_sim_index_enum mspm_query_rf_owner(void);
+extern kal_bool mspm_is_this_sim_rf_owner(mspm_sim_index_enum sim_index);
+extern kal_uint8 mspm_query_sim_priority(mspm_sim_index_enum sim_index);
+extern kal_bool mspm_is_proc_ongoing(mspm_sim_index_enum sim_index, mspm_procedure_enum procedure);
+extern kal_uint8 mspm_query_proc_priority(mspm_procedure_enum procedure);
+extern kal_uint8 mspm_query_num_of_ongoing_proc(mspm_sim_index_enum sim_index);
+extern mspm_sim_index_enum mspm_query_sim_index_with_highest_ongoing_proc(mspm_sim_index_enum current_sim_index);
+extern kal_uint8 mspm_query_ongoing_proc_num_with_attr(mspm_sim_index_enum sim_index, mspm_procedure_attribute_enum proc_attr);
+extern kal_uint8 mspm_query_ongoing_as_session_num(mspm_sim_index_enum sim_index);
+extern kal_bool mspm_query_proc_attr(mspm_procedure_enum procedure, mspm_procedure_attribute_enum proc_attr);
+extern kal_bool mspm_is_any_peer_sim_proc_ongoing(mspm_sim_index_enum current_sim_index, mspm_procedure_enum procedure);
+extern kal_bool mspm_is_current_sim_occupy_rf_possible(mspm_sim_index_enum current_sim_index);
+extern kal_bool mspm_is_peer_sim_in_connected(mspm_sim_index_enum current_sim_index);
+extern mspm_vc_cause_enum mspm_query_vc_cause(mspm_sim_index_enum current_sim_index);
+extern kal_bool mspm_is_this_sim_in_vc(mspm_sim_index_enum sim_index);
+extern kal_bool mspm_is_peer_sim_in_nr_connected(mspm_sim_index_enum current_sim_index);
+
+#ifdef MSPM_UT
+void mspm_ut_set_rf_owner(mspm_sim_index_enum sim_index);
+void mspm_ut_set_sim_priority(mspm_sim_index_enum sim_index, kal_uint32 priority);
+void mspm_ut_reset(void);
+void mspm_ut_set_non_as_session_status(mspm_sim_index_enum sim_index, mspm_procedure_enum procedure, kal_bool is_ongoing);
+#endif
+
+#endif /* MSPM_PUBLIC_STRUCT_H */
+