1/* 2 * Copyright (C) 2021 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16#ifndef OHOS_AT_SIM_H 17 18#include <ctype.h> 19#include <stddef.h> 20#include <stdlib.h> 21 22#include "hril_vendor_sim_defs.h" 23#include "securec.h" 24 25#define OHOS_AT_SIM_H 26 27#define BYTE_NUM_0 0x00FF 28#define BYTE_NUM_1 0xFF00 29#define BYTE_NUM_2 0xFF 30#define BYTE_NUM_3 0x80 31#define BYTE_NUM_4 0x0F 32#define CMD_GET_RESPONSE 192 33#define DECIMAL_MAX 10 34#define EF_TYPE_TRANSPARENT 0 35#define EF_TYPE_LINEAR_FIXED 1 36#define EF_TYPE_CYCLIC 3 37#define FCP_TEMP_T 0x62 38#define FIVE_LEN 5 39#define GET_RESPONSE_EF_SIZE_BYTES 15 40#define HALF_BYTE_LEN 4 41#define HALF_LEN 2 42#define HEX_DIGITS_LEN 16 43#define RESPONSE_DATA_FILE_SIZE_1 2 44#define RESPONSE_DATA_FILE_SIZE_2 3 45#define RESPONSE_DATA_FILE_ID_1 4 46#define RESPONSE_DATA_FILE_ID_2 5 47#define RESPONSE_DATA_FILE_TYPE 6 48#define RESPONSE_DATA_FILE_STATUS 11 49#define RESPONSE_DATA_LENGTH 12 50#define RESPONSE_DATA_STRUCTURE 13 51#define RESPONSE_DATA_RECORD_LENGTH 14 52#define THIRD_INDEX 3 53#define TYPE_DF 2 54#define TYPE_EF 4 55#define VALID_FILE_STATUS 0x01 56 57typedef enum { 58 FCP_FILE_DES_T = 0x82, 59 FCP_FILE_ID_T = 0x83, 60} UsimFcpTag; 61 62typedef struct { 63 uint8_t fd; 64 uint8_t dataCoding; 65 uint16_t recLen; 66 uint8_t numRec; 67 uint16_t dataSize; 68} UsimFileDescriptor; 69 70 71typedef struct { 72 uint16_t fileId; 73} UsimFileIdentifier; 74 75uint8_t *ConvertByteArrayToHexString(uint8_t *byteArray, int byteArrayLen); 76void ConvertHexStringToByteArray(uint8_t *originHexString, int responseLen, uint8_t *byteArray, int fcpLen); 77void ConvertUsimFcpToSimRsp(uint8_t **simResponse); 78void CreateSimRspByte(uint8_t simRspByte[], int responseLen, UsimFileIdentifier *fId, UsimFileDescriptor *fDescriptor); 79uint8_t FcpFileDescriptorQuery(uint8_t *fcpByte, uint16_t fcpLen, UsimFileDescriptor *filledStructPtr); 80uint8_t FcpFileIdentifierQuery(uint8_t *fcpByte, uint16_t fcpLen, UsimFileIdentifier *filledStructPtr); 81uint8_t FcpTlvSearchTag(uint8_t *dataPtr, uint16_t len, UsimFcpTag tag, uint8_t **outPtr); 82uint8_t IsCyclicFile(uint8_t fd); 83uint8_t IsDedicatedFile(uint8_t fd); 84uint8_t IsLinearFixedFile(uint8_t fd); 85uint8_t IsTransparentFile(uint8_t fd); 86void ReqGetSimStatus(const ReqDataInfo *requestInfo); 87void ReqGetSimIO(const ReqDataInfo *requestInfo, const HRilSimIO *data, size_t dataLen); 88void ReqGetSimImsi(const ReqDataInfo *requestInfo); 89void ReqGetSimLockStatus(const ReqDataInfo *requestInfo, const HRilSimClock *data, size_t dataLen); 90void ReqSetSimLock(const ReqDataInfo *requestInfo, const HRilSimClock *data, size_t dataLen); 91void ReqChangeSimPassword(const ReqDataInfo *requestInfo, const HRilSimPassword *data, size_t dataLen); 92void ReqUnlockPin(const ReqDataInfo *requestInfo, const char *pin); 93void ReqUnlockPuk(const ReqDataInfo *requestInfo, const char *puk, const char *pin); 94void ReqGetSimPinInputTimes(const ReqDataInfo *requestInfo); 95void ReqGetSimPinInputTimesRemain(const ReqDataInfo *requestInfo, HRilPinInputTimes *pinInputTimes); 96void ReqUnlockPin2(const ReqDataInfo *requestInfo, const char *pin2); 97void ReqUnlockPuk2(const ReqDataInfo *requestInfo, const char *puk2, const char *pin2); 98void ReqGetSimPin2InputTimes(const ReqDataInfo *requestInfo); 99void ReqSetActiveSim(const ReqDataInfo *requestInfo, int32_t index, int32_t enable); 100void ReqSimStkSendTerminalResponse(const ReqDataInfo *requestInfo, const char *strCmd); 101void ReqSimStkSendEnvelope(const ReqDataInfo *requestInfo, const char *strCmd); 102void ReqSimStkSendCallSetupRequestResult(const ReqDataInfo *requestInfo, int32_t accept); 103void ReqSimStkIsReady(const ReqDataInfo *requestInfo); 104void ReqGetRadioProtocol(const ReqDataInfo *requestInfo); 105void ReqSetRadioProtocol(const ReqDataInfo *requestInfo, const HRilRadioProtocol *data); 106void ReqSimOpenLogicalChannel(const ReqDataInfo *requestInfo, const char *appID, int32_t p2); 107void ReqSimCloseLogicalChannel(const ReqDataInfo *requestInfo, int32_t channelId); 108void ReqSimTransmitApduLogicalChannel(const ReqDataInfo *requestInfo, HRilApduSimIO *data, size_t dataLen); 109void ReqSimAuthentication(const ReqDataInfo *requestInfo, HRilSimAuthenticationRequestInfo *data, size_t dataLen); 110void ReqUnlockSimLock(const ReqDataInfo *requestInfo, int32_t lockType, const char *password); 111void ReqSendSimMatchedOperatorInfo(const ReqDataInfo *requestInfo, HRilNcfgOperatorInfo *data, size_t dataLen); 112uint8_t ToByte(char c); 113#endif // OHOS_AT_SIM_H 114