blob: f0c0e2dada3372f30e757ec3fb7f8703f67af4f8 [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#ifndef _TCM_API_H
37#define _TCM_API_H
38
39//------------------------------ suggest Add ------------------------------
40//#include "kal_non_specific_general_types.h"
41#include "kal_general_types.h"
42#include "mcd_l3_inc_gprs_struct.h"
43
44/* Poying: Moved from tcm_qos_api.h */
45typedef enum
46{
47 TCM_REQ_QOS = 0,
48 TCM_MIN_QOS,
49 TCM_NEG_QOS
50} tcm_qos_type_enum;
51
52typedef enum {
53 TCM_R6_QOS = 0,
54 TCM_R8_QOS = 1,
55 TCM_R11_QOS = 2
56} tcm_qos_mode_enum;
57
58typedef enum {
59 TCM_CID_TYPE_UNKNOWN,
60 TCM_CID_TYPE_PRIMARY,
61 TCM_CID_TYPE_SECONDARY,
62} tcm_cid_type_enum;
63
64/* Check tcm_qos_api.c for implementations. */
65void tcm_qos_R99_to_R98( qos_struct *s, tcm_qos_type_enum qos_type );
66
67/* Check l4c2tcm_func.c for implementations. */
68kal_bool l4ctcm_decode_sdu_size(kal_uint16 val, kal_uint16 *size_ptr);
69
70#ifdef __REL6__
71kal_bool l4ctcm_encode_bit_rate(kal_uint32 rate, kal_uint32 *p_val);
72kal_bool l4ctcm_decode_bit_rate(kal_uint32 val, kal_uint32 *p_rate);
73#else // #ifdef __REL6__
74kal_bool l4ctcm_encode_bit_rate(kal_uint16 rate, kal_uint16 *p_val);
75kal_bool l4ctcm_decode_bit_rate(kal_uint16 val, kal_uint16 *p_rate);
76#endif // ~ #ifdef __REL6__
77
78kal_bool l4ctcm_decode_apn_ambr_bit_rate(kal_uint8 val, kal_uint8 val_ext, kal_uint8 val_ext2, kal_uint32 *p_rate);
79kal_bool l4ctcm_decode_transfer_delay(kal_uint16 val, kal_uint16 *p_delay);
80
81/* Check tcm_api.c for implementations. */
82kal_bool tcm_pdp_decode_qos_transfer_delay(kal_uint16 val, kal_uint16 *p_delay);
83kal_bool tcm_pdp_decode_qos_bit_rate(kal_uint16 val, kal_uint32 *p_rate);
84kal_bool tcm_is_qci_non_gbr(kal_uint8 qci);
85
86kal_uint8 tcm_get_cid_by_ebi(kal_uint8 sim_interface, kal_uint8 ebi); /* called by tftlib */
87kal_uint8 tcm_get_ebi_by_cid(kal_uint8 sim_interface, kal_uint8 cid); /* called by tftlib */
88kal_uint8 tcm_get_primary_cid_by_cid(kal_uint8 sim_interface, kal_uint8 cid); /* called by tftlib */
89tcm_cid_type_enum tcm_get_cid_type_by_cid(kal_uint8 sim_interface, kal_uint8 cid); /* called by tftlib */
90kal_bool tcm_is_cid_not_inactive(kal_uint8 sim_interface, kal_uint8 cid); /* called by tftlib */
91kal_uint8 tcm_get_cid_by_psi(kal_uint8 sim_interface, kal_uint8 psi);
92
93/*
94 * Data account
95 */
96typedef struct
97{
98 // must align with qos_struct
99 // Please see 3GPP TS24.008 Table 10.5.156 Quality of service information element for detail explaination
100
101 kal_uint8 qos_length; /* QOS identifer bit, this value must be 16, or the GPRS bearer will not accept */
102 kal_uint8 unused1; /* Unused Bit */
103
104 kal_uint8 delay_class;
105 /*
106 * Delay Class
107 * 001 Delay Class 1
108 * 010 Delay Class 2
109 * 011 Delay Class 3
110 * 100 Delay Class 4 (best effort)
111 * ...
112 */
113
114 kal_uint8 reliability_class;
115 /*
116 * Reliability Class
117 * 001 Interpreted as 010
118 * 010 UnACK GTP, ACK LLC, ACK RLC, Protected Data
119 * 011 UnACK GTP, UnACK LLC, ACK RLC, Protected Data
120 * 100 UnACK GTP, UnACK LLC, UnACK RLC, Prottected Data
121 * 101 UnACK GTP, UnACK LLC, UnACK RLC, Unprotected Data
122 * ...
123 */
124
125 kal_uint8 peak_throughput;
126 /*
127 * Peak Throughput
128 * 0001 Up to 1000 octet/s
129 * 0010 Up to 2000 octet/s
130 * 0011 Up to 4000 octet/s
131 * 0100 Up to 8000 octet/s
132 * 0101 Up to 16000 octet/s
133 * 0110 Up to 32000 octet/s
134 * 0111 Up to 64000 octet/s
135 * 1000 Up to 128000 octet/s
136 * 1001 Up to 256000 octet/s
137 * ...
138 */
139
140 kal_uint8 unused2; /* Unused Bit */
141
142 kal_uint8 precedence_class;
143 /*
144 * Precedence Class
145 * 001 High Priority
146 * 010 Normal Priority
147 * 011 Low Priority
148 * ...
149 */
150
151 kal_uint8 unused3; /* Unused Bit */
152
153 kal_uint8 mean_throughput;
154 /*
155 * Mean Throughput
156 * 00001 Up to 100 octet/h
157 * 00010 Up to 200 octet/h
158 * 00011 Up to 500 octet/h
159 * ...
160 */
161
162 kal_uint8 traffic_class;
163 /*
164 * Traffic Class
165 * 001 Conversational class
166 * 010 Streaming class
167 * 011 Interactive class
168 * 100 Background class
169 * ...
170 */
171
172 kal_uint8 delivery_order;
173 /*
174 * Delivery Order
175 * 01 With delivery order (yes)
176 * 10 Without delivery order (no)
177 * ...
178 */
179
180 kal_uint8 delivery_of_err_sdu;
181 /*
182 * Delivery of erroneous SDUs
183 * 001 No detect (-)
184 * 010 Erroneous SDUs are delivered (yes)
185 * 011 Erroneous SDUs are not delivered (no)
186 * ...
187 */
188
189 kal_uint8 max_sdu_size;
190 /*
191 * Maximum SDU Size
192 * ...
193 * 10010111 1502 octets
194 * 10011000 1510 octets
195 * 10011001 1520 octets
196 * ...
197 */
198
199 kal_uint8 max_bitrate_up_lnk; // see 24.008 Table 10.5.156
200
201 kal_uint8 max_bitrate_down_lnk; // see 24.008 Table 10.5.156
202
203 kal_uint8 residual_bit_err_rate;
204 /*
205 * Residual Bit Error Rate
206 * 0001 5*10^-2
207 * 0010 1*10^-2
208 * 0011 5*10^-3
209 * 0100 4*10^-3
210 * 0101 1*10^-3
211 * 0110 1*10^-4
212 * ...
213 */
214
215 kal_uint8 sdu_err_ratio;
216 /*
217 * SDU Error Ratio
218 * 0001 1*10^-2
219 * 0010 7*10^-3
220 * 0011 1*10^-3
221 * 0100 1*10^-4
222 * 0101 1*10^-5
223 * 0110 1*10^-6
224 * ...
225 */
226
227 kal_uint8 transfer_delay; // see 24.008 Table 10.5.156
228
229 kal_uint8 traffic_hndl_priority;
230 /*
231 * Traffic Handling Priority
232 * 01 Priority level 1
233 * 10 Priority level 2
234 * 11 Priority level 3
235 * ...
236 */
237
238 kal_uint8 guarntd_bit_rate_up_lnk; // see 24.008 Table 10.5.156
239
240 kal_uint8 guarntd_bit_rate_down_lnk; // see 24.008 Table 10.5.156
241
242 kal_uint8 unused4; /* Unused Bit */
243
244 kal_uint8 signalling_indication;
245 /*
246 * Signaling Indication
247 * 0 Not optimised for signalling traffic
248 * 1 Optimised for signalling traffic
249 * ...
250 */
251
252 kal_uint8 source_statistics_descriptor;
253 /*
254 * Source Statistics Descriptor
255 * 0000 Unknown
256 * 0001 Speech
257 * ...
258 */
259
260 kal_uint8 ext_max_bitrate_down_lnk; // see 24.008 Table 10.5.156
261
262 kal_uint8 ext_guarntd_bit_rate_down_lnk; // see 24.008 Table 10.5.156
263
264 kal_uint8 ext_max_bitrate_up_lnk; // see 24.008 Table 10.5.156
265
266 kal_uint8 ext_guarntd_bit_rate_up_lnk; // see 24.008 Table 10.5.156
267
268 kal_uint8 ext2_max_bitrate_down_lnk; // see 24.008 Table 10.5.156
269
270 kal_uint8 ext2_guarntd_bit_rate_down_lnk; // see 24.008 Table 10.5.156
271
272 kal_uint8 ext2_max_bitrate_up_lnk; // see 24.008 Table 10.5.156
273
274 kal_uint8 ext2_guarntd_bit_rate_up_lnk; // see 24.008 Table 10.5.156
275} nvram_editor_qos_struct;
276
277//mtk04121
278typedef struct {
279 kal_uint8 qci;
280 kal_uint8 unused1;
281 kal_uint8 unused2;
282 kal_uint8 unused3;
283 kal_uint8 max_bitrate_up_lnk; // see 24.008 Table 10.5.156
284 kal_uint8 max_bitrate_down_lnk; // see 24.008 Table 10.5.156
285 kal_uint8 guarntd_bit_rate_up_lnk; // see 24.008 Table 10.5.156
286 kal_uint8 guarntd_bit_rate_down_lnk; // see 24.008 Table 10.5.156
287 kal_uint8 ext_max_bitrate_up_lnk; // see 24.008 Table 10.5.156
288 kal_uint8 ext_max_bitrate_down_lnk; // see 24.008 Table 10.5.156
289 kal_uint8 ext_guarntd_bit_rate_up_lnk; // see 24.008 Table 10.5.156
290 kal_uint8 ext_guarntd_bit_rate_down_lnk; // see 24.008 Table 10.5.156
291 kal_uint8 ext2_max_bitrate_up_lnk;
292 kal_uint8 ext2_max_bitrate_down_lnk;
293 kal_uint8 ext2_guarntd_bit_rate_up_lnk;
294 kal_uint8 ext2_guarntd_bit_rate_down_lnk;
295} nvram_editor_eps_qos_struct;
296
297
298/* Poying: MSBB (MAUI_03028371). */
299typedef struct
300{
301 nvram_editor_qos_struct req_qos;
302 nvram_editor_qos_struct min_qos;
303} tcm_ps_qos_profile_struct;
304
305
306#endif // ~ #ifndef _TCM_API_H