[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/service/config/kal_user_mem.h b/mcu/interface/service/config/kal_user_mem.h
new file mode 100644
index 0000000..c57f829
--- /dev/null
+++ b/mcu/interface/service/config/kal_user_mem.h
@@ -0,0 +1,686 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *   kal_user_mem.h
+ *
+ * Project:
+ * --------
+ *   
+ *
+ * Description:
+ * ------------
+ *   This file provides the control buffer size and numbers configuration.
+ *
+ * Author:
+ * -------
+ *   
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+/*********************************************************************
+   (C) _____ (year of first publication) Sasken communication
+   Technologies Limited, All rights reserved.
+*   This file provides a template for .c files. This space
+*   should be used to describe the file contents
+*   Component-specific prefix : xxxx
+*********************************************************************/
+
+#ifndef _KAL_USER_MEM_H
+#define _KAL_USER_MEM_H
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "stack_buff_pool.h"
+
+/**************************Customer config interface Begin********************/
+/*Customer interface I:
+ *
+ * Discription:
+ *
+ * Customer can adjust system memory size here.
+ * This value will be added into total size of system memory.
+ * Define a negative value to shrink(not recommended), positive value to increase. 
+ *
+ * Tips:
+ * Customer may increase it if runs out of system memory(E.g 
+ * Third party application use heavily KAL API like evshed_create, kal_create_sem, 
+ * kal_create_eventgroup that consume system memory more than predefined value).
+ * Customer may also shrink this if want to save some RAM size. However, this 
+ * is not recommended. 
+ *
+ * See also:
+ * tools\sys_mem_gen.pl
+ * 
+ * 
+ * Build command : 
+ * make c,r custom
+ *
+ *Build command on Modis:
+ * make clean_modis custom
+ * && make remake_modis custom 
+ */
+#define CUSTOM_CFG_GLOBAL_MEM_SIZE_IN_BYTES 0
+
+/*Customer interface II:
+ *
+ * Discription:
+ * Customer can adjust event pool number for event scheduler
+ * This value is the actual event pool number
+ *
+ * Tips:
+ * It's rare for customer to adjust this value. However, in case
+ * of runs out of event when using event scheduler, this is the 
+ * place for customer to adjust the event number. It's not recommended
+ * to shrink this value.
+ * 
+ * Build command: 
+ * make sysgen && make c,r config custom
+ *
+ * Build command on Modis:
+ * make sys_mem_gen_modis && make clean_modis config custom
+ * && make remake_modis config custom
+ * */
+
+/*Gen97 originally 120, because IMS feature move to MD from AP, need another 400 for ims_stack task, so become 520*/
+/*ism feature owner York.Li, Nick Wang, Mika Leinonen*/
+#if defined(__CS_SERVICE__) && defined(__PS_SERVICE__)
+#define KAL_MIN_EVSHED_BUFF_NUM 520
+#elif defined(__CS_SERVICE__)
+#define KAL_MIN_EVSHED_BUFF_NUM 40
+#else
+#define KAL_MIN_EVSHED_BUFF_NUM 40
+#endif /* defined(__CS_SERVICE__) && defined(__PS_SERVICE__) */
+
+/*Customer interface III:
+ *
+ * Discription:
+ * Customer can adjust control buffer size here.
+ * This value will be added into total number of control buffer. 
+ * Define a negative value to decrease (not recommended ), positive 
+ * value to increase.
+ * 
+ * Tips:
+ * The control buffer number is well-tuned. It's not recommended to 
+ * shrink this value.
+ *
+ * Build command: 
+ * make sysgen && make c,r config custom
+ *
+ * Build command on Modis:
+ * make sys_mem_gen_modis && make clean_modis config custom
+ * && make remake_modis config custom
+ *
+ * */
+typedef enum {
+    NUM_CUSTOM_CTRL_BUFF_POOL_SIZE32     = 0,
+    NUM_CUSTOM_CTRL_BUFF_POOL_SIZE64     = 0,
+    NUM_CUSTOM_CTRL_BUFF_POOL_SIZE128    = 0,
+    NUM_CUSTOM_CTRL_BUFF_POOL_SIZE256    = 0,
+    NUM_CUSTOM_CTRL_BUFF_POOL_SIZE512    = 0,
+    NUM_CUSTOM_CTRL_BUFF_POOL_SIZE1024   = 0,
+    NUM_CUSTOM_CTRL_BUFF_POOL_SIZE2048   = 0,
+    NUM_CUSTOM_CTRL_BUFF_POOL_SIZE4096   = 0,
+#if defined(__UMTS_RAT__) || defined(__LTE_RAT__)
+    NUM_CUSTOM_CTRL_BUFF_POOL_SIZE8192   = 0,
+    NUM_CUSTOM_CTRL_BUFF_POOL_SIZE16384  = 0,
+    NUM_CUSTOM_CTRL_BUFF_POOL_SIZE32768  = 0,
+    NUM_CUSTOM_CTRL_BUFF_POOL_SIZE65536  = 0,
+    NUM_CUSTOM_CTRL_BUFF_POOL_SIZE100000 = 0,
+#endif
+} custom_ctrl_num_buff_pool_size;
+/**************************Customer config interface END**********************/
+
+
+/*
+ * NOTICE: The following are pre-defined configration. Cutomer should not
+ * modify here. 
+ * 
+ * */
+
+
+/*************************KAL private memory config stuff*******************/
+#if defined(__UMTS_RAT__) || defined(__LTE_RAT__)
+#define RPS_CREATED_CTRL_BUFF_POOLS 13
+#else /* __UMTS_RAT__ || __LTE_RAT__ */
+#define RPS_CREATED_CTRL_BUFF_POOLS 8
+#endif /* __UMTS_RAT__ || __LTE_RAT__ */
+
+/* Buffer thresholds expressed in percentage */
+#define FLC_CTRL_BUFF_UPPER_THRSHLD1 (90)
+#define FLC_CTRL_BUFF_UPPER_THRSHLD2 (95)
+
+/*************************************************************************
+ * Type Definitions
+ *************************************************************************/
+/* For performance reason, general buffer pool is allocated for 2^n size */
+typedef enum {
+    CTRL_BUFF_POOL_SIZE32        = 32,
+    CTRL_BUFF_POOL_SIZE64        = 64,
+    CTRL_BUFF_POOL_SIZE128       = 128,
+    CTRL_BUFF_POOL_SIZE256       = 256,
+    CTRL_BUFF_POOL_SIZE512       = 512,
+    CTRL_BUFF_POOL_SIZE1024      = 1024,
+    CTRL_BUFF_POOL_SIZE2048      = 2048,
+    CTRL_BUFF_POOL_SIZE4096      = 4096,
+#if defined(__UMTS_RAT__) || defined(__LTE_RAT__)
+    CTRL_BUFF_POOL_SIZE8192      = 8192,
+    CTRL_BUFF_POOL_SIZE16384     = 16384,
+    CTRL_BUFF_POOL_SIZE32768     = 32768,
+    CTRL_BUFF_POOL_SIZE65536     = 65536,
+    CTRL_BUFF_POOL_SIZE100000    = 100000,
+    CTRL_BUFF_POOL_MAX_BUFF_SIZE = CTRL_BUFF_POOL_SIZE100000
+#else  /* __UMTS_RAT__ || __LTE_RAT__ */
+    CTRL_BUFF_POOL_MAX_BUFF_SIZE = CTRL_BUFF_POOL_SIZE4096
+#endif /* __UMTS_RAT__ || __LTE_RAT__ */
+} ctrl_buff_pool_size;
+
+
+#if defined(_SIMULATION) && !defined(__MASE__)
+typedef enum {
+    NUM_CTRL_BUFF_POOL_SIZE32     = 20,
+    NUM_CTRL_BUFF_POOL_SIZE64     = 10,
+    NUM_CTRL_BUFF_POOL_SIZE128    = 10,
+    NUM_CTRL_BUFF_POOL_SIZE256    = 10,
+    NUM_CTRL_BUFF_POOL_SIZE512    = 10,
+    NUM_CTRL_BUFF_POOL_SIZE1024   = 10,
+#if defined(__ESL_COSIM_LTE__)
+    NUM_CTRL_BUFF_POOL_SIZE2048   = 40, //+32
+    NUM_CTRL_BUFF_POOL_SIZE4096   = 19, //+16
+    NUM_CTRL_BUFF_POOL_SIZE8192   = 10, //+8
+    NUM_CTRL_BUFF_POOL_SIZE16384  = 6,  //+4
+    NUM_CTRL_BUFF_POOL_SIZE32768  = 3,  //+2
+    NUM_CTRL_BUFF_POOL_SIZE65536  = 2,  //+1
+    NUM_CTRL_BUFF_POOL_SIZE100000 = 1   //+1
+#else
+    NUM_CTRL_BUFF_POOL_SIZE2048   = 8,
+    NUM_CTRL_BUFF_POOL_SIZE4096   = 3,
+    NUM_CTRL_BUFF_POOL_SIZE8192   = 2,
+    NUM_CTRL_BUFF_POOL_SIZE16384  = 2,
+    NUM_CTRL_BUFF_POOL_SIZE32768  = 1,
+    NUM_CTRL_BUFF_POOL_SIZE65536  = 1,
+    NUM_CTRL_BUFF_POOL_SIZE100000 = 0
+#endif
+} ctrl_num_buff_pool_size;
+#elif defined(__KTEST__) &&  !defined(KTEST_STATIC_TEST)
+typedef enum {
+    NUM_CTRL_BUFF_POOL_SIZE32     = 20,
+    NUM_CTRL_BUFF_POOL_SIZE64     = 10,
+    NUM_CTRL_BUFF_POOL_SIZE128    = 10,
+    NUM_CTRL_BUFF_POOL_SIZE256    = 10,
+    NUM_CTRL_BUFF_POOL_SIZE512    = 10,
+    NUM_CTRL_BUFF_POOL_SIZE1024   = 10,
+    NUM_CTRL_BUFF_POOL_SIZE2048   = 8,
+    NUM_CTRL_BUFF_POOL_SIZE4096   = 5,
+    NUM_CTRL_BUFF_POOL_SIZE8192   = 5,
+    NUM_CTRL_BUFF_POOL_SIZE16384  = 5,
+    NUM_CTRL_BUFF_POOL_SIZE32768  = 5,
+    NUM_CTRL_BUFF_POOL_SIZE65536  = 5,
+    NUM_CTRL_BUFF_POOL_SIZE100000 = 5
+} ctrl_num_buff_pool_size;
+#elif defined(__GEMINI_WCDMA__)
+typedef enum {
+    NUM_CTRL_BUFF_POOL_SIZE32     = 930,
+#if (defined(GEMINI_PLUS_WCDMA) && (GEMINI_PLUS_WCDMA >= 3))
+    NUM_CTRL_BUFF_POOL_SIZE64     = 600,
+#else  /*(defined(GEMINI_PLUS_WCDMA) && (GEMINI_PLUS_WCDMA >= 3))*/
+    NUM_CTRL_BUFF_POOL_SIZE64     = 460,
+#endif /*(defined(GEMINI_PLUS_WCDMA) && (GEMINI_PLUS_WCDMA >= 3))*/
+    NUM_CTRL_BUFF_POOL_SIZE128    = 440,
+    NUM_CTRL_BUFF_POOL_SIZE256    = 350,
+#if (defined(GEMINI_PLUS_WCDMA) && (GEMINI_PLUS_WCDMA >= 3))
+    NUM_CTRL_BUFF_POOL_SIZE512    = 110,
+#else  /*(defined(GEMINI_PLUS_WCDMA) && (GEMINI_PLUS_WCDMA >= 3))*/
+    NUM_CTRL_BUFF_POOL_SIZE512    = 100,
+#endif /*(defined(GEMINI_PLUS_WCDMA) && (GEMINI_PLUS_WCDMA >= 3))*/
+    NUM_CTRL_BUFF_POOL_SIZE1024   = 65,
+    NUM_CTRL_BUFF_POOL_SIZE2048   = 50,
+    NUM_CTRL_BUFF_POOL_SIZE4096   = 40,
+    NUM_CTRL_BUFF_POOL_SIZE8192   = 16,
+    NUM_CTRL_BUFF_POOL_SIZE16384  = 11,
+    NUM_CTRL_BUFF_POOL_SIZE32768  = 11,
+#if (GEMINI_PLUS >= 3)
+    NUM_CTRL_BUFF_POOL_SIZE65536  = 7,
+#else
+    NUM_CTRL_BUFF_POOL_SIZE65536  = 10,
+#endif
+#if defined(__MTK_TARGET__)
+    NUM_CTRL_BUFF_POOL_SIZE100000 = 0
+#else
+    NUM_CTRL_BUFF_POOL_SIZE100000 = 5
+#endif
+} ctrl_num_buff_pool_size;
+#elif defined(__LTE_RAT__) && defined(__UMTS_RAT__)
+typedef enum {
+    NUM_CTRL_BUFF_POOL_SIZE32     = 930,
+    NUM_CTRL_BUFF_POOL_SIZE64     = 450,
+    NUM_CTRL_BUFF_POOL_SIZE128    = 300,
+    NUM_CTRL_BUFF_POOL_SIZE256    = 350,
+    NUM_CTRL_BUFF_POOL_SIZE512    = 85,
+    NUM_CTRL_BUFF_POOL_SIZE1024   = 65,
+    NUM_CTRL_BUFF_POOL_SIZE2048   = 50,
+    NUM_CTRL_BUFF_POOL_SIZE4096   = 15,
+    NUM_CTRL_BUFF_POOL_SIZE8192   = 13,
+    NUM_CTRL_BUFF_POOL_SIZE16384  = 10,
+    NUM_CTRL_BUFF_POOL_SIZE32768  = 6,
+    NUM_CTRL_BUFF_POOL_SIZE65536  = 5,
+#if defined(__MTK_TARGET__)
+    NUM_CTRL_BUFF_POOL_SIZE100000 = 0
+#else
+    NUM_CTRL_BUFF_POOL_SIZE100000 = 5
+#endif
+} ctrl_num_buff_pool_size;
+#elif defined(__LTE_RAT__)
+typedef enum {
+    NUM_CTRL_BUFF_POOL_SIZE32     = 635,
+    NUM_CTRL_BUFF_POOL_SIZE64     = 290,
+    NUM_CTRL_BUFF_POOL_SIZE128    = 120,
+    NUM_CTRL_BUFF_POOL_SIZE256    = 160,
+    NUM_CTRL_BUFF_POOL_SIZE512    = 36,
+    NUM_CTRL_BUFF_POOL_SIZE1024   = 40,
+    NUM_CTRL_BUFF_POOL_SIZE2048   = 50,
+    NUM_CTRL_BUFF_POOL_SIZE4096   = 10,
+    NUM_CTRL_BUFF_POOL_SIZE8192   = 10,
+    NUM_CTRL_BUFF_POOL_SIZE16384  = 7,
+    NUM_CTRL_BUFF_POOL_SIZE32768  = 5,
+    NUM_CTRL_BUFF_POOL_SIZE65536  = 5,
+#if defined(__MTK_TARGET__)
+    NUM_CTRL_BUFF_POOL_SIZE100000 = 0
+#else
+    NUM_CTRL_BUFF_POOL_SIZE100000 = 5 // for MoDIS Only - 3G ASN.1 CODEC usage
+#endif
+} ctrl_num_buff_pool_size;
+
+#elif defined(__UMTS_RAT__)
+
+#if defined(__UMTS_TDD128_MODE__)
+#if defined(__UMTS_R5__) /* __UMTS_R5__ */
+#if defined(__GEMINI__)
+typedef enum {
+    NUM_CTRL_BUFF_POOL_SIZE32     = 565,
+    NUM_CTRL_BUFF_POOL_SIZE64     = 281,
+    NUM_CTRL_BUFF_POOL_SIZE128    = 197,
+    NUM_CTRL_BUFF_POOL_SIZE256    = 159,
+    NUM_CTRL_BUFF_POOL_SIZE512    = 98,
+    NUM_CTRL_BUFF_POOL_SIZE1024   = 40,
+    NUM_CTRL_BUFF_POOL_SIZE2048   = 25,
+    NUM_CTRL_BUFF_POOL_SIZE4096   = 16,
+    NUM_CTRL_BUFF_POOL_SIZE8192   = 11,
+    NUM_CTRL_BUFF_POOL_SIZE16384  = 9,
+    NUM_CTRL_BUFF_POOL_SIZE32768  = 5,
+    NUM_CTRL_BUFF_POOL_SIZE65536  = 5,
+#if defined(__MTK_TARGET__)
+    NUM_CTRL_BUFF_POOL_SIZE100000 = 0
+#else
+    NUM_CTRL_BUFF_POOL_SIZE100000 = 5
+#endif
+} ctrl_num_buff_pool_size;
+#else
+typedef enum {
+    NUM_CTRL_BUFF_POOL_SIZE32     = 448,
+    NUM_CTRL_BUFF_POOL_SIZE64     = 277,
+    NUM_CTRL_BUFF_POOL_SIZE128    = 197,
+    NUM_CTRL_BUFF_POOL_SIZE256    = 159,
+    NUM_CTRL_BUFF_POOL_SIZE512    = 98,
+    NUM_CTRL_BUFF_POOL_SIZE1024   = 38,
+    NUM_CTRL_BUFF_POOL_SIZE2048   = 22,
+    NUM_CTRL_BUFF_POOL_SIZE4096   = 16,
+    NUM_CTRL_BUFF_POOL_SIZE8192   = 11,
+    NUM_CTRL_BUFF_POOL_SIZE16384  = 9,
+    NUM_CTRL_BUFF_POOL_SIZE32768  = 5,
+    NUM_CTRL_BUFF_POOL_SIZE65536  = 5,
+#if defined(__MTK_TARGET__)
+    NUM_CTRL_BUFF_POOL_SIZE100000 = 0
+#else
+    NUM_CTRL_BUFF_POOL_SIZE100000 = 5
+#endif
+} ctrl_num_buff_pool_size;
+#endif
+#endif                   /* __UMTS_R5__ */
+#else                    /* __UMTS_TDD128_MODE__ */
+#if defined(__UMTS_R7__) /*__UMTS_R7__*/
+typedef enum {
+    NUM_CTRL_BUFF_POOL_SIZE32     = 920,
+    NUM_CTRL_BUFF_POOL_SIZE64     = 390,
+    NUM_CTRL_BUFF_POOL_SIZE128    = 230,
+    NUM_CTRL_BUFF_POOL_SIZE256    = 170,
+    NUM_CTRL_BUFF_POOL_SIZE512    = 85,
+    NUM_CTRL_BUFF_POOL_SIZE1024   = 55,
+    NUM_CTRL_BUFF_POOL_SIZE2048   = 30,
+    NUM_CTRL_BUFF_POOL_SIZE4096   = 15,
+    NUM_CTRL_BUFF_POOL_SIZE8192   = 12,
+    NUM_CTRL_BUFF_POOL_SIZE16384  = 10,
+    NUM_CTRL_BUFF_POOL_SIZE32768  = 6,
+    NUM_CTRL_BUFF_POOL_SIZE65536  = 5,
+#if defined(__MTK_TARGET__)
+    NUM_CTRL_BUFF_POOL_SIZE100000 = 0
+#else
+    NUM_CTRL_BUFF_POOL_SIZE100000 = 5
+#endif
+} ctrl_num_buff_pool_size;
+#elif defined(__UMTS_R5__) /* __UMTS_R5__ */
+typedef enum {
+    NUM_CTRL_BUFF_POOL_SIZE32     = 831,
+    NUM_CTRL_BUFF_POOL_SIZE64     = 285,
+    NUM_CTRL_BUFF_POOL_SIZE128    = 218,
+#if defined(__GEMINI__)
+    NUM_CTRL_BUFF_POOL_SIZE256    = 185,
+#else
+    NUM_CTRL_BUFF_POOL_SIZE256    = 155,
+#endif /* __GEMINI__ */
+    NUM_CTRL_BUFF_POOL_SIZE512    = 75,
+    NUM_CTRL_BUFF_POOL_SIZE1024   = 43,
+    NUM_CTRL_BUFF_POOL_SIZE2048   = 26,
+    NUM_CTRL_BUFF_POOL_SIZE4096   = 15,
+    NUM_CTRL_BUFF_POOL_SIZE8192   = 12,
+    NUM_CTRL_BUFF_POOL_SIZE16384  = 10,
+    NUM_CTRL_BUFF_POOL_SIZE32768  = 5,
+    NUM_CTRL_BUFF_POOL_SIZE65536  = 5,
+#if defined(__MTK_TARGET__)
+    NUM_CTRL_BUFF_POOL_SIZE100000 = 0
+#else
+    NUM_CTRL_BUFF_POOL_SIZE100000 = 5
+#endif
+} ctrl_num_buff_pool_size;
+#else /* __UMTS_R5__ */
+typedef enum {
+    NUM_CTRL_BUFF_POOL_SIZE32     = 763,
+    NUM_CTRL_BUFF_POOL_SIZE64     = 339,
+    NUM_CTRL_BUFF_POOL_SIZE128    = 198,
+    NUM_CTRL_BUFF_POOL_SIZE256    = 145,
+    NUM_CTRL_BUFF_POOL_SIZE512    = 60,
+    NUM_CTRL_BUFF_POOL_SIZE1024   = 52,
+    NUM_CTRL_BUFF_POOL_SIZE2048   = 22,
+    NUM_CTRL_BUFF_POOL_SIZE4096   = 15,
+    NUM_CTRL_BUFF_POOL_SIZE8192   = 15,
+    NUM_CTRL_BUFF_POOL_SIZE16384  = 6,
+    NUM_CTRL_BUFF_POOL_SIZE32768  = 5,
+    NUM_CTRL_BUFF_POOL_SIZE65536  = 5,
+#if defined(__MTK_TARGET__)
+    NUM_CTRL_BUFF_POOL_SIZE100000 = 0
+#else
+    NUM_CTRL_BUFF_POOL_SIZE100000 = 5
+#endif
+} ctrl_num_buff_pool_size;
+#endif /* __UMTS_R5__ */
+#endif /* __UMTS_TDD128_MODE__ */
+
+#elif defined(__CS_SERVICE__) && defined(__PS_SERVICE__) /* __UMTS_RAT__ */
+
+/* GPRS Class B Solution */
+#if (GEMINI_PLUS > 2)
+typedef enum {
+    NUM_CTRL_BUFF_POOL_SIZE32   = 280,
+    NUM_CTRL_BUFF_POOL_SIZE64   = 76,
+    NUM_CTRL_BUFF_POOL_SIZE128  = 61,
+    NUM_CTRL_BUFF_POOL_SIZE256  = 46,
+    NUM_CTRL_BUFF_POOL_SIZE512  = 41,
+    NUM_CTRL_BUFF_POOL_SIZE1024 = 16,
+    NUM_CTRL_BUFF_POOL_SIZE2048 = 15,
+    NUM_CTRL_BUFF_POOL_SIZE4096 = 1
+} ctrl_num_buff_pool_size;
+#elif defined(__GEMINI__)
+typedef enum {
+    NUM_CTRL_BUFF_POOL_SIZE32   = 265,
+    NUM_CTRL_BUFF_POOL_SIZE64   = 76,
+    NUM_CTRL_BUFF_POOL_SIZE128  = 45,
+    NUM_CTRL_BUFF_POOL_SIZE256  = 44,
+    NUM_CTRL_BUFF_POOL_SIZE512  = 21,
+    NUM_CTRL_BUFF_POOL_SIZE1024 = 16,
+    NUM_CTRL_BUFF_POOL_SIZE2048 = 11,
+    NUM_CTRL_BUFF_POOL_SIZE4096 = 5
+} ctrl_num_buff_pool_size;
+#else  /* defined(__GEMINI__) */
+typedef enum {
+    NUM_CTRL_BUFF_POOL_SIZE32   = 149,
+    NUM_CTRL_BUFF_POOL_SIZE64   = 72,
+    NUM_CTRL_BUFF_POOL_SIZE128  = 45,
+    NUM_CTRL_BUFF_POOL_SIZE256  = 44,
+    NUM_CTRL_BUFF_POOL_SIZE512  = 21,
+    NUM_CTRL_BUFF_POOL_SIZE1024 = 16,
+    NUM_CTRL_BUFF_POOL_SIZE2048 = 8,
+    NUM_CTRL_BUFF_POOL_SIZE4096 = 1
+} ctrl_num_buff_pool_size;
+#endif /* defined(__GEMINI__) */
+
+#elif defined(__CS_SERVICE__) /* __UMTS_RAT__ */
+
+#if defined(IC_BURNIN_TEST)
+
+/* Reduce the No. of buffer to reduce memory consumption. */
+
+typedef enum {
+    NUM_CTRL_BUFF_POOL_SIZE32   = 10,
+    NUM_CTRL_BUFF_POOL_SIZE64   = 5,
+    NUM_CTRL_BUFF_POOL_SIZE128  = 5,
+    NUM_CTRL_BUFF_POOL_SIZE256  = 5,
+    NUM_CTRL_BUFF_POOL_SIZE512  = 2,
+    NUM_CTRL_BUFF_POOL_SIZE1024 = 5,
+    NUM_CTRL_BUFF_POOL_SIZE2048 = 3,
+    NUM_CTRL_BUFF_POOL_SIZE4096 = 1
+} ctrl_num_buff_pool_size;
+
+#else /* LOW_COST_SUPPORT (default configuration for BASIC, UDVT load) */
+
+typedef enum {
+    NUM_CTRL_BUFF_POOL_SIZE32   = 63,
+    NUM_CTRL_BUFF_POOL_SIZE64   = 20,
+    NUM_CTRL_BUFF_POOL_SIZE128  = 30,
+    NUM_CTRL_BUFF_POOL_SIZE256  = 17,
+    NUM_CTRL_BUFF_POOL_SIZE512  = 8,
+    NUM_CTRL_BUFF_POOL_SIZE1024 = 8,
+    NUM_CTRL_BUFF_POOL_SIZE2048 = 4,
+    NUM_CTRL_BUFF_POOL_SIZE4096 = 0
+} ctrl_num_buff_pool_size;
+
+#endif /* LOW_COST_SUPPORT */
+
+#else
+
+typedef enum {
+    NUM_CTRL_BUFF_POOL_SIZE32   = 63,
+    NUM_CTRL_BUFF_POOL_SIZE64   = 20,
+    NUM_CTRL_BUFF_POOL_SIZE128  = 30,
+    NUM_CTRL_BUFF_POOL_SIZE256  = 17,
+    NUM_CTRL_BUFF_POOL_SIZE512  = 8,
+    NUM_CTRL_BUFF_POOL_SIZE1024 = 8,
+    NUM_CTRL_BUFF_POOL_SIZE2048 = 4,
+    NUM_CTRL_BUFF_POOL_SIZE4096 = 0
+} ctrl_num_buff_pool_size;
+
+#endif /* __UMTS_RAT__ */
+
+/*************************************************************************
+ * Exported Global Variables
+ *************************************************************************/
+extern buff_pool_info_struct ctrl_buff_pool_info_g[RPS_CREATED_CTRL_BUFF_POOLS];
+
+/*************************************************************************
+ * Exported Function Prototypes
+ *************************************************************************/
+extern void config_ctrl_buff_info(void);
+#endif /*_KAL_USER_MEM_H*/