blob: 11ac029cad62c97a20a43e3876df76125f7c0fc1 [file] [log] [blame]
/*****************************************************************************
* 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:
* ---------
* csmcc_defs.h
*
* Project:
* --------
* MAUI
*
* Description:
* ------------
* this file contains the constant and macro definition used in CSM(CC) module.
*
* Author:
* -------
* -------
*
*******************************************************************************/
/********************************************************************************
* Copyright Statement:
* --------------------
*
* This product has been developed using a protocol stack
* developed by Sasken Communication Technologies Limited.
*
********************************************************************************/
#ifndef _CSMCC_DEFS_H
#define _CSMCC_DEFS_H
//#include "app_ltlcom.h"
#include "kal_public_api.h"
#include "global_def.h"
//#include "csmcc_types.h"
#include "csm_trc.h"
extern kal_uint8 csmcc_ut_sim_service_table_query(kal_uint32 service);
extern kal_uint8 csm_ut_check_sim_status(void);
#define CSMCC_SUCCESS (0)
#define CSMCC_FAILURE (1)
#define CSMCC_KAL_U_ONE (kal_uint8)1
#define CSMCC_KAL_U_ZERO (kal_uint8)0
#define CSMCC_INVALID_CALL_ID (kal_uint8)255
#define CSMCC_INVALID_SRC_ID (kal_uint8)255
#define CSMCC_NO_CAUSE (kal_uint8)0
#define CSMCC_INVALID_TI (kal_uint8)7
#define CSMCC_SRVCC_INVALID_TI (kal_uint8)255
#define CSMCC_MAX_CALL_NUM (7)
#define MAX_MPTY_MEMBER_NUM (5)
#define MAX_SS_BCD_NUM_LEN (20)
#define MAX_SS_SUB_ADDR_LEN (21)
#define L4_MAX_SUB_ADDR (21)
#define MAX_CD_ARG_LEN (47)
#define MAX_CUG_ARG_LEN (10)
#define L4_MAX_BCD_NUM_LEN (41) /*mtk01602, 070710:define MAX BCD length for CSD address*/
#define CSMCC_GTIMER_NUM (3) /*mtk01602: 3 global timers; dtmf and aoc,CALL_CONFIRM*/
#define CSMCC_CALL_CONFIRM_TIME (KAL_TICKS_30_SEC)
#define ACM_LEN (3)
#define ACMMAX_LEN (3)
#define EMLPP_LEN (2)
#define AAEM_LEN (1)
/* ss status oct[0], XXXXQPRA,only PRA=111, then Active.17.7.4 of 29.002 (QPRS). 23.011 */
#define SS_ACT_MASK 0x07
/* ss notification oct[0], only the last 3 bits used, 24.080. */
#define SS_CF_MASK 0x07
#define CSMCC_FILE_ACM_MASK 0x01
#define CSMCC_FILE_ACMMAX_MASK 0x02
#define CSMCC_FILE_EMLPP_MASK 0x04
#define CSMCC_FILE_AAEM_MASK 0x08
#define CSMCC_ALL_FILE_MASK (CSMCC_FILE_ACM_MASK| \
CSMCC_FILE_ACMMAX_MASK| \
CSMCC_FILE_EMLPP_MASK| \
CSMCC_FILE_AAEM_MASK) \
#define CSMCC_STARTUP_SIM_FAIL_MASK 0x40
#define CSMCC_STARTUP_NVRAM_FAIL_MASK 0x80
#define CSMCC_SIM_FILE_CHANGE_FAIL_MASK 0x40
#define CSMCC_TI_FLAG_OFFSET (kal_uint8)3
#define CSMCC_TI_FLAG_MASK 0x08
#define CSMCC_TI_MASK 0x07
#define CSMCC_VT_CAP_MASK 0x01
#if defined(__GEMINI__)
#define CSMCC_PTR_G_TO_L csmcc_context_struct *csmcc_ptr_l=csmcc_ptr_g;
#else
#define CSMCC_PTR_G_TO_L
#endif
#define CSMCC_GET_CCM_INCR_FLAG( call_id ) \
(((csmcc_ctab_g.call_tab[call_id-1].ccm_per_call) & 0x80000000) > 0)
#define CSMCC_SET_CCM_INCR_FLAG( call_id ) \
csmcc_ctab_g.call_tab[call_id-1].ccm_per_call |= 0x80000000;
#define CSMCC_RESET_CCM_INCR_FLAG( call_id ) \
csmcc_ctab_g.call_tab[call_id-1].ccm_per_call &= 0x7fffffff;
#define CSMCC_RESET_SIM_READ_FLAG \
CSMCC_PTR->startup_req = 0;
#define CSMCC_UNSET_SIM_READ_FLAG( mask ) \
CSMCC_PTR->startup_req &= ~mask;
#define CSMCC_SET_SIM_READ_FLAG( mask ) \
CSMCC_PTR->startup_req |= mask;
#define CSMCC_GET_SIM_READ_FLAG( mask ) \
(((CSMCC_PTR->startup_req) & mask ) > 0)
#define CSMCC_SET_STARTUP_SIM_FAIL_FLAG \
CSMCC_PTR->startup_req |= CSMCC_STARTUP_SIM_FAIL_MASK;
#define CSMCC_GET_STARTUP_SIM_FAIL_FLAG \
(((CSMCC_PTR->startup_req) & CSMCC_STARTUP_SIM_FAIL_MASK) >0)
#define CSMCC_SET_STARTUP_NVRAM_FAIL_FLAG \
CSMCC_PTR->startup_req |= CSMCC_STARTUP_NVRAM_FAIL_MASK;
#define CSMCC_GET_STARTUP_NVRAM_FAIL_FLAG \
(((CSMCC_PTR->startup_req) & CSMCC_STARTUP_NVRAM_FAIL_MASK) > 0)
#define CSMCC_SET_SIM_FILE_CHANGE_FAIL_FLAG \
CSMCC_PTR->startup_req |= CSMCC_SIM_FILE_CHANGE_FAIL_MASK;
#define CSMCC_GET_SIM_FILE_CHANGE_FAIL_FLAG \
(((CSMCC_PTR->startup_req) & CSMCC_SIM_FILE_CHANGE_FAIL_MASK) >0)
#define CSMCC_CONSTRUCT_LOCAL_PARA(local_para_ptr, local_para_struct) \
local_para_ptr = (local_para_struct *) \
construct_local_para((kal_uint16)sizeof(local_para_struct), \
TD_RESET);
#define GET_CALL_STATUS( call_id ) \
csmcc_ctab_g.call_pool[call_id]
#define SET_CALL_STATUS( call_id, status ) \
csmcc_ctab_g.call_pool[call_id] = status;
#define CALL_ENTRY( call_id ) \
csmcc_ctab_g.call_tab[call_id-1]
#define CALL_DATA( call_id, var ) \
csmcc_ctab_g.call_tab[call_id-1].var
#define GET_CALL_STATE( call_id ) \
csmcc_ctab_g.call_tab[call_id-1].call_state
/* MAUI_01315252, update call state */
#define SET_CALL_STATE( call_id, state) csmcc_set_call_state(call_id, state);
#define GET_MPTY_STATE( call_id ) \
csmcc_ctab_g.call_tab[call_id-1].mpty_state
#define SET_MPTY_STATE( call_id, state) \
csmcc_ctab_g.call_tab[call_id-1].mpty_state = state; \
MD_TRC_CSMCC_TRACE_MPTY_STATE_CHANGE(\
call_id, \
csmcc_ctab_g.call_tab[call_id-1].call_state, \
state, \
csmcc_ctab_g.call_tab[call_id-1].src_id);
#define GET_CALL_TYPE( call_id ) \
csmcc_ctab_g.call_tab[call_id-1].\
bc[csmcc_ctab_g.call_tab[call_id-1].cur_call_type]
#define SET_CALL_TYPE( call_id, call_type) \
csmcc_ctab_g.call_tab[call_id-1].\
bc[csmcc_ctab_g.call_tab[call_id-1].cur_call_type] = call_type;
#define FILL_ACM_VAL( data, value ) \
data[2] = (kal_uint8)(value & 0x000000ff); \
data[1] = (kal_uint8)((value & 0x0000ff00)>>8); \
data[0] = (kal_uint8)((value & 0x00ff0000)>>16);
#define SET_ACM_VAL( data ) \
CSMCC_PTR->acm = data[2]+(data[1]<<8)+(data[0]<<16);\
CSMCC_PTR->pre_acm = data[2]+(data[1]<<8)+(data[0]<<16);
#define SET_ACMMAX_VAL( data ) \
CSMCC_PTR->acmmax = data[2]+(data[1]<<8)+(data[0]<<16);
#define SET_EMLPP_VAL( data ) \
CSMCC_PTR->default_call_priority = data[0];
#define SET_AAEM_VAL( data ) \
CSMCC_PTR->auto_answer_priority_level = data[0];
#define AUTO_ANSWER( call_id ) \
(((1 << (7 - csmcc_ctab_g.call_tab[call_id-1].call_priority)) & CSMCC_PTR->auto_answer_priority_level) > 0)
#define CSD_USER_ID_LEN 32
#define CSD_USER_PWD_LEN 32
#if defined(__GEMINI__)
/*Get current sim card by module id*/
#define CSMCC_SIM_INTERFACE (CSMCC_PTR->csmcc_sim_interface)
#define CSMCC_MOD_ID (CSMCC_PTR->csmcc_sim_interface + MOD_CSM)
#else
#define CSMCC_SIM_INTERFACE
#define CSMCC_MOD_ID MOD_CSM
#endif
#define CSMCC_MOD_SIM_INDEX (CSMCC_MOD_ID - MOD_CSM)
#if (defined(__CSMCC_UT__) && defined(__MTK_INTERNAL__))
#define CSMCC_SIM_SERVICE_TABLE_QUERY(x) (csmcc_ut_sim_service_table_query(x))
#define CSMCC_CHECK_SIM_STATUS (csm_ut_check_sim_status())
#define CSMSS_SIM_SERVICE_TABLE_QUERY(x) (csmcc_ut_sim_service_table_query(x))
#define CSMSS_CHECK_SIM_STATUS (csm_ut_check_sim_status())
#else
#if defined(__GEMINI__)
/*Get current sim card by module id*/
/*If defined GEMINI, add another parameter in sim service table query API*/
#define CSMCC_SIM_SERVICE_TABLE_QUERY(x) (sim_service_table_query(x, CSMCC_PTR->csmcc_sim_interface))
#define CSMCC_CHECK_SIM_STATUS (check_sim_status(CSMCC_PTR->csmcc_sim_interface))
#define CSMSS_SIM_SERVICE_TABLE_QUERY(x) (sim_service_table_query(x, (kal_uint8)(csmss_cur_mod-MOD_CSM)))
#define CSMSS_CHECK_SIM_STATUS (check_sim_status((kal_uint8)(csmss_cur_mod-MOD_CSM)))
#else
#define CSMCC_SIM_SERVICE_TABLE_QUERY(x) (sim_service_table_query(x))
#define CSMCC_CHECK_SIM_STATUS (check_sim_status())
#define CSMSS_SIM_SERVICE_TABLE_QUERY(x) (sim_service_table_query(x))
#define CSMSS_CHECK_SIM_STATUS (check_sim_status())
#endif
#endif
#if !defined(__MTK_TARGET__) && !defined(__UE_SIMULATOR__) // UT
#define CSMCC_ALLOC_CALL_ID_FROM_VDM(x)
#define CSMCC_DEALLOC_CALL_ID_FROM_VDM(x)
#else
#define CSMCC_ALLOC_CALL_ID_FROM_VDM(x) (vdm_external_alloc_call_context(KAL_FALSE, &x, CSMCC_PTR->csmcc_sim_interface))
#define CSMCC_DEALLOC_CALL_ID_FROM_VDM(x) (vdm_external_dealloc_call_context(x, CSMCC_PTR->csmcc_sim_interface))
#endif
#define CSMCC_SIM_TOTAL (MAX_SIM_NUM)
#define CSMCC_DEFAULT_INTERFACE (15)
#endif /* _CSMCC_DEFS_H */