blob: 6be5fef9c339be624d3134d9f9dc5b5f8593e529 [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 * mcd.
41 *
42 * Project:
43 * --------
44 * MAUI
45 *
46 * Description:
47 * ------------
48 * MediaTek Coding/Decoding engine header file. (2002.11.11)
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 * removed!
61 * removed!
62 * removed!
63 * removed!
64 *
65 * removed!
66 * removed!
67 * removed!
68 * removed!
69 *
70 * removed!
71 * removed!
72 * removed!
73 *
74 * removed!
75 * removed!
76 * removed!
77 *
78 * removed!
79 * removed!
80 *
81 * removed!
82 * removed!
83 * removed!
84 *
85 * removed!
86 * removed!
87 * removed!
88 * removed!
89 * removed!
90 * removed!
91 * removed!
92 *
93 * removed!
94 * removed!
95 * removed!
96 *
97 * removed!
98 * removed!
99 * removed!
100 *
101 * removed!
102 * removed!
103 * removed!
104 *
105 * removed!
106 * removed!
107 * removed!
108 *
109 * removed!
110 * removed!
111 * removed!
112 *
113 * removed!
114 * removed!
115 * removed!
116 *
117 * removed!
118 * removed!
119 * removed!
120 *
121 * removed!
122 * removed!
123 * removed!
124 *
125 * removed!
126 * removed!
127 * removed!
128 *
129 * removed!
130 * removed!
131 * removed!
132 *
133 * removed!
134 * removed!
135 * removed!
136 *
137 * removed!
138 * removed!
139 * removed!
140 *
141 *------------------------------------------------------------------------------
142 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
143 *==============================================================================
144 *******************************************************************************/
145
146#ifndef _MCD_H
147#define _MCD_H
148
149//------------------------------ suggest Add ------------------------------
150#include "kal_general_types.h"
151
152#include "mcd_public_api.h"
153
154#define MCD_ERROR ((kal_uint32)-1)
155#define MCD_INVALID_STRUCT_ID ((kal_uint16)-1)
156
157#ifdef MCD_DLL
158 #define MCDDLL_API typedef __declspec(dllimport)
159 #define _DECLARE_(f) (* f##_func)
160#elif defined(MCD_DLL_EXPORT)
161 #define MCDDLL_API __declspec(dllexport)
162 #define _DECLARE_(f) f
163 #define MCD_ENABLE_QUERY
164 //#define kal_trace
165 //#define MCD_OUTSIDE_TABLE
166#else
167 #define MCDDLL_API extern
168 #define _DECLARE_(f) f
169#endif
170
171#define MCD_L3_MESSAGE_ERROR_HANDLE
172#define MCD_PD_CC (3)
173#define MCD_PD_INVALID (255)
174#define SET_MCD_PD(x) mcd_pd=x
175
176extern kal_uint8 mcd_pd;
177
178#ifdef __MCD_CODESET_SHIFT__
179MCDDLL_API void _DECLARE_(mcd_update_plmn)(kal_uint8,kal_uint8,kal_uint8,kal_uint8,kal_uint8,kal_uint8);
180#endif
181
182MCDDLL_API kal_uint32 _DECLARE_(mcd_pseudo_alloc)(kal_uint16 msgid,kal_uint32 *dest,kal_uint32 dest_size);
183MCDDLL_API kal_uint32 _DECLARE_(mcd_pack)(kal_uint16 msgid,kal_uint32 *dest,kal_uint32 dest_size,kal_uint8 *src);
184MCDDLL_API kal_uint32 _DECLARE_(mcd_unpack)(kal_uint16 msgid,kal_uint32 *dest,kal_uint32 dest_size,kal_uint32 *src,kal_uint32 total_bits);
185
186MCDDLL_API kal_uint16 _DECLARE_(mcd_get_structure_id)(const kal_uint8 * struct_name);
187MCDDLL_API const kal_uint8 * _DECLARE_(mcd_get_structure_name)(kal_uint16 structid);
188MCDDLL_API kal_uint16 _DECLARE_(mcd_find_structure_id)(kal_uint32 msg_id,kal_uint8 *src,kal_uint32 total_bits);
189
190#undef DECLARE
191
192typedef enum
193{
194 MCD_UNKNOWN_ERROR=1,
195 MCD_COMPREHENSION_ERROR,
196 MCD_UNKNOWN_OPCODE_ERROR,
197 MCD_UNPACK_NEED_MORE_BITSTREAM_ERROR,
198 MCD_UNPACK_USE_THE_SAME_ADDRESS_ERROR,
199 MCD_PACK_USE_THE_SAME_ADDRESS_ERROR,
200 MCD_BUFFER_MUST_START_AT_4_ALIGNMENT_ERROR,
201 MCD_REPEAT_IEI_UNKNOWN_ERROR,
202 MCD_ALLOCATE_SEGMENT_OVERFLOW_ERROR,
203 MCD_ALLOCATE_MEMORY_NOT_ENOUGH_ERROR,
204 MCD_LOST_ENDIF_ERROR,
205 MCD_LOST_ENDBERIF_ERROR,
206 MCD_FREE_SEGMENT_ERROR,
207 MCD_PACK_BUFFER_OVERFLOW_ERROR,
208 MCD_RESIZE_MEMORY_NOT_ENOUGH_ERROR,
209 MCD_ILLEGAL_SEGMENT_ADDRESS_ERROR,
210 MCD_NULL_POINTER_ASSIGNMENT_ERROR,
211 MCD_POINTER_OUT_OF_RANGE_ERROR,
212 MCD_CANT_FIND_THE_END_OF_INFINITE_MARK,
213 MCD_MANDATORY_IE_LENGTH_INVALID,
214 MCD_OPTIONAL_IE_LENGTH_INVALID
215} mcd_error_enum;
216
217typedef struct
218{
219 kal_uint8 errorno; // mcd_error_enum
220 kal_uint16 op_start;
221 kal_uint16 op_pos;
222} mcd_error_struct;
223
224/* how many pointers are contained in each structure?
225 (include recursive structure reference)*/
226
227#define SASKEN_STRUCT_START MCD_TABLE_SIZE + 2000
228#define UB_PEER_STRUCT_START MCD_TABLE_SIZE + 4000
229#define UB_DB_STRUCT_START MCD_TABLE_SIZE + 6000
230#define UB_EXTRA_STRUCT_START MCD_TABLE_SIZE + 8000
231#define NAS_STRUCT_START MCD_TABLE_SIZE + 10000
232#define ENAS_STRUCT_START MCD_TABLE_SIZE + 11000
233#define MA_STRUCT_START MCD_TABLE_SIZE + 12000
234#define ERRC_STRUCT_START MCD_TABLE_SIZE + 14000
235#define EL1_STRUCT_START MCD_TABLE_SIZE + 16000
236#define LPP_STRUCT_START MCD_TABLE_SIZE + 17000
237#define NRRC_STRUCT_START MCD_TABLE_SIZE + 18000
238#define VGNAS_STRUCT_START MCD_TABLE_SIZE + 19000
239
240// opcode enum
241typedef enum
242{
243 // general & ASN command
244 END,
245 MCD_IGNORE,
246 BITS,
247 //BITS_ARRAY,
248 BYTES,
249 //BYTES16,
250 //MAXBITS,
251 MAXBYTES,
252 //MAXBYTES16,
253 CHOICE,
254 CALL,
255 REFCALL,
256 IF,
257 ARRAYSTRUCT,
258 MAXSTRUCT,
259 CASE,
260 BACKWARD,
261 EXT_TI,
262 BREAK,
263 ENDCHOICE,
264
265 // ACT command
266 BER_NUMSTRING,
267 BER_BYTES,
268 BER_MAXIA5STRING,
269 BER_OID,
270 BER_INTEGER,
271 BER_BOOLEAN,
272 BER_ENUM,
273 BER_MAXBYTES,
274 BER_SEQUENCE,
275 BER_SET,
276 BER_NULL,
277 BER_TAG,
278 BER_IF,
279 BER_MAXSTRUCT,
280 BER_OPTIONAL,
281 BER_CASE,
282 BER_CASE_TRY,
283 BER_ANY,
284
285 IEI_LIST,
286 INFINITE_CALL,
287 PADDING_BITS,
288 CSN_TAG,
289 SPARE_BITS,
290#ifdef __MCD_CODESET_SHIFT__
291 IEI_SHIFT_CHK,
292#endif
293 MCD_OP_SUM,
294
295 ENDBER_SEQUENCE,
296 ENDBER_IF,
297 ENDIF
298} mcd_op_enum;
299
300#include "mcd_l3.h"
301#include "mcd_l4.h"
302
303#endif // _MCD_H