• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include "sim_sms_manager.h"
17 
18 #include "telephony_errors.h"
19 
20 namespace OHOS {
21 namespace Telephony {
SimSmsManager(std::shared_ptr<Telephony::ITelRilManager> telRilManager,std::shared_ptr<SimFileManager> simFileManager,std::shared_ptr<SimStateManager> simStateManager)22 SimSmsManager::SimSmsManager(std::shared_ptr<Telephony::ITelRilManager> telRilManager,
23     std::shared_ptr<SimFileManager> simFileManager, std::shared_ptr<SimStateManager> simStateManager)
24     : telRilManager_(telRilManager), simFileManager_(simFileManager), stateManager_(simStateManager)
25 {
26     TELEPHONY_LOGI("SimSmsManager::SimSmsManager started");
27 }
28 
~SimSmsManager()29 SimSmsManager::~SimSmsManager() {}
30 
Init(int slotId)31 void SimSmsManager::Init(int slotId)
32 {
33     TELEPHONY_LOGI("SimSmsManager::Init() started ");
34     slotId_ = slotId;
35     if (stateSms_ == HandleRunningState::STATE_RUNNING) {
36         TELEPHONY_LOGI("SimSmsManager::Init stateSms_ started.");
37         return;
38     }
39 
40     if (telRilManager_ == nullptr) {
41         TELEPHONY_LOGE("SimSmsManager get NULL ITelRilManager.");
42         return;
43     }
44 
45     eventLoopSms_ = AppExecFwk::EventRunner::Create("simSmsController");
46     if (eventLoopSms_.get() == nullptr) {
47         TELEPHONY_LOGE("simSmsController  failed to create EventRunner");
48         return;
49     }
50 
51     if (simFileManager_ == nullptr) {
52         TELEPHONY_LOGE("SimSmsManager::Init SimFileManager null pointer");
53         return;
54     }
55     std::shared_ptr<SimFileManager> fileManager = std::static_pointer_cast<SimFileManager>(simFileManager_);
56 
57     smsController_ = std::make_shared<SimSmsController>(eventLoopSms_, stateManager_);
58     if (smsController_ == nullptr) {
59         TELEPHONY_LOGE("SimSmsManager::Init simFile create nullptr.");
60         return;
61     }
62     smsController_->SetRilAndFileManager(telRilManager_, fileManager);
63 
64     eventLoopSms_->Run();
65     stateSms_ = HandleRunningState::STATE_RUNNING;
66 
67     smsController_->Init(slotId_);
68     TELEPHONY_LOGI("SimSmsManager::Init() end");
69 }
70 
AddSmsToIcc(int status,std::string & pdu,std::string & smsc)71 int32_t SimSmsManager::AddSmsToIcc(int status, std::string &pdu, std::string &smsc)
72 {
73     if (smsController_ == nullptr) {
74         TELEPHONY_LOGE("SimSmsManager::AddSmsToIcc smsController_ nullptr");
75         return false;
76     }
77 
78     int32_t result = smsController_->AddSmsToIcc(status, pdu, smsc);
79     TELEPHONY_LOGI("SimSmsManager::AddSmsToIcc result:%{public}d", result);
80     return result;
81 }
82 
UpdateSmsIcc(int index,int status,std::string & pduData,std::string & smsc)83 int32_t SimSmsManager::UpdateSmsIcc(int index, int status, std::string &pduData, std::string &smsc)
84 {
85     if (smsController_ == nullptr) {
86         TELEPHONY_LOGE("SimSmsManager::UpdateSmsIcc smsController_ nullptr");
87         return TELEPHONY_ERR_LOCAL_PTR_NULL;
88     }
89 
90     int32_t result = smsController_->UpdateSmsIcc(index, status, pduData, smsc);
91     TELEPHONY_LOGI("SimSmsManager::UpdateSmsIcc result:%{public}d", result);
92     return result;
93 }
94 
DelSmsIcc(int index)95 int32_t SimSmsManager::DelSmsIcc(int index)
96 {
97     if (smsController_ == nullptr) {
98         TELEPHONY_LOGE("SimSmsManager::DelSmsIcc smsController_ nullptr");
99         return false;
100     }
101 
102     int32_t result = smsController_->DelSmsIcc(index);
103     TELEPHONY_LOGI("SimSmsManager::DelSmsIcc result:%{public}d", result);
104     return result;
105 }
106 
ObtainAllSmsOfIcc()107 std::vector<std::string> SimSmsManager::ObtainAllSmsOfIcc()
108 {
109     if (smsController_ == nullptr) {
110         TELEPHONY_LOGE("SimSmsManager::ObtainAllSmsOfIcc smsController_ nullptr");
111         return std::vector<std::string>();
112     }
113 
114     std::vector<std::string> result = smsController_->ObtainAllSmsOfIcc();
115     TELEPHONY_LOGI("SimSmsManager::ObtainAllSmsOfIcc result:%{public}s ", (result.empty() ? "false" : "true"));
116     return result;
117 }
118 } // namespace Telephony
119 } // namespace OHOS
120