| /***************************************************************************** |
| * 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) 2012 |
| * |
| * 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: |
| * --------- |
| * mm_emm_struct.h |
| * |
| * Project: |
| * -------- |
| * MOLY |
| * |
| * Description: |
| * ------------ |
| * message and common structure definition between MM and EMM module |
| * |
| * Author: |
| * ------- |
| * ------- |
| * |
| * ========================================================================== |
| * $Log$ |
| * |
| * 01 28 2022 ashutosh.gadre |
| * [MOLY00729137] [MT6873][Margaux][Q0][R3][JAPAN][DOCOMO][SS][LiveNW][B-3-1] It takes a time to show an error message of OOS when invalid USSD code is input under no 3G subscription condition. |
| * |
| * 11 04 2020 chengyu.chen |
| * [MOLY00562485] ¤âÉ󴡤J?¦³¡§´L·qªº¥Î?¡A?ªï±z¨Ï¥Î¤¤??³q¡¨?®ØªºSIM¥d¡AµnÊI¦¨¥\¦Z¤£?¥X?ªï´£¥Ü? |
| * [NR15.R3.MP][MPD][In V-List] SIM Context Pop-out |
| * |
| * 12 05 2019 sonu.akhand |
| * [MOLY00460960] [GEN97]T3346 handling between GMM and VGMM |
| * |
| * MM T3346 |
| * |
| * 08 14 2019 chengyu.chen |
| * [MOLY00423643] [Gen97][EMM] Code sync from UMOLYE/UMOLYA to VMOLY |
| * [Code Sync] 7977435 + 7977420 + emm uniontag problem |
| * |
| * 04 25 2019 chengyu.chen |
| * [MOLY00401516][Gen97][MPD] Support Approving for CSFB call (MOLY00371004, MOLY00374905, MOLY00392753) |
| * |
| * 08 17 2018 chinte.chen |
| * [MOLY00306148] [NAS] pangu giant CR |
| * patch back 6138126. |
| * |
| * 08 16 2017 kelly.lo |
| * [MOLY00271307] [LR12 sync][copy MOLY00262660][VzW CDMA-less][Pre-IT] 2.3.26.2 EMM 10 Error string: ## BASE ## Ping resulted in failure, still continue the scenario.. !! |
| * |
| * new emm_sr_type_enum and add sr type item in update_reg/dereg_ind |
| * |
| * 01 17 2017 kelly.lo |
| * [MOLY00224986] [MT6293][R13 DoS] rename MARCO and ENUM |
| * |
| * rename MAX_UE_IMPLEMENTATION_SPECIFIC_VALUE to DOS_ENHANCEMENT_MAX_RETRY_VALUE and integ_protect_status to integ_protect_status_enum |
| * |
| * 09 26 2016 sh.yeh |
| * [MOLY00205082] EMM_REG merge from UMOLYA-PS-DEV to UMOLYA |
| * sync MOLY187316 CL2614331, MOLY00141896 CL2648845. |
| * |
| * 01 12 2016 ivan.chung |
| * [MOLY00155565] [MT6755][VzW] Replace __SS_TIME_READY__ to __SUPPORT_CLIB_TIME__ |
| * |
| * 08 25 2015 kinki.lin |
| * . (non-secure domain) merge MOLY00119733 |
| * |
| * 11 10 2014 robert.wu |
| * [MOLY00083874] [UMOLY][R10][R11] EMM MTC sync code from 6291_DEV to UMOLY trunk |
| * |
| * 07 07 2014 lt.chang |
| * [MOLY00071459] Add Mobility Management for IMS Voice Termination |
| * . emm interface & mm to emm struct |
| * |
| * 04 21 2014 raymond.chen |
| * [MOLY00062966] [SGLTE] Modify the usage of mm_emm_peer_lr_result_ind message to avoid possible R+E PLMN list unsync between MD1 and MD2 |
| * Fix the build error due to typo |
| * |
| * 04 21 2014 raymond.chen |
| * [MOLY00062966] [SGLTE] Modify the usage of mm_emm_peer_lr_result_ind message to avoid possible R+E PLMN list unsync between MD1 and MD2 |
| * Separate the eplmn update usage of mm_emm_peer_lr_result_ind_struct (From EMM to 2G) from procedure update. |
| * |
| * 10 18 2013 raymond.chen |
| * [MOLY00041595] [MT6290E1][MMDS_DC] MMDC feature patch back to MOLY trunk |
| * Correct type of peer_lr_result and ref_count/msg_len for mm_emm_peer_lr_result_req/ind_struct. |
| * |
| * 09 04 2013 loter.chang |
| * [MOLY00035044] [EMM] RATCHG, SEC, CMNPROC Enhancement and Trace Modification |
| * - Add tin value into initial NAS context transfer |
| * |
| * 07 24 2013 shaowu.huang |
| * [MOLY00031020] [MMDS_DC] Merge MMDC interface to MOLY |
| * NAS REJECT CAUSE interface, MM<->EMM,MM<->NWSEL,MM<->MM. |
| * |
| * 05 22 2013 loter.chang |
| * [MOLY00021705] [EMM][Design Change] Revision and Enhancement |
| * add UE mode to EMM/MM interface |
| * |
| * 03 25 2013 loter.chang |
| * [MOLY00011934] LTE MM IT CBr merge to MOLY |
| * add TMSI to mm_emm_init_nas_ctxt_rsp_struct |
| * |
| ****************************************************************************/ |
| |
| |
| #ifndef MM_EMM_STRUCT_INC |
| #define MM_EMM_STRUCT_INC |
| |
| #include "l3_inc_local.h" |
| #include "l3_inc_enums.h" |
| #include "irat_common_struct.h" |
| |
| /***** message structure definition *****/ |
| // MSG_ID_MM_EMM_INIT_NAS_CTXT_IND |
| typedef struct |
| { |
| LOCAL_PARA_HDR |
| kal_bool is_mapped_ptmsi_present; |
| kal_uint8 mapped_ptmsi[PTMSI_LEN]; |
| kal_bool is_mapped_ptmsi_sig_present; |
| kal_uint8 mapped_ptmsi_sig[PTMSI_SIG_LEN]; |
| kal_bool is_mapped_rai_present; |
| rai_struct mapped_rai; |
| tin_enum tin; |
| }mm_emm_init_nas_ctxt_ind_struct; |
| |
| // MSG_ID_MM_EMM_INIT_NAS_CTXT_RSP |
| typedef struct |
| { |
| LOCAL_PARA_HDR |
| mm_emm_tmsi_status_enum is_tmsi_valid; |
| kal_uint8 tmsi[TMSI_LEN]; |
| kal_bool is_ptmsi_valid; |
| kal_uint8 ptmsi[PTMSI_LEN]; |
| kal_bool is_ptmsi_sig_valid; |
| kal_uint8 ptmsi_sig[PTMSI_SIG_LEN]; |
| kal_bool is_rai_valid; |
| rai_struct rai; |
| kal_bool is_mm_update_status_valid; |
| gsm_update_status_enum mm_update_status; |
| kal_bool is_lai_valid; |
| lai_struct lai; |
| }mm_emm_init_nas_ctxt_rsp_struct; |
| |
| // MSG_ID_MM_EMM_EMM_NAS_CTXT_TRANSFER_REQ |
| typedef struct |
| { |
| LOCAL_PARA_HDR |
| emm2mm_irat_info_struct emm_info; |
| }mm_emm_emm_nas_ctxt_transfer_req_struct; |
| |
| // MSG_ID_MM_EMM_MM_NAS_CTXT_TRANSFER_REQ |
| typedef struct |
| { |
| LOCAL_PARA_HDR |
| mm2emm_irat_info_struct mm_info; |
| }mm_emm_mm_nas_ctxt_transfer_req_struct; |
| |
| |
| // MSG_ID_MM_EMM_ISR_UPDATE_REQ |
| typedef struct |
| { |
| LOCAL_PARA_HDR |
| mm_emm_isr_event_enum event_trigger; |
| kal_bool tin_present; |
| tin_enum tin; |
| }mm_emm_isr_update_req_struct; |
| |
| // MSG_ID_MM_EMM_ISR_UPDATE_IND |
| typedef struct |
| { |
| LOCAL_PARA_HDR |
| mm_emm_isr_event_enum event_trigger; |
| kal_bool tin_present; |
| tin_enum tin; |
| }mm_emm_isr_update_ind_struct; |
| |
| // MSG_ID_MM_EMM_GMM_UPDATE_REGISTRATION_REQ |
| typedef struct |
| { |
| LOCAL_PARA_HDR |
| gmm_msg_type_enum gmm_msg_type; |
| kal_bool is_gmm_attach_type_present; |
| gmm_attach_type_enum gmm_attach_type; |
| kal_bool is_gmm_update_type_present; |
| gmm_update_type_enum gmm_update_type; |
| kal_bool is_gmm_attach_result_present; |
| gmm_attach_result_enum gmm_attach_result; |
| kal_bool is_gmm_update_result_present; |
| gmm_update_result_enum gmm_update_result; |
| kal_bool is_gmm_cause_present; |
| gmm_cause_enum gmm_cause; |
| kal_bool is_gmm_attempt_cnt_present; |
| kal_uint8 gmm_attempt_cnt; |
| kal_bool is_rai_changed; |
| kal_bool is_gu1_updated; |
| kal_bool is_lai_changed; |
| kal_bool is_u1_updated; |
| kal_bool is_ims_voice_over_ps_ind_present; |
| ug_ims_ind_enum ims_voice_over_ps_ind; |
| integ_protect_status_enum is_integ_protected; |
| kal_uint8 invalid_cs_sim_counter; |
| kal_uint8 invalid_ps_sim_counter; |
| }mm_emm_gmm_update_registration_req_struct; |
| |
| // MSG_ID_MM_EMM_GMM_UPDATE_DEREGISTRATION_REQ |
| typedef struct |
| { |
| LOCAL_PARA_HDR |
| kal_bool is_gmm_msg_type_present; |
| gmm_msg_type_enum gmm_msg_type; |
| kal_bool is_gmm_proc_direction_present; |
| gmm_proc_direction_enum gmm_proc_direction; |
| kal_bool is_gmm_attach_type_present; |
| gmm_attach_type_enum gmm_attach_type; |
| kal_bool is_gmm_update_type_present; |
| gmm_update_type_enum gmm_update_type; |
| kal_bool is_gmm_detach_type_present; |
| gmm_detach_type_enum gmm_detach_type; |
| kal_bool is_gmm_attach_result_present; |
| gmm_attach_result_enum gmm_attach_result; |
| kal_bool is_gmm_cause_present; |
| gmm_cause_enum gmm_cause; |
| kal_bool is_gmm_mt_cause_present; |
| mm_emm_mt_cause_enum gmm_mt_cause; |
| kal_bool is_gmm_attempt_cnt_present; |
| kal_uint8 gmm_attempt_cnt; |
| kal_bool is_rai_changed; |
| kal_bool is_gu1_updated; |
| kal_bool is_lai_changed; |
| kal_bool is_u1_updated; |
| kal_bool is_ps_detach_pending; |
| integ_protect_status_enum is_integ_protected; |
| kal_uint8 invalid_cs_sim_counter; |
| kal_uint8 invalid_ps_sim_counter; |
| }mm_emm_gmm_update_deregistration_req_struct; |
| |
| |
| // MSG_ID_MM_EMM_MM_UPDATE_REGISTRATION_REQ |
| typedef struct |
| { |
| LOCAL_PARA_HDR |
| mm_msg_type_enum mm_msg_type; |
| integ_protect_status_enum is_integ_protected; |
| kal_uint8 invalid_cs_sim_counter; |
| kal_uint8 invalid_ps_sim_counter; |
| |
| }mm_emm_mm_update_registration_req_struct; |
| |
| // MSG_ID_MM_EMM_MM_UPDATE_DEREGISTRATION_REQ |
| typedef struct |
| { |
| LOCAL_PARA_HDR |
| mm_msg_type_enum mm_msg_type; |
| kal_bool is_mm_rej_cause_present; |
| mm_rej_cause_enum mm_rej_cause; |
| kal_bool is_mm_attempt_cnt_present; |
| kal_uint8 mm_attempt_cnt; |
| kal_bool is_lai_changed; |
| kal_bool is_u1_updated; |
| integ_protect_status_enum is_integ_protected; |
| kal_uint8 invalid_cs_sim_counter; |
| kal_uint8 invalid_ps_sim_counter; |
| }mm_emm_mm_update_deregistration_req_struct; |
| |
| // MSG_ID_MM_EMM_EMM_UPDATE_REGISTRATION_IND |
| typedef struct |
| { |
| LOCAL_PARA_HDR |
| emm_msg_type_enum emm_msg_type; |
| kal_bool is_emm_attach_type_present; |
| emm_attach_type_enum emm_attach_type; |
| kal_bool is_emm_update_type_present; |
| emm_update_type_enum emm_update_type; |
| kal_bool is_emm_attach_result_present; |
| emm_attach_result_enum emm_attach_result; |
| kal_bool is_emm_update_result_present; |
| emm_update_result_enum emm_update_result; |
| kal_bool is_emm_cause_present; |
| emm_cause_enum emm_cause; |
| kal_bool is_emm_attempt_cnt_present; |
| kal_uint8 emm_attempt_cnt; |
| kal_bool is_emm_sr_type_present; |
| emm_sr_type_enum emm_sr_type; |
| kal_bool is_tai_changed; |
| kal_bool is_eu1_updated; |
| kal_bool is_lai_valid; |
| lai_struct lai; |
| kal_bool is_ms_id_valid; |
| kal_uint8 ms_id_len; |
| kal_uint8 ms_id[MS_ID_LEN]; |
| ue_mode_enum ue_mode; |
| kal_bool is_ims_voice_over_ps_ind_present; |
| ims_ind_enum ims_voice_over_ps_ind; |
| integ_protect_status_enum is_integ_protected; |
| kal_uint8 invalid_cs_sim_counter; |
| kal_uint8 invalid_ps_sim_counter; |
| kal_bool is_fake_lai_valid; |
| lai_struct fake_lai; |
| }mm_emm_emm_update_registration_ind_struct; |
| |
| // MSG_ID_MM_EMM_EMM_UPDATE_DEREGISTRATION_IND |
| typedef struct |
| { |
| LOCAL_PARA_HDR |
| kal_bool is_emm_msg_type_present; |
| emm_msg_type_enum emm_msg_type; |
| kal_bool is_emm_proc_dir_present; |
| gmm_proc_direction_enum emm_proc_dir; |
| kal_bool is_emm_attach_type_present; |
| emm_attach_type_enum emm_attach_type; |
| kal_bool is_emm_update_type_present; |
| emm_update_type_enum emm_update_type; |
| kal_bool is_emm_detach_type_present; |
| emm_detach_type_enum emm_detach_type; |
| kal_bool is_emm_attach_result_present; |
| emm_attach_result_enum emm_attach_result; |
| kal_bool is_emm_cause_present; |
| emm_cause_enum emm_cause; |
| kal_bool is_emm_mt_cause_present; |
| mm_emm_mt_cause_enum emm_mt_cause; |
| kal_bool is_emm_attempt_cnt_present; |
| kal_uint8 emm_attempt_cnt; |
| kal_bool is_emm_sr_type_present; |
| emm_sr_type_enum emm_sr_type; |
| kal_bool is_tai_changed; |
| kal_bool is_eu1_updated; |
| ue_mode_enum ue_mode; |
| kal_bool is_ps_detach_pending; |
| integ_protect_status_enum is_integ_protected; |
| kal_uint8 invalid_cs_sim_counter; |
| kal_uint8 invalid_ps_sim_counter; |
| }mm_emm_emm_update_deregistration_ind_struct; |
| |
| // MSG_ID_MM_EMM_CSFB_REQ |
| typedef struct |
| { |
| LOCAL_PARA_HDR |
| kal_uint8 req_id; |
| mm_emm_csfb_req_type_enum csfb_req_type; |
| }mm_emm_csfb_req_struct; |
| |
| // MSG_ID_MM_EMM_CSFB_CNF |
| typedef struct |
| { |
| LOCAL_PARA_HDR |
| kal_uint8 req_id; |
| }mm_emm_csfb_stop_req_struct; |
| |
| // MSG_ID_MM_EMM_CSFB_STOP_REQ |
| typedef struct |
| { |
| LOCAL_PARA_HDR |
| kal_uint8 req_id; |
| mm_emm_csfb_result_enum result; |
| emm_csfb_failure_info_enum csfb_failure_info; |
| }mm_emm_csfb_cnf_struct; |
| |
| // MSG_ID_MM_EMM_CSFB_PAGE_IND |
| typedef struct { |
| LOCAL_PARA_HDR |
| mm_emm_csfb_paging_id_enum csfb_paging_id; //Paging identity used in CS SERVICE NOTIFICATION |
| kal_bool is_cli_present; //Whether CLI (Calling Line Identification) IE exists or not |
| kal_uint8 cli_len; //Length of CLI |
| kal_uint8 cli[12]; //CLI value Refer to TS 24.008 subclause 10.5.4.9 Calling party BCD number for decoding. |
| kal_bool is_ss_code_present; //Whether SS code IE exists or not |
| kal_uint8 ss_code; //SS code value Refer to TS 29.002 subclause 17.7.5 for decoding. |
| kal_bool is_lcs_ind_present; //Whether LCS indicator IE exists or not |
| kal_uint8 lcs_indicatior; //LCS indicator value; 0x01: MT-LR, Other values: Normal, unspecified in this version of the protocol |
| kal_bool is_lcs_client_id_present; //Whether LCS client identity IE exists or not |
| kal_uint8 lcs_client_id_len; //Length of LCS client identity |
| kal_uint8 lcs_client_id[255]; //LCS client identity value, Refer to TS 29.002 subclause 17.7.13 for decoding. |
| }mm_emm_csfb_page_ind_struct; |
| |
| // MSG_ID_MM_EMM_CSFB_RESULT_IND |
| typedef struct { |
| LOCAL_PARA_HDR |
| mm_emm_csfb_result_enum is_csfb_failure; //notify upper layer if csfb is failure |
| }mm_emm_csfb_result_ind_struct; |
| |
| // MSG_ID_MM_EMM_CSFB_PAGE_RSP |
| typedef struct { |
| LOCAL_PARA_HDR |
| kal_bool is_accept_paging; //Whether upper layer decides to answer the mobile terminating CS service |
| }mm_emm_csfb_page_rsp_struct; |
| |
| // MSG_ID_MM_EMM_CSFB_PAGE_CONFIG_REQ |
| typedef struct { |
| LOCAL_PARA_HDR |
| csfb_page_config_enum csfb_page_config; |
| kal_uint8 add_info; // if csfb_page_config is 3 or 4, add_info will be the new timer value |
| }mm_emm_csfb_page_config_req_struct; |
| #if 0 |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| #ifdef __SUPPORT_CLIB_TIME__ |
| /* under construction !*/ |
| #else |
| /* under construction !*/ |
| #endif |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| #ifdef __SUPPORT_CLIB_TIME__ |
| /* under construction !*/ |
| #else |
| /* under construction !*/ |
| #endif |
| /* under construction !*/ |
| #endif |
| #if defined (__SGLTE__) |
| /*EMM->MM*/ |
| typedef struct { |
| LOCAL_PARA_HDR |
| lr_result_enum peer_lr_result; |
| nas_proc_enum peer_lr_procedure; |
| emm_cause_enum emm_peer_reject_cause; |
| plmn_id_struct emm_peer_plmn_id; |
| kal_bool is_update_eq_plmn_only; /* If set TRUE, only R+E PLMN info are valid. */ |
| kal_uint8 eq_plmn_byte_count; |
| kal_uint8 eq_plmn_id[MAX_NUM_EQ_PLMN*3]; |
| }mm_emm_peer_lr_result_ind_struct; |
| |
| /*MM->EMM*/ |
| typedef struct { |
| LOCAL_PARA_HDR |
| lr_result_enum peer_lr_result; |
| nas_proc_enum peer_lr_procedure; |
| mm_cause_enum mm_peer_reject_cause; |
| plmn_id_struct mm_peer_plmn_id; |
| kal_bool is_update_eq_plmn_needed; |
| kal_uint8 eq_plmn_byte_count; |
| kal_uint8 eq_plmn_id[MAX_NUM_EQ_PLMN*3]; |
| }mm_emm_peer_lr_result_req_struct; |
| |
| #endif |
| |
| // MSG_ID_EMM_MM_NAS_CTXT_TRANSFER_REQ |
| typedef struct { |
| LOCAL_PARA_HDR |
| irat_type_enum irat_type; |
| rat_type_enum source_rat; |
| rat_type_enum target_rat; |
| domain_id_enum connection_domain; |
| emm2mm_irat_info_struct emm_info; |
| }emm_mm_nas_ctxt_transfer_req_struct; |
| |
| // MSG_ID_MM_EMM_NAS_CTXT_TRANSFER_REQ |
| typedef struct { |
| LOCAL_PARA_HDR |
| irat_type_enum irat_type; |
| rat_type_enum source_rat; |
| rat_type_enum target_rat; |
| mm2emm_irat_info_struct mm_info; |
| }mm_emm_nas_ctxt_transfer_req_struct; |
| |
| #endif /* ----- #ifndef MM_EMM_STRUCT_INC ----- */ |