• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2025 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 #include "usim_file_controller.h"
17 
18 namespace OHOS {
19 namespace Telephony {
UsimFileController(int slotId)20 UsimFileController::UsimFileController(int slotId) : IccFileController("UsimFileController", slotId) {}
21 
22 const std::string DEDICATED_FILE_TELE = "7F10";
23 
ObtainElementFilePath(int efId)24 std::string UsimFileController::ObtainElementFilePath(int efId)
25 {
26     std::string path = ObtainUsimElementFilePath(efId);
27     if (!path.empty()) {
28         return path;
29     }
30     std::string mf = MASTER_FILE_SIM;
31     path = ObtainElementFileForPublic(efId);
32     if (path.empty()) {
33         mf.append(DEDICATED_FILE_TELECOM);
34         mf.append(DEDICATED_FILE_DIALLING_NUMBERS);
35         return mf;
36     }
37     return path;
38 }
39 
ObtainUsimElementFilePathExt(int efId)40 static std::string ObtainUsimElementFilePathExt(int efId)
41 {
42     std::string mf = MASTER_FILE_SIM;
43     switch (efId) {
44         case ELEMENTARY_FILE_PBR:
45             mf.append(DEDICATED_FILE_TELE);
46             mf.append(DEDICATED_FILE_DIALLING_NUMBERS);
47             return mf;
48         case ELEMENTARY_FILE_OPL5G:
49             mf.append(DEDICATED_FILE_ADF);
50             mf.append(DEDICATED_FILE_DF5GS);
51             return mf;
52         default:
53             return "";
54     }
55 }
56 
ObtainUsimElementFilePath(int efId)57 std::string UsimFileController::ObtainUsimElementFilePath(int efId)
58 {
59     std::string mf = MASTER_FILE_SIM;
60     switch (efId) {
61         case ELEMENTARY_FILE_SMS:
62         case ELEMENTARY_FILE_EXT5:
63         case ELEMENTARY_FILE_EXT6:
64         case ELEMENTARY_FILE_MWIS:
65         case ELEMENTARY_FILE_MBI:
66         case ELEMENTARY_FILE_SPN:
67         case ELEMENTARY_FILE_AD:
68         case ELEMENTARY_FILE_MBDN:
69         case ELEMENTARY_FILE_PNN:
70         case ELEMENTARY_FILE_OPL:
71         case ELEMENTARY_FILE_SPDI:
72         case ELEMENTARY_FILE_SST:
73         case ELEMENTARY_FILE_CFIS:
74         case ELEMENTARY_FILE_MAILBOX_CPHS:
75         case ELEMENTARY_FILE_VOICE_MAIL_INDICATOR_CPHS:
76         case ELEMENTARY_FILE_CFF_CPHS:
77         case ELEMENTARY_FILE_SPN_CPHS:
78         case ELEMENTARY_FILE_SPN_SHORT_CPHS:
79         case ELEMENTARY_FILE_FDN:
80         case ELEMENTARY_FILE_SDN:
81         case ELEMENTARY_FILE_EXT3:
82         case ELEMENTARY_FILE_MSISDN:
83         case ELEMENTARY_FILE_EXT2:
84         case ELEMENTARY_FILE_INFO_CPHS:
85         case ELEMENTARY_FILE_CSP_CPHS:
86         case ELEMENTARY_FILE_GID1:
87         case ELEMENTARY_FILE_GID2:
88         case ELEMENTARY_FILE_LI:
89         case ELEMENTARY_FILE_PLMN_W_ACT:
90         case ELEMENTARY_FILE_OPLMN_W_ACT:
91         case ELEMENTARY_FILE_HPLMN_W_ACT:
92         case ELEMENTARY_FILE_EHPLMN:
93         case ELEMENTARY_FILE_FPLMN:
94         case ELEMENTARY_FILE_LRPLMNSI:
95         case ELEMENTARY_FILE_HPPLMN:
96             mf.append(DEDICATED_FILE_ADF);
97             return mf;
98         default:
99             return ObtainUsimElementFilePathExt(efId);
100     }
101 }
102 
~UsimFileController()103 UsimFileController::~UsimFileController() {}
104 } // namespace Telephony
105 } // namespace OHOS
106