1d95e75fdSopenharmony_ci/*
2d95e75fdSopenharmony_ci * Copyright (C) 2022 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_IMS_FEATURE_H
17d95e75fdSopenharmony_ci#define TELEPHONY_IMS_FEATURE_H
18d95e75fdSopenharmony_ci
19d95e75fdSopenharmony_ci#include <vector>
20d95e75fdSopenharmony_ci
21d95e75fdSopenharmony_ci#include "ims_reg_types.h"
22d95e75fdSopenharmony_ci
23d95e75fdSopenharmony_cinamespace OHOS {
24d95e75fdSopenharmony_cinamespace Telephony {
25d95e75fdSopenharmony_ci/**
26d95e75fdSopenharmony_ci * @brief Indicates the specific IMS capability type,
27d95e75fdSopenharmony_ci * includes voice, video, UT.
28d95e75fdSopenharmony_ci */
29d95e75fdSopenharmony_cienum ImsCapabilityType {
30d95e75fdSopenharmony_ci    /**
31d95e75fdSopenharmony_ci     * Indicate the IMS voice capability.
32d95e75fdSopenharmony_ci     */
33d95e75fdSopenharmony_ci    CAPABILITY_TYPE_VOICE = 0,
34d95e75fdSopenharmony_ci    /**
35d95e75fdSopenharmony_ci     * Indicate the IMS video capability.
36d95e75fdSopenharmony_ci     */
37d95e75fdSopenharmony_ci    CAPABILITY_TYPE_VIDEO = 1,
38d95e75fdSopenharmony_ci    /**
39d95e75fdSopenharmony_ci     * Indicate the IMS UT capability.
40d95e75fdSopenharmony_ci     */
41d95e75fdSopenharmony_ci    CAPABILITY_TYPE_UT = 2,
42d95e75fdSopenharmony_ci};
43d95e75fdSopenharmony_ci
44d95e75fdSopenharmony_ci/**
45d95e75fdSopenharmony_ci * @brief Indicates the IMS capability type, status and the registered RAT.
46d95e75fdSopenharmony_ci */
47d95e75fdSopenharmony_cistruct ImsCapability {
48d95e75fdSopenharmony_ci    /**
49d95e75fdSopenharmony_ci     * Indicates the specific IMS capability type. {@link ImsCapabilityType}
50d95e75fdSopenharmony_ci     */
51d95e75fdSopenharmony_ci    ImsCapabilityType imsCapabilityType = ImsCapabilityType::CAPABILITY_TYPE_VOICE;
52d95e75fdSopenharmony_ci    /**
53d95e75fdSopenharmony_ci     * Indicates the IMS register RAT. none, LTE, NR, IWLAN {@link ImsRegTech}
54d95e75fdSopenharmony_ci     */
55d95e75fdSopenharmony_ci    ImsRegTech imsRadioTech = ImsRegTech::IMS_REG_TECH_NONE;
56d95e75fdSopenharmony_ci    /**
57d95e75fdSopenharmony_ci     * Indicates whether the specific IMS capability is enabled.
58d95e75fdSopenharmony_ci     * true: enabled, false: disabled
59d95e75fdSopenharmony_ci     */
60d95e75fdSopenharmony_ci    bool enable = false;
61d95e75fdSopenharmony_ci};
62d95e75fdSopenharmony_ci
63d95e75fdSopenharmony_ci/**
64d95e75fdSopenharmony_ci * @brief Indicates a list of IMS capability information.
65d95e75fdSopenharmony_ci */
66d95e75fdSopenharmony_cistruct ImsCapabilityList {
67d95e75fdSopenharmony_ci    /**
68d95e75fdSopenharmony_ci     * Indicates a list of IMS capability information. {@link ImsCapability}
69d95e75fdSopenharmony_ci     */
70d95e75fdSopenharmony_ci    std::vector<ImsCapability> imsCapabilities {};
71d95e75fdSopenharmony_ci};
72d95e75fdSopenharmony_ci
73d95e75fdSopenharmony_ci/**
74d95e75fdSopenharmony_ci * @brief Indicate the IMS feature status.
75d95e75fdSopenharmony_ci */
76d95e75fdSopenharmony_cienum ImsFeatureIntResult {
77d95e75fdSopenharmony_ci    /**
78d95e75fdSopenharmony_ci     * Indicates the IMS feature statue is unknown.
79d95e75fdSopenharmony_ci     */
80d95e75fdSopenharmony_ci    IMS_FEATURE_INT_RESULT_UNKNOWN = -1,
81d95e75fdSopenharmony_ci    /**
82d95e75fdSopenharmony_ci     * Indicates the IMS feature statue is disabled.
83d95e75fdSopenharmony_ci     */
84d95e75fdSopenharmony_ci    IMS_FEATURE_INT_VALUE_DISABLED = 0,
85d95e75fdSopenharmony_ci    /**
86d95e75fdSopenharmony_ci     * Indicates the IMS feature statue is enabled.
87d95e75fdSopenharmony_ci     */
88d95e75fdSopenharmony_ci    IMS_FEATURE_INT_VALUE_ENABLED = 1
89d95e75fdSopenharmony_ci};
90d95e75fdSopenharmony_ci} // namespace Telephony
91d95e75fdSopenharmony_ci} // namespace OHOS
92d95e75fdSopenharmony_ci#endif // TELEPHONY_IMS_FEATURE_H
93