blob: 12e949f4858e7daa46e7fb074c900d10e2b343a1 [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*****************************************************************************
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
76typedef atcmd_request_type_enum d2cm_act_data_call_req_type_enum;
77typedef ip_info_struct d2cm_act_data_call_ip_info_struct;
78typedef net_info_struct d2cm_act_data_call_net_info_struct;
79typedef ran_info_struct d2cm_act_data_call_ran_info_struct;
80typedef if_info_struct d2cm_act_data_call_if_info_struct;
81typedef retry_info_struct d2cm_act_data_call_retry_info_struct;
82typedef ip_info_struct d2cm_ho_ip_info_struct;
83typedef net_info_struct d2cm_ho_net_info_struct;
84//typedef retry_info_struct d2cm_get_retry_tmr_retry_info_struct;
85typedef retry_info_struct d2cm_reset_retry_tmr_retry_info_struct;
86
87typedef 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
97typedef 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
114typedef 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
124typedef 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
133typedef 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
146typedef 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
153typedef 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