rjw | 6c1fd8f | 2022-11-30 14:33:01 +0800 | [diff] [blame] | 1 | /***************************************************************************** |
| 2 | * Copyright Statement: |
| 3 | * -------------------- |
| 4 | * This software is protected by Copyright and the information contained |
| 5 | * herein is confidential. The software may not be copied and the information |
| 6 | * contained herein may not be used or disclosed except with the written |
| 7 | * permission of MediaTek Inc. (C) 2005 |
| 8 | * |
| 9 | * BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES |
| 10 | * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") |
| 11 | * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON |
| 12 | * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, |
| 13 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF |
| 14 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. |
| 15 | * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE |
| 16 | * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR |
| 17 | * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH |
| 18 | * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO |
| 19 | * NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S |
| 20 | * SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM. |
| 21 | * |
| 22 | * BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE |
| 23 | * LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE, |
| 24 | * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE, |
| 25 | * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO |
| 26 | * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. |
| 27 | * |
| 28 | * THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE |
| 29 | * WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF |
| 30 | * LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND |
| 31 | * RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER |
| 32 | * THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC). |
| 33 | * |
| 34 | *****************************************************************************/ |
| 35 | |
| 36 | /***************************************************************************** |
| 37 | * |
| 38 | * Filename: |
| 39 | * --------- |
| 40 | * d2cm_public_defs.h |
| 41 | * |
| 42 | * Project: |
| 43 | * -------- |
| 44 | * |
| 45 | * |
| 46 | * Description: |
| 47 | * ------------ |
| 48 | * |
| 49 | * |
| 50 | * Author: |
| 51 | * ------- |
| 52 | * |
| 53 | * |
| 54 | *============================================================================ |
| 55 | * HISTORY |
| 56 | * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! |
| 57 | *------------------------------------------------------------------------------ |
| 58 | * removed! |
| 59 | * |
| 60 | *------------------------------------------------------------------------------ |
| 61 | * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! |
| 62 | *============================================================================ |
| 63 | ****************************************************************************/ |
| 64 | |
| 65 | #ifndef __D2CM_PUBLIC_DEFS_H__ |
| 66 | #define __D2CM_PUBLIC_DEFS_H__ |
| 67 | |
| 68 | #include "kal_public_defs.h" |
| 69 | #include "atcmd_struct.h" |
| 70 | #include "ddm_common_struct.h" |
| 71 | #include "d2rm_public_defs.h" |
| 72 | #include "d2pm_public_defs.h" |
| 73 | #include "netinfo_common_struct.h" |
| 74 | |
| 75 | // Type denifitions |
| 76 | typedef atcmd_request_type_enum d2cm_act_data_call_req_type_enum; |
| 77 | typedef ip_info_struct d2cm_act_data_call_ip_info_struct; |
| 78 | typedef net_info_struct d2cm_act_data_call_net_info_struct; |
| 79 | typedef ran_info_struct d2cm_act_data_call_ran_info_struct; |
| 80 | typedef if_info_struct d2cm_act_data_call_if_info_struct; |
| 81 | typedef retry_info_struct d2cm_act_data_call_retry_info_struct; |
| 82 | typedef ip_info_struct d2cm_ho_ip_info_struct; |
| 83 | typedef net_info_struct d2cm_ho_net_info_struct; |
| 84 | //typedef retry_info_struct d2cm_get_retry_tmr_retry_info_struct; |
| 85 | typedef retry_info_struct d2cm_reset_retry_tmr_retry_info_struct; |
| 86 | |
| 87 | typedef enum |
| 88 | { |
| 89 | // a single CID or the final CID |
| 90 | D2CM_PDN_STATUS_FAIL = -1, |
| 91 | D2CM_PDN_STATUS_DEACT, |
| 92 | D2CM_PDN_STATUS_ACT, |
| 93 | D2CM_PDN_STATUS_UNUSABLE, |
| 94 | D2CM_PDN_STATUS_MAX = 0x7FFFFFFF |
| 95 | }d2cm_pdn_state_enum; |
| 96 | |
| 97 | typedef enum |
| 98 | { |
| 99 | // a single CID or the final CID |
| 100 | D2CM_RES_NONE = D2PM_RES_NONE, |
| 101 | D2CM_RES_FAIL = D2PM_RES_FAIL, |
| 102 | D2CM_RES_SUCC = D2PM_RES_SUCC , |
| 103 | // a subsequent CID |
| 104 | D2CM_RES_FAIL_ABORT = D2PM_RES_FAIL_ABORT, |
| 105 | D2CM_RES_SUCC_ABORT = D2PM_RES_SUCC_ABORT, |
| 106 | D2CM_RES_FAIL_CONT = D2PM_RES_FAIL_CONT, |
| 107 | D2CM_RES_SUCC_CONT = D2PM_RES_SUCC_CONT, |
| 108 | // otherwise |
| 109 | D2CM_RES_REJ = D2PM_RES_REJ, |
| 110 | D2CM_RES_RETRY = D2PM_RES_RETRY, |
| 111 | D2CM_RES_MAX = 0x7FFFFFFF |
| 112 | }d2cm_res_enum; |
| 113 | |
| 114 | typedef enum |
| 115 | { |
| 116 | D2CM_SUFF_COND_NONE = (0x00000000), |
| 117 | D2CM_SUFF_COND_IPV4 = (0x00000001), |
| 118 | D2CM_SUFF_COND_IPV6 = (0x00000002), |
| 119 | D2CM_SUFF_COND_IPVX = (0x00000004), |
| 120 | D2CM_SUFF_COND_IF_UP = (0x00000010), |
| 121 | D2CM_SUFF_COND_MAX = (0x7FFFFFFF) |
| 122 | }d2cm_suff_cond_enum; |
| 123 | |
| 124 | typedef enum |
| 125 | { |
| 126 | D2CM_IPV4V6_FB_PREF_DISABLE_IPV4_FIRST = 0, |
| 127 | D2CM_IPV4V6_FB_PREF_DISABLE_IPV6_FIRST, |
| 128 | D2CM_IPV4V6_FB_PREF_ENABLE_IPV4_FIRST, |
| 129 | D2CM_IPV4V6_FB_PREF_ENABLE_IPV6_FIRST, |
| 130 | D2CM_IPV4V6_FB_PREF_MAX = (0x7FFFFFFF) |
| 131 | }d2cm_ipv4v6_fb_pref_enum; |
| 132 | |
| 133 | typedef enum |
| 134 | { |
| 135 | D2CM_EVENT_NONE = (0x00000000), |
| 136 | D2CM_EVENT_PDN_PROFILE_CHG = (0x00000001), |
| 137 | D2CM_EVENT_PRE_ACT_DATA_CALL = (0x00000002), |
| 138 | D2CM_EVENT_POST_ACT_DATA_CALL = (0x00000004), |
| 139 | D2CM_EVENT_PRE_DEACT_DATA_CALL = (0x00000008), |
| 140 | D2CM_EVENT_POST_DEACT_DATA_CALL = (0x00000010), |
| 141 | D2CM_EVENT_IPV6_RA_INIT_FAIL = (0x00000020), |
| 142 | D2CM_EVENT_IPV6_RA_REFRESH_FAIL = (0x00000040), |
| 143 | D2CM_EVENT_MAX = (0x7FFFFFFF) |
| 144 | }d2cm_event_enum; |
| 145 | |
| 146 | typedef enum |
| 147 | { |
| 148 | D2CM_EVENT_ACTION_NONE = (0x00000000), |
| 149 | D2CM_EVENT_ACTION_REJ = (0x00000001), |
| 150 | D2CM_EVENT_ACTION_MAX = (0x7FFFFFFF) |
| 151 | }d2cm_event_action_enum; |
| 152 | |
| 153 | typedef struct |
| 154 | { |
| 155 | module_type mod_id; |
| 156 | sap_type sap_id; |
| 157 | int attr; |
| 158 | }d2cm_custom_usr_profile_struct; |
| 159 | |
| 160 | // Macros |
| 161 | #define D2CM_INVAL_UID (-1) |
| 162 | #define D2CM_INVAL_CID (D2PM_INVAL_CID) |
| 163 | #define D2CM_MIN_CID (D2PM_MIN_CID) |
| 164 | #define D2CM_MAX_CID (D2PM_MAX_CID) |
| 165 | #define D2CM_CID_BITMAP_SIZE (D2PM_CID_BITMAP_SIZE) |
| 166 | #define D2CM_INVAL_APN_IDX (D2PM_INVAL_APN_IDX) |
| 167 | #define D2CM_ENGAGED_APN_IDX (D2CM_INVAL_APN_IDX) |
| 168 | #define D2CM_MAX_NUM_OF_USR (16) |
| 169 | // => Flags |
| 170 | // => => ACT_DATA_CALL_REQ |
| 171 | #define D2CM_ACT_DATA_CALL_REQ_FLAG_NONE (0x00000000) |
| 172 | #define D2CM_ACT_DATA_CALL_REQ_FLAG_REQ_ONLY (0x00000001) |
| 173 | #define D2CM_ACT_DATA_CALL_REQ_FLAG_RSP_ONLY (0x00000002) |
| 174 | #define D2CM_ACT_DATA_CALL_REQ_FLAG_DANGLING (0x00000004) |
| 175 | #define D2CM_ACT_DATA_CALL_REQ_FLAG_REUSE (0x00000008) // only effective when the PDN is avticated |
| 176 | #define D2CM_ACT_DATA_CALL_REQ_FLAG_NO_URSP (0x00000010) // only effective when the PDN is avticated |
| 177 | // => => GET_PDN_PROFILE_REQ |
| 178 | #define D2CM_GET_PDN_PROFILE_REQ_FLAG_NONE (0x00000000) |
| 179 | #define D2CM_GET_PDN_PROFILE_REQ_FLAG_INCL_ALIAS (0x00000001) |
| 180 | #define D2CM_GET_PDN_PROFILE_REQ_FLAG_INCL_APN_IDX (0x00000002) |
| 181 | #define D2CM_GET_PDN_PROFILE_REQ_FLAG_INCL_ALL (0xFFFFFFFF) // NEED_TO_BE_NOTICED, maybe different from all flags set in the current definition |
| 182 | // => => GET_PDN_PROFILE_IND |
| 183 | #define D2CM_GET_PDN_PROFILE_IND_FLAG_NONE (0x00000000) |
| 184 | #define D2CM_GET_PDN_PROFILE_IND_FLAG_UNUSABLE (0x00000001) |
| 185 | // => Custom |
| 186 | // => => User profile attributes |
| 187 | // => => => Bitmap |
| 188 | #define D2CM_ATTR_AUTH_MASK (0x0000000F) |
| 189 | #define D2CM_ATTR_NO_AUTH (0x00000000) |
| 190 | #define D2CM_ATTR_PDN_AUTH (0x00000001) |
| 191 | #define D2CM_ATTR_EVENT_AUTH (0x00000002) |
| 192 | #define D2CM_ATTR_ADMIN_AUTH (D2CM_ATTR_AUTH_MASK) |
| 193 | // => => => Distinct value |
| 194 | #define D2CM_ATTR_MSG_MASK (0x000000F0) |
| 195 | #define D2CM_ATTR_NO_MSG (0x00000000) |
| 196 | #define D2CM_ATTR_AT_MSG (0x00000010) |
| 197 | #define D2CM_ATTR_ILM_MSG (0x00000020) |
| 198 | #define D2CM_ATTR_CB_MSG (0x00000030) |
| 199 | #define D2CM_ATTR_NETIF_MASK (0x00000F00) |
| 200 | #define D2CM_ATTR_NO_NETIF (0x00000000) |
| 201 | #define D2CM_ATTR_AP_NETIF (0x00000100) |
| 202 | #define D2CM_ATTR_MD_NETIF (0x00000200) |
| 203 | |
| 204 | // => Utility |
| 205 | #define D2CM_NORMAL_RES_SHIFT (0) |
| 206 | #define D2CM_NORMAL_RES_MASK (0x000000FF) |
| 207 | #define D2CM_NORMAL_RES_LEN (8) |
| 208 | #define D2CM_NW_CAUSE_SHIFT (8) |
| 209 | #define D2CM_NW_CAUSE_MASK (0x00FFFF00) |
| 210 | #define D2CM_NW_CAUSE_LEN (16) |
| 211 | // ---- WORKAROUND ---- |
| 212 | #define D2CM_ESM_CAUSE_SHIFT (D2CM_NW_CAUSE_SHIFT) |
| 213 | #define D2CM_ESM_CAUSE_MASK (D2CM_NW_CAUSE_MASK) |
| 214 | #define D2CM_ESM_CAUSE_LEN (D2CM_NW_CAUSE_LEN) |
| 215 | // ++++ WORKAROUND ++++ |
| 216 | |
| 217 | // APIs, NEED_TO_BE_NOTICED, uint32-based, just a quick solution, To-Do later |
| 218 | #define d2cm_sign_ext(x, shift, mask, len) (((x) & (1 << ((len) - 1))) ? (x) | ~((mask) >> (shift)) : (x)) |
| 219 | #define d2cm_reset_normal_res(res) ((res) &= ~D2CM_NORMAL_RES_MASK) |
| 220 | #define d2cm_set_normal_res(res, x) ((res) = ((res) & ~D2CM_NORMAL_RES_MASK) | (((x) << D2CM_NORMAL_RES_SHIFT) & D2CM_NORMAL_RES_MASK)) |
| 221 | #define d2cm_get_normal_res(res) (d2cm_sign_ext(((res) & D2CM_NORMAL_RES_MASK) >> D2CM_NORMAL_RES_SHIFT, D2CM_NORMAL_RES_SHIFT, D2CM_NORMAL_RES_MASK, D2CM_NORMAL_RES_LEN)) |
| 222 | #define d2cm_reset_nw_cause(res) ((res) &= ~D2CM_NW_CAUSE_MASK) |
| 223 | #define d2cm_set_nw_cause(res, x) ((res) = ((res) & ~D2CM_NW_CAUSE_MASK) | (((x) << D2CM_NW_CAUSE_SHIFT) & D2CM_NW_CAUSE_MASK)) |
| 224 | #define d2cm_get_nw_cause(res) (((res) & D2CM_NW_CAUSE_MASK) >> D2CM_NW_CAUSE_SHIFT) |
| 225 | // ---- WORKAROUND ---- |
| 226 | #define d2cm_reset_esm_cause(res) (d2cm_reset_nw_cause((res))) |
| 227 | #define d2cm_set_esm_cause(res, x) (d2cm_set_nw_cause((res), (x))) |
| 228 | #define d2cm_get_esm_cause(res) (d2cm_get_nw_cause((res))) |
| 229 | // ++++ WORKAROUND ++++ |
| 230 | |
| 231 | #endif |