📄 sim.h
字号:
/*
* SIM.H
*
* Pole Star SIM
*
* Target : ARM
*
* Copyright (c) Texas Instruments 1995-1997
*
*/
/*
* Device addresses - GCS000 (Gemini / Polestar)
* HER207 (Hercules)
*/
#ifndef _WINDOWS
#include "chipset.cfg"
#endif
#include "nucleus.h"
/* Flags activation section */
/* #define SIM_RETRY by default : NOT ACTIVE */
/* #define SIM_DEBUG_TRACE by default : NOT ACTIVE */
#define SIM_CMD (MEM_SIM + 0x00)
#define SIM_STAT (MEM_SIM + 0x02)
#define SIM_CONF1 (MEM_SIM + 0x04)
#define SIM_CONF2 (MEM_SIM + 0x06)
#define SIM_IT (MEM_SIM + 0x08)
#define SIM_DRX (MEM_SIM + 0x0A)
#define SIM_DTX (MEM_SIM + 0x0C)
#define SIM_MASK (MEM_SIM + 0x0E)
/*
* Bit definitions
*/
// control regidter
#define SIM_CMD_CRST 0x0001
#define SIM_CMD_SWRST 0x0002
#define SIM_CMD_STOP 0x0004
#define SIM_CMD_START 0x0008
#define SIM_CMD_CLKEN 0x0010
// status register
#define SIM_STAT_CD 0x0001 // card present
#define SIM_STAT_TXPAR 0x0002 // transmit parity status
#define SIM_STAT_FFULL 0x0004 // fifo full
#define SIM_STAT_FEMPTY 0x0008 // fifo empty
// configuration register
#define SIM_CONF1_CHKPAR 0x0001 // enable receipt check parity
#define SIM_CONF1_CONV 0x0002 // coding convention
#define SIM_CONF1_TXRX 0x0004 // SIO line direction
#define SIM_CONF1_SCLKEN 0x0008 // enable SIM clock
#define SIM_CONF1_RSVD 0x0010 // reserved
#define SIM_CONF1_SCLKDIV 0x0020 // SIM clock frquency
#define SIM_CONF1_SCLKLEV 0x0040 // SIM clock idle level
#define SIM_CONF1_ETU 0x0080 // ETU period
#define SIM_CONF1_BYPASS 0x0100 // bypass hardware timers
#define SIM_CONF1_SVCCLEV 0x0200
#define SIM_CONF1_SRSTLEV 0x0400
#define SIM_CONF1_SIOLOW 0x8000 //force SIO to low level
// interrupt status register
#define SIM_IT_NATR 0x0001 // No answer to reset
#define SIM_IT_WT 0x0002
#define SIM_IT_ITOV 0x0004
#define SIM_IT_ITTX 0x0008 // Transmit
#define SIM_IT_ITRX 0x0010 // Receipt
#if ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11) || (CHIPSET == 12))
#define SIM_IT_CD 0x0001 // Card insertion/extraction
#else
#define SIM_IT_CD 0x0020 // Card insertion/extraction
#endif
// interrupt mask register
#define SIM_MASK_NATR 0x0001 // No answer to reset
#define SIM_MASK_WT 0x0002
#define SIM_MASK_OV 0x0004
#define SIM_MASK_TX 0x0008 // Transmit
#define SIM_MASK_RX 0x0010 // Receipt
#define SIM_MASK_CD 0x0020 // Card insertion/extraction
// receveid byte register
#define SIM_DRX_STATRXPAR 0x0100 // received byte parity status
// SIM return code OK
#define SIM_OK 0
// SIM return error codes
#define SIM_ERR_NOCARD 1
#define SIM_ERR_NOINT 2
#define SIM_ERR_NATR 3
#define SIM_ERR_READ 4
#define SIM_ERR_XMIT 5
#define SIM_ERR_OVF 6
#define SIM_ERR_LEN 7
#define SIM_ERR_CARDREJECT 8
#define SIM_ERR_WAIT 9
#define SIM_ERR_ABNORMAL_CASE1 10
#define SIM_ERR_ABNORMAL_CASE2 11
#define SIM_ERR_BUFF_OVERFL 12
// begin of JYT modifications
#define SIM_ERR_HARDWARE_FAIL 13
// end of JYT modifications
#define SIM_ERR_RETRY_FAILURE 14
#define SIM_SLEEP_NONE 0 // No SIM available
#define SIM_SLEEP_DESACT 1 // The Driver is NOT currently in sleep mode (clock is off)
#define SIM_SLEEP_ACT 2 // The Driver is currently in sleep mode (clock is on)
#define SIM_SLEEP_NOT_ALLOWED 3 // The Driver cannot stop the clock :
// The card don't want or the interface is not able
// to do it.
#define SIM_SLEEP_WAITING_TIME 500 //represent 2.3s of period before entering in sleep mode
#define SIM_CLK_STOP_MASK 0x0D // Clock Stop mask defined by ETSI 11.11
#define SIM_CLK_STOP_NOT_ALLWD 0x00 // see ETSI 11.11 : Clock Stop never allowed
#define SIM_CLK_STOP_ALLWD 0x01 // see ETSI 11.11 : No prefered level
#define SIM_CLK_STOP_HIGH 0x04 // see ETSI 11.11 : High level only
#define SIM_CLK_STOP_LOW 0x08 // see ETSI 11.11 : Low level only
#if(ANALOG == 1)
//OMEGA specific definitions
#define MODE5V_OMEGA 0x06 // used in SIM_SwitchVolt
#define MODE_INIT_OMEGA_3V 0x05 // used in SIM_StartVolt
#define MODE_INIT_OMEGA_5V 0x07 // unused !!!!
#define MODE3V_OMEGA 0x01 // unused !!!!
#define MODE_DIS_SIMLDOEN 0xDF // used in SIM_PowerOff
#define MODE_DIS_SIMEN 0xFD // used in SIM_PowerOff
#define MODE_ENA_SIMLDOEN 0x20 // used in SIM_ManualStart
#define MODE_ENA_SIMEN 0x02 // used in SIM_ManualStart
#elif(ANALOG == 2)
//IOTA specific definitions
#define MODE1_8V_IOTA 0x00
#define MODE_INIT_IOTA_3V 0x03
#define MODE_INIT_IOTA_1_8V 0x02
#define MODE3V_IOTA 0x01
#define MODE_DIS_SIMLDOEN 0xFC // SIMSEL + Regulator RSIMEN
#define MODE_DIS_SIMEN 0xF7
#define MODE_ENA_SIMLDOEN 0x03 // SIMSEL + Regulator RSIMEN
#define MODE_ENA_SIMEN 0x08
#elif(ANALOG == 3)
//SYREN specific definitions
#define MODE1_8V_SYREN 0x00
#define MODE_INIT_SYREN_3V 0x03
#define MODE_INIT_SYREN_1_8V 0x02
#define MODE3V_SYREN 0x01
#define MODE_DIS_SIMLDOEN 0x1FC // SIMSEL + Regulator RSIMEN
#define MODE_DIS_SIMEN 0x1F7
#define MODE_ENA_SIMLDOEN 0x03 // SIMSEL + Regulator RSIMEN
#define MODE_ENA_SIMEN 0x08
#endif
// define type of interface if not defined
// 5V only ME SIM_TYPE = 0
// 3V technology ME SIM_TYPE = 1
// 3V only ME SIM_TYPE = 2
// 1.8V technology ME SIM_TYPE = 3 // JYT, 29/01/02, from new specs IOTA
// 1.8V Only ME SIM_TYPE = 4 // JYT, 29/01/02, from new specs IOTA
#define SIM_TYPE_5V 0
#define SIM_TYPE_3_5V 1
#define SIM_TYPE_3V 2
#define SIM_TYPE_1_8_3V 3
#define SIM_TYPE_1_8V 4
//default configuration
#ifndef SIM_TYPE
#if((ANALOG == 2) || (ANALOG == 3))
// Until now (20/03/2003), it is impossible to test IOTA or SYREN with 1.8V Sim Card,
// so SIM drv is configured in 3V only with IOTA.and SYREN
// When 1.8V Sim Card will be delivered and tested on IOTA and SYREN, then Sim driver will pass
// to : #define SIM_TYPE SIM_TYPE_1_8_3V
#define SIM_TYPE SIM_TYPE_3V
#else
#define SIM_TYPE SIM_TYPE_3_5V
#endif
#endif
// begin of modifications of JYT
#if((ANALOG == 2) || (ANALOG == 3))
#define SIM_MASK_INFO_VOLT 0x70
#else
#define SIM_MASK_INFO_VOLT 0x10
#endif
#define SIM_1_8V 0x30
#define SIM_3V 0x10
#define SIM_5V 0x00
// end of modifications of JYT
// Max size of Answer to Reset (GSM11.11 5.7.1)
#define MAX_ATR_SIZE 33
// GSM Instruction Class (GSM 11.11 SIM spec)
#define GSM_CLASS 0xA0
// SIM Instruction Codes
#define SIM_SELECT 0xA4
#define SIM_STATUS 0xF2
#define SIM_READ_BINARY 0xB0
#define SIM_UPDATE_BINARY 0xD6
#define SIM_READ_RECORD 0xB2
#define SIM_UPDATE_RECORD 0xDC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -