1e5d0e473Sopenharmony_ci/*
2e5d0e473Sopenharmony_ci * Copyright (C) 2021 Huawei Device Co., Ltd.
3e5d0e473Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4e5d0e473Sopenharmony_ci * you may not use this file except in compliance with the License.
5e5d0e473Sopenharmony_ci * You may obtain a copy of the License at
6e5d0e473Sopenharmony_ci *
7e5d0e473Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8e5d0e473Sopenharmony_ci *
9e5d0e473Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10e5d0e473Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11e5d0e473Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12e5d0e473Sopenharmony_ci * See the License for the specific language governing permissions and
13e5d0e473Sopenharmony_ci * limitations under the License.
14e5d0e473Sopenharmony_ci */
15e5d0e473Sopenharmony_ci
16e5d0e473Sopenharmony_ci#include "sms_dump_helper.h"
17e5d0e473Sopenharmony_ci
18e5d0e473Sopenharmony_ci#include "core_service_client.h"
19e5d0e473Sopenharmony_ci#include "sms_service.h"
20e5d0e473Sopenharmony_ci#include "telephony_log_wrapper.h"
21e5d0e473Sopenharmony_ci
22e5d0e473Sopenharmony_cinamespace OHOS {
23e5d0e473Sopenharmony_cinamespace Telephony {
24e5d0e473Sopenharmony_cibool SmsDumpHelper::Dump(const std::vector<std::string> &args, std::string &result) const
25e5d0e473Sopenharmony_ci{
26e5d0e473Sopenharmony_ci    result.clear();
27e5d0e473Sopenharmony_ci    ShowHelp(result);
28e5d0e473Sopenharmony_ci    ShowSmsInfo(result);
29e5d0e473Sopenharmony_ci    return true;
30e5d0e473Sopenharmony_ci}
31e5d0e473Sopenharmony_ci
32e5d0e473Sopenharmony_ciSmsDumpHelper::SmsDumpHelper()
33e5d0e473Sopenharmony_ci{
34e5d0e473Sopenharmony_ci    TELEPHONY_LOGI("SmsDumpHelper() entry.");
35e5d0e473Sopenharmony_ci}
36e5d0e473Sopenharmony_ci
37e5d0e473Sopenharmony_cistatic std::string to_utf8(std::u16string str16)
38e5d0e473Sopenharmony_ci{
39e5d0e473Sopenharmony_ci    return std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> {}.to_bytes(str16);
40e5d0e473Sopenharmony_ci}
41e5d0e473Sopenharmony_ci
42e5d0e473Sopenharmony_cibool SmsDumpHelper::WhetherHasSimCard(const int32_t slotId) const
43e5d0e473Sopenharmony_ci{
44e5d0e473Sopenharmony_ci    bool hasSimCard = false;
45e5d0e473Sopenharmony_ci    DelayedRefSingleton<CoreServiceClient>::GetInstance().HasSimCard(slotId, hasSimCard);
46e5d0e473Sopenharmony_ci    return hasSimCard;
47e5d0e473Sopenharmony_ci}
48e5d0e473Sopenharmony_ci
49e5d0e473Sopenharmony_civoid SmsDumpHelper::ShowHelp(std::string &result) const
50e5d0e473Sopenharmony_ci{
51e5d0e473Sopenharmony_ci    result.append("Usage:dump <command> [options]\n")
52e5d0e473Sopenharmony_ci        .append("Description:\n")
53e5d0e473Sopenharmony_ci        .append("-sms_mms_info          ")
54e5d0e473Sopenharmony_ci        .append("dump all sms_mms information in the system\n")
55e5d0e473Sopenharmony_ci        .append("-output_slot        ")
56e5d0e473Sopenharmony_ci        .append("default_slot_Id\n")
57e5d0e473Sopenharmony_ci        .append("-output_service_state")
58e5d0e473Sopenharmony_ci        .append("Output service state information\n");
59e5d0e473Sopenharmony_ci}
60e5d0e473Sopenharmony_ci
61e5d0e473Sopenharmony_civoid SmsDumpHelper::ShowSmsInfo(std::string &result) const
62e5d0e473Sopenharmony_ci{
63e5d0e473Sopenharmony_ci    result.append("SmsService: \n");
64e5d0e473Sopenharmony_ci    result.append("BindTime = ");
65e5d0e473Sopenharmony_ci    result.append(DelayedSingleton<SmsService>::GetInstance()->GetBindTime());
66e5d0e473Sopenharmony_ci    result.append("\n");
67e5d0e473Sopenharmony_ci    result.append("SpendTime = ");
68e5d0e473Sopenharmony_ci    result.append(std::to_string(DelayedSingleton<SmsService>::GetInstance()->GetSpendTime()));
69e5d0e473Sopenharmony_ci    result.append("\n");
70e5d0e473Sopenharmony_ci    result.append("EndTime = ");
71e5d0e473Sopenharmony_ci    result.append(std::to_string(DelayedSingleton<SmsService>::GetInstance()->GetEndTime()));
72e5d0e473Sopenharmony_ci    result.append("\n");
73e5d0e473Sopenharmony_ci    result.append("ServiceRunningState: ");
74e5d0e473Sopenharmony_ci    result.append(std::to_string(DelayedSingleton<SmsService>::GetInstance()->GetServiceRunningState()));
75e5d0e473Sopenharmony_ci    result.append("\n");
76e5d0e473Sopenharmony_ci    result.append("DefaultSmsSlotId = ");
77e5d0e473Sopenharmony_ci    result.append(std::to_string(DelayedSingleton<SmsService>::GetInstance()->GetDefaultSmsSlotId()));
78e5d0e473Sopenharmony_ci    result.append("\n");
79e5d0e473Sopenharmony_ci    result.append("HasSmsCapability = ");
80e5d0e473Sopenharmony_ci    result.append(std::to_string(DelayedSingleton<SmsService>::GetInstance()->HasSmsCapability()));
81e5d0e473Sopenharmony_ci    result.append("\n");
82e5d0e473Sopenharmony_ci    for (int32_t i = 0; i < SIM_SLOT_COUNT; i++) {
83e5d0e473Sopenharmony_ci        if (WhetherHasSimCard(i)) {
84e5d0e473Sopenharmony_ci            result.append("SlotId = ");
85e5d0e473Sopenharmony_ci            result.append(std::to_string(i));
86e5d0e473Sopenharmony_ci            result.append("\n");
87e5d0e473Sopenharmony_ci            result.append("IsImsSmsSupported = ");
88e5d0e473Sopenharmony_ci            bool isSupported = false;
89e5d0e473Sopenharmony_ci            DelayedSingleton<SmsService>::GetInstance()->IsImsSmsSupported(i, isSupported);
90e5d0e473Sopenharmony_ci            result.append(std::to_string(isSupported));
91e5d0e473Sopenharmony_ci            result.append("\n");
92e5d0e473Sopenharmony_ci            result.append("ImsShortMessageFormat = ");
93e5d0e473Sopenharmony_ci            std::u16string format;
94e5d0e473Sopenharmony_ci            DelayedSingleton<SmsService>::GetInstance()->GetImsShortMessageFormat(format);
95e5d0e473Sopenharmony_ci            result.append(to_utf8(format));
96e5d0e473Sopenharmony_ci            result.append("\n");
97e5d0e473Sopenharmony_ci        }
98e5d0e473Sopenharmony_ci    }
99e5d0e473Sopenharmony_ci}
100e5d0e473Sopenharmony_ci} // namespace Telephony
101e5d0e473Sopenharmony_ci} // namespace OHOS
102