2025-04-11 09:40:32 +08:00

1475 lines
50 KiB
C

#ifndef __CMI_SIM_H__
#define __CMI_SIM_H__
/******************************************************************************
Copyright: - 2017- Copyrights of EigenComm Ltd.
File name: - cmisim.h
Description: - CMI (CIoT modem interface) SIM handling interface definition
History: - 10/13/2017, Originated by xlhu
******************************************************************************/
/*********************************************************************************
* Includes
*********************************************************************************/
#include "cmicomm.h"
/*********************************************************************************
* Macros
*********************************************************************************/
#define CMI_SIM_MAX_PIN_CODE_LENGTH 8
#define CMI_SIM_MAX_FILE_PATH_LEN 8
#define CMI_SIM_MAX_CMD_APDU_LEN 261
#define CMI_SIM_MAX_CMD_DATA_LEN 255
#define CMI_SIM_ICCID_LEN 20
#define CMI_SIM_MAX_TEXT_STRING_LEN 22
#define CMI_SIM_MAX_BIP_DATA_BUF_LEN 1400
#define CMI_SIM_MAX_APN_NAME 100
#define CMI_SIM_USAT_MAX_ADDRESS_LEN 16
#define CMI_SIM_USAT_MAX_TP_LEN 39
#define CMI_SIM_MAX_AID_LEN 16
#define CMI_SIM_MAX_ALPHA_ID_STR_LEN 32
#define CMI_SIM_MAX_DAIL_NUMBER_STR_LEN 24
#define CMI_SIM_MAX_SMS_ADDRESS_LEN 40
#define CMI_SIM_AUTH_DATA_MAX_LEN 16
//#define CMI_SIM_ECALL_NUM_LIST_SIZE 8//replaced by CMI_EMERGENCY_NUM_LIST_MAX_RECORD
#define CMI_SIM_RAW_IMSI_MAX_LEN 9
#define CMI_SIM_UICC_FILES_MAX_NUM 10
#define CMI_SIM_USAT_MAX_CHANNEL_NUM 7
/*********************************************************************************
* Type Definition
*********************************************************************************/
/******************************************************************************
*****************************************************************************
* Enums
*****************************************************************************
******************************************************************************/
typedef enum _EPAT_CMI_SIM_PRIM_ID_TAG
{
CMI_SIM_PRIM_BASE = 0,
CMI_SIM_GET_SUBSCRIBER_ID_REQ, /* at+cimi , --imsi */
CMI_SIM_GET_SUBSCRIBER_ID_CNF,
CMI_SIM_OPERATE_PIN_REQ, /* at+cpwd
* at+cpin
*/
CMI_SIM_OPERATE_PIN_CNF,
CMI_SIM_GET_PIN_STATE_REQ, /* at+cpin? */
CMI_SIM_GET_PIN_STATE_CNF,
CMI_SIM_LOCK_FACILITY_REQ, /* at+clck=<other facility except MEP>, enable/disable PIN1 */
CMI_SIM_LOCK_FACILITY_CNF,
CMI_SIM_PERSONALIZEME_REQ, /* at+clck=<MEP facility>*/
CMI_SIM_PERSONALIZEME_CNF = 10,
CMI_SIM_GENERIC_ACCESS_REQ, /* at+csim= */
CMI_SIM_GENERIC_ACCESS_CNF,
CMI_SIM_RESTRICTED_ACCESS_REQ, /* at+crsm= */
CMI_SIM_RESTRICTED_ACCESS_CNF,
CMI_SIM_OPEN_LOGICAL_CHANNEL_REQ, /* at+ccho= */
CMI_SIM_OPEN_LOGICAL_CHANNEL_CNF = 0x10,
CMI_SIM_CLOSE_LOGICAL_CHANNEL_REQ, /* at+cchc= */
CMI_SIM_CLOSE_LOGICAL_CHANNEL_CNF,
CMI_SIM_GENERIC_LOGICAL_CHANNEL_ACCESS_REQ, /* at+cgla= */
CMI_SIM_GENERIC_LOGICAL_CHANNEL_ACCESS_CNF = 20,
CMI_SIM_GET_TERMINAL_PROFILE_REQ, /* at+ecusatp? */
CMI_SIM_GET_TERMINAL_PROFILE_CNF,
CMI_SIM_SET_TERMINAL_PROFILE_REQ, /* at+ecusatp= */
CMI_SIM_SET_TERMINAL_PROFILE_CNF,
CMI_SIM_TERMINAL_RESPONSE_REQ, /* at+usatt=<terminal_response> */
CMI_SIM_TERMINAL_RESPONSE_CNF,
CMI_SIM_ENVELOPE_CMD_REQ, /* at+usate= */
CMI_SIM_ENVELOPE_CMD_CNF,
CMI_SIM_QUERY_REMIAN_PIN_RETRIES_REQ, /* at+cpinr*/
CMI_SIM_QUERY_REMIAN_PIN_RETRIES_CNF = 30,
CMI_SIM_GET_ICCID_REQ, /* internal use for getting Iccid request */
CMI_SIM_GET_ICCID_CNF, /* internal use for getting Iccid confirm */
CMI_SIM_SET_SIM_SLEEP_REQ, /* AT+ECSIMSLEEP=<mode>*/
CMI_SIM_SET_SIM_SLEEP_CNF,
CMI_SIM_GET_SIM_SLEEP_STATE_REQ, /* AT+ECSIMSLEEP?*/
CMI_SIM_GET_SIM_SLEEP_STATE_CNF,
CMI_SIM_SET_SIM_WRITE_COUNTER_REQ, /* AT+ECSWC=<mode>*/
CMI_SIM_SET_SIM_WRITE_COUNTER_CNF,
CMI_SIM_GET_SIM_WRITE_COUNTER_MODE_REQ, /*AT+ECSWC? */
CMI_SIM_GET_SIM_WRITE_COUNTER_MODE_CNF = 40,
CMI_SIM_GET_SUBSCRIBER_NUMBER_REQ, /* AT+CNUM, get MSISDN */
CMI_SIM_GET_SUBSCRIBER_NUMBER_CNF,
CMI_SIM_SET_EXT_CFG_REQ, //AT+ECSIMCFG
CMI_SIM_SET_EXT_CFG_CNF,
CMI_SIM_GET_EXT_CFG_REQ,
CMI_SIM_GET_EXT_CFG_CNF,
CMI_SIM_SET_SIM_REMOVAL_REQ,
CMI_SIM_SET_SIM_REMOVAL_CNF,
CMI_SIM_GET_SMS_PARAMS_REQ, //get SMS parameters from EFsmsp
CMI_SIM_GET_SMS_PARAMS_CNF = 50,
CMI_SIM_SET_HOT_SWAP_NOTIFY_REQ,
CMI_SIM_SET_HOT_SWAP_NOTIFY_CNF,
CMI_SIM_SET_PREFERRED_PLMN_LIST_REQ,
CMI_SIM_SET_PREFERRED_PLMN_LIST_CNF,
CMI_SIM_GET_PREFERRED_PLMN_LIST_REQ,
CMI_SIM_GET_PREFERRED_PLMN_LIST_CNF,
CMI_SIM_SET_SELECT_PLMN_LIST_REQ,
CMI_SIM_SET_SELECT_PLMN_LIST_CNF,
CMI_SIM_GET_SELECT_PLMN_LIST_REQ,
CMI_SIM_GET_SELECT_PLMN_LIST_CNF = 60,
CMI_SIM_IMS_AUTH_REQ,
CMI_SIM_IMS_AUTH_CNF,
CMI_SIM_GET_EMERGENCY_NUM_REQ,
CMI_SIM_GET_EMERGENCY_NUM_CNF,
CMI_SIM_IMS_INIT_READ_REQ, /*CmiSimImsInitReadReq*/
CMI_SIM_IMS_INIT_READ_CNF, /*CmiSimImsInitReadCnf*/
/*.... add new command here...*/
/*unsolicited indication*/
CMI_SIM_PROACTIVE_CMD_IND = 70, /* CmiSimProactiveCmdInd/+cusatp:<proactive_command> */
CMI_SIM_PROACTIVE_CMD_RSP, /* CmiSimProactiveCmdRsp */
CMI_SIM_PROACTIVE_CMD_END_IND, /* +cusatend */
CMI_SIM_UICC_STATE_IND, /* +cusats:<UICC_STATE>, 'uicc removed' was not defined, maybe need extend*/
/*unsolicited indication for internal use, non-standard AT command */
CMI_SIM_UICC_PIN_STATE_IND, /* +cpin: */
CMI_SIM_USAT_REFRESH_IND = 80, /*CmiSimUsatRefreshInd*/
CMI_SIM_USAT_OPEN_CHANNEL_IND,
CMI_SIM_USAT_OPEN_CHANNEL_RSP,
CMI_SIM_USAT_CLOSE_CHANNEL_IND,
CMI_SIM_USAT_CLOSE_CHANNEL_RSP,
CMI_SIM_USAT_SEND_DATA_IND,
CMI_SIM_USAT_SEND_DATA_RSP,
CMI_SIM_USAT_DATA_AVAILABLE_REQ,
CMI_SIM_USAT_DATA_AVAILABLE_CNF,
CMI_SIM_USAT_CHANNEL_STATUS_EVENT_REQ,
CMI_SIM_USAT_CHANNEL_STATUS_EVENT_CNF,
CMI_SIM_USAT_RECV_DATA_SUSPEND_IND,
CMI_SIM_USAT_MENU_SELECTION_REQ,
CMI_SIM_USAT_MENU_SELECTION_CNF,
CMI_SIM_PRIM_END = 0x0fff
}CMI_SIM_PRIM_ID;
typedef enum CmiSimStatusTag
{
CMI_SIM_UICC_NOT_POWERED = 0, /* the UICC is not powered on */
CMI_SIM_UICC_START_BEFORE_PD, /* UICC is inserted and start-up in progress before profile download */
CMI_SIM_UICC_READY_FOR_PD, /* UICC start-up halted and ready for profile download */
CMI_SIM_UICC_PD_DONE_CONT_INIT, /* Profile download cpmpleted, UICC startup continuing */
CMI_SIM_UICC_AWAIT_PIN_VER, /* UICC awaiting PIN verification */
CMI_SIM_UICC_ACTIVE, /* UICC active */
CMI_SIM_UICC_ERROR, /* UICC is inserted, but error happens */
CMI_SIM_UICC_REMOVED, /* the UICC was removed */
CMI_SIM_UICC_STATUS_UNKNOWN
}
CmiSimStatus;
/*
* CmiSimPinState defines the PIN state corresponded to +CPIN:<code> referred to TS27.007
*/
typedef enum CmiSimPinStateTag
{
CMI_SIM_PIN_STATE_READY, /* <code>: READY, MT is not pending for any password, UICC is ready */
CMI_SIM_PIN_STATE_PIN_REQUIRED, /* <code>: SIM PIN, MT is waiting for SIM PIN to be given */
CMI_SIM_PIN_STATE_UNBLOCK_PIN_REQUIRED, /* <code>: SIM PUK, MT is waiting for SIM PUK to be given */
CMI_SIM_PIN_STATE_PIN2_REQUIRED, /* <code>: SIM PIN2, MT is waiting for SIM PIN2 to be given, return only when
the last executed command resulted in PIN2 anthentication failure;
don't block if PIN2 is not entered right */
CMI_SIM_PIN_STATE_UNBLOCK_PIN2_REQUIRED, /* <code>: SIM PUK2, MT is waiting for SIM PUK2 to be given, return only when
the last executed command resulted in PUK2 anthentication failure;
don't block if PUK2 is not entered right */
/* MEP PIN --- TBD */
CMI_SIM_PIN_STATE_PH_NET_PIN_REQUIRED, /* <code>: PH-NET PIN, MT is waiting network personlization password to be given */
CMI_SIM_PIN_STATE_UNBLOCK_PH_NET_PIN_REQUIRED, /* <code>: PH-NET PUK, MT is waiting network personlization unblocking password to be given */
CMI_SIM_PIN_STATE_PH_NETSUB_PIN_REQUIRED, /* <code>: PH-NETSUB PIN, MT is waiting network subset personlization password to be given */
CMI_SIM_PIN_STATE_UNBLOCK_PH_NETSUB_PIN_REQUIRED, /* <code>: PH-NETSUB PUK, MT is waiting network subset personlization unblocking password to be given */
CMI_SIM_PIN_STATE_PH_SP_PIN_REQUIRED, /* <code>: PH-SP PIN, MT is waiting service provider personlization password to be given */
CMI_SIM_PIN_STATE_UNBLOCK_PH_SP_PIN_REQUIRED, /* <code>: PH-SP PUK, MT is waiting service provider network personlization unblocking password to be given */
CMI_SIM_PIN_STATE_PH_CORP_PIN_REQUIRED, /* <code>: PH-CORP PIN, MT is waiting corporate personlization password to be given */
CMI_SIM_PIN_STATE_UNBLOCK_PH_CORP_PIN_REQUIRED, /* <code>: PH-CORP PUK, MT is waiting corporate personlization unblocking password to be given */
/*
* extend state
*/
CMI_SIM_PIN_STATE_UNBLOCK_PIN_BLOCKED,
CMI_SIM_PIN_STATE_UNBLOCK_PIN2_BLOCKED,
/*
* extend for URC:+ECPIN:<code>
*/
CMI_SIM_PIN_STATE_SIM_NOT_INSERTED,
CMI_SIM_PIN_STATE_SIM_NOT_READY,
CMI_SIM_PIN_STATE_UNKNOWN
}
CmiSimPinState;
/* PIN code operation */
typedef enum CmiSimPinOperTag
{
CMI_SIM_PIN_VERIFY = 0, /* verify pin code */
CMI_SIM_PIN_CHANGE, /* change pin code */
CMI_SIM_PIN_ENABLE, /* enable the pin1 state for verification */
CMI_SIM_PIN_DISABLE, /* disable the pin1 state */
CMI_SIM_PIN_UNBLOCK, /* unblock pin code */
CMI_SIM_PIN_QUERY, /* query pin1 state, enable or disable */
CMI_SIM_PIN_NUM_OPERS
}
CmiSimPinOper;
typedef enum CmiSimPinNumTag
{
CMI_SIM_PIN_1 = 0,
CMI_SIM_PIN_2,
CMI_SIM_PUK_1,
CMI_SIM_PUK_2,
CMI_SIM_PIN_ALL
}
CmiSimPinNum;
typedef enum CmiSimFacLockModeTag
{
CMI_SIM_FAC_LOCK_MODE_UNLOCK,
CMI_SIM_FAC_LOCK_MODE_LOCK,
CMI_SIM_FAC_LOCK_MODE_QUERY,
CMI_SIM_FAC_LOCK_MODE_UNKNOWN
}
CmiSimFacLockMode;
typedef enum CmiSimFacilityTag
{
CMI_SIM_FACILITY_SIM, /* lock SIM/UICC card, ask password (PIN1) in power on when this lock command issued */
CMI_SIM_FACILITY_FDN, /* enable FND feature, PIN2 is required if PIN2 has not been verified. */
CMI_SIM_FACILITY_MEP, /* network personalization/MEP feature */
CMI_SIM_FACILITY_UNKNOWN
}
CmiSimFacility;
typedef enum CmiSimFacStatusTag
{
CMI_SIM_FAC_STATUS_NOT_ACTIVE,
CMI_SIM_FAC_STATUS_ACTIVE,
CMI_SIM_FAC_STATUS_UNKNOWN
}
CmiSimFacStatus;
typedef enum CmiSimCmdTag
{
CMI_SIM_CMD_SELECT = 0xa4,
CMI_SIM_CMD_STATUS = 0xf2,
CMI_SIM_CMD_READ_BINARY = 0xb0,
CMI_SIM_CMD_UPDATE_BINARY = 0xd6,
CMI_SIM_CMD_READ_RECORD = 0xb2,
CMI_SIM_CMD_UPDATE_RECORD = 0xdc,
CMI_SIM_CMD_INCREASE = 0x32,
CMI_SIM_CMD_VERIFY_PIN = 0x20,
CMI_SIM_CMD_CHANGE_PIN = 0x24,
CMI_SIM_CMD_DISABLE_PIN = 0x26,
CMI_SIM_CMD_ENABLE_PIN = 0x28,
CMI_SIM_CMD_UNBLOCK_PIN = 0x2c,
CMI_SIM_CMD_AUTHENTICATE = 0x88,
CMI_SIM_CMD_MANAGE_CHANNEL = 0x70,
CMI_SIM_CMD_GET_CHALLENGE = 0x84,
CMI_SIM_CMD_GET_RESPONSE = 0xc0,
}
CmiSimCmd;
typedef enum CmiSimFileIdTag
{
CMI_SIM_FID_KEYS_PS = 0x6f09,
CMI_SIM_FID_SMS = 0x6f3c,
CMI_SIM_FID_SMSP = 0x6f42,
CMI_SIM_FID_SMSS = 0x6f43,
CMI_SIM_FID_SMSR = 0x6f47,
CMI_SIM_FID_PLMN_ACT = 0x6f60,
CMI_SIM_FID_FPLMN = 0x6f7b,
CMI_SIM_FID_LOCI = 0x6f7e,
CMI_SIM_FID_EPSLOCI = 0x6fe3,
CMI_SIM_FID_EPSNSC = 0x6fe4,
CMI_SIM_FID_INVALID = 0x0000
}
CmiSimFileId;
typedef enum CmiSimBearerTypeTag
{
CMI_SIM_BEARER_TYPE_CSD = 0x01,
CMI_SIM_BEARER_TYPE_GPRS = 0x02,
CMI_SIM_BEARER_TYPE_DEFAULT = 0x03,
CMI_SIM_BEARER_TYPE_PACKET_SERIVCE = 0x09,
CMI_SIM_BEARER_TYPE_EUTRAN_MAPPED_UTRAN_PS = 0x0B
}
CmiSimBearerType;
typedef enum CmiSimTransportFormatTag
{
CMI_SIM_UDP_UICC_IN_CLIENT_MODE_REMOTE_CONN = 0x01,
CMI_SIM_TCP_UICC_IN_CLIENT_MODE_REMOTE_CONN = 0x02,
CMI_SIM_TCP_UICC_IN_SERVER_MODE = 0x03,
CMI_SIM_UDP_UICC_IN_CLIENT_MODE_LOCAL_CONN = 0x04,
CMI_SIM_TCP_UICC_IN_CLIENT_MODE_LOCAL_CONN = 0x05,
CMI_SIM_DIRECT_COMMUNICATE_CHANNEL = 0x06
}
CmiSimTransportFormat;
typedef enum CmiSimUsatGeneralResultTag
{
CMI_SIM_USAT_GR_CMD_PERFORMED_OK = 0x00,
CMI_SIM_USAT_GR_CMD_PERFORMED_PARTIAL_COMPREHENSION = 0x01,
CMI_SIM_USAT_GR_CMD_PERFORMED_MISS_INFO = 0x02,
CMI_SIM_USAT_GR_REFRESH_ADDITIONAL_EF_READ = 0x03,
CMI_SIM_USAT_GR_CMD_PERFORMED_OK_NO_ICON = 0x04,
CMI_SIM_USAT_GR_CMD_PERFORMED_OK_MOD_BY_CC = 0x05,
CMI_SIM_USAT_GR_CMD_PERFORMED_OK_LIMIT_SERVICE = 0x06,
CMI_SIM_USAT_GR_CMD_PERFORMED_OK_WITH_MOD = 0x07,
CMI_SIM_USAT_GR_REFRESH_APP_INACTIVE = 0x08,
CMI_SIM_USAT_GR_PROAC_SESSION_TERMINATE_BY_USER = 0x10,
CMI_SIM_USAT_GR_USER_REQ_BACK_MOVE = 0x11,
CMI_SIM_USAT_GR_USER_NO_RESPONSE = 0x12,
CMI_SIM_USAT_GR_USER_REQ_HELP_INFO = 0x13,
CMI_SIM_USAT_GR_USSD_SS_TRANS_USER_TERMINATE = 0x14,
CMI_SIM_USAT_GR_ME_CANNOT_PROC_COMMAND = 0x20,
CMI_SIM_USAT_GR_NET_CANNOT_PROC_COMMAND = 0x21,
CMI_SIM_USAT_GR_USER_REJ_PROACTIVE_CMD = 0x22,
CMI_SIM_USAT_GR_USER_CLEAR_DOWN = 0x23,
CMI_SIM_USAT_GR_CONTRADICT_CURR_TIMER_STATE = 0x24,
CMI_SIM_USAT_GR_MOD_BY_CC_TEMP_PROB = 0x25,
CMI_SIM_USAT_GR_BROWSER_GEN_ERROR = 0x26,
CMI_SIM_USAT_GR_CMD_BEYOND_ME_CAP = 0x30,
CMI_SIM_USAT_GR_CMD_TYPE_UNKNOWN_BY_ME = 0x31,
CMI_SIM_USAT_GR_CMD_DATA_UNKNOWN_BY_ME = 0x32,
CMI_SIM_USAT_GR_CMD_NUM_UNKNOWN_BY_ME = 0x33,
CMI_SIM_USAT_GR_SS_RETURN_ERROR = 0x34,
CMI_SIM_USAT_GR_SMS_RP_ERROR = 0x35,
CMI_SIM_USAT_GR_ERR_REQ_VALUES_MISSING = 0x36,
CMI_SIM_USAT_GR_USSD_RETURN_ERROR = 0x37,
CMI_SIM_USAT_GR_CC_OR_MOSM_PERM_PROB = 0x39,
CMI_SIM_USAT_GR_BIP_ERROR = 0x3A,
CMI_SIM_USAT_GR_ACCESS_TECHNO_UNAVAILABLE = 0x3B
}
CmiSimUsatGeneralResult;
typedef enum CmiSimUsatAddiInfoMeProblemTag
{
CMI_SIM_USAT_ADDI_INFO_ME_NO_CAUSE_GIVEN = 0x00,
CMI_SIM_USAT_ADDI_INFO_SCREEN_BUSY = 0x01,
CMI_SIM_USAT_ADDI_INFO_ME_BUSY_ON_CALL = 0x02,
CMI_SIM_USAT_ADDI_INFO_ME_BUSY_ON_SS = 0x03,
CMI_SIM_USAT_ADDI_INFO_NO_SERVICE = 0x04,
CMI_SIM_USAT_ADDI_INFO_ACC_CONT_CLASS_BAR = 0x05,
CMI_SIM_USAT_ADDI_INFO_RADIO_RES_NOT_GRANTED = 0x06,
CMI_SIM_USAT_ADDI_INFO_NOT_IN_SPEECH_CALL = 0x07,
CMI_SIM_USAT_ADDI_INFO_ME_BUSY_ON_USSD = 0x08,
CMI_SIM_USAT_ADDI_INFO_ME_BUSY_ON_DTMF = 0x09,
CMI_SIM_USAT_ADDI_INFO_ME_NO_APP_ACTIVE = 0x0a
}
CmiSimUsatAddiInfoMeProblem;
typedef enum CmiSimUsatAddiInfoBipProblemTag
{
CMI_SIM_USAT_ADDI_INFO_BIP_NO_CAUSE_GIVEN = 0x00,
CMI_SIM_USAT_ADDI_INFO_BIP_NO_CHANNEL_AVAIL = 0x01,
CMI_SIM_USAT_ADDI_INFO_BIP_CHANNEL_CLOSED = 0x02,
CMI_SIM_USAT_ADDI_INFO_BIP_CHANNEL_ID_INVALID = 0x03,
CMI_SIM_USAT_ADDI_INFO_BIP_REQ_BUFFER_SIZE_UNAVAIL = 0x04,
CMI_SIM_USAT_ADDI_INFO_BIP_SECURITY_ERROR = 0x05,
CMI_SIM_USAT_ADDI_INFO_BIP_TRANS_LEVEL_UNAVAIL = 0x06,
CMI_SIM_USAT_ADDI_INFO_BIP_REMOTE_DEV_NOT_REACH = 0x07,
CMI_SIM_USAT_ADDI_INFO_BIP_SERVICE_ERROR = 0x08,
CMI_SIM_USAT_ADDI_INFO_BIP_SERVICE_ID_UNKNOWN = 0x09,
CMI_SIM_USAT_ADDI_INFO_BIP_PORT_UNAVAIL = 0x10
}
CmiSimUsatAddiInfoBipProblem;
typedef enum CmiSimSleepModeTag
{
CMI_SIM_SLEEP_DISABLE = 0,
CMI_SIM_SLEEP_ENABLE = 1,
CMI_SIM_SLEEP_NUM = 0xFF
}
CmiSimSleepMode;
typedef enum CmiSimWriteCounterModeTag
{
CMI_SIM_WRITE_COUNTER_DISBALE = 0,
CMI_SIM_WRITE_COUNTER_ENBALE = 1,
CMI_SIM_WRITE_COUNTER_QUERY = 2,
CMI_SIM_WRITE_COUNTER_CLEAR = 3,
CMI_SIM_WRITE_COUNTER_UNDEF = 0xFF
}
CmiSimWriteCounterMode;
typedef enum CmiSimPresenceDetectModeTag
{
CMI_SIM_PRESENCE_DETECT_DISBALE = 0,
CMI_SIM_PRESENCE_DETECT_ENBALE = 1,
CMI_SIM_PRESENCE_DETECT_UNDEF = 0xFF
}
CmiSimPresenceDetectMode;
typedef enum CmiSimPlmnFormatEnum_Tag
{
CMI_SIM_PLMN_LONG_ALPH = 0,
CMI_SIM_PLMN_SHORT_ALPH = 1,
CMI_SIM_PLMN_NUMERIC = 2
}
CmiSimPlmnFormatEnum;
/*
* selection of preferred PLMN list +CPLS
*/
typedef enum CmiSimSelPreferPlmnListTag
{
CMI_SIM_SELECT_USER_PLMN_ACT = 0,
CMI_SIM_SELECT_OPLMN_ACT = 1,
CMI_SIM_SELECT_HPLMN_ACT = 2
}
CmiSimSelPreferPlmnList;
/*
* IMS Auth type
*/
typedef enum CmiSimImsAuthTypeTag
{
CMI_SIM_IMS_AUTH_USIM = 0, //Auth executed under USIM app
CMI_SIM_IMS_AUTH_ISIM = 1, //Auth executed under ISIM app
CMI_SIM_IMS_AUTH_UNDEF = 0xFF //undefined
}
CmiSimImsAuthType;
/*
* IMS Auth response status
*/
typedef enum CmiSimImsAuthResStatusTag
{
CMI_SIM_IMS_AUTH_RES_SUCC = 0, //AUTH is successful
CMI_SIM_IMS_AUTH_RES_SYNC_FAILURE = 1, //SQN is out of range
CMI_SIM_IMS_AUTH_RES_INVALID_MAC = 2, //MAC parameter is invalid
CMI_SIM_IMS_AUTH_RES_UNDEF = 0xFF //undefined
}
CmiSimImsAuthResStatus;
/*
* UICC application/DF directory
*/
typedef enum CmiSimUiccDFDirTag
{
CMI_SIM_UICC_ADF_USIM = 0, //USIM app
CMI_SIM_UICC_ADF_ISIM = 1, //ISIM app
CMI_SIM_UICC_DF_TELECOM = 2, //DF Telecom
CMI_SIM_UICC_DF_UNDEF = 0xFF //undefined
}
CmiSimUiccDfDir;
/*
* SIM write count saved type
*/
typedef enum CmiSimSwcSaveTypeTag
{
CMI_SIM_SWC_SAVE_SLP2_MEM = 0,
CMI_SIM_SWC_SAVE_NVM = 1
}
CmiSimSwcSaveType;
/******************************************************************************
*****************************************************************************
* CMI STRUCT
*****************************************************************************
******************************************************************************/
typedef struct CmiSimPinCodeTag
{
UINT8 length;
UINT8 reserved1;
UINT16 reserved2;
UINT8 data[CMI_SIM_MAX_PIN_CODE_LENGTH];
}
CmiSimPinCode;
typedef struct CmiSimIccidStrTag
{
CHAR data[CMI_SIM_ICCID_LEN];
}
CmiSimIccidStr;
typedef struct CmiSimFilePathTag
{
UINT8 len;
UINT8 reserved1;
UINT16 reserved2;
UINT8 filePath[CMI_SIM_MAX_FILE_PATH_LEN];
}
CmiSimFilePath;
typedef struct CmiSimUsatBipEqosTag
{
UINT8 qci;
UINT16 reserved;
BOOL gbrMbrPresent; /* indicate the present of GBR/MBR */
UINT32 ulMBR; /* UL_MBR, kbit/s */
UINT32 dlMBR; /* DL_MBR, kbit/s */
UINT32 ulGBR; /* UL_GBR, kbit/s */
UINT32 dlGBR; /* DL_GBR, kbit/s */
}
CmiSimUsatBipEqos;
typedef struct CmiSimUsatBipQosTag
{
UINT8 precedenceClass;
UINT8 delayClass;
UINT8 reliaClass;
UINT8 peakTptClass;
UINT8 meanTptClass;
UINT8 rsvd1;
UINT16 rsvd2;
}
CmiSimUsatBipQos;
typedef struct CmiSimTextStringTag
{
UINT16 length;
UINT8 textString[CMI_SIM_MAX_TEXT_STRING_LEN];//8-bit coding
}
CmiSimTextString;
typedef struct CmiSimUsatCmdResultTag
{
UINT8 generalResult;//CmiSimUsatGeneralResult
BOOL addiInfoMeProblemPresent;
UINT8 addiInfoMeProblem;//CmiSimUsatAddiInfoMeProblem
BOOL addiInfoBipProblemPresent;
UINT8 addiInfoBipProblem;//CmiSimUsatAddiInfoBipProblem
UINT8 reserved1;
UINT16 reserved2;
}
CmiSimUsatCmdResult;
typedef struct CmiSimUsatBipDataPduTag
{
UINT8 channelId;
UINT8 reserved;
UINT16 length;
UINT8 *ptr;
struct CmiSimUsatBipDataPduTag *pNext;
}
CmiSimUsatBipDataPdu;
typedef struct CmiSimEfWriteCnt_Tag
{
UINT16 fileId;
UINT16 reserved;
UINT32 writeCnt;//SIM write counter
}
CmiSimEfWriteCnt;
#define CMI_MAX_SWC_EF_LIST_NUM 20
typedef struct CmiSimWriteCntList_Tag
{
UINT8 swcEfNum;
UINT8 rsvd1;
UINT16 rsvd2;
CmiSimEfWriteCnt swcCnt[CMI_MAX_SWC_EF_LIST_NUM];
}
CmiSimWriteCntList;
typedef struct CmiSimDialNumber_Tag
{
UINT8 resvd1;
UINT16 resvd2;
UINT8 type;
CHAR alphaId[CMI_SIM_MAX_ALPHA_ID_STR_LEN];
CHAR dialNumStr[CMI_SIM_MAX_DAIL_NUMBER_STR_LEN];
}
CmiSimDialNumber;
typedef struct CmiSimSmsAddress_Tag
{
UINT8 typeOfNumber;
UINT8 numberPlanId;
UINT8 reserved;
UINT8 length;
UINT8 digitAddr[CMI_SIM_MAX_SMS_ADDRESS_LEN];
}
CmiSimSmsAddress;
typedef struct CmiSimUiccFileTag
{
UINT8 fileDir;//CmiSimUiccDfDir
UINT8 resved;
UINT16 fileId;// EF Id, .e.g 0x6F07 for EFimsi
}
CmiSimUiccFile;
typedef struct CmiSimUiccFileListTag
{
UINT8 fileNum;//number of file(s)
UINT8 resvd1;
UINT16 resvd2;
CmiSimUiccFile file[CMI_SIM_UICC_FILES_MAX_NUM];
}
CmiSimUiccFileList;
typedef struct CmiSimUsatChanRecvStatusTag
{
UINT8 channelId;
BOOL bRecvSuspend;/* indicated whether suspend receive data or not (resume)
* TRUE-suspend to receive data; FALSE-resume to receive data
*/
UINT16 reserved;
}
CmiSimUsatChanRecvStatus;
/******************************************************************************
* CMI_SIM_GET_SUBSCRIBER_ID_REQ
* +CIMI
******************************************************************************/
typedef CamCmiEmptySig CmiSimGetSubscriberIdReq;
//CMI_SIM_GET_SUBSCRIBER_ID_CNF
typedef struct CmiSimGetSubscriberIdCnfTag
{
BOOL bTestSim;//wether is test SIM or not
BOOL bISimCard;//whether is ISIM supported or not
UINT16 resvd;
CmiSimImsiStr imsiStr; /* IMSI string */
}
CmiSimGetSubscriberIdCnf;
/******************************************************************************
* CMI_SIM_GET_ICCID_REQ
* +ECICCID
******************************************************************************/
typedef CamCmiEmptySig CmiSimGetIccIdReq;
//CMI_SIM_GET_ICCID_CNF
typedef struct CmiSimGetIccIdCnfTag
{
CmiSimIccidStr iccidStr; /* ICCID string */
}
CmiSimGetIccIdCnf;
/******************************************************************************
* CMI_SIM_GET_SUBSCRIBER_NUMBER_REQ
* +CNUM
******************************************************************************/
typedef CamCmiEmptySig CmiSimGetSubscriberNumReq;
//CMI_SIM_GET_SUBSCRIBER_NUMBER_CNF
#define CMI_SIM_MAX_DIAL_NUMBER_LIST_SIZE 4
typedef struct CmiSimGetSubscriberNumCnfTag
{
UINT8 resvd1;
UINT16 resvd2;
UINT8 totalNum;//total numbers of dialling number list
CmiSimDialNumber dialNumberList[CMI_SIM_MAX_DIAL_NUMBER_LIST_SIZE];
}
CmiSimGetSubscriberNumCnf;
/******************************************************************************
* CMI_SIM_OPERATE_PIN_REQ
* +CPWD=<fac>,<oldpwd>,<newpwd> //<fac>:"SC" (change SIM PIN1)
* +CPIN=<pin>[,<new pin>] //verify/unblock pin
******************************************************************************/
typedef struct CmiSimOperatePinReqTag
{
UINT8 pinOper; //CmiSimPinOper
UINT8 pinNum; //CmiSimPinNum
UINT16 reserved;
CmiSimPinCode pinCode;
CmiSimPinCode newPinCode;
}
CmiSimOperatePinReq;
//CMI_SIM_OPERATE_PIN_CNF
typedef struct CmiSimOperatePinCnfTag
{
UINT8 pinOper; //CmiSimPinOper
UINT8 remianRetries;
UINT16 reserved;
}
CmiSimOperatePinCnf;
/*
* CMI_SIM_GET_PIN_STATE_REQ
* AT+CPIN?
*/
typedef CamCmiEmptySig CmiSimGetPinStateReq;
//CMI_SIM_GET_PIN_STATE_CNF
typedef struct CmiSimGetPinStateCnfTag
{
//CmiRcCode resultCode;
UINT8 pinState;//CmiSimPinState
UINT8 reserved1;
UINT16 reserved2;
}
CmiSimGetPinStateCnf;
/******************************************************************************
* CMI_SIM_LOCK_FACILITY_REQ
* AT+CLCK=<fac>,<mode>[,<passwd>] //<fac>: "SC"
******************************************************************************/
typedef struct CmiSimFacilityLockReqTag
{
UINT8 mode;//CmiSimFacLockMode
UINT8 fac;//CmiSimFacility
UINT16 reserved;
CmiSimPinCode passwd;
}
CmiSimFacilityLockReq;
//CMI_SIM_LOCK_FACILITY_CNF
typedef struct CmiSimFacilityLockCnfTag
{
UINT8 facStatus; //CmiSimFacStatus
UINT8 mode; //CmiSimFacLockMode
UINT16 reserved2;
}
CmiSimFacilityLockCnf;
/******************************************************************************
* CMI_SIM_GENERIC_ACCESS_REQ
* AT+CSIM=<length>,<command>
******************************************************************************/
typedef struct CmiSimGenericAccessReqTag
{
UINT16 reserved;
UINT16 cmdReqLen;
UINT8 cmdReqData[CMI_SIM_MAX_CMD_APDU_LEN];
}
CmiSimGenericAccessReq;
// CMI_SIM_GENERIC_ACCESS_CNF
typedef struct CmiSimGenericAccessCnfTag
{
UINT16 reserved;
UINT16 cmdRspLen;
UINT8 *cmdRspData;
}
CmiSimGenericAccessCnf;
/******************************************************************************
* CMI_SIM_RESTRICTED_ACCESS_REQ
* AT+CRSM=<command>[,<fileid>[,<P1>,<P2>,<P3>[,<data>[,<pathid>]]]]
* Note: restricted USIM/ISIM access, supported commands: READ BINARY, READ RECORD, UPDATE BINARY,
* UPDATE RECORD, STATUS, GET RESPONSE.
******************************************************************************/
typedef struct CmiSimRestrictedAccessReqTag
{
CmiSimFilePath filePath;//fileid shall be filled in filePath for HIMS.
// e.g. access EFimsi(6F07)
// filePath.len = 0x02;
// filePath.filePath[0] = 0x6F,;
// filePath.filePath[1] = 0x07;
// Mandatory for every command except STATUS
UINT8 uiccCmd;//CmiSimCmd, mandatory
UINT8 p1;//<P1>, parameter 1 of APDU. Mandatory for every command except GET RESPONSE and STATUS
UINT8 p2;//<P2>, parameter 2 of APDU. Mandatory for every command except GET RESPONSE and STATUS
UINT8 dataLen;//th length of data. Mandatory for UPDATE BINARY and UPDATE RECORD
UINT8 data[CMI_SIM_MAX_CMD_DATA_LEN];//information which shall be written to the SIM. Mandatory for UPDATE BINARY and UPDATE RECORD
BOOL expResponse;//indicate if <P3> present
UINT8 responseLen;//<P3>, expected response data length
UINT8 uiccDfDir;//CmiSimUiccDfDir
UINT8 reserved;
}
CmiSimRestrictedAccessReq;
// CMI_SIM_RESTRICTED_ACCESS_CNF
typedef struct CmiSimRestrictedAccessCnfTag
{
UINT8 sw1;//status word 1
UINT8 sw2;//status word 2
//successful result: sw1=0x90, sw2=0x00, for other sw referred to TS102.221 10.2.1
UINT16 cmdRspLen;//response data length, '>0' means valid return for read file data
UINT8 *cmdRspData;//the pointer to the response data. This dynamic memory is
//allocated by sender and shall be free by receiver.
}
CmiSimRestrictedAccessCnf;
/******************************************************************************
* CMI_SIM_OPEN_LOGICAL_CHANNEL_REQ
* +CCHO=<dfname>
******************************************************************************/
typedef struct CmiSimOpenLogicalChannelReqTag
{
UINT8 length;
UINT8 reserved1;
UINT16 reserved2;
UINT8 dfName[CMI_SIM_MAX_AID_LEN];
}
CmiSimOpenLogicalChannelReq;
//CMI_SIM_OPEN_LOGICAL_CHANNEL_CNF
typedef struct CmiSimOpenLogicalChannelCnfTag
{
UINT8 sessionId;
UINT8 reserved1;
UINT16 reserved2;
}
CmiSimOpenLogicalChannelCnf;
/******************************************************************************
* CMI_SIM_CLOSE_LOGICAL_CHANNEL_REQ
* +CCHC=<sessionId>
******************************************************************************/
typedef struct CmiSimCloseLogicalChannelReqTag
{
UINT8 sessionId;
UINT8 reserved1;
UINT16 reserved2;
}
CmiSimCloseLogicalChannelReq;
//CMI_SIM_CLOSE_LOGICAL_CHANNEL_CNF
typedef CamCmiEmptySig CmiSimCloseLogicalChannelCnf;
/******************************************************************************
* CMI_SIM_GENERIC_LOGICAL_CHANNEL_ACCESS_REQ
* +CGLA=<sessionId>,<length>,<command>
******************************************************************************/
typedef struct CmiSimGenLogicalChannelAccessReqTag
{
UINT8 sessionId;
UINT8 reserved;
UINT16 cmdReqLen;
UINT8 cmdReqData[CMI_SIM_MAX_CMD_APDU_LEN];
}
CmiSimGenLogicalChannelAccessReq;
//CMI_SIM_GENERIC_LOGICAL_CHANNEL_ACCESS_CNF
typedef struct CmiSimGenLogicalChannelAccessCnfTag
{
UINT16 reserved;
UINT16 cmdRspLen;
UINT8 *cmdRspData;
}
CmiSimGenLogicalChannelAccessCnf;
/******************************************************************************
* CMI_SIM_SET_EXT_CFG_REQ
* AT+ECSIMCFG="SIMSIMULATOR",0/1,"SOFTSIM",0/1,"SIMPOWERSAVE",0/1,"SIMPRESENCEDETECT",0/1,"SIMSLOT",0/1
******************************************************************************/
typedef struct CmiSimSetExtCfgReq_Tag
{
BOOL simSimuPresent; //whether enable SIM simulator or not
BOOL bSimSimulator;
BOOL softsimPresent; //whether enable softsim or not
BOOL bSoftSim;
BOOL simPowerSavePresent; //whether enable SIM power save or not
BOOL bSimPowerSave;
BOOL simPreDetectPresent; //whether enable SIM presence detect or not
BOOL bSimPreDetect;
BOOL simSlotPresent;
UINT8 simSlot; // SIM slot 0 or 1
BOOL isimDisablePresent; //whether ISIM Application disable or not
BOOL bIsimDisable;
}CmiSimSetExtCfgReq; // 8 bytes
typedef CamCmiEmptySig CmiSimSetExtCfgCnf;
/******************************************************************************
* CMI_SIM_GET_EXT_CFG_REQ
* AT+ECSIMCFG?
******************************************************************************/
typedef CamCmiEmptySig CmiSimGetExtCfgReq;
typedef struct CmiSimGetExtCfgCnf_Tag
{
BOOL bSimSimulator;
BOOL bSoftSim;
BOOL bSimPowerSave;
BOOL bSimPreDetect;
UINT8 simSlot;
BOOL bIsimDisable;
UINT16 resvd2;
}
CmiSimGetExtCfgCnf;
/******************************************************************************
* CMI_SIM_SET_SIM_SLEEP_REQ
* +ECSIMSLEEP=<mode>
******************************************************************************/
typedef struct CmiSimSetSimSleepReqTag
{
UINT8 mode;//CmiSimSleepMode
UINT8 reserved1;
UINT16 reserved2;
}
CmiSimSetSimSleepReq;
//CMI_SIM_SET_SIM_SLEEP_CNF
typedef CamCmiEmptySig CmiSimSetSimSleepCnf;
/******************************************************************************
* CMI_SIM_GET_SIM_SLEEP_STATE_REQ
* +ECSIMSLEEP?
******************************************************************************/
typedef CamCmiEmptySig CmiSimGetSimSleepStateReq;
//CMI_SIM_GET_SIM_SLEEP_STATE_CNF
typedef struct CmiSimGetSimSleepStateCnfTag
{
UINT8 mode;//CmiSimSleepMode
UINT8 reserved1;
UINT16 reserved2;
}
CmiSimGetSimSleepStateCnf;
/******************************************************************************
* CMI_SIM_QUERY_REMIAN_PIN_RETRIES_REQ
* +CPINR[=<sel_code>]
******************************************************************************/
typedef struct CmiSimQueryRemianPinRetriesReqTag
{
UINT8 pinCode;//CmiSimPinNum
UINT8 reserved1;
UINT16 reserved2;
}
CmiSimQueryRemianPinRetriesReq;
//CMI_SIM_QUERY_REMIAN_PIN_RETRIES_CNF
typedef struct CmiSimQueryRemianPinRetriesCnfTag
{
UINT8 pinCode;//CmiSimPinNum
UINT8 remianRetries[CMI_SIM_PIN_ALL];
UINT8 defaultRetries[CMI_SIM_PIN_ALL];
UINT8 reserved1;
UINT16 reserved2;
}
CmiSimQueryRemianPinRetriesCnf;
/******************************************************************************
* CMI_SIM_SET_SIM_WRITE_COUNTER_REQ
* +ECSWC=<mode>[,<savetype>]
******************************************************************************/
typedef struct CmiSimSetSimWriteCounterReqTag
{
UINT8 mode;//CmiSimWriteCounterMode
BOOL saveTypePresent;
UINT8 saveType;//CmiSimSwcSaveType
UINT8 reserved2;
}
CmiSimSetSimWriteCounterReq;
//CMI_SIM_SET_SIM_WRITE_COUNTER_CNF
typedef struct CmiSimSetSimWriteCounterCnfTag
{
UINT8 mode;//CmiSimWriteCounterMode
UINT8 reserved1;
UINT16 reserved2;
CmiSimWriteCntList swcList;
}
CmiSimSetSimWriteCounterCnf;
/******************************************************************************
* CMI_SIM_GET_SIM_WRITE_COUNTER_MODE_REQ
* +ECSWC?
******************************************************************************/
typedef CamCmiEmptySig CmiSimGetSimWriteCounterModeReq;
//CMI_SIM_GET_SIM_WRITE_COUNTER_MODE_CNF
typedef struct CmiSimGetSimWriteCounterModeCnfTag
{
UINT8 mode;//CmiSimWriteCounterMode
UINT8 saveType; //CmiSimSwcSaveType
UINT16 reserved;
}
CmiSimGetSimWriteCounterModeCnf;
/******************************************************************************
* CMI_SIM_SET_SIM_PRESENCE_DETECT_REQ
* +ECSIMPD=<mode>
******************************************************************************/
typedef struct CmiSimSetSimPresenceDetectReqTag
{
UINT8 mode;//CmiSimPresenceDetectMode
UINT8 reserved1;
UINT16 reserved2;
}
CmiSimSetSimPresenceDetectReq;
//CMI_SIM_SET_SIM_PRESENCE_DETECT_CNF
typedef CamCmiEmptySig CmiSimSetSimPresenceDetectCnf;
/******************************************************************************
* CMI_SIM_GET_SIM_PRESENCE_DETECT_MODE_REQ
* +ECSIMPD?
******************************************************************************/
typedef CamCmiEmptySig CmiSimGetSimPresenceDetectModeReq;
//CMI_SIM_GET_SIM_PRESENCE_DETECT_MODE_CNF
typedef struct CmiSimGetSimPresenceDetectModeCnfTag
{
UINT8 mode;//CmiSimPresenceDetectMode
UINT8 reserved1;
UINT16 reserved2;
}
CmiSimGetSimPresenceDetectModeCnf;
/******************************************************************************
* CMI_SIM_SET_TERMINAL_PROFILE_REQ
* +ECUSATP=
******************************************************************************/
typedef struct CmiSimUsatSetTerminalProfileReqTag
{
UINT8 resvd1;
UINT16 resvd2;
UINT8 tpLength;
UINT8 tpData[CMI_SIM_USAT_MAX_TP_LEN];
}
CmiSimUsatSetTerminalProfileReq;
/*
* CMI_SIM_SET_TERMINAL_PROFILE_CNF
*/
typedef CamCmiEmptySig CmiSimUsatSetTerminalProfileCnf;
/******************************************************************************
* CMI_SIM_GET_TERMINAL_PROFILE_REQ
* +ECUSATP?
******************************************************************************/
typedef CamCmiEmptySig CmiSimUsatGetTerminalProfileReq;
//CMI_SIM_GET_TERMINAL_PROFILE_CNF
typedef struct CmiSimUsatGetTerminalProfileCnfTag
{
UINT8 resvd1;
UINT16 resvd2;
UINT8 tpLength;
UINT8 tpData[CMI_SIM_USAT_MAX_TP_LEN];
}
CmiSimUsatGetTerminalProfileCnf;
/******************************************************************************
* CMI_SIM_SET_SIM_REMOVAL_REQ
* +ECSIMRM
******************************************************************************/
typedef CamCmiEmptySig CmiSimSetSimRemovalReq;
//CMI_SIM_SET_SIM_REMOVAL_CNF
typedef CamCmiEmptySig CmiSimSetSimRemovalCnf;
/******************************************************************************
* CMI_SIM_GET_SMS_PARAMS_REQ
******************************************************************************/
typedef CamCmiEmptySig CmiSimGetSmsParamsReq;
// CMI_SIM_GET_SMS_PARAMS_CNF
typedef struct CmiSimGetSmsParamsCnfTag
{
UINT8 bDestAddrPresent:1;
UINT8 bScAddrPresent:1;
UINT8 bProtocolIdPresent:1;
UINT8 bCodingSchemePresent:1;
UINT8 bValidityPeriodPresent:1;
UINT8 reserved:3;
UINT8 smsProtocolId;
UINT8 smsDataCodingScheme;
UINT8 validityPeriod;
CmiSimSmsAddress destAddr;
CmiSimSmsAddress scAddr;
}
CmiSimGetSmsParamsCnf;
/******************************************************************************
* CMI_SIM_SET_HOT_SWAP_NOTIFY_REQ
******************************************************************************/
typedef struct CmiSimSetHotSwapNotifyReqTag
{
BOOL bSimPlugIn;// indicated whether the SIM card plugged in or out
UINT8 reserved1;
UINT16 reserved2;
}
CmiSimSetHotSwapNotifyReq;
/*
* CMI_SIM_SET_HOT_SWAP_NOTIFY_CNF
*/
typedef CamCmiEmptySig CmiSimSetHotSwapNotifyCnf;
/******************************************************************************
* CMI_SIM_SET_PREFERRED_PLMN_LIST_REQ
******************************************************************************/
typedef struct CmiSimSetPreferredPlmnListReqTag
{
UINT16 index; //0 means invalid
UINT8 format;
UINT8 resvd1;
UINT16 resvd2;
UINT16 accessTechnology; /* Access Technology, if no act, set to 0*/
CmiNumericPlmn plmn;
}
CmiSimSetPreferredPlmnListReq;
/*
* CMI_SIM_SET_PREFERRED_PLMN_LIST_CNF
*/
typedef CamCmiEmptySig CmiSimSetPreferredPlmnListCnf;
/******************************************************************************
* CMI_SIM_GET_PREFERRED_PLMN_LIST_REQ
******************************************************************************/
typedef CamCmiEmptySig CmiSimGetPreferredPlmnListReq;
/*
* CMI_SIM_GET_PREFERRED_PLMN_LIST_CNF
*/
typedef struct CmiSimGetPreferredPlmnListCnfTag
{
UINT16 index; //0 means invalid
UINT8 format; //CmiSimPlmnFormatEnum
BOOL bEndStatus; //whether it's end status
UINT16 accessTechnology; /* Access Technology, if no act, set to 0*/
UINT16 resvd;
CmiNumericPlmn plmn;
}
CmiSimGetPreferredPlmnListCnf;
/******************************************************************************
* CMI_SIM_SET_SELECT_PLMN_LIST_REQ
******************************************************************************/
typedef struct CmiSimSetSelectPlmnListReqTag
{
UINT8 plmnList;//CmiSimSelPreferPlmnList
UINT8 resved1;
UINT16 resved2;
}
CmiSimSetSelectPlmnListReq;
/*
* CMI_SIM_SET_SELECT_PLMN_LIST_CNF
*/
typedef CamCmiEmptySig CmiSimSetSelectPlmnListCnf;
/******************************************************************************
* CMI_SIM_GET_SELECT_PLMN_LIST_REQ
******************************************************************************/
typedef CamCmiEmptySig CmiSimGetSelectPlmnListReq;
/*
* CMI_SIM_GET_SELECT_PLMN_LIST_CNF
*/
typedef struct CmiSimGetSelectPlmnListCnfTag
{
UINT8 plmnList;//CmiSimSelPreferPlmnList
UINT8 resved1;
UINT16 resved2;
}
CmiSimGetSelectPlmnListCnf;
/******************************************************************************
* CMI_SIM_IMS_AUTH_REQ
* IMS authentication request
******************************************************************************/
typedef struct CmiSimImsAuthReqTag
{
UINT8 authType;//CmiSimImsAuthType
UINT8 rsvd1;
UINT16 rsvd2;
UINT8 rand[CMI_SIM_AUTH_DATA_MAX_LEN];//fixed 16 bytes
UINT8 autn[CMI_SIM_AUTH_DATA_MAX_LEN];//fixed 16 bytes
}
CmiSimImsAuthReq;
/*
* CMI_SIM_IMS_AUTH_CNF
*/
typedef struct CmiSimImsAuthCnfTag
{
UINT8 resStatus;//CmiSimImsAuthResStatus, Auth response status
UINT8 resLen;//the length of RES
UINT8 autsLen;//the length of AUTS if sync failure present
UINT8 reserved;
UINT8 res[CMI_SIM_AUTH_DATA_MAX_LEN];
UINT8 ck[CMI_SIM_AUTH_DATA_MAX_LEN];//fixed 16 bytes
UINT8 ik[CMI_SIM_AUTH_DATA_MAX_LEN];//fixed 16 bytes
UINT8 auts[CMI_SIM_AUTH_DATA_MAX_LEN]; //auts for sync failure
}
CmiSimImsAuthCnf;
/******************************************************************************
* CMI_SIM_GET_EMERGENCY_NUM_REQ
* Get emergency call number from SIM in the EF_ECC
******************************************************************************/
typedef CamCmiEmptySig CmiSimGetEmergencyNumReq;
/*
* CMI_SIM_GET_EMERGENCY_NUM_CNF
*/
typedef struct CmiSimGetEmergencyNumCnfTag
{
UINT8 emcNumCount;//emergency number count
UINT8 resved1;
UINT16 resved2;
CmiEmergencyNum emcList[CMI_EMERGENCY_NUM_LIST_MAX_RECORD];/* emergency number list, 16*8 = 128 bytes*/
}
CmiSimGetEmergencyNumCnf;
/******************************************************************************
* CMI_SIM_IMS_INIT_READ_REQ
* When SIM init/changed/re-fresh, if IMS enabled, IMS could trigger it to read
* some basic related SIM files
******************************************************************************/
typedef CamCmiEmptySig CmiSimImsInitReadReq;
/******************************************************************************
* CMI_SIM_IMS_INIT_READ_CNF
******************************************************************************/
typedef struct CmiSimImsInitReadCnfTag
{
UINT16 impiIdx; /*EFimpi, 0x6F02, NAI TLV data, only V (value) in "simData[]" start from "impiIdx"*/
UINT16 impiLen;
UINT16 fstImpuIdx; /*EFimpu, 0x6F04, first IMPU, URI TLV data, only V (value) in "simData[]" start from "fstImpuIdx" */
UINT16 fstImpuLen;
UINT16 domainIdx; /*EFdomain, 0x6F03, TLV data, only V (value) in "simData[]" start from "domainIdx"*/
UINT16 domainLen;
UINT16 psismscIdx; /*EFpsismsc, 0x6FE5, URI TLV data, only V (value) in "simData[]" start from "domainIdx" */
UINT16 psismscLen;
UINT8 simData[]; /* a variable array, with the size: "impiLen"+"fstImpuLen"+"domainLen"+"psismscLen", and memory allo with signal */
}
CmiSimImsInitReadCnf;
/*
* CMI_SIM_UICC_STATE_IND
*/
typedef struct CmiSimUiccStateIndTag
{
UINT8 uiccState;//CmiSimStatus
BOOL bTestSim;//wether is test SIM or not
BOOL bISimCard;//whether is ISIM supported or not
BOOL bCardChanged;//whether the card changed or not, e.g. refresh
CmiSimImsiStr imsiStr; /* IMSI string */
UINT16 rsvd1;
UINT8 rsvd2;
UINT8 rawImsi[CMI_SIM_RAW_IMSI_MAX_LEN];// IMSI raw data from EFimsi
}
CmiSimUiccStateInd;
/*
* CMI_SIM_UICC_PIN_STATE_IND
*/
typedef struct CmiSimUiccPinStateIndTag
{
UINT8 uiccPinState;//CmiSimPinState
UINT8 reserved1;
UINT16 reserved2;
}
CmiSimUiccPinStateInd;
/*
* CMI_SIM_PROACTIVE_CMD_IND
*/
typedef struct CmiSimProactiveCmdIndTag
{
UINT8 cmdType;
UINT8 resvd;
UINT16 cmdLen;
UINT8 *pCmdData;
}
CmiSimProactiveCmdInd;
/*
* CMI_SIM_PROACTIVE_CMD_RSP
*/
typedef struct CmiSimProactiveCmdRspTag
{
UINT8 cmdRspLen;
UINT8 resvd[3];
UINT8 *pCmdRspData;//terminal response
}
CmiSimProactiveCmdRsp;
/*
* CMI_SIM_USAT_REFRESH_IND
*/
typedef struct CmiSimUsatRefreshIndTag
{
CmiSimUiccFileList fileList;
}
CmiSimUsatRefreshInd;
/*
* CMI_SIM_USAT_OPEN_CHANNEL_IND
*/
typedef struct CmiSimUsatOpenChannelIndTag
{
//UINT32 cmdDetailsRef;
CmiSimUsatBipEqos bipEqos;
CmiSimUsatBipQos bipQos;
UINT16 reserved;
UINT8 bearerType;//CmiSimBearerType
//UINT16 bufferSize;
UINT8 apnLength;//if the length is not zero, the apn is present
UINT8 apnName[CMI_SIM_MAX_APN_NAME];
CmiSimTextString userLogin;
CmiSimTextString userPassword;
UINT8 transFormat;//CmiSimTransportFormat
UINT16 portNum;
//UINT8 addressType;
//UINT16 reserved;
UINT8 addressLength;//=0/4/16, 0 means this item is not present
UINT8 destAddress[CMI_SIM_USAT_MAX_ADDRESS_LEN];//destination address, IPV4--4bytes; IPV6--16bytes
}
CmiSimUsatOpenChannelInd;
/*
* CMI_SIM_USAT_OPEN_CHANNEL_RSP
*/
typedef struct CmiSimUsatOpenChannelRspTag
{
//UINT32 cmdDetailsRef;
CmiSimUsatCmdResult cmdResult;
UINT8 bearType;//CmiSimBearerType
//UINT16 bufferSize;
UINT8 channelId;
BOOL linkEstOrPsActive;
UINT8 dnsAddrLen;//=0/4/16, 0 means this item is not present
UINT8 dnsAddr[CMI_SIM_USAT_MAX_ADDRESS_LEN];// IPV4--4bytes; IPV6--16bytes
CmiSimUsatBipEqos bipEqos;
CmiSimUsatBipQos bipQos;
}
CmiSimUsatOpenChannelRsp;
/*
* CMI_SIM_USAT_CLOSE_CHANNEL_IND
*/
typedef struct CmiSimUsatCloseChannelIndTag
{
//UINT32 cmdDetailsRef;
UINT8 channelId;
UINT8 reserved1;
UINT16 reserved2;
}
CmiSimUsatCloseChannelInd;
/*
* CMI_SIM_USAT_CLOSE_CHANNEL_RSP
*/
typedef struct CmiSimUsatCloseChannelRspTag
{
//UINT32 cmdDetailsRef;
CmiSimUsatCmdResult cmdResult;
}
CmiSimUsatCloseChannelRsp;
/*
* CMI_SIM_USAT_SEND_DATA_IND
*/
typedef struct CmiSimUsatSendDataIndTag
{
CmiSimUsatBipDataPdu *pBipData;
}
CmiSimUsatSendDataInd;
/*
* CMI_SIM_USAT_SEND_DATA_RSP
*/
typedef struct CmiSimUsatSendDataRspTag
{
//UINT32 cmdDetailsRef;
CmiSimUsatCmdResult cmdResult;
}
CmiSimUsatSendDataRsp;
/*
* CMI_SIM_USAT_RECV_DATA_SUSPEND_IND
*/
typedef struct CmiSimUsatRecvDataSuspendIndTag
{
CmiSimUsatChanRecvStatus chanRecvStatus[CMI_SIM_USAT_MAX_CHANNEL_NUM];
}
CmiSimUsatRecvDataSuspendInd;
/*
* CMI_SIM_USAT_DATA_AVAILABLE_REQ
*/
typedef struct CmiSimUsatDataAvailableReqTag
{
CmiSimUsatBipDataPdu *pBipData;
}
CmiSimUsatDataAvailableReq;
/*
* CMI_SIM_USAT_DATA_AVAILABLE_CNF
*/
typedef UINT32 CmiSimUsatDataAvailableCnf;//GosEmptySignal
/*
* CMI_SIM_USAT_CHANNEL_STATUS_EVENT_REQ
*/
typedef struct CmiSimUsatChannelStatusEventReqTag
{
UINT8 channelId;
BOOL linkEstOrPsActive;
UINT8 addiInfo;//UsatAddiInfoChannlStatus
UINT8 reserved;
}
CmiSimUsatChannelStatusEventReq;
/*
* CMI_SIM_USAT_CHANNEL_STATUS_EVENT_CNF
*/
typedef UINT32 CmiSimUsatChannelStatusEventCnf;//GosEmptySignal
/*
* CMI_SIM_USAT_GET_CHANNEL_STATUS_IND
*/
typedef UINT32 CmiSimUsatGetChannelStatusInd;//GosEmptySignal
/*
* CMI_SIM_USAT_GET_CHANNEL_STATUS_Rsp
*/
typedef struct CmiSimUsatGetChannelStatusRspTag
{
//UINT32 cmdDetailsRef;
CmiSimUsatCmdResult cmdResult;
UINT8 channelId;
BOOL linkEstOrPsActive;
UINT16 reserved;
}
CmiSimUsatGetChannelStatusRsp;
/*
* CMI_SIM_USAT_MENU_SELECTION_REQ
*/
typedef struct CmiSimUsatMenuSelectionReqTag
{
UINT8 cmdLen;
UINT8 resvd[3];
UINT8 *pCmdData;//menu selection command
}
CmiSimUsatMenuSelectionReq;
/*
* CMI_SIM_USAT_MENU_SELECTION_CNF
*/
typedef UINT32 CmiSimUsatMenuSelectionCnf;//GosEmptySignal
#endif