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