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 57 typedef enum { 58 FCP_FILE_DES_T = 0x82, 59 FCP_FILE_ID_T = 0x83, 60 } UsimFcpTag; 61 62 typedef 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 71 typedef struct { 72 uint16_t fileId; 73 } UsimFileIdentifier; 74 75 uint8_t *ConvertByteArrayToHexString(uint8_t *byteArray, int byteArrayLen); 76 void ConvertHexStringToByteArray(uint8_t *originHexString, int responseLen, uint8_t *byteArray, int fcpLen); 77 void ConvertUsimFcpToSimRsp(uint8_t **simResponse); 78 void CreateSimRspByte(uint8_t simRspByte[], int responseLen, UsimFileIdentifier *fId, UsimFileDescriptor *fDescriptor); 79 uint8_t FcpFileDescriptorQuery(uint8_t *fcpByte, uint16_t fcpLen, UsimFileDescriptor *filledStructPtr); 80 uint8_t FcpFileIdentifierQuery(uint8_t *fcpByte, uint16_t fcpLen, UsimFileIdentifier *filledStructPtr); 81 uint8_t FcpTlvSearchTag(uint8_t *dataPtr, uint16_t len, UsimFcpTag tag, uint8_t **outPtr); 82 uint8_t IsCyclicFile(uint8_t fd); 83 uint8_t IsDedicatedFile(uint8_t fd); 84 uint8_t IsLinearFixedFile(uint8_t fd); 85 uint8_t IsTransparentFile(uint8_t fd); 86 void ReqGetSimStatus(const ReqDataInfo *requestInfo); 87 void ReqGetSimIO(const ReqDataInfo *requestInfo, const HRilSimIO *data, size_t dataLen); 88 void ReqGetSimImsi(const ReqDataInfo *requestInfo); 89 void ReqGetSimLockStatus(const ReqDataInfo *requestInfo, const HRilSimClock *data, size_t dataLen); 90 void ReqSetSimLock(const ReqDataInfo *requestInfo, const HRilSimClock *data, size_t dataLen); 91 void ReqChangeSimPassword(const ReqDataInfo *requestInfo, const HRilSimPassword *data, size_t dataLen); 92 void ReqUnlockPin(const ReqDataInfo *requestInfo, const char *pin); 93 void ReqUnlockPuk(const ReqDataInfo *requestInfo, const char *puk, const char *pin); 94 void ReqGetSimPinInputTimes(const ReqDataInfo *requestInfo); 95 void ReqGetSimPinInputTimesRemain(const ReqDataInfo *requestInfo, HRilPinInputTimes *pinInputTimes); 96 void ReqUnlockPin2(const ReqDataInfo *requestInfo, const char *pin2); 97 void ReqUnlockPuk2(const ReqDataInfo *requestInfo, const char *puk2, const char *pin2); 98 void ReqGetSimPin2InputTimes(const ReqDataInfo *requestInfo); 99 void ReqSetActiveSim(const ReqDataInfo *requestInfo, int32_t index, int32_t enable); 100 void ReqSimStkSendTerminalResponse(const ReqDataInfo *requestInfo, const char *strCmd); 101 void ReqSimStkSendEnvelope(const ReqDataInfo *requestInfo, const char *strCmd); 102 void ReqSimStkSendCallSetupRequestResult(const ReqDataInfo *requestInfo, int32_t accept); 103 void ReqSimStkIsReady(const ReqDataInfo *requestInfo); 104 void ReqGetRadioProtocol(const ReqDataInfo *requestInfo); 105 void ReqSetRadioProtocol(const ReqDataInfo *requestInfo, const HRilRadioProtocol *data); 106 void ReqSimOpenLogicalChannel(const ReqDataInfo *requestInfo, const char *appID, int32_t p2); 107 void ReqSimCloseLogicalChannel(const ReqDataInfo *requestInfo, int32_t channelId); 108 void ReqSimTransmitApduLogicalChannel(const ReqDataInfo *requestInfo, HRilApduSimIO *data, size_t dataLen); 109 void ReqSimAuthentication(const ReqDataInfo *requestInfo, HRilSimAuthenticationRequestInfo *data, size_t dataLen); 110 void ReqUnlockSimLock(const ReqDataInfo *requestInfo, int32_t lockType, const char *password); 111 void ReqSendSimMatchedOperatorInfo(const ReqDataInfo *requestInfo, HRilNcfgOperatorInfo *data, size_t dataLen); 112 uint8_t ToByte(char c); 113 #endif // OHOS_AT_SIM_H 114