⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usim_drv.h

📁 8032底层驱动部分。因为可以移植 所以单独来拿出来
💻 H
📖 第 1 页 / 共 2 页
字号:
/*****************************************************************************
*  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:
 * ---------
 *   usim_drv.h
 *
 * Project:
 * --------
 *   Maui_Software
 *
 * Description:
 * ------------
 *   Header file of USIM driver
 *
 * 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!
 *------------------------------------------------------------------------------
 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *============================================================================ 
 ****************************************************************************/
#ifndef _USIM_DRV_H_
#define _USIM_DRV_H_
#ifdef __USIM_DRV__

typedef enum{
	USIM_DIRECT,
	USIM_INVERSE
}usim_dir_enum;

typedef enum{
	PPSS = 0,	// initial character 0xFF
	PPS0 = 1,	// format character 0x1x
	PPS1 = 2,	// indicate the baudrate F, D
	PCK  = 3,	// exclusive-or PPSS to PCK should be null
	PPS_LEN = 4
}usim_pts_enum;

#define usim_protocol_enum 		sim_protocol_phy_enum	
#define usim_speed_enum				sim_speed_enum
#define usim_clock_stop_enum 		sim_clock_stop_enum
#define usim_power_enum 			sim_power_enum

typedef enum{
	ERR_INVALID_BLOCK,
	ERR_TIMEOUT
}usim_err_enum;

typedef enum{
	USIM_RESET_NEGOTIABLE,	// type 1
	USIM_RESET_SPECIFIC		// type 2
}usim_reset_type_enum;

typedef enum{
	IDLE_STATE,
	ACTIVATION_STATE,
	ATR_STATE,
	PTS_STATE,
	MAIN_CMD_READY_STATE,
	CMD_TX_STATE,
	//CMD_RX_HEADER_STATE,
	CMD_RX_BLOCK_REC_STATE,
	//CMD_RX_S_BLOCK_STATE,
	CMD_RX_STATE,
	CLK_STOPPING_STATE,
	CLK_STOPPED_STATE,
	DEACTIVATION_STATE
}usim_main_state_enum;

typedef enum{
	EVENT_TX = 		0x1,
	EVENT_RX = 		0x2,
	EVENT_OV = 		0x4,
	EVENT_TOUT = 	0x8,
	EVENT_TXERR = 	0x10,
	EVENT_NATR = 	0x20,
	EVENT_OFF = 	0x40,
	EVENT_T0END = 	0x80,
	EVENT_RXERR = 	0x100,
	EVENT_T1END = 	0x200,
	EVENT_EDCERR = 0x400
}usim_event_type_enum;

typedef enum{
	USIM_NO_ERROR = 0,

	// expected status
	USIM_WAITING_EVENT = 1,		// initial wait event status
	USIM_BLOCK_REC = 2,		// successfully received a complete block
	USIM_POWER_OFF = 3,		// successfully powered off
	USIM_ATR_REC = 4,			// successfully reveived all ATR
	USIM_S_BLOCK_REC = 5,	// successfully reveived S RESP
	
	// error status	
	USIM_NO_INSERT = -1,
	USIM_VOLT_NOT_SUPPORT = -2,
	USIM_NO_ATR = -3,
	USIM_TS_INVALID = -4,
	USIM_ATR_ERR = -5,
	USIM_INVALID_ATR = -6,
	USIM_PTS_FAIL = -7,
	USIM_RX_INVALID = -8,	// EDC error or parity error
	USIM_BWT_TIMEOUT = -9,
	USIM_DATA_ABORT = -10,
	USIM_DEACTIVATED = -11, 
	USIM_S_BLOCK_FAIL = -12,
	USIM_INVALID_WRST = -13,
	USIM_GPT_TIMEOUT = -14
}usim_status_enum;

typedef enum{
	USIM_CMD_READY,
	I_BLOCK_RX,		
	I_BLOCK_TX,
	I_BLOCK_M0_RX,
	I_BLOCK_M0_TX,
	I_BLOCK_M1_RX,
	I_BLOCK_M1_TX,
	R_BLOCK_RX,
	R_BLOCK_TX,
	S_BlOCK_REQ_RX,
	S_BlOCK_REQ_TX,
	S_BlOCK_RESP_RX,
	S_BlOCK_RESP_TX		
}usim_cmd_state_enum;

typedef enum{
 T1_NAD_INDEX		=		0,
 T1_PCB_INDEX		=		1,
 T1_LEN_INDEX		=		2,
 T1_INF_INDEX		=		3,
 T1_EDC_INDEX		=		4
}usim_t1_header_index_enum;

// definitions
#define	SELECT_PW_RETRY	3
#define 	SELECT_DIR_RETRY	2
#define 	ATR_RETRY  		3
#define	INVALID_RETRY	3
#define	RESYNC_RETRY	3
#define 	IFS_RETRY		2
#define 	USIM_IFSD_MAX	0xFE

#define FI_DEFAULT		372
#define DI_DEFAULT		1
#define INIT_WWT_T0		(9600+400)	// etu	(initial work waiting time) +400 to cover some slow card
#define TOUT_OFFSET		0x10		// apply a offset to all timeout settings (4*16 = 64 etu)
#define BGT_T1				22 		// etu	(block guard time)
#define NAD					0			// node address byte
#define SIM_DEFAULT_TOUT_VALUE      0x983
#define SIM_CMD_TOUT_VALUE          0x1400


// coding of PCB for I-block (0xxxxxxx)
#define PCB_I_BIT8		0x80		// I-block must be 0, others(R,S) are 1
#define PCB_I_SEQ			0x40		// sequence number
#define PCB_I_M			0x20		// chaining more data bit(M)
#define PCB_I_RFU			0x1F		// RFU should be zero

// coding of PCB for R-block (100xxxxx)
#define PCB_R_N1			0x90
#define PCB_R_N0			0x80
#define PCB_R_BIT7		0x40		// R: 0, S:1, use to distinguish R-block with S-block
#define PCB_R_SEQ			0x10		// sequence number
#define PCB_R_STATUS		0x0f		// 0: error free, 1:EDC or parity error, 2: other errors
#define PCB_R_STATUS_EDC_ERR 		0x1
#define PCB_R_STATUS_OTHER_ERR 	0x2
#define PCB_R_STATUS_OK	 0x0
#define PCB_R_DEFAULT	0xe0

// coding of PCB for S-block (11xxxxxx)
#define PCB_S_DEFAULT	0xc0
#define PCB_S_RESP		0x20		// 1: a response, 0: a request
#define PCB_S_ID			0x1f


#define LEN_MIN_T1			0
#define LEN_MAX_T1			254
#define USIM_IFSC_DEFAULT	32
#define USIM_IFSD_DEFAULT	32
#define USIM_CWT_DEFAULT	8203		// (11 + 1>>13) etu
#define USIM_BWT_DEFAULT	15360		// (1<<4)*960
#define USIM_POW_CLASS_MSK	0x3f		// TAi bit 1~6
#define USIM_PTS_PS1_MSK	0x10
#define USIM_PTS_PS0_T1		0x1		// select T1 protocol
#define USIM_NAD_DEFAULT	0x0

#define USIM_EVENT			0x1

#define ATR_TA1_372_5		0x11
#define ATR_TA1_372_4		0x01

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -