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#ifndef TELEPHONY_BASE_CONNECTION_H
17d95e75fdSopenharmony_ci#define TELEPHONY_BASE_CONNECTION_H
18d95e75fdSopenharmony_ci
19d95e75fdSopenharmony_ci#include "telephony_errors.h"
20d95e75fdSopenharmony_ci#include "telephony_log_wrapper.h"
21d95e75fdSopenharmony_ci#include "core_manager_inner.h"
22d95e75fdSopenharmony_ci#include "call_manager_inner_type.h"
23d95e75fdSopenharmony_ci#include "cellular_call_data_struct.h"
24d95e75fdSopenharmony_ci
25d95e75fdSopenharmony_cinamespace OHOS {
26d95e75fdSopenharmony_cinamespace Telephony {
27d95e75fdSopenharmony_ciconstexpr static const int64_t PAUSE_DELAY_TIME = 3 * 1000;
28d95e75fdSopenharmony_ciclass BaseConnection {
29d95e75fdSopenharmony_cipublic:
30d95e75fdSopenharmony_ci    /**
31d95e75fdSopenharmony_ci     * Constructor
32d95e75fdSopenharmony_ci     */
33d95e75fdSopenharmony_ci    BaseConnection();
34d95e75fdSopenharmony_ci
35d95e75fdSopenharmony_ci    /**
36d95e75fdSopenharmony_ci     * Destructor
37d95e75fdSopenharmony_ci     */
38d95e75fdSopenharmony_ci    virtual ~BaseConnection() = default;
39d95e75fdSopenharmony_ci
40d95e75fdSopenharmony_ci    /**
41d95e75fdSopenharmony_ci     * Set or Update CallReportInfo
42d95e75fdSopenharmony_ci     *
43d95e75fdSopenharmony_ci     * @param CallReportInfo
44d95e75fdSopenharmony_ci     */
45d95e75fdSopenharmony_ci    void SetOrUpdateCallReportInfo(CallReportInfo &callReportInfo);
46d95e75fdSopenharmony_ci
47d95e75fdSopenharmony_ci    /**
48d95e75fdSopenharmony_ci     * Get CallReportInfo
49d95e75fdSopenharmony_ci     *
50d95e75fdSopenharmony_ci     * @return CallReportInfo
51d95e75fdSopenharmony_ci     */
52d95e75fdSopenharmony_ci    CallReportInfo GetCallReportInfo();
53d95e75fdSopenharmony_ci
54d95e75fdSopenharmony_ci    /**
55d95e75fdSopenharmony_ci     * SetStatus
56d95e75fdSopenharmony_ci     *
57d95e75fdSopenharmony_ci     * @param state
58d95e75fdSopenharmony_ci     */
59d95e75fdSopenharmony_ci    void SetStatus(TelCallState state);
60d95e75fdSopenharmony_ci
61d95e75fdSopenharmony_ci    /**
62d95e75fdSopenharmony_ci     * Get connection Status
63d95e75fdSopenharmony_ci     *
64d95e75fdSopenharmony_ci     * @return TelCallState
65d95e75fdSopenharmony_ci     */
66d95e75fdSopenharmony_ci    TelCallState GetStatus() const;
67d95e75fdSopenharmony_ci
68d95e75fdSopenharmony_ci    /**
69d95e75fdSopenharmony_ci     * IsRingingState.
70d95e75fdSopenharmony_ci     *
71d95e75fdSopenharmony_ci     * @return bool
72d95e75fdSopenharmony_ci     */
73d95e75fdSopenharmony_ci    bool IsRingingState() const;
74d95e75fdSopenharmony_ci
75d95e75fdSopenharmony_ci    /**
76d95e75fdSopenharmony_ci     * Set Flag
77d95e75fdSopenharmony_ci     *
78d95e75fdSopenharmony_ci     * @param bool
79d95e75fdSopenharmony_ci     */
80d95e75fdSopenharmony_ci    void SetFlag(bool flag);
81d95e75fdSopenharmony_ci
82d95e75fdSopenharmony_ci    /**
83d95e75fdSopenharmony_ci     * Get Flag
84d95e75fdSopenharmony_ci     *
85d95e75fdSopenharmony_ci     * @return bool
86d95e75fdSopenharmony_ci     */
87d95e75fdSopenharmony_ci    bool GetFlag() const;
88d95e75fdSopenharmony_ci
89d95e75fdSopenharmony_ci    /**
90d95e75fdSopenharmony_ci     * Set Index
91d95e75fdSopenharmony_ci     *
92d95e75fdSopenharmony_ci     * @param int32_t
93d95e75fdSopenharmony_ci     */
94d95e75fdSopenharmony_ci    void SetIndex(int32_t index);
95d95e75fdSopenharmony_ci
96d95e75fdSopenharmony_ci    /**
97d95e75fdSopenharmony_ci     * Get Index
98d95e75fdSopenharmony_ci     *
99d95e75fdSopenharmony_ci     * @return int32_t
100d95e75fdSopenharmony_ci     */
101d95e75fdSopenharmony_ci    int32_t GetIndex() const;
102d95e75fdSopenharmony_ci
103d95e75fdSopenharmony_ci    void SetNumber(const std::string &number);
104d95e75fdSopenharmony_ci
105d95e75fdSopenharmony_ci    std::string GetNumber() const;
106d95e75fdSopenharmony_ci
107d95e75fdSopenharmony_ci    PostDialCallState ProcessNextChar(int32_t slotId, char &c);
108d95e75fdSopenharmony_ci
109d95e75fdSopenharmony_ci    void SetPostDialCallState(PostDialCallState s);
110d95e75fdSopenharmony_ci
111d95e75fdSopenharmony_ci    void UpdateCallNumber(std::string phoneNum);
112d95e75fdSopenharmony_ci
113d95e75fdSopenharmony_ci    std::string GetLeftPostDialCallString();
114d95e75fdSopenharmony_ci
115d95e75fdSopenharmony_ci    void UpdatePendingHoldFlag(bool flag);
116d95e75fdSopenharmony_ci
117d95e75fdSopenharmony_ciprivate:
118d95e75fdSopenharmony_ci    virtual int32_t ProcessPostDialCallChar(int32_t slotId, char c);
119d95e75fdSopenharmony_ci
120d95e75fdSopenharmony_ciprotected:
121d95e75fdSopenharmony_ci    std::string phoneNumber_;
122d95e75fdSopenharmony_ci
123d95e75fdSopenharmony_ciprivate:
124d95e75fdSopenharmony_ci    bool flag_ = false;
125d95e75fdSopenharmony_ci    int32_t index_ = 1;
126d95e75fdSopenharmony_ci    std::string number_;
127d95e75fdSopenharmony_ci    CallReportInfo callReportInfo_;
128d95e75fdSopenharmony_ci    PostDialCallState postDialCalltate_ = PostDialCallState::POST_DIAL_CALL_NOT_STARTED;
129d95e75fdSopenharmony_ci    int32_t nextPostDialCallCode_ = 0;
130d95e75fdSopenharmony_ci    std::string postDialCallString_;
131d95e75fdSopenharmony_ci};
132d95e75fdSopenharmony_ci} // namespace Telephony
133d95e75fdSopenharmony_ci} // namespace OHOS
134d95e75fdSopenharmony_ci#endif // TELEPHONY_BASE_CONNECTION_H
135