• 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 /**
17  * @addtogroup Bluetooth
18  * @{
19  *
20  * @brief Defines adapter manager, including observer and common functions.
21  *
22  * @since 6
23  */
24 
25 /**
26  * @file interface_adapter_manager.h
27  *
28  * @brief Adapter manager interface.
29  *
30  * @since 6
31  */
32 
33 #ifndef INTERFACE_ADAPTER_MANAGER
34 #define INTERFACE_ADAPTER_MANAGER
35 
36 #include "interface_adapter.h"
37 #include <memory>
38 
39 namespace OHOS {
40 namespace bluetooth {
41 /**
42  * @brief Represents adapter state change observer during enable/disable.
43  *
44  * @since 6
45  */
46 class IAdapterStateObserver {
47 public:
48     /**
49      * @brief A destructor used to delete the <b>IAdapterStateObserver</b> instance.
50      *
51      * @since 6
52      */
53     virtual ~IAdapterStateObserver() = default;
54 
55     /**
56      * @brief IAdapterStateObserver state change function.
57      *
58      * @param transport Transport type when state change.
59      * @param state Change to the new state.
60      * @since 6
61      */
62     virtual void OnStateChange(const BTTransport transport, const BTStateID state) = 0;
63 };
64 
65 /**
66  * @brief System state define, using to OnSystemChange()...
67  */
68 enum class BTSystemState : int {
69     ON,
70     OFF,
71 };
72 
73 /**
74  * @brief Represents system state change observer during start/stop/factoryReset/reset.
75  *
76  * @since 6
77  */
78 class ISystemStateObserver {
79 public:
80     /**
81      * @brief A destructor used to delete the <b>ISystemStateObserver</b> instance.
82      *
83      * @since 6
84      */
85     virtual ~ISystemStateObserver() = default;
86 
87     /**
88      * @brief OnSystemStateChange state change function.
89      *
90      * @param transport Transport type when state change.
91      * @param state Change to
92      * @since 6
93      */
94     virtual void OnSystemStateChange(const BTSystemState state) = 0;
95 };
96 
97 /**
98  * @brief Represents interface adapter manager.
99  *
100  * @since 6
101  */
102 class BLUETOOTH_API IAdapterManager {
103 public:
104     /**
105      * @brief A destructor used to delete the <b>IAdapterManager</b> instance.
106      *
107      * @since 6
108      */
109     virtual ~IAdapterManager() = default;
110 
111     /**
112      * @brief Get adapter manager singleton instance pointer.
113      *
114      * @return Returns the singleton instance pointer.
115      * @since 6
116      */
117     static IAdapterManager *GetInstance();
118 
119     /**
120      * @brief Reset bluetooth service.
121      *
122      * @return Returns <b>true</b> if the operation is successful;
123      *         returns <b>false</b> if the operation fails.
124      * @since 6
125      */
126     virtual void Reset() const = 0;
127 
128     /**
129      * @brief Start bluetooth service.
130      *
131      * @return Returns <b>true</b> if the operation is successful;
132      *         returns <b>false</b> if the operation fails.
133      * @since 6
134      */
135     virtual bool Start() = 0;
136 
137     /**
138      * @brief Stop bluetooth service.
139      *
140      * @since 6
141      */
142     virtual void Stop() const = 0;
143 
144     /**
145      * @brief Factory reset bluetooth service.
146      *
147      * @return Returns <b>true</b> if the operation is successful;
148      *         returns <b>false</b> if the operation fails.
149      * @since 6
150      */
151     virtual bool FactoryReset() const = 0;
152 
153     /**
154      * @brief Enable bluetooth service.
155      *
156      * @param transport Enable classic or ble.
157      * @return Returns <b>true</b> if the operation is accepted;
158      *         returns <b>false</b> if the operation is rejected.
159      * @since 6
160      */
161     virtual bool Enable(const BTTransport transport) const = 0;
162 
163     /**
164      * @brief Disable bluetooth service.
165      *
166      * @param transport Disable classic or ble.
167      * @return Returns <b>true</b> if the operation is accepted;
168      *         returns <b>false</b> if the operation is rejected.
169      * @since 6
170      */
171     virtual bool Disable(const BTTransport transport) const = 0;
172 
173     /**
174      * @brief Get adapter enable/disable state.
175      *
176      * @param transport Disable classic or ble.
177      * @return Returns adapter enable/disable state.
178      * @since 6
179      */
180     virtual BTStateID GetState(const BTTransport transport) const = 0;
181 
182     /**
183      * @brief Get adapter connects state.
184      *
185      * @return Returns adapter connects state.
186      * @since 6
187      */
188     virtual BTConnectState GetAdapterConnectState() const = 0;
189 
190     /**
191      * @brief Register adapter state observer.
192      *
193      * @param observer Class IAdapterStateObserver pointer to register observer.
194      * @return Returns <b>true</b> if the operation is successful;
195      *         returns <b>false</b> if the operation fails.
196      * @since 6
197      */
198     virtual bool RegisterStateObserver(IAdapterStateObserver &observer) const = 0;
199 
200     /**
201      * @brief Deregister adapter state observer.
202      *
203      * @param observer Class IAdapterStateObserver pointer to deregister observer.
204      * @return Returns <b>true</b> if the operation is successful;
205      *         returns <b>false</b> if the operation fails.
206      * @since 6
207      */
208     virtual bool DeregisterStateObserver(IAdapterStateObserver &observer) const = 0;
209 
210     /**
211      * @brief Register system state observer.
212      *
213      * @param observer Class ISystemStateObserver pointer to register observer.
214      * @return Returns <b>true</b> if the operation is successful;
215      *         returns <b>false</b> if the operation fails.
216      * @since 6
217      */
218     virtual bool RegisterSystemStateObserver(ISystemStateObserver &observer) const = 0;
219 
220     /**
221      * @brief Deregister system state observer.
222      *
223      * @param observer Class ISystemStateObserver pointer to deregister observer.
224      * @return Returns <b>true</b> if the operation is successful;
225      *         returns <b>false</b> if the operation fails.
226      * @since 6
227      */
228     virtual bool DeregisterSystemStateObserver(ISystemStateObserver &observer) const = 0;
229 
230     /**
231      * @brief Get max audio connected devices number.
232      *
233      * @return Returns max device number that audio can connect.
234      * @since 6
235      */
236     virtual int GetMaxNumConnectedAudioDevices() const = 0;
237 
238     /**
239      * @brief Set phonebook permission for device.
240      *
241      * @param address Device address which is setted permission.
242      * @param permission Permission grade.
243      * @return Returns <b>true</b> if the operation is successful;
244      *         returns <b>false</b> if the operation fails.
245      * @since 6
246      */
247     virtual bool SetPhonebookPermission(const std::string &address, BTPermissionType permission) const = 0;
248 
249     /**
250      * @brief Get phonebook permission for device.
251      *
252      * @param address Device address which is setted permission.
253      * @return Returns Permission grade.
254      * @since 6
255      */
256     virtual BTPermissionType GetPhonebookPermission(const std::string &address) const = 0;
257 
258     /**
259      * @brief Set message permission for device.
260      *
261      * @param address Device address which is setted permission.
262      * @param permission Permission grade.
263      * @return Returns <b>true</b> if the operation is successful;
264      *         returns <b>false</b> if the operation fails.
265      * @since 6
266      */
267     virtual bool SetMessagePermission(const std::string &address, BTPermissionType permission) const = 0;
268 
269     /**
270      * @brief Get message permission for device.
271      *
272      * @param address Device address which is setted permission.
273      * @return Returns Permission grade.
274      * @since 6
275      */
276     virtual BTPermissionType GetMessagePermission(const std::string &address) const = 0;
277 
278     /**
279      * @brief Get classic adapter or ble adapter.
280      *
281      * @param transport classic or adapter.
282      * @return Returns Basic adapter pointer.
283      * @since 6
284      */
285     virtual IAdapter *GetAdapter(const BTTransport transport) const = 0;
286 
287     /**
288      * @brief Get power mode.
289      *
290      * @param address Device address.
291      * @return Returns power mode grade.
292      *         BTPowerMode::MODE_INVALID = 0x00,
293      *         BTPowerMode::MODE_ACTIVE = 0x100,
294      *         BTPowerMode::MODE_SNIFF_LEVEL_LOW = 0x201,
295      *         BTPowerMode::MODE_SNIFF_LEVEL_MID = 0x202,
296      *         BTPowerMode::MODE_SNIFF_LEVEL_HIG = 0x203,
297      * @since 6
298      */
299     virtual int GetPowerMode(const std::string &address) const = 0;
300 };
301 }  // namespace bluetooth
302 }  // namespace OHOS
303 
304 #endif  // INTERFACE_ADAPTER_MANAGER