1d95e75fdSopenharmony_ci/*
2d95e75fdSopenharmony_ci * Copyright (C) 2021 Huawei Device Co., Ltd.
3d95e75fdSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4d95e75fdSopenharmony_ci * you may not use this file except in compliance with the License.
5d95e75fdSopenharmony_ci * You may obtain a copy of the License at
6d95e75fdSopenharmony_ci *
7d95e75fdSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8d95e75fdSopenharmony_ci *
9d95e75fdSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10d95e75fdSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11d95e75fdSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12d95e75fdSopenharmony_ci * See the License for the specific language governing permissions and
13d95e75fdSopenharmony_ci * limitations under the License.
14d95e75fdSopenharmony_ci */
15d95e75fdSopenharmony_ci
16d95e75fdSopenharmony_ci#include "base_connection.h"
17d95e75fdSopenharmony_ci
18d95e75fdSopenharmony_ci#include "securec.h"
19d95e75fdSopenharmony_ci#include "standardize_utils.h"
20d95e75fdSopenharmony_ci
21d95e75fdSopenharmony_cinamespace OHOS {
22d95e75fdSopenharmony_cinamespace Telephony {
23d95e75fdSopenharmony_ciBaseConnection::BaseConnection()
24d95e75fdSopenharmony_ci{
25d95e75fdSopenharmony_ci    if (memset_s(&callReportInfo_, sizeof(CallReportInfo), 0, sizeof(callReportInfo_)) != EOK) {
26d95e75fdSopenharmony_ci        TELEPHONY_LOGE("return, memset_s error.");
27d95e75fdSopenharmony_ci    }
28d95e75fdSopenharmony_ci}
29d95e75fdSopenharmony_ci
30d95e75fdSopenharmony_civoid BaseConnection::SetOrUpdateCallReportInfo(CallReportInfo &callReportInfo)
31d95e75fdSopenharmony_ci{
32d95e75fdSopenharmony_ci    callReportInfo_ = callReportInfo;
33d95e75fdSopenharmony_ci}
34d95e75fdSopenharmony_ci
35d95e75fdSopenharmony_ciCallReportInfo BaseConnection::GetCallReportInfo()
36d95e75fdSopenharmony_ci{
37d95e75fdSopenharmony_ci    return callReportInfo_;
38d95e75fdSopenharmony_ci}
39d95e75fdSopenharmony_ci
40d95e75fdSopenharmony_civoid BaseConnection::SetStatus(TelCallState state)
41d95e75fdSopenharmony_ci{
42d95e75fdSopenharmony_ci    callReportInfo_.state = state;
43d95e75fdSopenharmony_ci}
44d95e75fdSopenharmony_ci
45d95e75fdSopenharmony_ciTelCallState BaseConnection::GetStatus() const
46d95e75fdSopenharmony_ci{
47d95e75fdSopenharmony_ci    return callReportInfo_.state;
48d95e75fdSopenharmony_ci}
49d95e75fdSopenharmony_ci
50d95e75fdSopenharmony_cibool BaseConnection::IsRingingState() const
51d95e75fdSopenharmony_ci{
52d95e75fdSopenharmony_ci    return this->GetStatus() == TelCallState::CALL_STATUS_INCOMING ||
53d95e75fdSopenharmony_ci        this->GetStatus() == TelCallState::CALL_STATUS_WAITING ||
54d95e75fdSopenharmony_ci        this->GetStatus() == TelCallState::CALL_STATUS_ALERTING;
55d95e75fdSopenharmony_ci}
56d95e75fdSopenharmony_ci
57d95e75fdSopenharmony_civoid BaseConnection::SetFlag(bool flag)
58d95e75fdSopenharmony_ci{
59d95e75fdSopenharmony_ci    flag_ = flag;
60d95e75fdSopenharmony_ci}
61d95e75fdSopenharmony_ci
62d95e75fdSopenharmony_cibool BaseConnection::GetFlag() const
63d95e75fdSopenharmony_ci{
64d95e75fdSopenharmony_ci    return flag_;
65d95e75fdSopenharmony_ci}
66d95e75fdSopenharmony_ci
67d95e75fdSopenharmony_civoid BaseConnection::SetIndex(int32_t index)
68d95e75fdSopenharmony_ci{
69d95e75fdSopenharmony_ci    index_ = index;
70d95e75fdSopenharmony_ci}
71d95e75fdSopenharmony_ci
72d95e75fdSopenharmony_ciint32_t BaseConnection::GetIndex() const
73d95e75fdSopenharmony_ci{
74d95e75fdSopenharmony_ci    return index_;
75d95e75fdSopenharmony_ci}
76d95e75fdSopenharmony_ci
77d95e75fdSopenharmony_civoid BaseConnection::SetNumber(const std::string &number)
78d95e75fdSopenharmony_ci{
79d95e75fdSopenharmony_ci    number_ = number;
80d95e75fdSopenharmony_ci}
81d95e75fdSopenharmony_ci
82d95e75fdSopenharmony_cistd::string BaseConnection::GetNumber() const
83d95e75fdSopenharmony_ci{
84d95e75fdSopenharmony_ci    return number_;
85d95e75fdSopenharmony_ci}
86d95e75fdSopenharmony_ci
87d95e75fdSopenharmony_ciPostDialCallState BaseConnection::ProcessNextChar(int32_t slotId, char &c)
88d95e75fdSopenharmony_ci{
89d95e75fdSopenharmony_ci    if (postDialCalltate_ == PostDialCallState::POST_DIAL_CALL_CANCELED) {
90d95e75fdSopenharmony_ci        return PostDialCallState::POST_DIAL_CALL_CANCELED;
91d95e75fdSopenharmony_ci    }
92d95e75fdSopenharmony_ci    if (postDialCallString_.empty() || postDialCallString_.length() <= static_cast<size_t>(nextPostDialCallCode_)) {
93d95e75fdSopenharmony_ci        SetPostDialCallState(PostDialCallState::POST_DIAL_CALL_COMPLETE);
94d95e75fdSopenharmony_ci        return PostDialCallState::POST_DIAL_CALL_COMPLETE;
95d95e75fdSopenharmony_ci    } else {
96d95e75fdSopenharmony_ci        SetPostDialCallState(PostDialCallState::POST_DIAL_CALL_STARTED);
97d95e75fdSopenharmony_ci        c = postDialCallString_.at(nextPostDialCallCode_++);
98d95e75fdSopenharmony_ci        ProcessPostDialCallChar(slotId, c);
99d95e75fdSopenharmony_ci    }
100d95e75fdSopenharmony_ci    return postDialCalltate_;
101d95e75fdSopenharmony_ci}
102d95e75fdSopenharmony_ci
103d95e75fdSopenharmony_civoid BaseConnection::SetPostDialCallState(PostDialCallState s)
104d95e75fdSopenharmony_ci{
105d95e75fdSopenharmony_ci    postDialCalltate_ = s;
106d95e75fdSopenharmony_ci}
107d95e75fdSopenharmony_ci
108d95e75fdSopenharmony_civoid BaseConnection::UpdateCallNumber(std::string phoneNum)
109d95e75fdSopenharmony_ci{
110d95e75fdSopenharmony_ci    StandardizeUtils standardizeUtils;
111d95e75fdSopenharmony_ci    standardizeUtils.ExtractAddressAndPostDial(phoneNum, phoneNumber_, postDialCallString_);
112d95e75fdSopenharmony_ci}
113d95e75fdSopenharmony_ci
114d95e75fdSopenharmony_cistd::string BaseConnection::GetLeftPostDialCallString()
115d95e75fdSopenharmony_ci{
116d95e75fdSopenharmony_ci    if (postDialCallString_.empty() || postDialCallString_.length() <= static_cast<size_t>(nextPostDialCallCode_)) {
117d95e75fdSopenharmony_ci        return "";
118d95e75fdSopenharmony_ci    }
119d95e75fdSopenharmony_ci    return postDialCallString_.substr(nextPostDialCallCode_);
120d95e75fdSopenharmony_ci}
121d95e75fdSopenharmony_ci
122d95e75fdSopenharmony_ciint32_t BaseConnection::ProcessPostDialCallChar(int32_t slotId, char c)
123d95e75fdSopenharmony_ci{
124d95e75fdSopenharmony_ci    return TELEPHONY_SUCCESS;
125d95e75fdSopenharmony_ci}
126d95e75fdSopenharmony_ci
127d95e75fdSopenharmony_civoid BaseConnection::UpdatePendingHoldFlag(bool isPendingHold)
128d95e75fdSopenharmony_ci{
129d95e75fdSopenharmony_ci    callReportInfo_.isPendingHold = isPendingHold;
130d95e75fdSopenharmony_ci}
131d95e75fdSopenharmony_ci} // namespace Telephony
132d95e75fdSopenharmony_ci} // namespace OHOS